| [ Index ] |
PHP Cross Reference of WordPress Trunk (Updated Daily) |
[Summary view] [Print] [Text view]
1 (function() { 2 var wp; 3 (wp ||= {}).customizeWidgets = (() => { 4 var __create = Object.create; 5 var __defProp = Object.defineProperty; 6 var __getOwnPropDesc = Object.getOwnPropertyDescriptor; 7 var __getOwnPropNames = Object.getOwnPropertyNames; 8 var __getProtoOf = Object.getPrototypeOf; 9 var __hasOwnProp = Object.prototype.hasOwnProperty; 10 var __commonJS = (cb, mod) => function __require() { 11 return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; 12 }; 13 var __export = (target, all) => { 14 for (var name in all) 15 __defProp(target, name, { get: all[name], enumerable: true }); 16 }; 17 var __copyProps = (to, from, except, desc) => { 18 if (from && typeof from === "object" || typeof from === "function") { 19 for (let key of __getOwnPropNames(from)) 20 if (!__hasOwnProp.call(to, key) && key !== except) 21 __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); 22 } 23 return to; 24 }; 25 var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( 26 // If the importer is in node compatibility mode or this is not an ESM 27 // file that has been converted to a CommonJS file using a Babel- 28 // compatible transform (i.e. "__esModule" has not been set), then set 29 // "default" to the CommonJS "module.exports" for node compatibility. 30 isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, 31 mod 32 )); 33 var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); 34 35 // package-external:@wordpress/element 36 var require_element = __commonJS({ 37 "package-external:@wordpress/element"(exports, module) { 38 module.exports = window.wp.element; 39 } 40 }); 41 42 // package-external:@wordpress/block-library 43 var require_block_library = __commonJS({ 44 "package-external:@wordpress/block-library"(exports, module) { 45 module.exports = window.wp.blockLibrary; 46 } 47 }); 48 49 // package-external:@wordpress/widgets 50 var require_widgets = __commonJS({ 51 "package-external:@wordpress/widgets"(exports, module) { 52 module.exports = window.wp.widgets; 53 } 54 }); 55 56 // package-external:@wordpress/blocks 57 var require_blocks = __commonJS({ 58 "package-external:@wordpress/blocks"(exports, module) { 59 module.exports = window.wp.blocks; 60 } 61 }); 62 63 // package-external:@wordpress/data 64 var require_data = __commonJS({ 65 "package-external:@wordpress/data"(exports, module) { 66 module.exports = window.wp.data; 67 } 68 }); 69 70 // package-external:@wordpress/preferences 71 var require_preferences = __commonJS({ 72 "package-external:@wordpress/preferences"(exports, module) { 73 module.exports = window.wp.preferences; 74 } 75 }); 76 77 // package-external:@wordpress/i18n 78 var require_i18n = __commonJS({ 79 "package-external:@wordpress/i18n"(exports, module) { 80 module.exports = window.wp.i18n; 81 } 82 }); 83 84 // vendor-external:react 85 var require_react = __commonJS({ 86 "vendor-external:react"(exports, module) { 87 module.exports = window.React; 88 } 89 }); 90 91 // vendor-external:react/jsx-runtime 92 var require_jsx_runtime = __commonJS({ 93 "vendor-external:react/jsx-runtime"(exports, module) { 94 module.exports = window.ReactJSXRuntime; 95 } 96 }); 97 98 // vendor-external:react-dom 99 var require_react_dom = __commonJS({ 100 "vendor-external:react-dom"(exports, module) { 101 module.exports = window.ReactDOM; 102 } 103 }); 104 105 // package-external:@wordpress/primitives 106 var require_primitives = __commonJS({ 107 "package-external:@wordpress/primitives"(exports, module) { 108 module.exports = window.wp.primitives; 109 } 110 }); 111 112 // 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 113 var require_use_sync_external_store_shim_development = __commonJS({ 114 "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) { 115 "use strict"; 116 (function() { 117 function is(x, y) { 118 return x === y && (0 !== x || 1 / x === 1 / y) || x !== x && y !== y; 119 } 120 function useSyncExternalStore$2(subscribe, getSnapshot) { 121 didWarnOld18Alpha || void 0 === React60.startTransition || (didWarnOld18Alpha = true, console.error( 122 "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." 123 )); 124 var value = getSnapshot(); 125 if (!didWarnUncachedGetSnapshot) { 126 var cachedValue = getSnapshot(); 127 objectIs(value, cachedValue) || (console.error( 128 "The result of getSnapshot should be cached to avoid an infinite loop" 129 ), didWarnUncachedGetSnapshot = true); 130 } 131 cachedValue = useState21({ 132 inst: { value, getSnapshot } 133 }); 134 var inst = cachedValue[0].inst, forceUpdate = cachedValue[1]; 135 useLayoutEffect3( 136 function() { 137 inst.value = value; 138 inst.getSnapshot = getSnapshot; 139 checkIfSnapshotChanged(inst) && forceUpdate({ inst }); 140 }, 141 [subscribe, value, getSnapshot] 142 ); 143 useEffect27( 144 function() { 145 checkIfSnapshotChanged(inst) && forceUpdate({ inst }); 146 return subscribe(function() { 147 checkIfSnapshotChanged(inst) && forceUpdate({ inst }); 148 }); 149 }, 150 [subscribe] 151 ); 152 useDebugValue2(value); 153 return value; 154 } 155 function checkIfSnapshotChanged(inst) { 156 var latestGetSnapshot = inst.getSnapshot; 157 inst = inst.value; 158 try { 159 var nextValue = latestGetSnapshot(); 160 return !objectIs(inst, nextValue); 161 } catch (error2) { 162 return true; 163 } 164 } 165 function useSyncExternalStore$1(subscribe, getSnapshot) { 166 return getSnapshot(); 167 } 168 "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error()); 169 var React60 = require_react(), objectIs = "function" === typeof Object.is ? Object.is : is, useState21 = React60.useState, useEffect27 = React60.useEffect, useLayoutEffect3 = React60.useLayoutEffect, useDebugValue2 = React60.useDebugValue, didWarnOld18Alpha = false, didWarnUncachedGetSnapshot = false, shim = "undefined" === typeof window || "undefined" === typeof window.document || "undefined" === typeof window.document.createElement ? useSyncExternalStore$1 : useSyncExternalStore$2; 170 exports.useSyncExternalStore = void 0 !== React60.useSyncExternalStore ? React60.useSyncExternalStore : shim; 171 "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error()); 172 })(); 173 } 174 }); 175 176 // node_modules/.store/use-sync-external-store@1.7.0-jHNF5n8408rkWhZ5NHKclA/node_modules/use-sync-external-store/shim/index.js 177 var require_shim = __commonJS({ 178 "node_modules/.store/use-sync-external-store@1.7.0-jHNF5n8408rkWhZ5NHKclA/node_modules/use-sync-external-store/shim/index.js"(exports, module) { 179 "use strict"; 180 if (false) { 181 module.exports = null; 182 } else { 183 module.exports = require_use_sync_external_store_shim_development(); 184 } 185 } 186 }); 187 188 // 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 189 var require_with_selector_development = __commonJS({ 190 "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) { 191 "use strict"; 192 (function() { 193 function is(x, y) { 194 return x === y && (0 !== x || 1 / x === 1 / y) || x !== x && y !== y; 195 } 196 "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error()); 197 var React60 = require_react(), shim = require_shim(), objectIs = "function" === typeof Object.is ? Object.is : is, useSyncExternalStore3 = shim.useSyncExternalStore, useRef26 = React60.useRef, useEffect27 = React60.useEffect, useMemo25 = React60.useMemo, useDebugValue2 = React60.useDebugValue; 198 exports.useSyncExternalStoreWithSelector = function(subscribe, getSnapshot, getServerSnapshot, selector, isEqual) { 199 var instRef = useRef26(null); 200 if (null === instRef.current) { 201 var inst = { hasValue: false, value: null }; 202 instRef.current = inst; 203 } else inst = instRef.current; 204 instRef = useMemo25( 205 function() { 206 function memoizedSelector(nextSnapshot) { 207 if (!hasMemo) { 208 hasMemo = true; 209 memoizedSnapshot = nextSnapshot; 210 nextSnapshot = selector(nextSnapshot); 211 if (void 0 !== isEqual && inst.hasValue) { 212 var currentSelection = inst.value; 213 if (isEqual(currentSelection, nextSnapshot)) 214 return memoizedSelection = currentSelection; 215 } 216 return memoizedSelection = nextSnapshot; 217 } 218 currentSelection = memoizedSelection; 219 if (objectIs(memoizedSnapshot, nextSnapshot)) 220 return currentSelection; 221 var nextSelection = selector(nextSnapshot); 222 if (void 0 !== isEqual && isEqual(currentSelection, nextSelection)) 223 return memoizedSnapshot = nextSnapshot, currentSelection; 224 memoizedSnapshot = nextSnapshot; 225 return memoizedSelection = nextSelection; 226 } 227 var hasMemo = false, memoizedSnapshot, memoizedSelection, maybeGetServerSnapshot = void 0 === getServerSnapshot ? null : getServerSnapshot; 228 return [ 229 function() { 230 return memoizedSelector(getSnapshot()); 231 }, 232 null === maybeGetServerSnapshot ? void 0 : function() { 233 return memoizedSelector(maybeGetServerSnapshot()); 234 } 235 ]; 236 }, 237 [getSnapshot, getServerSnapshot, selector, isEqual] 238 ); 239 var value = useSyncExternalStore3(subscribe, instRef[0], instRef[1]); 240 useEffect27( 241 function() { 242 inst.hasValue = true; 243 inst.value = value; 244 }, 245 [value] 246 ); 247 useDebugValue2(value); 248 return value; 249 }; 250 "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error()); 251 })(); 252 } 253 }); 254 255 // node_modules/.store/use-sync-external-store@1.7.0-jHNF5n8408rkWhZ5NHKclA/node_modules/use-sync-external-store/shim/with-selector.js 256 var require_with_selector = __commonJS({ 257 "node_modules/.store/use-sync-external-store@1.7.0-jHNF5n8408rkWhZ5NHKclA/node_modules/use-sync-external-store/shim/with-selector.js"(exports, module) { 258 "use strict"; 259 if (false) { 260 module.exports = null; 261 } else { 262 module.exports = require_with_selector_development(); 263 } 264 } 265 }); 266 267 // package-external:@wordpress/compose 268 var require_compose = __commonJS({ 269 "package-external:@wordpress/compose"(exports, module) { 270 module.exports = window.wp.compose; 271 } 272 }); 273 274 // package-external:@wordpress/a11y 275 var require_a11y = __commonJS({ 276 "package-external:@wordpress/a11y"(exports, module) { 277 module.exports = window.wp.a11y; 278 } 279 }); 280 281 // package-external:@wordpress/theme 282 var require_theme = __commonJS({ 283 "package-external:@wordpress/theme"(exports, module) { 284 module.exports = window.wp.theme; 285 } 286 }); 287 288 // package-external:@wordpress/private-apis 289 var require_private_apis = __commonJS({ 290 "package-external:@wordpress/private-apis"(exports, module) { 291 module.exports = window.wp.privateApis; 292 } 293 }); 294 295 // package-external:@wordpress/components 296 var require_components = __commonJS({ 297 "package-external:@wordpress/components"(exports, module) { 298 module.exports = window.wp.components; 299 } 300 }); 301 302 // package-external:@wordpress/hooks 303 var require_hooks = __commonJS({ 304 "package-external:@wordpress/hooks"(exports, module) { 305 module.exports = window.wp.hooks; 306 } 307 }); 308 309 // package-external:@wordpress/core-data 310 var require_core_data = __commonJS({ 311 "package-external:@wordpress/core-data"(exports, module) { 312 module.exports = window.wp.coreData; 313 } 314 }); 315 316 // package-external:@wordpress/block-editor 317 var require_block_editor = __commonJS({ 318 "package-external:@wordpress/block-editor"(exports, module) { 319 module.exports = window.wp.blockEditor; 320 } 321 }); 322 323 // package-external:@wordpress/media-utils 324 var require_media_utils = __commonJS({ 325 "package-external:@wordpress/media-utils"(exports, module) { 326 module.exports = window.wp.mediaUtils; 327 } 328 }); 329 330 // package-external:@wordpress/keycodes 331 var require_keycodes = __commonJS({ 332 "package-external:@wordpress/keycodes"(exports, module) { 333 module.exports = window.wp.keycodes; 334 } 335 }); 336 337 // package-external:@wordpress/keyboard-shortcuts 338 var require_keyboard_shortcuts = __commonJS({ 339 "package-external:@wordpress/keyboard-shortcuts"(exports, module) { 340 module.exports = window.wp.keyboardShortcuts; 341 } 342 }); 343 344 // node_modules/.store/fast-deep-equal@3.1.3-Dk0kpzcWCOUHE1bkOO2LLA/node_modules/fast-deep-equal/es6/index.js 345 var require_es6 = __commonJS({ 346 "node_modules/.store/fast-deep-equal@3.1.3-Dk0kpzcWCOUHE1bkOO2LLA/node_modules/fast-deep-equal/es6/index.js"(exports, module) { 347 "use strict"; 348 module.exports = function equal(a, b) { 349 if (a === b) return true; 350 if (a && b && typeof a == "object" && typeof b == "object") { 351 if (a.constructor !== b.constructor) return false; 352 var length, i, keys; 353 if (Array.isArray(a)) { 354 length = a.length; 355 if (length != b.length) return false; 356 for (i = length; i-- !== 0; ) 357 if (!equal(a[i], b[i])) return false; 358 return true; 359 } 360 if (a instanceof Map && b instanceof Map) { 361 if (a.size !== b.size) return false; 362 for (i of a.entries()) 363 if (!b.has(i[0])) return false; 364 for (i of a.entries()) 365 if (!equal(i[1], b.get(i[0]))) return false; 366 return true; 367 } 368 if (a instanceof Set && b instanceof Set) { 369 if (a.size !== b.size) return false; 370 for (i of a.entries()) 371 if (!b.has(i[0])) return false; 372 return true; 373 } 374 if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) { 375 length = a.length; 376 if (length != b.length) return false; 377 for (i = length; i-- !== 0; ) 378 if (a[i] !== b[i]) return false; 379 return true; 380 } 381 if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags; 382 if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf(); 383 if (a.toString !== Object.prototype.toString) return a.toString() === b.toString(); 384 keys = Object.keys(a); 385 length = keys.length; 386 if (length !== Object.keys(b).length) return false; 387 for (i = length; i-- !== 0; ) 388 if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false; 389 for (i = length; i-- !== 0; ) { 390 var key = keys[i]; 391 if (!equal(a[key], b[key])) return false; 392 } 393 return true; 394 } 395 return a !== a && b !== b; 396 }; 397 } 398 }); 399 400 // package-external:@wordpress/is-shallow-equal 401 var require_is_shallow_equal = __commonJS({ 402 "package-external:@wordpress/is-shallow-equal"(exports, module) { 403 module.exports = window.wp.isShallowEqual; 404 } 405 }); 406 407 // package-external:@wordpress/dom 408 var require_dom = __commonJS({ 409 "package-external:@wordpress/dom"(exports, module) { 410 module.exports = window.wp.dom; 411 } 412 }); 413 414 // packages/customize-widgets/build-module/index.mjs 415 var index_exports = {}; 416 __export(index_exports, { 417 initialize: () => initialize, 418 store: () => store 419 }); 420 var import_element61 = __toESM(require_element(), 1); 421 var import_block_library = __toESM(require_block_library(), 1); 422 var import_widgets5 = __toESM(require_widgets(), 1); 423 var import_blocks2 = __toESM(require_blocks(), 1); 424 var import_data18 = __toESM(require_data(), 1); 425 var import_preferences4 = __toESM(require_preferences(), 1); 426 427 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useRenderElement.mjs 428 var React4 = __toESM(require_react(), 1); 429 430 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useRefWithInit.mjs 431 var React = __toESM(require_react(), 1); 432 var UNINITIALIZED = {}; 433 function useRefWithInit(init, initArg) { 434 const ref = React.useRef(UNINITIALIZED); 435 if (ref.current === UNINITIALIZED) { 436 ref.current = init(initArg); 437 } 438 return ref; 439 } 440 441 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useMergedRefs.mjs 442 function useMergedRefs(a, b, c, d) { 443 const forkRef = useRefWithInit(createForkRef).current; 444 if (didChange(forkRef, a, b, c, d)) { 445 update(forkRef, [a, b, c, d]); 446 } 447 return forkRef.callback; 448 } 449 function useMergedRefsN(refs) { 450 const forkRef = useRefWithInit(createForkRef).current; 451 if (didChangeN(forkRef, refs)) { 452 update(forkRef, refs); 453 } 454 return forkRef.callback; 455 } 456 function createForkRef() { 457 return { 458 callback: null, 459 cleanup: null, 460 refs: [] 461 }; 462 } 463 function didChange(forkRef, a, b, c, d) { 464 return forkRef.refs[0] !== a || forkRef.refs[1] !== b || forkRef.refs[2] !== c || forkRef.refs[3] !== d; 465 } 466 function didChangeN(forkRef, newRefs) { 467 return forkRef.refs.length !== newRefs.length || forkRef.refs.some((ref, index2) => ref !== newRefs[index2]); 468 } 469 function update(forkRef, refs) { 470 forkRef.refs = refs; 471 if (refs.every((ref) => ref == null)) { 472 forkRef.callback = null; 473 return; 474 } 475 forkRef.callback = (instance) => { 476 if (forkRef.cleanup) { 477 forkRef.cleanup(); 478 forkRef.cleanup = null; 479 } 480 if (instance != null) { 481 const cleanupCallbacks = Array(refs.length).fill(null); 482 for (let i = 0; i < refs.length; i += 1) { 483 const ref = refs[i]; 484 if (ref == null) { 485 continue; 486 } 487 switch (typeof ref) { 488 case "function": { 489 const refCleanup = ref(instance); 490 if (typeof refCleanup === "function") { 491 cleanupCallbacks[i] = refCleanup; 492 } 493 break; 494 } 495 case "object": { 496 ref.current = instance; 497 break; 498 } 499 default: 500 } 501 } 502 forkRef.cleanup = () => { 503 for (let i = 0; i < refs.length; i += 1) { 504 const ref = refs[i]; 505 if (ref == null) { 506 continue; 507 } 508 switch (typeof ref) { 509 case "function": { 510 const cleanupCallback = cleanupCallbacks[i]; 511 if (typeof cleanupCallback === "function") { 512 cleanupCallback(); 513 } else { 514 void ref(null); 515 } 516 break; 517 } 518 case "object": { 519 ref.current = null; 520 break; 521 } 522 default: 523 } 524 } 525 }; 526 } 527 }; 528 } 529 530 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/getReactElementRef.mjs 531 var React3 = __toESM(require_react(), 1); 532 533 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/reactVersion.mjs 534 var React2 = __toESM(require_react(), 1); 535 var majorVersion = parseInt(React2.version, 10); 536 function isReactVersionAtLeast(reactVersionToCheck) { 537 return majorVersion >= reactVersionToCheck; 538 } 539 540 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/getReactElementRef.mjs 541 function getReactElementRef(element) { 542 if (!/* @__PURE__ */ React3.isValidElement(element)) { 543 return null; 544 } 545 const reactElement = element; 546 const propsWithRef = reactElement.props; 547 return (isReactVersionAtLeast(19) ? propsWithRef?.ref : reactElement.ref) ?? null; 548 } 549 550 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/mergeObjects.mjs 551 function mergeObjects(a, b) { 552 if (a && !b) { 553 return a; 554 } 555 if (!a && b) { 556 return b; 557 } 558 if (a || b) { 559 return { 560 ...a, 561 ...b 562 }; 563 } 564 return void 0; 565 } 566 567 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/createLogOnce.mjs 568 var loggedMessages; 569 if (true) { 570 loggedMessages = /* @__PURE__ */ new Set(); 571 } 572 function createLogOnce(severity, prefix) { 573 return function logOnce(...messages) { 574 if (true) { 575 const message = messages.join(" "); 576 const output = prefix ? `$prefix}: $message}` : message; 577 const key = `$severity}:$output}`; 578 if (!loggedMessages.has(key)) { 579 loggedMessages.add(key); 580 if (severity === "warn") { 581 console.warn(output); 582 } else { 583 console.error(output); 584 } 585 } 586 } 587 }; 588 } 589 590 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/warn.mjs 591 var warn = createLogOnce("warn", "Base UI"); 592 593 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/empty.mjs 594 function NOOP() { 595 } 596 var EMPTY_ARRAY = Object.freeze([]); 597 var EMPTY_OBJECT = Object.freeze({}); 598 599 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/getStateAttributesProps.mjs 600 function getStateAttributesProps(state, customMapping) { 601 const props = {}; 602 for (const key in state) { 603 const value = state[key]; 604 if (customMapping?.hasOwnProperty(key)) { 605 const customProps = customMapping[key](value); 606 if (customProps != null) { 607 Object.assign(props, customProps); 608 } 609 continue; 610 } 611 if (value === true) { 612 props[`data-$key.toLowerCase()}`] = ""; 613 } else if (value) { 614 props[`data-$key.toLowerCase()}`] = value.toString(); 615 } 616 } 617 return props; 618 } 619 620 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/resolveClassName.mjs 621 function resolveClassName(className, state) { 622 return typeof className === "function" ? className(state) : className; 623 } 624 625 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/resolveStyle.mjs 626 function resolveStyle(style, state) { 627 return typeof style === "function" ? style(state) : style; 628 } 629 630 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/merge-props/mergeProps.mjs 631 var EMPTY_PROPS = {}; 632 function mergeProps(a, b, c, d, e) { 633 if (!c && !d && !e && !a) { 634 return createInitialMergedProps(b); 635 } 636 let merged = createInitialMergedProps(a); 637 if (b) { 638 merged = mergeInto(merged, b); 639 } 640 if (c) { 641 merged = mergeInto(merged, c); 642 } 643 if (d) { 644 merged = mergeInto(merged, d); 645 } 646 if (e) { 647 merged = mergeInto(merged, e); 648 } 649 return merged; 650 } 651 function mergePropsN(props) { 652 if (props.length === 0) { 653 return EMPTY_PROPS; 654 } 655 if (props.length === 1) { 656 return createInitialMergedProps(props[0]); 657 } 658 let merged = createInitialMergedProps(props[0]); 659 for (let i = 1; i < props.length; i += 1) { 660 merged = mergeInto(merged, props[i]); 661 } 662 return merged; 663 } 664 function createInitialMergedProps(inputProps) { 665 if (isPropsGetter(inputProps)) { 666 return { 667 ...inputProps(EMPTY_PROPS) 668 }; 669 } 670 return copyInitialProps(inputProps); 671 } 672 function mergeInto(merged, inputProps) { 673 if (isPropsGetter(inputProps)) { 674 return inputProps(merged); 675 } 676 return mutablyMergeInto(merged, inputProps); 677 } 678 function copyInitialProps(inputProps) { 679 const copiedProps = { 680 ...inputProps 681 }; 682 for (const propName in copiedProps) { 683 const propValue = copiedProps[propName]; 684 if (isEventHandler(propName, propValue)) { 685 copiedProps[propName] = wrapEventHandler(propValue); 686 } 687 } 688 return copiedProps; 689 } 690 function mutablyMergeInto(mergedProps, externalProps) { 691 if (!externalProps) { 692 return mergedProps; 693 } 694 for (const propName in externalProps) { 695 const externalPropValue = externalProps[propName]; 696 switch (propName) { 697 case "style": { 698 mergedProps[propName] = mergeObjects(mergedProps.style, externalPropValue); 699 break; 700 } 701 case "className": { 702 mergedProps[propName] = mergeClassNames(mergedProps.className, externalPropValue); 703 break; 704 } 705 default: { 706 if (isEventHandler(propName, externalPropValue)) { 707 mergedProps[propName] = mergeEventHandlers(mergedProps[propName], externalPropValue); 708 } else { 709 mergedProps[propName] = externalPropValue; 710 } 711 } 712 } 713 } 714 return mergedProps; 715 } 716 function isEventHandler(key, value) { 717 const code0 = key.charCodeAt(0); 718 const code1 = key.charCodeAt(1); 719 const code2 = key.charCodeAt(2); 720 return code0 === 111 && code1 === 110 && code2 >= 65 && code2 <= 90 && (typeof value === "function" || typeof value === "undefined"); 721 } 722 function isPropsGetter(inputProps) { 723 return typeof inputProps === "function"; 724 } 725 function mergeEventHandlers(ourHandler, theirHandler) { 726 if (!theirHandler) { 727 return ourHandler; 728 } 729 if (!ourHandler) { 730 return wrapEventHandler(theirHandler); 731 } 732 return (...args) => { 733 const event = args[0]; 734 if (isSyntheticEvent(event)) { 735 const baseUIEvent = event; 736 makeEventPreventable(baseUIEvent); 737 const result2 = theirHandler(...args); 738 if (!baseUIEvent.baseUIHandlerPrevented) { 739 ourHandler?.(...args); 740 } 741 return result2; 742 } 743 const result = theirHandler(...args); 744 ourHandler?.(...args); 745 return result; 746 }; 747 } 748 function wrapEventHandler(handler) { 749 if (!handler) { 750 return handler; 751 } 752 return (...args) => { 753 const event = args[0]; 754 if (isSyntheticEvent(event)) { 755 makeEventPreventable(event); 756 } 757 return handler(...args); 758 }; 759 } 760 function makeEventPreventable(event) { 761 event.preventBaseUIHandler = () => { 762 event.baseUIHandlerPrevented = true; 763 }; 764 return event; 765 } 766 function mergeClassNames(ourClassName, theirClassName) { 767 if (theirClassName) { 768 if (ourClassName) { 769 return theirClassName + " " + ourClassName; 770 } 771 return theirClassName; 772 } 773 return ourClassName; 774 } 775 function isSyntheticEvent(event) { 776 return event != null && typeof event === "object" && "nativeEvent" in event; 777 } 778 779 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useRenderElement.mjs 780 var import_react = __toESM(require_react(), 1); 781 function useRenderElement(element, componentProps, params = {}) { 782 let renderProp = componentProps.render; 783 if (params.enabled !== false) { 784 renderProp = unwrapLazyRenderProp(renderProp); 785 } 786 const outProps = useRenderElementProps(componentProps, params, renderProp); 787 if (params.enabled === false) { 788 return null; 789 } 790 const state = params.state ?? EMPTY_OBJECT; 791 return evaluateRenderProp(element, renderProp, outProps, state); 792 } 793 function useRenderElementProps(componentProps, params, renderProp) { 794 const { 795 className: classNameProp, 796 style: styleProp 797 } = componentProps; 798 const { 799 state = EMPTY_OBJECT, 800 ref, 801 props, 802 stateAttributesMapping: stateAttributesMapping2, 803 enabled = true 804 } = params; 805 const className = enabled ? resolveClassName(classNameProp, state) : void 0; 806 const style = enabled ? resolveStyle(styleProp, state) : void 0; 807 const stateProps = enabled ? getStateAttributesProps(state, stateAttributesMapping2) : EMPTY_OBJECT; 808 const resolvedProps = enabled && props ? resolveRenderFunctionProps(props) : void 0; 809 const outProps = enabled ? mergeObjects(stateProps, resolvedProps) ?? {} : EMPTY_OBJECT; 810 if (typeof document !== "undefined") { 811 if (!enabled) { 812 void useMergedRefs(null, null); 813 } else if (Array.isArray(ref)) { 814 outProps.ref = useMergedRefsN([outProps.ref, getReactElementRef(renderProp), ...ref]); 815 } else { 816 outProps.ref = useMergedRefs(outProps.ref, getReactElementRef(renderProp), ref); 817 } 818 } 819 if (!enabled) { 820 return EMPTY_OBJECT; 821 } 822 if (className !== void 0) { 823 outProps.className = mergeClassNames(outProps.className, className); 824 } 825 if (style !== void 0) { 826 outProps.style = mergeObjects(outProps.style, style); 827 } 828 return outProps; 829 } 830 function resolveRenderFunctionProps(props) { 831 if (Array.isArray(props)) { 832 return mergePropsN(props); 833 } 834 return mergeProps(void 0, props); 835 } 836 var REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for("react.lazy"); 837 var COMPONENT_IDENTIFIER_PATTERN = /^[A-Z][A-Za-z0-9$]*$/; 838 var LOWERCASE_CHARACTER_PATTERN = /[a-z]/; 839 function unwrapLazyRenderProp(render) { 840 if (render?.$$typeof !== REACT_LAZY_TYPE) { 841 return render; 842 } 843 const unwrapped = React4.Children.toArray(render)[0]; 844 return /* @__PURE__ */ React4.isValidElement(unwrapped) ? unwrapped : render; 845 } 846 function evaluateRenderProp(element, render, props, state) { 847 if (render) { 848 if (typeof render === "function") { 849 if (true) { 850 warnIfRenderPropLooksLikeComponent(render); 851 } 852 return render(props, state); 853 } 854 const mergedProps = mergeProps(props, render.props); 855 mergedProps.ref = props.ref; 856 if (true) { 857 if (!/* @__PURE__ */ React4.isValidElement(render)) { 858 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")); 859 } 860 } 861 return /* @__PURE__ */ React4.cloneElement(render, mergedProps); 862 } 863 return renderTag(element, props); 864 } 865 function warnIfRenderPropLooksLikeComponent(renderFn) { 866 const functionName = renderFn.name; 867 if (functionName.length === 0) { 868 return; 869 } 870 if (!COMPONENT_IDENTIFIER_PATTERN.test(functionName)) { 871 return; 872 } 873 if (!LOWERCASE_CHARACTER_PATTERN.test(functionName)) { 874 return; 875 } 876 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"); 877 } 878 function renderTag(Tag, props) { 879 if (Tag === "button") { 880 return /* @__PURE__ */ (0, import_react.createElement)("button", { 881 type: "button", 882 ...props, 883 key: props.key 884 }); 885 } 886 if (Tag === "img") { 887 return /* @__PURE__ */ (0, import_react.createElement)("img", { 888 alt: "", 889 ...props, 890 key: props.key 891 }); 892 } 893 return /* @__PURE__ */ React4.createElement(Tag, props); 894 } 895 896 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/safeReact.mjs 897 var React5 = __toESM(require_react(), 1); 898 var SafeReact = { 899 ...React5 900 }; 901 902 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useStableCallback.mjs 903 var useInsertionEffect = SafeReact.useInsertionEffect; 904 var useSafeInsertionEffect = ( 905 // React 17 doesn't have useInsertionEffect. 906 useInsertionEffect && // Preact replaces useInsertionEffect with useLayoutEffect and fires too late. 907 useInsertionEffect !== SafeReact.useLayoutEffect ? useInsertionEffect : (fn) => fn() 908 ); 909 function useStableCallback(callback) { 910 const stable = useRefWithInit(createStableCallback).current; 911 stable.next = callback; 912 useSafeInsertionEffect(stable.effect); 913 return stable.trampoline; 914 } 915 function createStableCallback() { 916 const stable = { 917 next: void 0, 918 callback: assertNotCalled, 919 trampoline: (...args) => stable.callback?.(...args), 920 effect: () => { 921 stable.callback = stable.next; 922 } 923 }; 924 return stable; 925 } 926 function assertNotCalled() { 927 if (true) { 928 throw ( 929 /* minify-error-disabled */ 930 new Error("Base UI: Cannot call an event handler while rendering.") 931 ); 932 } 933 } 934 935 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useIsoLayoutEffect.mjs 936 var React6 = __toESM(require_react(), 1); 937 var noop = () => { 938 }; 939 var useIsoLayoutEffect = typeof document !== "undefined" ? React6.useLayoutEffect : noop; 940 941 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useOpenChangeComplete.mjs 942 var React8 = __toESM(require_react(), 1); 943 944 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useAnimationsFinished.mjs 945 var ReactDOM = __toESM(require_react_dom(), 1); 946 947 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useOnMount.mjs 948 var React7 = __toESM(require_react(), 1); 949 function useOnMount(fn) { 950 React7.useEffect(fn, EMPTY_ARRAY); 951 } 952 953 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useAnimationFrame.mjs 954 var EMPTY = null; 955 var LAST_RAF = globalThis.requestAnimationFrame; 956 var Scheduler = class { 957 /* This implementation uses an array as a backing data-structure for frame callbacks. 958 * It allows `O(1)` callback cancelling by inserting a `null` in the array, though it 959 * never calls the native `cancelAnimationFrame` if there are no frames left. This can 960 * be much more efficient if there is a call pattern that alterns as 961 * "request-cancel-request-cancel-…". 962 * But in the case of "request-request-…-cancel-cancel-…", it leaves the final animation 963 * frame to run anyway. We turn that frame into a `O(1)` no-op via `callbacksCount`. */ 964 callbacks = []; 965 callbacksCount = 0; 966 nextId = 1; 967 startId = 1; 968 isScheduled = false; 969 tick = (timestamp) => { 970 this.isScheduled = false; 971 const currentCallbacks = this.callbacks; 972 const currentCallbacksCount = this.callbacksCount; 973 this.callbacks = []; 974 this.callbacksCount = 0; 975 this.startId = this.nextId; 976 if (currentCallbacksCount > 0) { 977 for (let i = 0; i < currentCallbacks.length; i += 1) { 978 currentCallbacks[i]?.(timestamp); 979 } 980 } 981 }; 982 request(fn) { 983 const id = this.nextId; 984 this.nextId += 1; 985 this.callbacks.push(fn); 986 this.callbacksCount += 1; 987 const didRAFChange = LAST_RAF !== requestAnimationFrame && (LAST_RAF = requestAnimationFrame, true); 988 if (!this.isScheduled || didRAFChange) { 989 requestAnimationFrame(this.tick); 990 this.isScheduled = true; 991 } 992 return id; 993 } 994 cancel(id) { 995 const index2 = id - this.startId; 996 if (index2 < 0 || index2 >= this.callbacks.length) { 997 return; 998 } 999 if (this.callbacks[index2] === null) { 1000 return; 1001 } 1002 this.callbacks[index2] = null; 1003 this.callbacksCount -= 1; 1004 } 1005 }; 1006 var scheduler = new Scheduler(); 1007 var AnimationFrame = class _AnimationFrame { 1008 static create() { 1009 return new _AnimationFrame(); 1010 } 1011 static request(fn) { 1012 return scheduler.request(fn); 1013 } 1014 static cancel(id) { 1015 return scheduler.cancel(id); 1016 } 1017 currentId = EMPTY; 1018 /** 1019 * Executes `fn` after `delay`, clearing any previously scheduled call. 1020 */ 1021 request(fn) { 1022 this.cancel(); 1023 this.currentId = scheduler.request(() => { 1024 this.currentId = EMPTY; 1025 fn(); 1026 }); 1027 } 1028 cancel = () => { 1029 if (this.currentId !== EMPTY) { 1030 scheduler.cancel(this.currentId); 1031 this.currentId = EMPTY; 1032 } 1033 }; 1034 disposeEffect = () => { 1035 return this.cancel; 1036 }; 1037 }; 1038 function useAnimationFrame() { 1039 const timeout = useRefWithInit(AnimationFrame.create).current; 1040 useOnMount(timeout.disposeEffect); 1041 return timeout; 1042 } 1043 1044 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/resolveRef.mjs 1045 function resolveRef(maybeRef) { 1046 if (maybeRef == null) { 1047 return maybeRef; 1048 } 1049 return "current" in maybeRef ? maybeRef.current : maybeRef; 1050 } 1051 1052 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/getFiniteAnimations.mjs 1053 function getFiniteAnimations(element, options) { 1054 return element.getAnimations(options).filter((animation) => { 1055 const timing = animation.effect?.getTiming(); 1056 return timing?.duration !== Infinity && timing?.iterations !== Infinity; 1057 }); 1058 } 1059 1060 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/TransitionStatusDataAttributes.mjs 1061 var TransitionStatusDataAttributes_exports = {}; 1062 __export(TransitionStatusDataAttributes_exports, { 1063 endingStyle: () => endingStyle, 1064 startingStyle: () => startingStyle 1065 }); 1066 var startingStyle = "data-starting-style"; 1067 var endingStyle = "data-ending-style"; 1068 1069 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useAnimationsFinished.mjs 1070 var pendingCallbacks = null; 1071 function flushBeforePaint(fn) { 1072 if (!pendingCallbacks) { 1073 const callbacks = []; 1074 pendingCallbacks = callbacks; 1075 queueMicrotask(() => { 1076 pendingCallbacks = null; 1077 ReactDOM.flushSync(() => { 1078 for (const callback of callbacks) { 1079 callback(); 1080 } 1081 }); 1082 }); 1083 } 1084 pendingCallbacks.push(fn); 1085 } 1086 function useAnimationsFinished(elementOrRef, waitForStartingStyleRemoved = false, batch = false) { 1087 const frame = useAnimationFrame(); 1088 return useStableCallback((fnToExecute, signal = null) => { 1089 frame.cancel(); 1090 const element = resolveRef(elementOrRef); 1091 if (element == null) { 1092 return; 1093 } 1094 const resolvedElement = element; 1095 const done = () => { 1096 if (!batch) { 1097 ReactDOM.flushSync(fnToExecute); 1098 return; 1099 } 1100 flushBeforePaint(() => { 1101 if (!signal?.aborted) { 1102 fnToExecute(); 1103 } 1104 }); 1105 }; 1106 if (typeof resolvedElement.getAnimations !== "function" || globalThis.BASE_UI_ANIMATIONS_DISABLED) { 1107 fnToExecute(); 1108 return; 1109 } 1110 function exec() { 1111 Promise.all(getFiniteAnimations(resolvedElement).map((animation) => animation.finished.then(NOOP))).then(() => { 1112 if (!signal?.aborted) { 1113 done(); 1114 } 1115 }, () => { 1116 if (signal?.aborted) { 1117 return; 1118 } 1119 const currentAnimations = getFiniteAnimations(resolvedElement); 1120 if (currentAnimations.some((animation) => animation.pending || animation.playState !== "finished")) { 1121 exec(); 1122 return; 1123 } 1124 done(); 1125 }); 1126 } 1127 if (waitForStartingStyleRemoved) { 1128 const startingStyleAttribute = startingStyle; 1129 if (!resolvedElement.hasAttribute(startingStyleAttribute)) { 1130 frame.request(exec); 1131 return; 1132 } 1133 const attributeObserver = new MutationObserver(() => { 1134 if (!resolvedElement.hasAttribute(startingStyleAttribute)) { 1135 attributeObserver.disconnect(); 1136 exec(); 1137 } 1138 }); 1139 attributeObserver.observe(resolvedElement, { 1140 attributes: true, 1141 attributeFilter: [startingStyleAttribute] 1142 }); 1143 signal?.addEventListener("abort", () => attributeObserver.disconnect(), { 1144 once: true 1145 }); 1146 return; 1147 } 1148 frame.request(exec); 1149 }); 1150 } 1151 1152 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useOpenChangeComplete.mjs 1153 function useOpenChangeComplete(parameters) { 1154 const { 1155 enabled = true, 1156 open: open3, 1157 ref, 1158 batch = false, 1159 onComplete: onCompleteParam 1160 } = parameters; 1161 const onComplete = useStableCallback(onCompleteParam); 1162 const runOnceAnimationsFinish = useAnimationsFinished(ref, open3, batch); 1163 React8.useEffect(() => { 1164 if (!enabled) { 1165 return void 0; 1166 } 1167 const abortController = new AbortController(); 1168 runOnceAnimationsFinish(onComplete, abortController.signal); 1169 return () => { 1170 abortController.abort(); 1171 }; 1172 }, [enabled, open3, onComplete, runOnceAnimationsFinish]); 1173 } 1174 1175 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/stateAttributesMapping.mjs 1176 var STARTING_HOOK = { 1177 [startingStyle]: "" 1178 }; 1179 var ENDING_HOOK = { 1180 [endingStyle]: "" 1181 }; 1182 var transitionStatusMapping = { 1183 transitionStatus(value) { 1184 if (value === "starting") { 1185 return STARTING_HOOK; 1186 } 1187 if (value === "ending") { 1188 return ENDING_HOOK; 1189 } 1190 return null; 1191 } 1192 }; 1193 1194 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useTransitionStatus.mjs 1195 var React9 = __toESM(require_react(), 1); 1196 function useTransitionStatus(open3, enableIdleState = false, deferEndingState = false, animateInitialOpen = false) { 1197 const [transitionStatus, setTransitionStatus] = React9.useState(open3 && enableIdleState ? "idle" : void 0); 1198 const [mounted, setMounted] = React9.useState(open3 && !animateInitialOpen); 1199 if (open3 && !mounted) { 1200 setMounted(true); 1201 setTransitionStatus("starting"); 1202 } 1203 if (!open3 && mounted && transitionStatus !== "ending" && !deferEndingState) { 1204 setTransitionStatus("ending"); 1205 } 1206 if (!open3 && !mounted && transitionStatus === "ending") { 1207 setTransitionStatus(void 0); 1208 } 1209 useIsoLayoutEffect(() => { 1210 if (!open3 && mounted && transitionStatus !== "ending" && deferEndingState) { 1211 const frame = AnimationFrame.request(() => { 1212 setTransitionStatus("ending"); 1213 }); 1214 return () => { 1215 AnimationFrame.cancel(frame); 1216 }; 1217 } 1218 return void 0; 1219 }, [open3, mounted, transitionStatus, deferEndingState]); 1220 useIsoLayoutEffect(() => { 1221 if (!open3 || enableIdleState || transitionStatus === void 0) { 1222 return void 0; 1223 } 1224 const frame = AnimationFrame.request(() => { 1225 setTransitionStatus(void 0); 1226 }); 1227 return () => { 1228 AnimationFrame.cancel(frame); 1229 }; 1230 }, [enableIdleState, open3, transitionStatus]); 1231 useIsoLayoutEffect(() => { 1232 if (!open3 || !enableIdleState) { 1233 return void 0; 1234 } 1235 if (open3 && mounted && transitionStatus !== "idle") { 1236 setTransitionStatus("starting"); 1237 } 1238 const frame = AnimationFrame.request(() => { 1239 setTransitionStatus("idle"); 1240 }); 1241 return () => { 1242 AnimationFrame.cancel(frame); 1243 }; 1244 }, [enableIdleState, open3, mounted, transitionStatus]); 1245 return { 1246 mounted, 1247 setMounted, 1248 transitionStatus 1249 }; 1250 } 1251 1252 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useTimeout.mjs 1253 var EMPTY2 = 0; 1254 var Timeout = class _Timeout { 1255 static create() { 1256 return new _Timeout(); 1257 } 1258 currentId = EMPTY2; 1259 /** 1260 * Executes `fn` after `delay`, clearing any previously scheduled call. 1261 */ 1262 start(delay, fn) { 1263 this.clear(); 1264 this.currentId = setTimeout(() => { 1265 this.currentId = EMPTY2; 1266 fn(); 1267 }, delay); 1268 } 1269 isStarted() { 1270 return this.currentId !== EMPTY2; 1271 } 1272 clear = () => { 1273 if (this.currentId !== EMPTY2) { 1274 clearTimeout(this.currentId); 1275 this.currentId = EMPTY2; 1276 } 1277 }; 1278 disposeEffect = () => { 1279 return this.clear; 1280 }; 1281 }; 1282 function useTimeout() { 1283 const timeout = useRefWithInit(Timeout.create).current; 1284 useOnMount(timeout.disposeEffect); 1285 return timeout; 1286 } 1287 1288 // node_modules/.store/clsx@2.1.1-XOLP1vUL9vEGfpiXm37fAw/node_modules/clsx/dist/clsx.mjs 1289 function r(e) { 1290 var t, f, n = ""; 1291 if ("string" == typeof e || "number" == typeof e) n += e; 1292 else if ("object" == typeof e) if (Array.isArray(e)) { 1293 var o = e.length; 1294 for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f); 1295 } else for (f in e) e[f] && (n && (n += " "), n += f); 1296 return n; 1297 } 1298 function clsx() { 1299 for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t); 1300 return n; 1301 } 1302 var clsx_default = clsx; 1303 1304 // packages/ui/build-module/icon/icon.mjs 1305 var import_element = __toESM(require_element(), 1); 1306 var import_primitives = __toESM(require_primitives(), 1); 1307 var import_jsx_runtime = __toESM(require_jsx_runtime(), 1); 1308 var Icon = (0, import_element.forwardRef)( 1309 function UnforwardedIcon({ icon, size: size4 = 24, style, ...restProps }, ref) { 1310 const mergedStyle = icon.props.style || style ? { ...icon.props.style, ...style } : void 0; 1311 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)( 1312 import_primitives.SVG, 1313 { 1314 ref, 1315 ...icon.props, 1316 ...restProps, 1317 ...mergedStyle ? { style: mergedStyle } : {}, 1318 width: size4, 1319 height: size4 1320 } 1321 ); 1322 } 1323 ); 1324 1325 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useControlled.mjs 1326 var React10 = __toESM(require_react(), 1); 1327 1328 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/error.mjs 1329 var error = createLogOnce("error", "Base UI"); 1330 1331 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useControlled.mjs 1332 function useControlled({ 1333 controlled, 1334 default: defaultProp, 1335 name, 1336 state = "value" 1337 }) { 1338 const { 1339 current: isControlled 1340 } = React10.useRef(controlled !== void 0); 1341 const [valueState, setValue] = React10.useState(() => defaultProp); 1342 const value = isControlled && controlled !== void 0 ? controlled : valueState; 1343 if (true) { 1344 React10.useEffect(() => { 1345 if (isControlled !== (controlled !== void 0)) { 1346 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")); 1347 } 1348 }, [state, name, controlled]); 1349 const { 1350 current: defaultValue 1351 } = React10.useRef(defaultProp); 1352 React10.useEffect(() => { 1353 if (!isControlled && serializeToDevModeString(defaultValue) !== serializeToDevModeString(defaultProp)) { 1354 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")); 1355 } 1356 }, [defaultProp]); 1357 } 1358 const setValueIfUncontrolled = React10.useCallback((newValue) => { 1359 if (!isControlled) { 1360 setValue(newValue); 1361 } 1362 }, []); 1363 return [value, setValueIfUncontrolled]; 1364 } 1365 function serializeToDevModeString(input) { 1366 let nextId = 0; 1367 const seen = /* @__PURE__ */ new WeakMap(); 1368 try { 1369 const result = JSON.stringify(input, function replacer(key, value) { 1370 if (key === "_owner" && this != null && typeof this === "object" && "$$typeof" in this) { 1371 return void 0; 1372 } 1373 if (typeof value === "bigint") { 1374 return `__bigint__:$value}`; 1375 } 1376 if (value !== null && typeof value === "object") { 1377 const id = seen.get(value); 1378 if (id !== void 0) { 1379 return `__object__:$id}`; 1380 } 1381 seen.set(value, nextId); 1382 nextId += 1; 1383 } 1384 return value; 1385 }); 1386 return result ?? `__top__:$typeof input}`; 1387 } catch { 1388 return "__unserializable__"; 1389 } 1390 } 1391 1392 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useId.mjs 1393 var React12 = __toESM(require_react(), 1); 1394 1395 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useForcedRerendering.mjs 1396 var React11 = __toESM(require_react(), 1); 1397 function useForcedRerendering() { 1398 const [, setState] = React11.useState({}); 1399 return React11.useCallback(() => { 1400 setState({}); 1401 }, []); 1402 } 1403 1404 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useId.mjs 1405 var globalId = 0; 1406 function useGlobalId(idOverride, prefix = "mui") { 1407 const defaultId = React12.useRef(void 0); 1408 const forceRerender = useForcedRerendering(); 1409 const id = idOverride ?? defaultId.current; 1410 React12.useEffect(() => { 1411 if (defaultId.current == null) { 1412 globalId += 1; 1413 defaultId.current = `$prefix}-$globalId}`; 1414 if (idOverride == null) { 1415 forceRerender(); 1416 } 1417 } 1418 }, [idOverride, prefix, forceRerender]); 1419 return id; 1420 } 1421 var maybeReactUseId = SafeReact.useId; 1422 function useId(idOverride, prefix) { 1423 if (maybeReactUseId !== void 0) { 1424 const reactId = maybeReactUseId(); 1425 return idOverride ?? (prefix ? `$prefix}-$reactId}` : reactId); 1426 } 1427 return useGlobalId(idOverride, prefix); 1428 } 1429 1430 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useBaseUiId.mjs 1431 function useBaseUiId(idOverride) { 1432 return useId(idOverride, "base-ui"); 1433 } 1434 1435 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/collapsible/root/useCollapsibleRoot.mjs 1436 var React13 = __toESM(require_react(), 1); 1437 1438 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/createBaseUIEventDetails.mjs 1439 function createChangeEventDetails(reason, event, trigger, customProperties) { 1440 let canceled = false; 1441 let allowPropagation = false; 1442 const custom = customProperties ?? EMPTY_OBJECT; 1443 const details = { 1444 reason, 1445 event: event ?? new Event("base-ui"), 1446 cancel() { 1447 canceled = true; 1448 }, 1449 allowPropagation() { 1450 allowPropagation = true; 1451 }, 1452 get isCanceled() { 1453 return canceled; 1454 }, 1455 get isPropagationAllowed() { 1456 return allowPropagation; 1457 }, 1458 trigger, 1459 ...custom 1460 }; 1461 return details; 1462 } 1463 1464 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/reason-parts.mjs 1465 var reason_parts_exports = {}; 1466 __export(reason_parts_exports, { 1467 cancelOpen: () => cancelOpen, 1468 chipRemovePress: () => chipRemovePress, 1469 clearPress: () => clearPress, 1470 closePress: () => closePress, 1471 closeWatcher: () => closeWatcher, 1472 decrementPress: () => decrementPress, 1473 disabled: () => disabled, 1474 drag: () => drag, 1475 escapeKey: () => escapeKey, 1476 focusOut: () => focusOut, 1477 imperativeAction: () => imperativeAction, 1478 incrementPress: () => incrementPress, 1479 initial: () => initial, 1480 inputBlur: () => inputBlur, 1481 inputChange: () => inputChange, 1482 inputClear: () => inputClear, 1483 inputPaste: () => inputPaste, 1484 inputPress: () => inputPress, 1485 itemPress: () => itemPress, 1486 keyboard: () => keyboard, 1487 linkPress: () => linkPress, 1488 listNavigation: () => listNavigation, 1489 missing: () => missing, 1490 none: () => none, 1491 outsidePress: () => outsidePress, 1492 pointer: () => pointer, 1493 popupClose: () => popupClose, 1494 scrub: () => scrub, 1495 siblingOpen: () => siblingOpen, 1496 swipe: () => swipe, 1497 trackPress: () => trackPress, 1498 triggerFocus: () => triggerFocus, 1499 triggerHover: () => triggerHover, 1500 triggerPress: () => triggerPress, 1501 wheel: () => wheel, 1502 windowResize: () => windowResize 1503 }); 1504 var none = "none"; 1505 var triggerPress = "trigger-press"; 1506 var triggerHover = "trigger-hover"; 1507 var triggerFocus = "trigger-focus"; 1508 var outsidePress = "outside-press"; 1509 var itemPress = "item-press"; 1510 var closePress = "close-press"; 1511 var linkPress = "link-press"; 1512 var clearPress = "clear-press"; 1513 var chipRemovePress = "chip-remove-press"; 1514 var trackPress = "track-press"; 1515 var incrementPress = "increment-press"; 1516 var decrementPress = "decrement-press"; 1517 var inputChange = "input-change"; 1518 var inputClear = "input-clear"; 1519 var inputBlur = "input-blur"; 1520 var inputPaste = "input-paste"; 1521 var inputPress = "input-press"; 1522 var focusOut = "focus-out"; 1523 var escapeKey = "escape-key"; 1524 var closeWatcher = "close-watcher"; 1525 var listNavigation = "list-navigation"; 1526 var keyboard = "keyboard"; 1527 var pointer = "pointer"; 1528 var drag = "drag"; 1529 var wheel = "wheel"; 1530 var scrub = "scrub"; 1531 var popupClose = "popup-close"; 1532 var cancelOpen = "cancel-open"; 1533 var siblingOpen = "sibling-open"; 1534 var disabled = "disabled"; 1535 var missing = "missing"; 1536 var initial = "initial"; 1537 var imperativeAction = "imperative-action"; 1538 var swipe = "swipe"; 1539 var windowResize = "window-resize"; 1540 1541 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/collapsible/root/useCollapsibleRoot.mjs 1542 function useCollapsibleRoot(parameters) { 1543 const { 1544 open: openParam, 1545 defaultOpen = false, 1546 onOpenChange, 1547 disabled: disabled2 1548 } = parameters; 1549 const [open3, setOpen] = useControlled({ 1550 controlled: openParam, 1551 default: defaultOpen, 1552 name: "Collapsible", 1553 state: "open" 1554 }); 1555 const { 1556 mounted, 1557 setMounted, 1558 transitionStatus 1559 } = useTransitionStatus(open3, true, true); 1560 const defaultPanelId = useBaseUiId(); 1561 const [registeredPanelId, setPanelIdState] = React13.useState(); 1562 const panelId = registeredPanelId === null ? void 0 : registeredPanelId ?? defaultPanelId; 1563 const handleTrigger = useStableCallback((event) => { 1564 const nextOpen = !open3; 1565 const eventDetails = createChangeEventDetails(reason_parts_exports.triggerPress, event.nativeEvent); 1566 onOpenChange(nextOpen, eventDetails); 1567 if (eventDetails.isCanceled) { 1568 return; 1569 } 1570 setOpen(nextOpen); 1571 }); 1572 return React13.useMemo(() => ({ 1573 defaultPanelId, 1574 disabled: disabled2, 1575 handleTrigger, 1576 mounted, 1577 open: open3, 1578 panelId, 1579 setMounted, 1580 setOpen, 1581 setPanelIdState, 1582 transitionStatus 1583 }), [defaultPanelId, disabled2, handleTrigger, mounted, open3, panelId, setMounted, setOpen, setPanelIdState, transitionStatus]); 1584 } 1585 1586 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/collapsible/root/CollapsibleRootContext.mjs 1587 var React14 = __toESM(require_react(), 1); 1588 var CollapsibleRootContext = /* @__PURE__ */ React14.createContext(void 0); 1589 if (true) CollapsibleRootContext.displayName = "CollapsibleRootContext"; 1590 function useCollapsibleRootContext() { 1591 const context = React14.useContext(CollapsibleRootContext); 1592 if (context === void 0) { 1593 throw new Error(true ? "Base UI: CollapsibleRootContext is missing. Collapsible parts must be placed within <Collapsible.Root>." : formatErrorMessage_default(15)); 1594 } 1595 return context; 1596 } 1597 1598 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/collapsible/panel/CollapsiblePanelDataAttributes.mjs 1599 var open = "data-open"; 1600 var closed = "data-closed"; 1601 var startingStyle2 = TransitionStatusDataAttributes_exports.startingStyle; 1602 var endingStyle2 = TransitionStatusDataAttributes_exports.endingStyle; 1603 1604 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/collapsible/trigger/CollapsibleTriggerDataAttributes.mjs 1605 var panelOpen = "data-panel-open"; 1606 1607 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/collapsibleOpenStateMapping.mjs 1608 var PANEL_OPEN_HOOK = { 1609 [open]: "" 1610 }; 1611 var PANEL_CLOSED_HOOK = { 1612 [closed]: "" 1613 }; 1614 var triggerOpenStateMapping = { 1615 open(value) { 1616 if (value) { 1617 return { 1618 [panelOpen]: "" 1619 }; 1620 } 1621 return null; 1622 } 1623 }; 1624 var collapsibleOpenStateMapping = { 1625 open(value) { 1626 if (value) { 1627 return PANEL_OPEN_HOOK; 1628 } 1629 return PANEL_CLOSED_HOOK; 1630 } 1631 }; 1632 1633 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/use-button/useButton.mjs 1634 var React17 = __toESM(require_react(), 1); 1635 1636 // node_modules/.store/@floating-ui/utils@0.2.12-gOxTzMf36nCrbeHpEew-rw/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs 1637 function hasWindow() { 1638 return typeof window !== "undefined"; 1639 } 1640 function getNodeName(node) { 1641 if (isNode(node)) { 1642 return (node.nodeName || "").toLowerCase(); 1643 } 1644 return "#document"; 1645 } 1646 function getWindow(node) { 1647 var _node$ownerDocument; 1648 return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window; 1649 } 1650 function getDocumentElement(node) { 1651 var _ref; 1652 return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement; 1653 } 1654 function isNode(value) { 1655 if (!hasWindow()) { 1656 return false; 1657 } 1658 return value instanceof Node || value instanceof getWindow(value).Node; 1659 } 1660 function isElement(value) { 1661 if (!hasWindow()) { 1662 return false; 1663 } 1664 return value instanceof Element || value instanceof getWindow(value).Element; 1665 } 1666 function isHTMLElement(value) { 1667 if (!hasWindow()) { 1668 return false; 1669 } 1670 return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement; 1671 } 1672 function isShadowRoot(value) { 1673 if (!hasWindow() || typeof ShadowRoot === "undefined") { 1674 return false; 1675 } 1676 return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot; 1677 } 1678 function isOverflowElement(element) { 1679 const { 1680 overflow, 1681 overflowX, 1682 overflowY, 1683 display 1684 } = getComputedStyle2(element); 1685 return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== "inline" && display !== "contents"; 1686 } 1687 function isTableElement(element) { 1688 return /^(table|td|th)$/.test(getNodeName(element)); 1689 } 1690 function isTopLayer(element) { 1691 try { 1692 if (element.matches(":popover-open")) { 1693 return true; 1694 } 1695 } catch (_e) { 1696 } 1697 try { 1698 return element.matches(":modal"); 1699 } catch (_e) { 1700 return false; 1701 } 1702 } 1703 var willChangeRe = /transform|translate|scale|rotate|perspective|filter/; 1704 var containRe = /paint|layout|strict|content/; 1705 var isNotNone = (value) => !!value && value !== "none"; 1706 var isWebKitValue; 1707 function isContainingBlock(elementOrCss) { 1708 const css = isElement(elementOrCss) ? getComputedStyle2(elementOrCss) : elementOrCss; 1709 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 || ""); 1710 } 1711 function getContainingBlock(element) { 1712 let currentNode = getParentNode(element); 1713 while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) { 1714 if (isContainingBlock(currentNode)) { 1715 return currentNode; 1716 } else if (isTopLayer(currentNode)) { 1717 return null; 1718 } 1719 currentNode = getParentNode(currentNode); 1720 } 1721 return null; 1722 } 1723 function isWebKit() { 1724 if (isWebKitValue == null) { 1725 isWebKitValue = typeof CSS !== "undefined" && CSS.supports && CSS.supports("-webkit-backdrop-filter", "none"); 1726 } 1727 return isWebKitValue; 1728 } 1729 function isLastTraversableNode(node) { 1730 return /^(html|body|#document)$/.test(getNodeName(node)); 1731 } 1732 function getComputedStyle2(element) { 1733 return getWindow(element).getComputedStyle(element); 1734 } 1735 function getNodeScroll(element) { 1736 if (isElement(element)) { 1737 return { 1738 scrollLeft: element.scrollLeft, 1739 scrollTop: element.scrollTop 1740 }; 1741 } 1742 return { 1743 scrollLeft: element.scrollX, 1744 scrollTop: element.scrollY 1745 }; 1746 } 1747 function getParentNode(node) { 1748 if (getNodeName(node) === "html") { 1749 return node; 1750 } 1751 const result = ( 1752 // Step into the shadow DOM of the parent of a slotted node. 1753 node.assignedSlot || // DOM Element detected. 1754 node.parentNode || // ShadowRoot detected. 1755 isShadowRoot(node) && node.host || // Fallback. 1756 getDocumentElement(node) 1757 ); 1758 return isShadowRoot(result) ? result.host : result; 1759 } 1760 function getNearestOverflowAncestor(node) { 1761 const parentNode = getParentNode(node); 1762 if (isLastTraversableNode(parentNode)) { 1763 return (node.ownerDocument || node).body; 1764 } 1765 if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) { 1766 return parentNode; 1767 } 1768 return getNearestOverflowAncestor(parentNode); 1769 } 1770 function getOverflowAncestors(node, list, traverseIframes) { 1771 var _node$ownerDocument2; 1772 if (list === void 0) { 1773 list = []; 1774 } 1775 if (traverseIframes === void 0) { 1776 traverseIframes = true; 1777 } 1778 const scrollableAncestor = getNearestOverflowAncestor(node); 1779 const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body); 1780 const win = getWindow(scrollableAncestor); 1781 if (isBody) { 1782 const frameElement = getFrameElement(win); 1783 return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []); 1784 } else { 1785 return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes)); 1786 } 1787 } 1788 function getFrameElement(win) { 1789 return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null; 1790 } 1791 1792 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/root/CompositeRootContext.mjs 1793 var React15 = __toESM(require_react(), 1); 1794 var CompositeRootContext = /* @__PURE__ */ React15.createContext(void 0); 1795 if (true) CompositeRootContext.displayName = "CompositeRootContext"; 1796 function useCompositeRootContext(optional = false) { 1797 const context = React15.useContext(CompositeRootContext); 1798 if (context === void 0 && !optional) { 1799 throw new Error(true ? "Base UI: CompositeRootContext is missing. Composite parts must be placed within <Composite.Root>." : formatErrorMessage_default(16)); 1800 } 1801 return context; 1802 } 1803 1804 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/useFocusableWhenDisabled.mjs 1805 var React16 = __toESM(require_react(), 1); 1806 function useFocusableWhenDisabled(parameters) { 1807 const { 1808 focusableWhenDisabled, 1809 disabled: disabled2, 1810 composite = false, 1811 tabIndex: tabIndexProp = 0, 1812 isNativeButton 1813 } = parameters; 1814 const isFocusableComposite = composite && focusableWhenDisabled !== false; 1815 const isNonFocusableComposite = composite && focusableWhenDisabled === false; 1816 const props = React16.useMemo(() => { 1817 const additionalProps = { 1818 // allow Tabbing away from focusableWhenDisabled elements 1819 onKeyDown(event) { 1820 if (disabled2 && focusableWhenDisabled && event.key !== "Tab") { 1821 event.preventDefault(); 1822 } 1823 } 1824 }; 1825 if (!composite) { 1826 additionalProps.tabIndex = tabIndexProp; 1827 if (!isNativeButton && disabled2) { 1828 additionalProps.tabIndex = focusableWhenDisabled ? tabIndexProp : -1; 1829 } 1830 } 1831 if (isNativeButton && (focusableWhenDisabled || isFocusableComposite) || !isNativeButton && disabled2) { 1832 additionalProps["aria-disabled"] = disabled2; 1833 } 1834 if (isNativeButton && (!focusableWhenDisabled || isNonFocusableComposite)) { 1835 additionalProps.disabled = disabled2; 1836 } 1837 return additionalProps; 1838 }, [composite, disabled2, focusableWhenDisabled, isFocusableComposite, isNonFocusableComposite, isNativeButton, tabIndexProp]); 1839 return { 1840 props 1841 }; 1842 } 1843 1844 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/owner.mjs 1845 function ownerDocument(node) { 1846 return node?.ownerDocument || document; 1847 } 1848 1849 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/dispatchClickWithModifiers.mjs 1850 function dispatchClickWithModifiers(target, sourceEvent, { 1851 detail = 0, 1852 pointerType = "" 1853 } = {}) { 1854 target.dispatchEvent(new (getWindow(target)).PointerEvent("click", { 1855 bubbles: true, 1856 cancelable: true, 1857 composed: true, 1858 detail, 1859 pointerType, 1860 shiftKey: sourceEvent.shiftKey, 1861 ctrlKey: sourceEvent.ctrlKey, 1862 altKey: sourceEvent.altKey, 1863 metaKey: sourceEvent.metaKey 1864 })); 1865 } 1866 1867 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/use-button/useButton.mjs 1868 function useButton(parameters = {}) { 1869 const { 1870 disabled: disabled2 = false, 1871 focusableWhenDisabled, 1872 tabIndex = 0, 1873 native: isNativeButton = true, 1874 composite: compositeProp 1875 } = parameters; 1876 const elementRef = React17.useRef(null); 1877 const compositeRootContext = useCompositeRootContext(true); 1878 const isCompositeItem = compositeProp ?? compositeRootContext !== void 0; 1879 const { 1880 props: focusableWhenDisabledProps 1881 } = useFocusableWhenDisabled({ 1882 focusableWhenDisabled, 1883 disabled: disabled2, 1884 composite: isCompositeItem, 1885 tabIndex, 1886 isNativeButton 1887 }); 1888 if (true) { 1889 React17.useEffect(() => { 1890 if (!elementRef.current) { 1891 return; 1892 } 1893 const isButtonTag = isButtonElement(elementRef.current); 1894 if (isNativeButton) { 1895 if (!isButtonTag) { 1896 const ownerStackMessage = SafeReact.captureOwnerStack?.() || ""; 1897 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`."; 1898 error(`$message}$ownerStackMessage}`); 1899 } 1900 } else if (isButtonTag) { 1901 const ownerStackMessage = SafeReact.captureOwnerStack?.() || ""; 1902 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`."; 1903 error(`$message}$ownerStackMessage}`); 1904 } 1905 }, [isNativeButton]); 1906 } 1907 const updateDisabled = React17.useCallback(() => { 1908 const element = elementRef.current; 1909 if (!isButtonElement(element)) { 1910 return; 1911 } 1912 if (isCompositeItem && disabled2 && focusableWhenDisabledProps.disabled === void 0 && element.disabled) { 1913 element.disabled = false; 1914 } 1915 }, [disabled2, focusableWhenDisabledProps.disabled, isCompositeItem]); 1916 useIsoLayoutEffect(updateDisabled, [updateDisabled]); 1917 const getButtonProps = React17.useCallback((externalProps = {}) => { 1918 const { 1919 onClick: externalOnClick, 1920 onMouseDown: externalOnMouseDown, 1921 onKeyUp: externalOnKeyUp, 1922 onKeyDown: externalOnKeyDown, 1923 onPointerDown: externalOnPointerDown, 1924 ...otherExternalProps 1925 } = externalProps; 1926 return mergeProps({ 1927 onClick(event) { 1928 if (disabled2) { 1929 event.preventDefault(); 1930 return; 1931 } 1932 externalOnClick?.(event); 1933 }, 1934 onMouseDown(event) { 1935 if (!disabled2) { 1936 externalOnMouseDown?.(event); 1937 } 1938 }, 1939 onKeyDown(event) { 1940 if (disabled2) { 1941 return; 1942 } 1943 makeEventPreventable(event); 1944 externalOnKeyDown?.(event); 1945 if (event.baseUIHandlerPrevented) { 1946 return; 1947 } 1948 const isCurrentTarget = event.target === event.currentTarget; 1949 const currentTarget = event.currentTarget; 1950 const isButton = isButtonElement(currentTarget); 1951 const isLink = !isNativeButton && isValidLinkElement(currentTarget); 1952 const shouldClick = isCurrentTarget && (isNativeButton ? isButton : !isLink); 1953 const isEnterKey = event.key === "Enter"; 1954 const isSpaceKey = event.key === " "; 1955 const role = currentTarget.getAttribute("role"); 1956 const isTextNavigationRole = role?.startsWith("menuitem") || role === "option" || role === "gridcell"; 1957 if (isCurrentTarget && isCompositeItem && isSpaceKey) { 1958 if (event.defaultPrevented && isTextNavigationRole) { 1959 return; 1960 } 1961 event.preventDefault(); 1962 if (!isNativeButton || isButton) { 1963 event.preventBaseUIHandler(); 1964 dispatchClickWithModifiers(currentTarget, event); 1965 } 1966 return; 1967 } 1968 if (!shouldClick || isNativeButton || !isSpaceKey && !isEnterKey) { 1969 if (isCurrentTarget && isLink && isSpaceKey) { 1970 event.preventDefault(); 1971 } 1972 return; 1973 } 1974 if (event.defaultPrevented) { 1975 return; 1976 } 1977 event.preventDefault(); 1978 if (isEnterKey) { 1979 event.preventBaseUIHandler(); 1980 dispatchClickWithModifiers(currentTarget, event); 1981 } 1982 }, 1983 onKeyUp(event) { 1984 if (disabled2) { 1985 return; 1986 } 1987 makeEventPreventable(event); 1988 externalOnKeyUp?.(event); 1989 if (event.target === event.currentTarget && isNativeButton && isCompositeItem && isButtonElement(event.currentTarget) && event.key === " ") { 1990 event.preventDefault(); 1991 return; 1992 } 1993 if (event.baseUIHandlerPrevented) { 1994 return; 1995 } 1996 if (event.target === event.currentTarget && !isNativeButton && !isCompositeItem && !event.defaultPrevented && event.key === " ") { 1997 event.preventBaseUIHandler(); 1998 dispatchClickWithModifiers(event.currentTarget, event); 1999 } 2000 }, 2001 onPointerDown(event) { 2002 if (disabled2) { 2003 event.preventDefault(); 2004 return; 2005 } 2006 externalOnPointerDown?.(event); 2007 } 2008 }, isNativeButton ? { 2009 type: "button" 2010 } : { 2011 role: "button" 2012 }, focusableWhenDisabledProps, otherExternalProps); 2013 }, [disabled2, focusableWhenDisabledProps, isCompositeItem, isNativeButton]); 2014 const buttonRef = useStableCallback((element) => { 2015 elementRef.current = element; 2016 updateDisabled(); 2017 }); 2018 return { 2019 getButtonProps, 2020 buttonRef 2021 }; 2022 } 2023 function isButtonElement(elem) { 2024 return isHTMLElement(elem) && elem.tagName === "BUTTON"; 2025 } 2026 function isValidLinkElement(elem) { 2027 return isHTMLElement(elem) && elem.tagName === "A" && Boolean(elem.href); 2028 } 2029 2030 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/collapsible/panel/useCollapsiblePanel.mjs 2031 var React18 = __toESM(require_react(), 1); 2032 2033 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/addEventListener.mjs 2034 function addEventListener(target, type, listener, options) { 2035 target.addEventListener(type, listener, options); 2036 return () => { 2037 target.removeEventListener(type, listener, options); 2038 }; 2039 } 2040 2041 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useValueAsRef.mjs 2042 function useValueAsRef(value) { 2043 const latest = useRefWithInit(createLatestRef, value).current; 2044 latest.next = value; 2045 useIsoLayoutEffect(latest.effect); 2046 return latest; 2047 } 2048 function createLatestRef(value) { 2049 const latest = { 2050 current: value, 2051 next: value, 2052 effect: () => { 2053 latest.current = latest.next; 2054 } 2055 }; 2056 return latest; 2057 } 2058 2059 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/collapsible/panel/useCollapsiblePanel.mjs 2060 var EMPTY_DIMENSIONS = { 2061 height: void 0, 2062 width: void 0 2063 }; 2064 function useCollapsiblePanel(parameters) { 2065 const { 2066 externalRef, 2067 hiddenUntilFound, 2068 id: idParam, 2069 keepMounted, 2070 mounted, 2071 onOpenChange, 2072 open: open3, 2073 setMounted, 2074 setOpen, 2075 transitionStatus 2076 } = parameters; 2077 const panelRef = React18.useRef(null); 2078 const animationTypeRef = React18.useRef(null); 2079 const [dimensions, setDimensionsUnwrapped] = React18.useState(EMPTY_DIMENSIONS); 2080 const lastMeasuredDimensionsRef = React18.useRef(EMPTY_DIMENSIONS); 2081 const shouldSkipNextOpenRef = React18.useRef(false); 2082 const shouldPreventMountAnimationRef = React18.useRef(open3); 2083 const shouldPreventActivityResumeAnimationRef = React18.useRef(false); 2084 const [forcePanelIdle, setForcePanelIdle] = React18.useState(false); 2085 const pendingTemporaryStyleRestoreRef = React18.useRef(null); 2086 const mergedPanelRef = useMergedRefs(externalRef, panelRef); 2087 const latestOpenRef = useValueAsRef(open3); 2088 const runOnceCloseAnimationsFinish = useAnimationsFinished(panelRef); 2089 const hidden = !open3 && !mounted; 2090 const panelTransitionStatus = forcePanelIdle ? "idle" : transitionStatus; 2091 const shouldPreventOpenAnimation = open3 && // These 2 refs are safe to read in render, they are only written from committed 2092 // layout/effect paths and gate one-shot motion suppression for the next open 2093 // lifecycle. They intentionally expose the last committed motion snapshot. 2094 (shouldPreventMountAnimationRef.current || shouldPreventActivityResumeAnimationRef.current); 2095 const renderedDimensions = !open3 && mounted && // These 2 refs are also safe to read in render, both hold the last committed 2096 // animation mode and measurement. This fallback only restores a previously 2097 // measured pixel size after the live dimensions state has been reset back to `auto`. 2098 animationTypeRef.current === "css-animation" && dimensions.height === void 0 && dimensions.width === void 0 ? lastMeasuredDimensionsRef.current : dimensions; 2099 const shouldPersistHiddenTransitionStyles = hiddenUntilFound && hidden && animationTypeRef.current !== "css-animation"; 2100 const setDimensions = useStableCallback((nextDimensions, shouldCacheMeasurement = true) => { 2101 if (shouldCacheMeasurement) { 2102 lastMeasuredDimensionsRef.current = nextDimensions; 2103 } 2104 setDimensionsUnwrapped(nextDimensions); 2105 }); 2106 const restorePendingTemporaryStyle = useStableCallback(() => { 2107 pendingTemporaryStyleRestoreRef.current?.(); 2108 pendingTemporaryStyleRestoreRef.current = null; 2109 }); 2110 const setPendingTemporaryStyleRestore = useStableCallback((restore) => { 2111 restorePendingTemporaryStyle(); 2112 pendingTemporaryStyleRestoreRef.current = () => { 2113 pendingTemporaryStyleRestoreRef.current = null; 2114 restore(); 2115 }; 2116 }); 2117 const markActivityResumeAnimationSuppressed = useStableCallback(() => { 2118 if (open3 && mounted && animationTypeRef.current === "css-animation") { 2119 shouldPreventActivityResumeAnimationRef.current = true; 2120 } 2121 }); 2122 useIsoLayoutEffect(() => { 2123 if (!forcePanelIdle || transitionStatus === "starting") { 2124 return; 2125 } 2126 setForcePanelIdle(false); 2127 }, [forcePanelIdle, transitionStatus]); 2128 React18.useEffect(() => { 2129 return () => { 2130 markActivityResumeAnimationSuppressed(); 2131 restorePendingTemporaryStyle(); 2132 }; 2133 }, [markActivityResumeAnimationSuppressed, restorePendingTemporaryStyle]); 2134 useIsoLayoutEffect(() => { 2135 if (!open3) { 2136 shouldPreventMountAnimationRef.current = false; 2137 shouldPreventActivityResumeAnimationRef.current = false; 2138 } 2139 const panel = panelRef.current; 2140 if (!panel) { 2141 return void 0; 2142 } 2143 if (!open3 && pendingTemporaryStyleRestoreRef.current) { 2144 restorePendingTemporaryStyle(); 2145 } 2146 const animationType = getAnimationType(panel, shouldPreventOpenAnimation); 2147 animationTypeRef.current = animationType; 2148 if (open3 && transitionStatus === "idle" && shouldPreventMountAnimationRef.current && animationType === "css-animation") { 2149 lastMeasuredDimensionsRef.current = getDimensions(panel); 2150 return void 0; 2151 } 2152 if (open3 && transitionStatus === "starting") { 2153 const skipNextOpen = shouldSkipNextOpenRef.current; 2154 shouldSkipNextOpenRef.current = false; 2155 if (animationType === "none") { 2156 setDimensions(getDimensions(panel)); 2157 setForcePanelIdle(true); 2158 return void 0; 2159 } 2160 if (animationType === "css-transition") { 2161 const restoreLayoutStyles = resetLayoutStyles(panel); 2162 setDimensions(getDimensions(panel)); 2163 if (!skipNextOpen) { 2164 return restoreLayoutStyles; 2165 } 2166 const restoreTransitionDuration = setTemporaryStyle(panel, "transition-duration", "0s"); 2167 setPendingTemporaryStyleRestore(restoreTransitionDuration); 2168 setForcePanelIdle(true); 2169 return restoreLayoutStyles; 2170 } 2171 setDimensions(getDimensions(panel)); 2172 const restoreAnimationName = setTemporaryStyle(panel, "animation-name", "none"); 2173 if (!skipNextOpen) { 2174 restoreAnimationName(); 2175 return void 0; 2176 } 2177 const restoreAnimationDuration = setTemporaryStyle(panel, "animation-duration", "0s"); 2178 restoreAnimationName(); 2179 setPendingTemporaryStyleRestore(restoreAnimationDuration); 2180 setForcePanelIdle(true); 2181 return void 0; 2182 } 2183 if (!open3 && mounted && (transitionStatus === "idle" || transitionStatus === "starting")) { 2184 if (animationType === "none") { 2185 setDimensions(EMPTY_DIMENSIONS, false); 2186 setMounted(false); 2187 return void 0; 2188 } 2189 setDimensions(getDimensions(panel)); 2190 return void 0; 2191 } 2192 if (transitionStatus !== "ending") { 2193 return void 0; 2194 } 2195 if (animationType === "none") { 2196 setMounted(false); 2197 return void 0; 2198 } 2199 const nextDimensions = getDimensions(panel); 2200 const hasMeasuredSize = nextDimensions.height > 0 || nextDimensions.width > 0; 2201 if (!hasMeasuredSize) { 2202 setMounted(false); 2203 return void 0; 2204 } 2205 setDimensions(nextDimensions); 2206 if (animationType === "css-animation") { 2207 const restoreAnimationName = setTemporaryStyle(panel, "animation-name", "none"); 2208 restoreAnimationName(); 2209 } 2210 return void 0; 2211 }, [mounted, open3, restorePendingTemporaryStyle, setDimensions, setMounted, setPendingTemporaryStyleRestore, shouldPreventOpenAnimation, transitionStatus]); 2212 useOpenChangeComplete({ 2213 enabled: open3 && mounted && panelTransitionStatus === "idle", 2214 open: true, 2215 ref: panelRef, 2216 onComplete() { 2217 if (!open3) { 2218 return; 2219 } 2220 setDimensions(EMPTY_DIMENSIONS, false); 2221 } 2222 }); 2223 React18.useEffect(() => { 2224 if (open3 || !mounted || panelTransitionStatus !== "ending") { 2225 return void 0; 2226 } 2227 const panel = panelRef.current; 2228 if (!panel) { 2229 setMounted(false); 2230 setDimensions(EMPTY_DIMENSIONS, false); 2231 return void 0; 2232 } 2233 const abortController = new AbortController(); 2234 let endingStyleFrame = -1; 2235 function handleComplete() { 2236 if (latestOpenRef.current) { 2237 return; 2238 } 2239 setMounted(false); 2240 setDimensions(EMPTY_DIMENSIONS, false); 2241 } 2242 endingStyleFrame = AnimationFrame.request(() => { 2243 runOnceCloseAnimationsFinish(handleComplete, abortController.signal); 2244 }); 2245 return () => { 2246 AnimationFrame.cancel(endingStyleFrame); 2247 abortController.abort(); 2248 }; 2249 }, [latestOpenRef, mounted, open3, panelTransitionStatus, runOnceCloseAnimationsFinish, setDimensions, setMounted]); 2250 useIsoLayoutEffect(() => { 2251 const panel = panelRef.current; 2252 if (!panel || !hiddenUntilFound || !hidden) { 2253 return; 2254 } 2255 panel.setAttribute("hidden", "until-found"); 2256 }, [hidden, hiddenUntilFound]); 2257 React18.useEffect(function registerBeforeMatchListener() { 2258 const panel = panelRef.current; 2259 if (!panel) { 2260 return void 0; 2261 } 2262 const revealDecisionTimeout = Timeout.create(); 2263 let revertRevealFrame = -1; 2264 const scheduleRevealRevert = (revertSkippedMotion, restoreStartingStyle) => { 2265 revealDecisionTimeout.start(0, () => { 2266 if (latestOpenRef.current) { 2267 return; 2268 } 2269 revertRevealFrame = AnimationFrame.request(() => { 2270 if (latestOpenRef.current) { 2271 return; 2272 } 2273 if (revertSkippedMotion) { 2274 shouldSkipNextOpenRef.current = false; 2275 } 2276 if (restoreStartingStyle) { 2277 panel.setAttribute(startingStyle2, ""); 2278 } 2279 panel.setAttribute("hidden", "until-found"); 2280 }); 2281 }); 2282 }; 2283 const handleBeforeMatch = (event) => { 2284 const eventDetails = createChangeEventDetails(reason_parts_exports.none, event); 2285 onOpenChange(true, eventDetails); 2286 if (eventDetails.isCanceled) { 2287 scheduleRevealRevert(false, false); 2288 return; 2289 } 2290 shouldSkipNextOpenRef.current = true; 2291 const hadStartingStyle = panel.hasAttribute(startingStyle2); 2292 panel.removeAttribute(startingStyle2); 2293 setOpen(true); 2294 scheduleRevealRevert(true, hadStartingStyle); 2295 }; 2296 const cleanupBeforeMatchListener = addEventListener(panel, "beforematch", handleBeforeMatch); 2297 return () => { 2298 revealDecisionTimeout.clear(); 2299 AnimationFrame.cancel(revertRevealFrame); 2300 cleanupBeforeMatchListener(); 2301 }; 2302 }, [latestOpenRef, onOpenChange, setOpen]); 2303 const shouldRender = keepMounted || hiddenUntilFound || mounted || open3; 2304 return { 2305 height: renderedDimensions.height, 2306 props: { 2307 ...shouldPersistHiddenTransitionStyles ? { 2308 [startingStyle2]: "" 2309 } : void 0, 2310 hidden, 2311 id: idParam 2312 }, 2313 ref: mergedPanelRef, 2314 shouldPreventOpenAnimation, 2315 shouldRender, 2316 transitionStatus: panelTransitionStatus, 2317 width: renderedDimensions.width 2318 }; 2319 } 2320 function getDimensions(element) { 2321 return { 2322 height: element.scrollHeight, 2323 width: element.scrollWidth 2324 }; 2325 } 2326 function getAnimationType(element, hasSuppressedMountAnimation) { 2327 const panelStyles = getWindow(element).getComputedStyle(element); 2328 const hasAnimation = (panelStyles.animationName.split(",").map((name) => name.trim()).some((name) => name !== "" && name !== "none") || hasSuppressedMountAnimation) && hasNonZeroDuration(panelStyles.animationDuration); 2329 const hasTransition = hasNonZeroDuration(panelStyles.transitionDuration); 2330 if (hasAnimation && hasTransition) { 2331 if (true) { 2332 warn("CSS transitions and CSS animations both detected on Collapsible or Accordion panel.", "Only one of either animation type should be used."); 2333 } 2334 return "css-transition"; 2335 } 2336 if (hasTransition) { 2337 return "css-transition"; 2338 } 2339 if (hasAnimation) { 2340 return "css-animation"; 2341 } 2342 return "none"; 2343 } 2344 function hasNonZeroDuration(value) { 2345 return value.split(",").map((part) => part.trim()).some((part) => part !== "" && Number.parseFloat(part) > 0); 2346 } 2347 function setTemporaryStyle(element, property, value) { 2348 const previousValue = element.style.getPropertyValue(property); 2349 const previousPriority = element.style.getPropertyPriority(property); 2350 element.style.setProperty(property, value); 2351 return () => { 2352 if (previousValue === "") { 2353 element.style.removeProperty(property); 2354 return; 2355 } 2356 element.style.setProperty(property, previousValue, previousPriority); 2357 }; 2358 } 2359 function resetLayoutStyles(element) { 2360 const originalLayoutStyles = { 2361 "justify-content": element.style.justifyContent, 2362 "align-items": element.style.alignItems, 2363 "align-content": element.style.alignContent, 2364 "justify-items": element.style.justifyItems 2365 }; 2366 Object.keys(originalLayoutStyles).forEach((key) => { 2367 element.style.setProperty(key, "initial", "important"); 2368 }); 2369 function restoreLayoutStyles() { 2370 Object.entries(originalLayoutStyles).forEach(([key, value]) => { 2371 if (value === "") { 2372 element.style.removeProperty(key); 2373 return; 2374 } 2375 element.style.setProperty(key, value); 2376 }); 2377 } 2378 const frame = AnimationFrame.request(restoreLayoutStyles); 2379 return () => { 2380 AnimationFrame.cancel(frame); 2381 restoreLayoutStyles(); 2382 }; 2383 } 2384 2385 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/parts.mjs 2386 var parts_exports = {}; 2387 __export(parts_exports, { 2388 engine: () => engine_exports, 2389 env: () => env_exports, 2390 mediaQuery: () => media_query_exports, 2391 os: () => os_exports, 2392 screenReader: () => screen_reader_exports 2393 }); 2394 2395 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/os.mjs 2396 var os_exports = {}; 2397 __export(os_exports, { 2398 android: () => android, 2399 apple: () => apple, 2400 ios: () => ios, 2401 linux: () => linux, 2402 mac: () => mac, 2403 windows: () => windows 2404 }); 2405 2406 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/shared.mjs 2407 function readRawData() { 2408 if (typeof navigator === "undefined") { 2409 return { 2410 userAgent: "", 2411 platform: "", 2412 maxTouchPoints: 0 2413 }; 2414 } 2415 if (true) { 2416 const uaData = navigator.userAgentData; 2417 if (uaData && Array.isArray(uaData.brands)) { 2418 return { 2419 userAgent: uaData.brands.map(({ 2420 brand, 2421 version: version2 2422 }) => `$brand}/$version2}`).join(" "), 2423 platform: uaData.platform ?? navigator.platform ?? "", 2424 maxTouchPoints: navigator.maxTouchPoints ?? 0 2425 }; 2426 } 2427 } 2428 return { 2429 userAgent: navigator.userAgent, 2430 platform: navigator.platform ?? "", 2431 maxTouchPoints: navigator.maxTouchPoints ?? 0 2432 }; 2433 } 2434 var { 2435 userAgent, 2436 platform, 2437 maxTouchPoints 2438 } = readRawData(); 2439 var lowerUserAgent = userAgent.toLowerCase(); 2440 var lowerPlatform = platform.toLowerCase(); 2441 2442 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/os.mjs 2443 var ios = /^i(os$|p)/.test(lowerPlatform) || lowerPlatform === "macintel" && maxTouchPoints > 1; 2444 var ANDROID_STRING = "android"; 2445 var android = lowerPlatform === ANDROID_STRING || lowerUserAgent.includes(ANDROID_STRING); 2446 var mac = !ios && lowerPlatform.startsWith("mac"); 2447 var windows = lowerPlatform.startsWith("win"); 2448 var linux = !android && /^(linux|chrome os)/.test(lowerPlatform); 2449 var apple = mac || ios; 2450 2451 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/engine.mjs 2452 var engine_exports = {}; 2453 __export(engine_exports, { 2454 blink: () => blink, 2455 gecko: () => gecko, 2456 webkit: () => webkit 2457 }); 2458 var webkit = typeof CSS !== "undefined" && !!CSS.supports?.("-webkit-backdrop-filter:none"); 2459 var gecko = !webkit && lowerUserAgent.includes("firefox"); 2460 var blink = !webkit && lowerUserAgent.includes("chrom"); 2461 2462 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/screen-reader.mjs 2463 var screen_reader_exports = {}; 2464 __export(screen_reader_exports, { 2465 voiceOver: () => voiceOver 2466 }); 2467 var voiceOver = apple; 2468 2469 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/env.mjs 2470 var env_exports = {}; 2471 __export(env_exports, { 2472 jsdom: () => jsdom 2473 }); 2474 var jsdom = /jsdom|happydom/.test(lowerUserAgent); 2475 2476 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/media-query.mjs 2477 var media_query_exports = {}; 2478 __export(media_query_exports, { 2479 iOS: () => iOS 2480 }); 2481 var iOS = "@supports (-webkit-touch-callout: none)"; 2482 2483 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingDelayGroup.mjs 2484 var React19 = __toESM(require_react(), 1); 2485 2486 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/event.mjs 2487 function isReactEvent(event) { 2488 return "nativeEvent" in event; 2489 } 2490 function isVirtualClick(event) { 2491 if (event.pointerType === "" && event.isTrusted) { 2492 return true; 2493 } 2494 if (parts_exports.os.android && event.pointerType) { 2495 return event.type === "click" && event.buttons === 1; 2496 } 2497 return event.detail === 0 && !event.pointerType; 2498 } 2499 function isMouseLikePointerType(pointerType, strict) { 2500 const values = ["mouse", "pen"]; 2501 if (!strict) { 2502 values.push("", void 0); 2503 } 2504 return values.includes(pointerType); 2505 } 2506 function isClickLikeEvent(event) { 2507 const type = event.type; 2508 return type === "click" || type === "mousedown" || type === "keydown" || type === "keyup"; 2509 } 2510 2511 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/shadowDom.mjs 2512 function activeElement(doc) { 2513 let element = doc.activeElement; 2514 while (element?.shadowRoot?.activeElement != null) { 2515 element = element.shadowRoot.activeElement; 2516 } 2517 return element; 2518 } 2519 function contains(parent, child) { 2520 if (!parent || !child) { 2521 return false; 2522 } 2523 const rootNode = child.getRootNode?.(); 2524 if (parent.contains(child)) { 2525 return true; 2526 } 2527 if (rootNode && isShadowRoot(rootNode)) { 2528 let next = child; 2529 while (next) { 2530 if (parent === next) { 2531 return true; 2532 } 2533 next = next.parentNode || next.host; 2534 } 2535 } 2536 return false; 2537 } 2538 function closest(node, selector) { 2539 let current = node; 2540 while (current) { 2541 if (isElement(current) && current.matches(selector)) { 2542 return current; 2543 } 2544 current = current.assignedSlot ?? current.parentNode ?? (isShadowRoot(current) ? current.host : null); 2545 } 2546 return null; 2547 } 2548 function getTarget(event) { 2549 if ("composedPath" in event) { 2550 return event.composedPath()[0] ?? event.target; 2551 } 2552 return event.target; 2553 } 2554 2555 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/constants.mjs 2556 var FOCUSABLE_ATTRIBUTE = "data-base-ui-focusable"; 2557 var TYPEABLE_SELECTOR = "input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])"; 2558 2559 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/CommonPopupDataAttributes.mjs 2560 var open2 = "data-open"; 2561 var closed2 = "data-closed"; 2562 var anchorHidden = "data-anchor-hidden"; 2563 2564 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/CommonTriggerDataAttributes.mjs 2565 var CommonTriggerDataAttributes_exports = {}; 2566 __export(CommonTriggerDataAttributes_exports, { 2567 popupOpen: () => popupOpen, 2568 pressed: () => pressed 2569 }); 2570 var popupOpen = "data-popup-open"; 2571 var pressed = "data-pressed"; 2572 2573 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popupStateMapping.mjs 2574 var TRIGGER_HOOK = { 2575 [popupOpen]: "" 2576 }; 2577 var PRESSABLE_TRIGGER_HOOK = { 2578 [popupOpen]: "", 2579 [pressed]: "" 2580 }; 2581 var POPUP_OPEN_HOOK = { 2582 [open2]: "" 2583 }; 2584 var POPUP_CLOSED_HOOK = { 2585 [closed2]: "" 2586 }; 2587 var ANCHOR_HIDDEN_HOOK = { 2588 [anchorHidden]: "" 2589 }; 2590 var triggerOpenStateMapping2 = { 2591 open(value) { 2592 if (value) { 2593 return TRIGGER_HOOK; 2594 } 2595 return null; 2596 } 2597 }; 2598 var popupStateMapping = { 2599 open(value) { 2600 if (value) { 2601 return POPUP_OPEN_HOOK; 2602 } 2603 return POPUP_CLOSED_HOOK; 2604 }, 2605 anchorHidden(value) { 2606 if (value) { 2607 return ANCHOR_HIDDEN_HOOK; 2608 } 2609 return null; 2610 } 2611 }; 2612 var popupTransitionStateMapping = { 2613 ...popupStateMapping, 2614 ...transitionStatusMapping 2615 }; 2616 2617 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/trigger/TooltipTriggerDataAttributes.mjs 2618 var popupOpen2 = CommonTriggerDataAttributes_exports.popupOpen; 2619 var triggerDisabled = "data-trigger-disabled"; 2620 2621 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/element.mjs 2622 function isTargetInsideEnabledTrigger(target, triggerElements) { 2623 if (!isElement(target)) { 2624 return false; 2625 } 2626 const targetElement = target; 2627 if (triggerElements.hasElement(targetElement)) { 2628 return !targetElement.hasAttribute(triggerDisabled); 2629 } 2630 for (const [, trigger] of triggerElements.entries()) { 2631 if (contains(trigger, targetElement)) { 2632 return !trigger.hasAttribute(triggerDisabled); 2633 } 2634 } 2635 return false; 2636 } 2637 function isEventTargetWithin(event, node) { 2638 if (node == null) { 2639 return false; 2640 } 2641 if ("composedPath" in event) { 2642 return event.composedPath().includes(node); 2643 } 2644 const eventAgain = event; 2645 return eventAgain.target != null && node.contains(eventAgain.target); 2646 } 2647 function isRootElement(element) { 2648 return element.matches("html,body"); 2649 } 2650 function isTypeableElement(element) { 2651 return isHTMLElement(element) && element.matches(TYPEABLE_SELECTOR); 2652 } 2653 function isInteractiveElement(element) { 2654 return closest(element, `button,a[href],[role="button"],select,[tabindex]:not([tabindex="-1"]),$TYPEABLE_SELECTOR}`) != null; 2655 } 2656 function matchesFocusVisible(element) { 2657 if (!element || parts_exports.env.jsdom) { 2658 return true; 2659 } 2660 try { 2661 return element.matches(":focus-visible"); 2662 } catch (_e) { 2663 return true; 2664 } 2665 } 2666 2667 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useHoverShared.mjs 2668 function resolveValue(value, pointerType) { 2669 if (pointerType != null && !isMouseLikePointerType(pointerType)) { 2670 return 0; 2671 } 2672 if (typeof value === "function") { 2673 return value(); 2674 } 2675 return value; 2676 } 2677 function getDelay(value, prop, pointerType) { 2678 const result = resolveValue(value, pointerType); 2679 if (typeof result === "number") { 2680 return result; 2681 } 2682 return result?.[prop]; 2683 } 2684 function getRestMs(value) { 2685 if (typeof value === "function") { 2686 return value(); 2687 } 2688 return value; 2689 } 2690 function isClickLikeOpenEvent(openEventType, interactedInside) { 2691 return interactedInside || openEventType === "click" || openEventType === "mousedown"; 2692 } 2693 function isHoverOpenEvent(openEventType) { 2694 return openEventType?.includes("mouse") && openEventType !== "mousedown"; 2695 } 2696 2697 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingDelayGroup.mjs 2698 var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1); 2699 var FloatingDelayGroupContext = /* @__PURE__ */ React19.createContext({ 2700 hasProvider: false, 2701 timeoutMs: 0, 2702 delayRef: { 2703 current: 0 2704 }, 2705 initialDelayRef: { 2706 current: 0 2707 }, 2708 timeout: new Timeout(), 2709 currentIdRef: { 2710 current: null 2711 }, 2712 currentContextRef: { 2713 current: null 2714 } 2715 }); 2716 if (true) FloatingDelayGroupContext.displayName = "FloatingDelayGroupContext"; 2717 function resetDelayRef(delayRef, initialDelayRef) { 2718 delayRef.current = initialDelayRef.current; 2719 } 2720 function FloatingDelayGroup(props) { 2721 const { 2722 children, 2723 delay, 2724 timeoutMs = 0 2725 } = props; 2726 const delayRef = React19.useRef(delay); 2727 const initialDelayRef = React19.useRef(delay); 2728 const currentIdRef = React19.useRef(null); 2729 const currentContextRef = React19.useRef(null); 2730 const timeout = useTimeout(); 2731 useIsoLayoutEffect(() => { 2732 initialDelayRef.current = delay; 2733 if (!currentIdRef.current) { 2734 delayRef.current = delay; 2735 return; 2736 } 2737 delayRef.current = { 2738 open: getDelay(delayRef.current, "open"), 2739 close: getDelay(delay, "close") 2740 }; 2741 }, [delay, currentIdRef, delayRef, initialDelayRef]); 2742 return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(FloatingDelayGroupContext.Provider, { 2743 value: React19.useMemo(() => ({ 2744 hasProvider: true, 2745 delayRef, 2746 initialDelayRef, 2747 currentIdRef, 2748 timeoutMs, 2749 currentContextRef, 2750 timeout 2751 }), [timeoutMs, timeout]), 2752 children 2753 }); 2754 } 2755 function useDelayGroup(store2, options = { 2756 open: false 2757 }) { 2758 const { 2759 open: open3 2760 } = options; 2761 const floatingId = store2.useState("floatingId"); 2762 const groupContext = React19.useContext(FloatingDelayGroupContext); 2763 const { 2764 currentIdRef, 2765 delayRef, 2766 timeoutMs, 2767 initialDelayRef, 2768 currentContextRef, 2769 hasProvider, 2770 timeout 2771 } = groupContext; 2772 const [isInstantPhase, setIsInstantPhase] = React19.useState(false); 2773 const openRef = React19.useRef(open3); 2774 useIsoLayoutEffect(() => { 2775 openRef.current = open3; 2776 }, [open3]); 2777 useIsoLayoutEffect(() => { 2778 function unset() { 2779 currentContextRef.current?.setIsInstantPhase(false); 2780 currentIdRef.current = null; 2781 currentContextRef.current = null; 2782 delayRef.current = initialDelayRef.current; 2783 timeout.clear(); 2784 } 2785 if (!currentIdRef.current) { 2786 return void 0; 2787 } 2788 if (!open3 && currentIdRef.current === floatingId) { 2789 setIsInstantPhase(false); 2790 if (timeoutMs) { 2791 const closingId = floatingId; 2792 timeout.start(timeoutMs, () => { 2793 if (store2.select("open") || currentIdRef.current && currentIdRef.current !== closingId) { 2794 return; 2795 } 2796 unset(); 2797 }); 2798 return () => { 2799 if (openRef.current || currentIdRef.current !== closingId) { 2800 timeout.clear(); 2801 } 2802 }; 2803 } 2804 unset(); 2805 } 2806 return void 0; 2807 }, [open3, floatingId, currentIdRef, delayRef, timeoutMs, initialDelayRef, currentContextRef, timeout, store2]); 2808 useIsoLayoutEffect(() => { 2809 if (!open3) { 2810 return; 2811 } 2812 const prevContext = currentContextRef.current; 2813 const prevId = currentIdRef.current; 2814 timeout.clear(); 2815 currentContextRef.current = { 2816 onOpenChange: store2.setOpen, 2817 setIsInstantPhase 2818 }; 2819 currentIdRef.current = floatingId; 2820 delayRef.current = { 2821 open: 0, 2822 close: getDelay(initialDelayRef.current, "close") 2823 }; 2824 if (prevId !== null && prevId !== floatingId) { 2825 setIsInstantPhase(true); 2826 prevContext?.setIsInstantPhase(true); 2827 prevContext?.onOpenChange(false, createChangeEventDetails(reason_parts_exports.none)); 2828 } else { 2829 setIsInstantPhase(false); 2830 prevContext?.setIsInstantPhase(false); 2831 } 2832 }, [open3, floatingId, store2, currentIdRef, delayRef, initialDelayRef, currentContextRef, timeout]); 2833 useIsoLayoutEffect(() => { 2834 return () => { 2835 if (currentIdRef.current === floatingId) { 2836 currentContextRef.current = null; 2837 if (!openRef.current) { 2838 return; 2839 } 2840 currentIdRef.current = null; 2841 resetDelayRef(delayRef, initialDelayRef); 2842 timeout.clear(); 2843 } 2844 }; 2845 }, [currentContextRef, currentIdRef, delayRef, floatingId, initialDelayRef, timeout]); 2846 return React19.useMemo(() => ({ 2847 activeIdRef: currentIdRef, 2848 hasProvider, 2849 delayRef, 2850 isInstantPhase 2851 }), [currentIdRef, hasProvider, delayRef, isInstantPhase]); 2852 } 2853 2854 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/mergeCleanups.mjs 2855 function mergeCleanups(...cleanups) { 2856 return () => { 2857 for (let i = 0; i < cleanups.length; i += 1) { 2858 const cleanup = cleanups[i]; 2859 if (cleanup) { 2860 cleanup(); 2861 } 2862 } 2863 }; 2864 } 2865 2866 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/FocusGuard.mjs 2867 var React20 = __toESM(require_react(), 1); 2868 2869 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/visuallyHidden.mjs 2870 var visuallyHiddenBase = { 2871 clipPath: "inset(50%)", 2872 overflow: "hidden", 2873 whiteSpace: "nowrap", 2874 border: 0, 2875 padding: 0, 2876 width: 1, 2877 height: 1, 2878 margin: -1 2879 }; 2880 var visuallyHidden = { 2881 ...visuallyHiddenBase, 2882 position: "fixed", 2883 margin: 0, 2884 top: 0, 2885 left: 0 2886 }; 2887 var visuallyHiddenInput = { 2888 ...visuallyHiddenBase, 2889 position: "absolute" 2890 }; 2891 2892 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/FocusGuard.mjs 2893 var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1); 2894 var FocusGuard = /* @__PURE__ */ React20.forwardRef(function FocusGuard2(props, ref) { 2895 const [role, setRole] = React20.useState(); 2896 useIsoLayoutEffect(() => { 2897 if (parts_exports.screenReader.voiceOver && parts_exports.engine.webkit) { 2898 setRole("button"); 2899 } 2900 }, []); 2901 const restProps = { 2902 tabIndex: 0, 2903 // Role is only for VoiceOver 2904 role 2905 }; 2906 return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { 2907 ...props, 2908 ref, 2909 style: visuallyHidden, 2910 "aria-hidden": role ? void 0 : true, 2911 ...restProps, 2912 "data-base-ui-focus-guard": "" 2913 }); 2914 }); 2915 if (true) FocusGuard.displayName = "FocusGuard"; 2916 2917 // node_modules/.store/@floating-ui/utils@0.2.12-gOxTzMf36nCrbeHpEew-rw/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs 2918 var min = Math.min; 2919 var max = Math.max; 2920 var round = Math.round; 2921 var floor = Math.floor; 2922 var createCoords = (v) => ({ 2923 x: v, 2924 y: v 2925 }); 2926 var oppositeSideMap = { 2927 left: "right", 2928 right: "left", 2929 bottom: "top", 2930 top: "bottom" 2931 }; 2932 function clamp(start, value, end) { 2933 return max(start, min(value, end)); 2934 } 2935 function evaluate(value, param) { 2936 return typeof value === "function" ? value(param) : value; 2937 } 2938 function getSide(placement) { 2939 return placement.split("-")[0]; 2940 } 2941 function getAlignment(placement) { 2942 return placement.split("-")[1]; 2943 } 2944 function getOppositeAxis(axis) { 2945 return axis === "x" ? "y" : "x"; 2946 } 2947 function getAxisLength(axis) { 2948 return axis === "y" ? "height" : "width"; 2949 } 2950 function getSideAxis(placement) { 2951 const firstChar = placement[0]; 2952 return firstChar === "t" || firstChar === "b" ? "y" : "x"; 2953 } 2954 function getAlignmentAxis(placement) { 2955 return getOppositeAxis(getSideAxis(placement)); 2956 } 2957 function getAlignmentSides(placement, rects, rtl) { 2958 if (rtl === void 0) { 2959 rtl = false; 2960 } 2961 const alignment = getAlignment(placement); 2962 const alignmentAxis = getAlignmentAxis(placement); 2963 const length = getAxisLength(alignmentAxis); 2964 let mainAlignmentSide = alignmentAxis === "x" ? alignment === (rtl ? "end" : "start") ? "right" : "left" : alignment === "start" ? "bottom" : "top"; 2965 if (rects.reference[length] > rects.floating[length]) { 2966 mainAlignmentSide = getOppositePlacement(mainAlignmentSide); 2967 } 2968 return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)]; 2969 } 2970 function getExpandedPlacements(placement) { 2971 const oppositePlacement = getOppositePlacement(placement); 2972 return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)]; 2973 } 2974 function getOppositeAlignmentPlacement(placement) { 2975 return placement.includes("start") ? placement.replace("start", "end") : placement.replace("end", "start"); 2976 } 2977 var lrPlacement = ["left", "right"]; 2978 var rlPlacement = ["right", "left"]; 2979 var tbPlacement = ["top", "bottom"]; 2980 var btPlacement = ["bottom", "top"]; 2981 function getSideList(side, isStart, rtl) { 2982 switch (side) { 2983 case "top": 2984 case "bottom": 2985 if (rtl) return isStart ? rlPlacement : lrPlacement; 2986 return isStart ? lrPlacement : rlPlacement; 2987 case "left": 2988 case "right": 2989 return isStart ? tbPlacement : btPlacement; 2990 default: 2991 return []; 2992 } 2993 } 2994 function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) { 2995 const alignment = getAlignment(placement); 2996 let list = getSideList(getSide(placement), direction === "start", rtl); 2997 if (alignment) { 2998 list = list.map((side) => side + "-" + alignment); 2999 if (flipAlignment) { 3000 list = list.concat(list.map(getOppositeAlignmentPlacement)); 3001 } 3002 } 3003 return list; 3004 } 3005 function getOppositePlacement(placement) { 3006 const side = getSide(placement); 3007 return oppositeSideMap[side] + placement.slice(side.length); 3008 } 3009 function expandPaddingObject(padding) { 3010 var _padding$top, _padding$right, _padding$bottom, _padding$left; 3011 return { 3012 top: (_padding$top = padding.top) != null ? _padding$top : 0, 3013 right: (_padding$right = padding.right) != null ? _padding$right : 0, 3014 bottom: (_padding$bottom = padding.bottom) != null ? _padding$bottom : 0, 3015 left: (_padding$left = padding.left) != null ? _padding$left : 0 3016 }; 3017 } 3018 function getPaddingObject(padding) { 3019 return typeof padding !== "number" ? expandPaddingObject(padding) : { 3020 top: padding, 3021 right: padding, 3022 bottom: padding, 3023 left: padding 3024 }; 3025 } 3026 function rectToClientRect(rect) { 3027 const { 3028 x, 3029 y, 3030 width, 3031 height 3032 } = rect; 3033 return { 3034 width, 3035 height, 3036 top: y, 3037 left: x, 3038 right: x + width, 3039 bottom: y + height, 3040 x, 3041 y 3042 }; 3043 } 3044 3045 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/composite.mjs 3046 function isHiddenByStyles(styles) { 3047 return styles.visibility === "hidden" || styles.visibility === "collapse"; 3048 } 3049 function isElementVisible(element, styles = element ? getComputedStyle2(element) : null) { 3050 if (!element || !element.isConnected || !styles || isHiddenByStyles(styles)) { 3051 return false; 3052 } 3053 if (typeof element.checkVisibility === "function") { 3054 return element.checkVisibility(); 3055 } 3056 return styles.display !== "none" && styles.display !== "contents"; 3057 } 3058 3059 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/tabbable.mjs 3060 var CANDIDATE_SELECTOR = 'a[href],button,input,select,textarea,summary,details,iframe,object,embed,[tabindex],[contenteditable]:not([contenteditable="false"]),audio[controls],video[controls]'; 3061 function getParentElement(element) { 3062 const assignedSlot = element.assignedSlot; 3063 if (assignedSlot) { 3064 return assignedSlot; 3065 } 3066 if (element.parentElement) { 3067 return element.parentElement; 3068 } 3069 const rootNode = element.getRootNode(); 3070 return isShadowRoot(rootNode) ? rootNode.host : null; 3071 } 3072 function getDetailsSummary(details) { 3073 for (const child of Array.from(details.children)) { 3074 if (getNodeName(child) === "summary") { 3075 return child; 3076 } 3077 } 3078 return null; 3079 } 3080 function isWithinOpenDetailsSummary(element, details) { 3081 const summary = getDetailsSummary(details); 3082 return !!summary && (element === summary || contains(summary, element)); 3083 } 3084 function isFocusableCandidate(element) { 3085 const nodeName = element ? getNodeName(element) : ""; 3086 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"); 3087 } 3088 function isFocusableElement(element) { 3089 if (!isFocusableCandidate(element) || !element.isConnected || element.matches(":disabled")) { 3090 return false; 3091 } 3092 for (let current = element; current; current = getParentElement(current)) { 3093 const isAncestor = current !== element; 3094 const isSlot = getNodeName(current) === "slot"; 3095 if (current.hasAttribute("inert")) { 3096 return false; 3097 } 3098 if (isAncestor && getNodeName(current) === "details" && !current.open && !isWithinOpenDetailsSummary(element, current) || current.hasAttribute("hidden") || !isSlot && !isVisibleInTabbableTree(current, isAncestor)) { 3099 return false; 3100 } 3101 } 3102 return true; 3103 } 3104 function isVisibleInTabbableTree(element, isAncestor) { 3105 const styles = getComputedStyle2(element); 3106 if (!isAncestor) { 3107 return isElementVisible(element, styles); 3108 } 3109 return styles.display !== "none"; 3110 } 3111 function getTabIndex(element) { 3112 const tabIndex = element.tabIndex; 3113 if (tabIndex < 0) { 3114 const nodeName = getNodeName(element); 3115 if (nodeName === "details" || nodeName === "audio" || nodeName === "video" || isHTMLElement(element) && element.isContentEditable) { 3116 return 0; 3117 } 3118 } 3119 return tabIndex; 3120 } 3121 function getNamedRadioInput(element) { 3122 if (getNodeName(element) !== "input") { 3123 return null; 3124 } 3125 const input = element; 3126 return input.type === "radio" && input.name !== "" ? input : null; 3127 } 3128 function isTabbableRadio(element, candidates) { 3129 const input = getNamedRadioInput(element); 3130 if (!input) { 3131 return true; 3132 } 3133 const checkedRadio = candidates.find((candidate) => { 3134 const radio = getNamedRadioInput(candidate); 3135 return radio?.name === input.name && radio.form === input.form && radio.checked; 3136 }); 3137 if (checkedRadio) { 3138 return checkedRadio === input; 3139 } 3140 return candidates.find((candidate) => { 3141 const radio = getNamedRadioInput(candidate); 3142 return radio?.name === input.name && radio.form === input.form; 3143 }) === input; 3144 } 3145 function getComposedChildren(container) { 3146 if (isHTMLElement(container) && getNodeName(container) === "slot") { 3147 const assignedElements = container.assignedElements({ 3148 flatten: true 3149 }); 3150 if (assignedElements.length > 0) { 3151 return assignedElements; 3152 } 3153 } 3154 if (isHTMLElement(container) && container.shadowRoot) { 3155 return Array.from(container.shadowRoot.children); 3156 } 3157 return Array.from(container.children); 3158 } 3159 function appendCandidates(container, list) { 3160 getComposedChildren(container).forEach((child) => { 3161 if (isFocusableCandidate(child)) { 3162 list.push(child); 3163 } 3164 appendCandidates(child, list); 3165 }); 3166 } 3167 function appendMatchingElements(container, selector, list) { 3168 getComposedChildren(container).forEach((child) => { 3169 if (isHTMLElement(child) && child.matches(selector)) { 3170 list.push(child); 3171 } 3172 appendMatchingElements(child, selector, list); 3173 }); 3174 } 3175 function focusable(container) { 3176 const candidates = []; 3177 appendCandidates(container, candidates); 3178 return candidates.filter(isFocusableElement); 3179 } 3180 function tabbable(container) { 3181 const candidates = focusable(container); 3182 return candidates.filter((element) => getTabIndex(element) >= 0 && isTabbableRadio(element, candidates)); 3183 } 3184 function getTabbableIn(container, dir) { 3185 const list = tabbable(container); 3186 const len = list.length; 3187 if (len === 0) { 3188 return void 0; 3189 } 3190 const active = activeElement(ownerDocument(container)); 3191 const index2 = list.indexOf(active); 3192 const nextIndex = index2 === -1 ? dir === 1 ? 0 : len - 1 : index2 + dir; 3193 return list[nextIndex]; 3194 } 3195 function getNextTabbable(referenceElement) { 3196 return getTabbableIn(ownerDocument(referenceElement).body, 1) || referenceElement; 3197 } 3198 function getPreviousTabbable(referenceElement) { 3199 return getTabbableIn(ownerDocument(referenceElement).body, -1) || referenceElement; 3200 } 3201 function isOutsideEvent(event, container) { 3202 const containerElement = container || event.currentTarget; 3203 const relatedTarget = event.relatedTarget; 3204 return !relatedTarget || !contains(containerElement, relatedTarget); 3205 } 3206 function disableFocusInside(container) { 3207 const tabbableElements = tabbable(container); 3208 tabbableElements.forEach((element) => { 3209 element.dataset.tabindex = element.getAttribute("tabindex") || ""; 3210 element.setAttribute("tabindex", "-1"); 3211 }); 3212 } 3213 function enableFocusInside(container) { 3214 const elements = []; 3215 appendMatchingElements(container, "[data-tabindex]", elements); 3216 elements.forEach((element) => { 3217 const tabindex = element.dataset.tabindex; 3218 delete element.dataset.tabindex; 3219 if (tabindex) { 3220 element.setAttribute("tabindex", tabindex); 3221 } else { 3222 element.removeAttribute("tabindex"); 3223 } 3224 }); 3225 } 3226 3227 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/nodes.mjs 3228 function getNodeChildren(nodes, id, onlyOpenChildren = true) { 3229 const directChildren = nodes.filter((node) => node.parentId === id); 3230 return directChildren.flatMap((child) => [...!onlyOpenChildren || child.context?.open ? [child] : [], ...getNodeChildren(nodes, child.id, onlyOpenChildren)]); 3231 } 3232 3233 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/createAttribute.mjs 3234 function createAttribute(name) { 3235 return `data-base-ui-$name}`; 3236 } 3237 3238 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingPortal.mjs 3239 var React21 = __toESM(require_react(), 1); 3240 var ReactDOM2 = __toESM(require_react_dom(), 1); 3241 3242 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/constants.mjs 3243 var DISABLED_TRANSITIONS_STYLE = { 3244 style: { 3245 transition: "none" 3246 } 3247 }; 3248 var BASE_UI_SWIPE_IGNORE_ATTRIBUTE = "data-base-ui-swipe-ignore"; 3249 var LEGACY_SWIPE_IGNORE_ATTRIBUTE = "data-swipe-ignore"; 3250 var BASE_UI_SWIPE_IGNORE_SELECTOR = `[$BASE_UI_SWIPE_IGNORE_ATTRIBUTE}]`; 3251 var LEGACY_SWIPE_IGNORE_SELECTOR = `[$LEGACY_SWIPE_IGNORE_ATTRIBUTE}]`; 3252 var POPUP_COLLISION_AVOIDANCE = { 3253 fallbackAxisSide: "end" 3254 }; 3255 var ownerVisuallyHidden = { 3256 clipPath: "inset(50%)", 3257 position: "fixed", 3258 top: 0, 3259 left: 0 3260 }; 3261 3262 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingPortal.mjs 3263 var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1); 3264 var PortalContext = /* @__PURE__ */ React21.createContext(null); 3265 if (true) PortalContext.displayName = "PortalContext"; 3266 var usePortalContext = () => React21.useContext(PortalContext); 3267 var attr = createAttribute("portal"); 3268 function useFloatingPortalNode(props = {}) { 3269 const { 3270 ref, 3271 container: containerProp, 3272 componentProps = EMPTY_OBJECT, 3273 elementProps 3274 } = props; 3275 const uniqueId = useId(); 3276 const portalContext = usePortalContext(); 3277 const parentPortalNode = portalContext?.portalNode; 3278 const [containerElement, setContainerElement] = React21.useState(null); 3279 const [portalNode, setPortalNode] = React21.useState(null); 3280 const setPortalNodeRef = useStableCallback((node) => { 3281 if (node !== null) { 3282 setPortalNode(node); 3283 } 3284 }); 3285 const containerRef = React21.useRef(null); 3286 useIsoLayoutEffect(() => { 3287 if (containerProp === null) { 3288 if (containerRef.current) { 3289 containerRef.current = null; 3290 setPortalNode(null); 3291 setContainerElement(null); 3292 } 3293 return; 3294 } 3295 const resolvedContainer = (containerProp && (isNode(containerProp) ? containerProp : containerProp.current)) ?? parentPortalNode ?? document.body; 3296 if (resolvedContainer == null) { 3297 if (containerRef.current) { 3298 containerRef.current = null; 3299 setPortalNode(null); 3300 setContainerElement(null); 3301 } 3302 return; 3303 } 3304 if (containerRef.current !== resolvedContainer) { 3305 containerRef.current = resolvedContainer; 3306 setPortalNode(null); 3307 setContainerElement(resolvedContainer); 3308 } 3309 }, [containerProp, parentPortalNode]); 3310 const portalElement = useRenderElement("div", componentProps, { 3311 ref: [ref, setPortalNodeRef], 3312 props: [{ 3313 id: uniqueId, 3314 [attr]: "" 3315 }, elementProps] 3316 }); 3317 const portalSubtree = containerElement && portalElement ? /* @__PURE__ */ ReactDOM2.createPortal(portalElement, containerElement) : null; 3318 return { 3319 node: portalNode, 3320 // `id` and `render` props can override or remove the generated ID. Use the exact 3321 // rendered value so `aria-owns` never points at an ID absent from the DOM. 3322 nodeId: /* @__PURE__ */ React21.isValidElement(portalElement) ? portalElement.props.id : void 0, 3323 subtree: portalSubtree 3324 }; 3325 } 3326 var FloatingPortal = /* @__PURE__ */ React21.forwardRef(function FloatingPortal2(componentProps, forwardedRef) { 3327 const { 3328 render, 3329 className, 3330 style, 3331 children, 3332 container, 3333 portalOwnerRole, 3334 ...elementProps 3335 } = componentProps; 3336 const { 3337 node: portalNode, 3338 nodeId: portalNodeId, 3339 subtree: portalSubtree 3340 } = useFloatingPortalNode({ 3341 container, 3342 ref: forwardedRef, 3343 componentProps, 3344 elementProps 3345 }); 3346 const beforeOutsideRef = React21.useRef(null); 3347 const afterOutsideRef = React21.useRef(null); 3348 const beforeInsideRef = React21.useRef(null); 3349 const afterInsideRef = React21.useRef(null); 3350 const [focusManagerState, setFocusManagerState] = React21.useState(null); 3351 const focusInsideDisabledRef = React21.useRef(false); 3352 const modal = focusManagerState?.modal; 3353 const open3 = focusManagerState?.open; 3354 const shouldRenderGuards = !!focusManagerState && !focusManagerState.modal && focusManagerState.open && !!portalNode; 3355 React21.useEffect(() => { 3356 if (!portalNode || modal) { 3357 return void 0; 3358 } 3359 function onFocus(event) { 3360 if (portalNode && event.relatedTarget && isOutsideEvent(event)) { 3361 if (event.type === "focusin") { 3362 if (focusInsideDisabledRef.current) { 3363 enableFocusInside(portalNode); 3364 focusInsideDisabledRef.current = false; 3365 } 3366 } else { 3367 disableFocusInside(portalNode); 3368 focusInsideDisabledRef.current = true; 3369 } 3370 } 3371 } 3372 return mergeCleanups(addEventListener(portalNode, "focusin", onFocus, true), addEventListener(portalNode, "focusout", onFocus, true)); 3373 }, [portalNode, modal]); 3374 useIsoLayoutEffect(() => { 3375 if (!portalNode || open3 !== true || !focusInsideDisabledRef.current) { 3376 return; 3377 } 3378 enableFocusInside(portalNode); 3379 focusInsideDisabledRef.current = false; 3380 }, [open3, portalNode]); 3381 const portalContextValue = React21.useMemo(() => ({ 3382 beforeOutsideRef, 3383 afterOutsideRef, 3384 beforeInsideRef, 3385 afterInsideRef, 3386 portalNode, 3387 setFocusManagerState 3388 }), [portalNode]); 3389 return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(React21.Fragment, { 3390 children: [portalSubtree, /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(PortalContext.Provider, { 3391 value: portalContextValue, 3392 children: [shouldRenderGuards && portalNode && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(FocusGuard, { 3393 "data-type": "outside", 3394 ref: beforeOutsideRef, 3395 onFocus: (event) => { 3396 if (isOutsideEvent(event, portalNode)) { 3397 beforeInsideRef.current?.focus(); 3398 } else { 3399 const domReference = focusManagerState ? focusManagerState.domReference : null; 3400 const prevTabbable = getPreviousTabbable(domReference); 3401 prevTabbable?.focus(); 3402 } 3403 } 3404 }), shouldRenderGuards && portalNode && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { 3405 role: portalOwnerRole, 3406 "aria-owns": portalNodeId, 3407 style: ownerVisuallyHidden 3408 }), portalNode && /* @__PURE__ */ ReactDOM2.createPortal(children, portalNode), shouldRenderGuards && portalNode && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(FocusGuard, { 3409 "data-type": "outside", 3410 ref: afterOutsideRef, 3411 onFocus: (event) => { 3412 if (isOutsideEvent(event, portalNode)) { 3413 afterInsideRef.current?.focus(); 3414 } else { 3415 const domReference = focusManagerState ? focusManagerState.domReference : null; 3416 const nextTabbable = getNextTabbable(domReference); 3417 nextTabbable?.focus(); 3418 if (focusManagerState?.closeOnFocusOut) { 3419 focusManagerState?.onOpenChange(false, createChangeEventDetails(reason_parts_exports.focusOut, event.nativeEvent)); 3420 } 3421 } 3422 } 3423 })] 3424 })] 3425 }); 3426 }); 3427 if (true) FloatingPortal.displayName = "FloatingPortal"; 3428 3429 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingTree.mjs 3430 var React22 = __toESM(require_react(), 1); 3431 3432 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/createEventEmitter.mjs 3433 function createEventEmitter() { 3434 const map = /* @__PURE__ */ new Map(); 3435 return { 3436 emit(event, data) { 3437 map.get(event)?.forEach((listener) => listener(data)); 3438 }, 3439 on(event, listener) { 3440 if (!map.has(event)) { 3441 map.set(event, /* @__PURE__ */ new Set()); 3442 } 3443 map.get(event).add(listener); 3444 }, 3445 off(event, listener) { 3446 map.get(event)?.delete(listener); 3447 } 3448 }; 3449 } 3450 3451 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingTree.mjs 3452 var import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1); 3453 var FloatingNodeContext = /* @__PURE__ */ React22.createContext(null); 3454 if (true) FloatingNodeContext.displayName = "FloatingNodeContext"; 3455 var FloatingTreeContext = /* @__PURE__ */ React22.createContext(null); 3456 if (true) FloatingTreeContext.displayName = "FloatingTreeContext"; 3457 var useFloatingParentNodeId = () => React22.useContext(FloatingNodeContext)?.id || null; 3458 var useFloatingTree = (externalTree) => { 3459 const contextTree = React22.useContext(FloatingTreeContext); 3460 return externalTree ?? contextTree; 3461 }; 3462 3463 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useClientPoint.mjs 3464 var React23 = __toESM(require_react(), 1); 3465 function createVirtualElement(domElement, data) { 3466 let offsetX = null; 3467 let offsetY = null; 3468 let isAutoUpdateEvent = false; 3469 return { 3470 contextElement: domElement || void 0, 3471 getBoundingClientRect() { 3472 const domRect = domElement?.getBoundingClientRect() || { 3473 width: 0, 3474 height: 0, 3475 x: 0, 3476 y: 0 3477 }; 3478 const isXAxis = data.axis === "x" || data.axis === "both"; 3479 const isYAxis = data.axis === "y" || data.axis === "both"; 3480 const canTrackCursorOnAutoUpdate = ["mouseenter", "mousemove"].includes(data.dataRef.current.openEvent?.type || "") && data.pointerType !== "touch"; 3481 const width = data.axis === "y" ? domRect.width : 0; 3482 const height = data.axis === "x" ? domRect.height : 0; 3483 let x = domRect.x; 3484 let y = domRect.y; 3485 if (offsetX == null && data.x && isXAxis) { 3486 offsetX = domRect.x - data.x; 3487 } 3488 if (offsetY == null && data.y && isYAxis) { 3489 offsetY = domRect.y - data.y; 3490 } 3491 x -= offsetX || 0; 3492 y -= offsetY || 0; 3493 if (!isAutoUpdateEvent || canTrackCursorOnAutoUpdate) { 3494 x = isXAxis && data.x != null ? data.x : x; 3495 y = isYAxis && data.y != null ? data.y : y; 3496 } 3497 isAutoUpdateEvent = true; 3498 return { 3499 width, 3500 height, 3501 x, 3502 y, 3503 top: y, 3504 right: x + width, 3505 bottom: y + height, 3506 left: x 3507 }; 3508 } 3509 }; 3510 } 3511 function isMouseBasedEvent(event) { 3512 return event != null && event.clientX != null; 3513 } 3514 function useClientPoint(store2, props = {}) { 3515 const { 3516 enabled = true, 3517 axis = "both" 3518 } = props; 3519 const open3 = store2.useState("open"); 3520 const floating = store2.useState("floatingElement"); 3521 const domReference = store2.useState("domReferenceElement"); 3522 const dataRef = store2.context.dataRef; 3523 const initialRef = React23.useRef(false); 3524 const cleanupListenerRef = React23.useRef(null); 3525 const [pointerType, setPointerType] = React23.useState(); 3526 const [reactive, setReactive] = React23.useState([]); 3527 const resetReference = useStableCallback((reference2) => { 3528 store2.set("positionReference", reference2); 3529 }); 3530 const setReference = useStableCallback((newX, newY, referenceElement) => { 3531 if (initialRef.current) { 3532 return; 3533 } 3534 if (dataRef.current.openEvent && !isMouseBasedEvent(dataRef.current.openEvent)) { 3535 return; 3536 } 3537 store2.set("positionReference", createVirtualElement(referenceElement ?? domReference, { 3538 x: newX, 3539 y: newY, 3540 axis, 3541 dataRef, 3542 pointerType 3543 })); 3544 }); 3545 const handleReferenceEnterOrMove = useStableCallback((event) => { 3546 if (!open3) { 3547 setReference(event.clientX, event.clientY, event.currentTarget); 3548 } else if (!cleanupListenerRef.current) { 3549 setReference(event.clientX, event.clientY, event.currentTarget); 3550 setReactive([]); 3551 } 3552 }); 3553 const openCheck = isMouseLikePointerType(pointerType) ? floating : open3; 3554 React23.useEffect(() => { 3555 if (!enabled) { 3556 resetReference(domReference); 3557 return void 0; 3558 } 3559 if (!openCheck) { 3560 return void 0; 3561 } 3562 function cleanupListener() { 3563 cleanupListenerRef.current?.(); 3564 cleanupListenerRef.current = null; 3565 } 3566 const win = getWindow(floating); 3567 function handleMouseMove(event) { 3568 const target = getTarget(event); 3569 if (!contains(floating, target)) { 3570 setReference(event.clientX, event.clientY); 3571 } else { 3572 cleanupListener(); 3573 } 3574 } 3575 if (!dataRef.current.openEvent || isMouseBasedEvent(dataRef.current.openEvent)) { 3576 cleanupListenerRef.current = addEventListener(win, "mousemove", handleMouseMove); 3577 } else { 3578 resetReference(domReference); 3579 } 3580 return cleanupListener; 3581 }, [openCheck, enabled, floating, dataRef, domReference, store2, setReference, resetReference, reactive]); 3582 React23.useEffect(() => () => { 3583 store2.set("positionReference", null); 3584 }, [store2]); 3585 React23.useEffect(() => { 3586 if (enabled && !floating) { 3587 initialRef.current = false; 3588 } 3589 }, [enabled, floating]); 3590 React23.useEffect(() => { 3591 if (!enabled && open3) { 3592 initialRef.current = true; 3593 } 3594 }, [enabled, open3]); 3595 const reference = React23.useMemo(() => { 3596 function setPointerTypeRef(event) { 3597 setPointerType(event.pointerType); 3598 } 3599 return { 3600 onPointerDown: setPointerTypeRef, 3601 onPointerEnter: setPointerTypeRef, 3602 onMouseMove: handleReferenceEnterOrMove, 3603 onMouseEnter: handleReferenceEnterOrMove 3604 }; 3605 }, [handleReferenceEnterOrMove]); 3606 return React23.useMemo(() => enabled ? { 3607 reference, 3608 trigger: reference 3609 } : {}, [enabled, reference]); 3610 } 3611 3612 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useDismiss.mjs 3613 var React24 = __toESM(require_react(), 1); 3614 function alwaysFalse() { 3615 return false; 3616 } 3617 function normalizeProp(normalizable) { 3618 return { 3619 escapeKey: typeof normalizable === "boolean" ? normalizable : normalizable?.escapeKey ?? false, 3620 outsidePress: typeof normalizable === "boolean" ? normalizable : normalizable?.outsidePress ?? true 3621 }; 3622 } 3623 function useDismiss(store2, props = {}) { 3624 const { 3625 enabled = true, 3626 escapeKey: escapeKey2 = true, 3627 outsidePress: outsidePressProp = true, 3628 outsidePressEvent = "sloppy", 3629 referencePress = alwaysFalse, 3630 bubbles, 3631 externalTree 3632 } = props; 3633 const open3 = store2.useState("open"); 3634 const floatingElement = store2.useState("floatingElement"); 3635 const { 3636 dataRef, 3637 events 3638 } = store2.context; 3639 const tree = useFloatingTree(externalTree); 3640 const outsidePressFn = useStableCallback(typeof outsidePressProp === "function" ? outsidePressProp : () => false); 3641 const outsidePress2 = typeof outsidePressProp === "function" ? outsidePressFn : outsidePressProp; 3642 const outsidePressEnabled = outsidePress2 !== false; 3643 const getOutsidePressEventProp = useStableCallback(() => outsidePressEvent); 3644 const { 3645 escapeKey: escapeKeyBubbles, 3646 outsidePress: outsidePressBubbles 3647 } = normalizeProp(bubbles); 3648 const pressStartedInsideRef = React24.useRef(false); 3649 const pressStartPreventedRef = React24.useRef(false); 3650 const suppressNextOutsideClickRef = React24.useRef(false); 3651 const sawPressWhileOpenRef = React24.useRef(false); 3652 const isComposingRef = React24.useRef(false); 3653 const currentPointerTypeRef = React24.useRef(""); 3654 const touchStateRef = React24.useRef(null); 3655 const cancelDismissOnEndTimeout = useTimeout(); 3656 const clearInsideReactTreeTimeout = useTimeout(); 3657 const compositionTimeout = useTimeout(); 3658 const clearInsideReactTree = useStableCallback(() => { 3659 clearInsideReactTreeTimeout.clear(); 3660 dataRef.current.insideReactTree = false; 3661 }); 3662 const hasBlockingChild = useStableCallback((bubbleKey) => { 3663 const nodeId = dataRef.current.floatingContext?.nodeId; 3664 const children = tree ? getNodeChildren(tree.nodesRef.current, nodeId) : []; 3665 return children.some((child) => child.context?.open && !child.context.dataRef.current[bubbleKey]); 3666 }); 3667 const isEventWithinOwnElements = useStableCallback((event) => { 3668 return isEventTargetWithin(event, store2.select("floatingElement")) || isEventTargetWithin(event, store2.select("domReferenceElement")); 3669 }); 3670 const closeOnReferencePress = useStableCallback((event) => { 3671 if (!referencePress()) { 3672 return; 3673 } 3674 store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerPress, event.nativeEvent)); 3675 }); 3676 const closeOnEscapeKeyDown = useStableCallback((event) => { 3677 if (!open3 || !enabled || !escapeKey2 || event.key !== "Escape") { 3678 return; 3679 } 3680 const native = isReactEvent(event) ? event.nativeEvent : event; 3681 if (isComposingRef.current || native.isComposing) { 3682 return; 3683 } 3684 if (!escapeKeyBubbles && hasBlockingChild("__escapeKeyBubbles")) { 3685 return; 3686 } 3687 const eventDetails = createChangeEventDetails(reason_parts_exports.escapeKey, native); 3688 store2.setOpen(false, eventDetails); 3689 if (!eventDetails.isCanceled) { 3690 event.preventDefault(); 3691 } 3692 if (!escapeKeyBubbles && !eventDetails.isPropagationAllowed) { 3693 event.stopPropagation(); 3694 } 3695 }); 3696 const markInsideReactTree = useStableCallback(() => { 3697 dataRef.current.insideReactTree = true; 3698 clearInsideReactTreeTimeout.start(0, clearInsideReactTree); 3699 }); 3700 const markPressStartedInsideReactTree = useStableCallback((event) => { 3701 if (!open3 || !enabled || event.button !== 0) { 3702 return; 3703 } 3704 const target = getTarget(event.nativeEvent); 3705 if (!contains(store2.select("floatingElement"), target)) { 3706 return; 3707 } 3708 if (!pressStartedInsideRef.current) { 3709 pressStartedInsideRef.current = true; 3710 pressStartPreventedRef.current = false; 3711 } 3712 }); 3713 const markInsidePressStartPrevented = useStableCallback((event) => { 3714 if (!open3 || !enabled) { 3715 return; 3716 } 3717 if (!(event.defaultPrevented || event.nativeEvent.defaultPrevented)) { 3718 return; 3719 } 3720 if (pressStartedInsideRef.current) { 3721 pressStartPreventedRef.current = true; 3722 } 3723 }); 3724 React24.useEffect(() => { 3725 function handleOpenChange(details) { 3726 if (!details.open) { 3727 sawPressWhileOpenRef.current = false; 3728 } 3729 } 3730 events.on("openchange", handleOpenChange); 3731 return () => { 3732 events.off("openchange", handleOpenChange); 3733 }; 3734 }, [events]); 3735 React24.useEffect(() => clearInsideReactTree, [clearInsideReactTree]); 3736 React24.useEffect(() => { 3737 if (!open3 || !enabled) { 3738 if (!open3) { 3739 sawPressWhileOpenRef.current = false; 3740 isComposingRef.current = false; 3741 currentPointerTypeRef.current = ""; 3742 touchStateRef.current = null; 3743 } 3744 return clearInsideReactTree; 3745 } 3746 dataRef.current.__escapeKeyBubbles = escapeKeyBubbles; 3747 dataRef.current.__outsidePressBubbles = outsidePressBubbles; 3748 const preventedPressSuppressionTimeout = new Timeout(); 3749 const doc = ownerDocument(floatingElement); 3750 function handleCompositionStart() { 3751 compositionTimeout.clear(); 3752 isComposingRef.current = true; 3753 } 3754 function handleCompositionEnd() { 3755 isComposingRef.current = true; 3756 compositionTimeout.start( 3757 // 0ms or 1ms don't work in Safari. 5ms appears to consistently work. 3758 // Only apply to WebKit for the test to remain 0ms. 3759 parts_exports.engine.webkit ? 5 : 0, 3760 () => { 3761 isComposingRef.current = false; 3762 } 3763 ); 3764 } 3765 function suppressImmediateOutsideClickAfterPreventedStart() { 3766 suppressNextOutsideClickRef.current = true; 3767 preventedPressSuppressionTimeout.start(0, () => { 3768 suppressNextOutsideClickRef.current = false; 3769 }); 3770 } 3771 function resetPressStartState() { 3772 pressStartedInsideRef.current = false; 3773 pressStartPreventedRef.current = false; 3774 } 3775 function getOutsidePressEvent() { 3776 const type = currentPointerTypeRef.current; 3777 const computedType = type === "pen" || !type ? "mouse" : type; 3778 const outsidePressEventValue = getOutsidePressEventProp(); 3779 const resolved = typeof outsidePressEventValue === "function" ? outsidePressEventValue() : outsidePressEventValue; 3780 if (typeof resolved === "string") { 3781 return resolved; 3782 } 3783 return resolved[computedType]; 3784 } 3785 function shouldIgnoreEvent(event) { 3786 const computedOutsidePressEvent = getOutsidePressEvent(); 3787 return computedOutsidePressEvent === "intentional" && event.type !== "click" || computedOutsidePressEvent === "sloppy" && event.type === "click"; 3788 } 3789 function isEventWithinFloatingTree(event) { 3790 const nodeId = dataRef.current.floatingContext?.nodeId; 3791 const targetIsInsideChildren = tree && getNodeChildren(tree.nodesRef.current, nodeId).some((node) => isEventTargetWithin(event, node.context?.elements.floating)); 3792 return isEventWithinOwnElements(event) || targetIsInsideChildren; 3793 } 3794 function closeOnPressOutside(event) { 3795 if (shouldIgnoreEvent(event)) { 3796 if (event.type !== "click" && !isEventWithinOwnElements(event)) { 3797 preventedPressSuppressionTimeout.clear(); 3798 suppressNextOutsideClickRef.current = false; 3799 } 3800 clearInsideReactTree(); 3801 return; 3802 } 3803 if (dataRef.current.insideReactTree) { 3804 clearInsideReactTree(); 3805 return; 3806 } 3807 const target = getTarget(event); 3808 const inertSelector = `[$createAttribute("inert")}]`; 3809 const targetRoot = isElement(target) ? target.getRootNode() : null; 3810 const markers = Array.from((isShadowRoot(targetRoot) ? targetRoot : ownerDocument(store2.select("floatingElement"))).querySelectorAll(inertSelector)); 3811 const triggers = store2.context.triggerElements; 3812 if (target && (triggers.hasElement(target) || triggers.hasMatchingElement((trigger) => contains(trigger, target)))) { 3813 return; 3814 } 3815 let targetRootAncestor = isElement(target) ? target : null; 3816 while (targetRootAncestor && !isLastTraversableNode(targetRootAncestor)) { 3817 const nextParent = getParentNode(targetRootAncestor); 3818 if (isLastTraversableNode(nextParent) || !isElement(nextParent)) { 3819 break; 3820 } 3821 targetRootAncestor = nextParent; 3822 } 3823 if (markers.length && isElement(target) && !isRootElement(target) && // Clicked on a direct ancestor (e.g. FloatingOverlay). 3824 !contains(target, store2.select("floatingElement")) && // If the target root element contains none of the markers, then the 3825 // element was injected after the floating element rendered. 3826 markers.every((marker) => !contains(targetRootAncestor, marker))) { 3827 return; 3828 } 3829 if (isHTMLElement(target) && !("touches" in event)) { 3830 const lastTraversableNode = isLastTraversableNode(target); 3831 const style = getComputedStyle2(target); 3832 const scrollRe = /auto|scroll/; 3833 const isScrollableX = lastTraversableNode || scrollRe.test(style.overflowX); 3834 const isScrollableY = lastTraversableNode || scrollRe.test(style.overflowY); 3835 const canScrollX = isScrollableX && target.clientWidth > 0 && target.scrollWidth > target.clientWidth; 3836 const canScrollY = isScrollableY && target.clientHeight > 0 && target.scrollHeight > target.clientHeight; 3837 const isRTL4 = style.direction === "rtl"; 3838 const pressedVerticalScrollbar = canScrollY && (isRTL4 ? event.offsetX <= target.offsetWidth - target.clientWidth : event.offsetX > target.clientWidth); 3839 const pressedHorizontalScrollbar = canScrollX && event.offsetY > target.clientHeight; 3840 if (pressedVerticalScrollbar || pressedHorizontalScrollbar) { 3841 return; 3842 } 3843 } 3844 if (isEventWithinFloatingTree(event)) { 3845 return; 3846 } 3847 if (getOutsidePressEvent() === "intentional") { 3848 if (event.detail !== 0 && !isVirtualClick(event) && !sawPressWhileOpenRef.current) { 3849 return; 3850 } 3851 if (suppressNextOutsideClickRef.current) { 3852 preventedPressSuppressionTimeout.clear(); 3853 suppressNextOutsideClickRef.current = false; 3854 return; 3855 } 3856 } 3857 if (typeof outsidePress2 === "function" && !outsidePress2(event)) { 3858 return; 3859 } 3860 if (hasBlockingChild("__outsidePressBubbles")) { 3861 return; 3862 } 3863 store2.setOpen(false, createChangeEventDetails(reason_parts_exports.outsidePress, event)); 3864 clearInsideReactTree(); 3865 } 3866 function handlePointerDown(event) { 3867 if (getOutsidePressEvent() !== "sloppy" || event.pointerType === "touch" || !store2.select("open") || !enabled || isEventWithinOwnElements(event)) { 3868 return; 3869 } 3870 closeOnPressOutside(event); 3871 } 3872 function handleTouchStart(event) { 3873 if (getOutsidePressEvent() !== "sloppy" || !store2.select("open") || !enabled || isEventWithinOwnElements(event)) { 3874 return; 3875 } 3876 const touch = event.touches[0]; 3877 if (touch) { 3878 touchStateRef.current = { 3879 startTime: Date.now(), 3880 startX: touch.clientX, 3881 startY: touch.clientY, 3882 dismissOnTouchEnd: false, 3883 dismissOnMouseDown: true 3884 }; 3885 cancelDismissOnEndTimeout.start(1e3, () => { 3886 if (touchStateRef.current) { 3887 touchStateRef.current.dismissOnTouchEnd = false; 3888 touchStateRef.current.dismissOnMouseDown = false; 3889 } 3890 }); 3891 } 3892 } 3893 function addTargetEventListenerOnce(event, listener) { 3894 const target = getTarget(event); 3895 if (!target) { 3896 return; 3897 } 3898 const unsubscribe2 = addEventListener(target, event.type, () => { 3899 listener(event); 3900 unsubscribe2(); 3901 }); 3902 } 3903 function handleTouchStartCapture(event) { 3904 currentPointerTypeRef.current = "touch"; 3905 addTargetEventListenerOnce(event, handleTouchStart); 3906 } 3907 function closeOnPressOutsideCapture(event) { 3908 cancelDismissOnEndTimeout.clear(); 3909 if (event.type === "pointerdown") { 3910 if (event.button === 0) { 3911 sawPressWhileOpenRef.current = true; 3912 } 3913 currentPointerTypeRef.current = event.pointerType; 3914 } 3915 if (event.type === "mousedown" && touchStateRef.current && !touchStateRef.current.dismissOnMouseDown) { 3916 return; 3917 } 3918 addTargetEventListenerOnce(event, (targetEvent) => { 3919 if (targetEvent.type === "pointerdown") { 3920 handlePointerDown(targetEvent); 3921 } else { 3922 closeOnPressOutside(targetEvent); 3923 } 3924 }); 3925 } 3926 function handlePressEndCapture(event) { 3927 if (event.type === "pointercancel") { 3928 sawPressWhileOpenRef.current = false; 3929 } 3930 if (!pressStartedInsideRef.current) { 3931 return; 3932 } 3933 const pressStartedInsideDefaultPrevented = pressStartPreventedRef.current; 3934 resetPressStartState(); 3935 if (getOutsidePressEvent() !== "intentional") { 3936 return; 3937 } 3938 if (event.type === "pointercancel") { 3939 if (pressStartedInsideDefaultPrevented) { 3940 suppressImmediateOutsideClickAfterPreventedStart(); 3941 } 3942 return; 3943 } 3944 if (isEventWithinFloatingTree(event)) { 3945 return; 3946 } 3947 if (pressStartedInsideDefaultPrevented) { 3948 suppressImmediateOutsideClickAfterPreventedStart(); 3949 return; 3950 } 3951 if (typeof outsidePress2 === "function" && !outsidePress2(event)) { 3952 return; 3953 } 3954 preventedPressSuppressionTimeout.clear(); 3955 suppressNextOutsideClickRef.current = true; 3956 clearInsideReactTree(); 3957 } 3958 function handleTouchMove(event) { 3959 if (getOutsidePressEvent() !== "sloppy" || !touchStateRef.current || isEventWithinOwnElements(event)) { 3960 return; 3961 } 3962 const touch = event.touches[0]; 3963 if (!touch) { 3964 return; 3965 } 3966 const deltaX = Math.abs(touch.clientX - touchStateRef.current.startX); 3967 const deltaY = Math.abs(touch.clientY - touchStateRef.current.startY); 3968 const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY); 3969 if (distance > 5) { 3970 touchStateRef.current.dismissOnTouchEnd = true; 3971 } 3972 if (distance > 10) { 3973 closeOnPressOutside(event); 3974 cancelDismissOnEndTimeout.clear(); 3975 touchStateRef.current = null; 3976 } 3977 } 3978 function handleTouchMoveCapture(event) { 3979 addTargetEventListenerOnce(event, handleTouchMove); 3980 } 3981 function handleTouchEnd(event) { 3982 if (getOutsidePressEvent() !== "sloppy" || !touchStateRef.current || isEventWithinOwnElements(event)) { 3983 return; 3984 } 3985 if (touchStateRef.current.dismissOnTouchEnd) { 3986 closeOnPressOutside(event); 3987 } 3988 cancelDismissOnEndTimeout.clear(); 3989 touchStateRef.current = null; 3990 } 3991 function handleTouchEndCapture(event) { 3992 addTargetEventListenerOnce(event, handleTouchEnd); 3993 } 3994 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, { 3995 capture: true, 3996 passive: true 3997 }), addEventListener(doc, "touchmove", handleTouchMoveCapture, { 3998 capture: true, 3999 passive: true 4000 }), addEventListener(doc, "touchend", handleTouchEndCapture, { 4001 capture: true, 4002 passive: true 4003 }))); 4004 return () => { 4005 unsubscribe(); 4006 preventedPressSuppressionTimeout.clear(); 4007 resetPressStartState(); 4008 suppressNextOutsideClickRef.current = false; 4009 }; 4010 }, [dataRef, floatingElement, escapeKey2, outsidePressEnabled, outsidePress2, open3, enabled, escapeKeyBubbles, outsidePressBubbles, closeOnEscapeKeyDown, clearInsideReactTree, getOutsidePressEventProp, hasBlockingChild, isEventWithinOwnElements, tree, store2, cancelDismissOnEndTimeout, compositionTimeout]); 4011 const reference = React24.useMemo(() => ({ 4012 onKeyDown: closeOnEscapeKeyDown, 4013 onPointerDown: closeOnReferencePress, 4014 onClick: closeOnReferencePress 4015 }), [closeOnEscapeKeyDown, closeOnReferencePress]); 4016 const floating = React24.useMemo(() => ({ 4017 onKeyDown: closeOnEscapeKeyDown, 4018 // `onMouseDown` may be blocked if `event.preventDefault()` is called in 4019 // `onPointerDown`, such as with <NumberField.ScrubArea>. 4020 // See https://github.com/mui/base-ui/pull/3379 4021 onPointerDown: markInsidePressStartPrevented, 4022 onMouseDown: markInsidePressStartPrevented, 4023 onClickCapture: markInsideReactTree, 4024 onMouseDownCapture(event) { 4025 markInsideReactTree(); 4026 markPressStartedInsideReactTree(event); 4027 }, 4028 onPointerDownCapture(event) { 4029 markInsideReactTree(); 4030 markPressStartedInsideReactTree(event); 4031 }, 4032 onMouseUpCapture: markInsideReactTree, 4033 onTouchEndCapture: markInsideReactTree, 4034 onTouchMoveCapture: markInsideReactTree 4035 }), [closeOnEscapeKeyDown, markInsideReactTree, markPressStartedInsideReactTree, markInsidePressStartPrevented]); 4036 return React24.useMemo(() => enabled ? { 4037 reference, 4038 floating, 4039 trigger: reference 4040 } : {}, [enabled, reference, floating]); 4041 } 4042 4043 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popups/popupHandle.mjs 4044 var BasePopupHandle = class { 4045 /** 4046 * Stores of every root currently using this handle, in attach order. A handle is meant to be used 4047 * by a single mounted root, but roots can transiently overlap (e.g. during an animated route 4048 * transition), so this stack lets `attachStore`'s cleanup restore the previous root instead of 4049 * leaving a still-mounted root uncontrollable when a newer overlapping root detaches first. 4050 */ 4051 attachedStores = []; 4052 /** 4053 * Store of the root that currently controls the handle: the most recently attached one still 4054 * mounted, or `null` when no root is attached. Imperative methods are no-ops while this is `null`. 4055 */ 4056 attachedStoreValue = null; 4057 /** 4058 * Listeners notified when `attachedStore` changes, so detached triggers can follow the store pointer. 4059 */ 4060 storeListeners = /* @__PURE__ */ new Set(); 4061 /** 4062 * Creates a handle backed by the store used while no root is attached. 4063 * 4064 * @param fallbackStore Inert, closed store handed to detached triggers while no root is attached, 4065 * so they can render and register without a mounted root. Triggers register into whichever store 4066 * `store` currently resolves to, so while detached they live in this store's trigger map and 4067 * migrate themselves to the root's store (and back) as it attaches/detaches. 4068 * @param componentName Component name used to prefix dev warnings, e.g. `'Menu'` produces 4069 * `MenuHandle.open()` in warning text. 4070 * @param throwOnMissingTrigger Whether `open(triggerId)` throws when no trigger with that id is 4071 * registered. Anchored popups (Menu, Popover, Tooltip, PreviewCard) need a trigger to anchor to, 4072 * so they throw; Dialog is not anchored and instead opens unassociated with a dev warning. 4073 */ 4074 constructor(fallbackStore, componentName, throwOnMissingTrigger = true) { 4075 this.fallbackStore = fallbackStore; 4076 this.componentName = componentName; 4077 this.throwOnMissingTrigger = throwOnMissingTrigger; 4078 } 4079 get attachedStore() { 4080 return this.attachedStoreValue; 4081 } 4082 /** 4083 * Store that detached triggers read from: the attached root's store, or an inert fallback store 4084 * used while no root is attached. 4085 * @internal 4086 */ 4087 get store() { 4088 return this.attachedStoreValue ?? this.fallbackStore; 4089 } 4090 /** 4091 * Stable fallback store used for server rendering and hydration. Root stores cannot be recorded on 4092 * the handle during render because a handle can be shared by concurrent server-rendered requests. 4093 * @internal 4094 */ 4095 get serverStore() { 4096 return this.fallbackStore; 4097 } 4098 /** 4099 * Subscribes to changes of the attached store pointer so detached triggers re-render and re-bind 4100 * when a root attaches or detaches. Returns a function that removes the listener. 4101 * @internal 4102 */ 4103 subscribeStore(listener) { 4104 this.storeListeners.add(listener); 4105 return () => { 4106 this.storeListeners.delete(listener); 4107 }; 4108 } 4109 /** 4110 * Points the handle at a root's store and notifies subscribers so detached triggers re-render and 4111 * re-register into it (their registration effect migrates them when the store pointer changes). 4112 * Returns a cleanup function that detaches the store again. 4113 * @internal 4114 */ 4115 attachStore(newStore) { 4116 this.attachedStores.push(newStore); 4117 this.setActiveStore(newStore); 4118 if (true) { 4119 if (this.attachedStores.length > 1) { 4120 const dev = this; 4121 (dev.overlapWarningFrame ??= AnimationFrame.create()).request(() => { 4122 if (this.attachedStores.length > 1) { 4123 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."); 4124 } 4125 }); 4126 } 4127 } 4128 return () => { 4129 const index2 = this.attachedStores.lastIndexOf(newStore); 4130 if (index2 !== -1) { 4131 this.attachedStores.splice(index2, 1); 4132 } 4133 this.setActiveStore(this.attachedStores[this.attachedStores.length - 1] ?? null); 4134 }; 4135 } 4136 /** 4137 * Sets the store that currently controls the handle and notifies subscribers when it changes, so 4138 * detached triggers re-render and migrate their registration to the new store. 4139 */ 4140 setActiveStore(store2) { 4141 if (this.attachedStoreValue !== store2) { 4142 this.attachedStoreValue = store2; 4143 this.storeListeners.forEach((listener) => { 4144 listener(); 4145 }); 4146 } 4147 } 4148 /** 4149 * Opens the attached root's store and associates it with the trigger with the given id, or a 4150 * no-op (with a dev warning) while no root is attached. Shared by every concrete handle's public 4151 * `open()` method, which only narrows the parameter type. 4152 * 4153 * When a trigger id is given but no matching trigger is registered, anchored popups throw (see 4154 * `throwOnMissingTrigger`); Dialog opens unassociated with a dev warning instead. 4155 * 4156 * This method should only be called in an event handler or an effect (not during rendering). 4157 * 4158 * @param triggerId ID of the trigger to associate with the popup, or `null`/`undefined` to open 4159 * without associating any trigger. 4160 */ 4161 openByTrigger(triggerId) { 4162 const attachedStore = this.attachedStore; 4163 if (attachedStore === null) { 4164 if (true) { 4165 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.`); 4166 } 4167 return; 4168 } 4169 let triggerElement; 4170 if (triggerId) { 4171 for (let i = this.attachedStores.length - 1; i >= 0 && !triggerElement; i -= 1) { 4172 triggerElement = this.attachedStores[i].context.triggerElements.getById(triggerId); 4173 } 4174 triggerElement ??= this.fallbackStore.context.triggerElements.getById(triggerId); 4175 } 4176 if (triggerId && !triggerElement) { 4177 if (this.throwOnMissingTrigger) { 4178 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)); 4179 } 4180 if (true) { 4181 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.`); 4182 } 4183 } 4184 attachedStore.setOpen(true, createChangeEventDetails(reason_parts_exports.imperativeAction, void 0, triggerElement)); 4185 } 4186 /** 4187 * Closes the popup by setting the attached root's store to closed, or a no-op (with a dev warning) 4188 * while no root is attached. Shared by every concrete handle's public `close()` method. 4189 * 4190 * This method should only be called in an event handler or an effect (not during rendering). 4191 */ 4192 closePopup() { 4193 const attachedStore = this.attachedStore; 4194 if (attachedStore === null) { 4195 if (true) { 4196 console.warn(`Base UI: $this.componentName}Handle.close() was called while no root using this handle is mounted. The call was ignored.`); 4197 } 4198 return; 4199 } 4200 attachedStore.setOpen(false, createChangeEventDetails(reason_parts_exports.imperativeAction)); 4201 } 4202 }; 4203 4204 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popups/popupStoreUtils.mjs 4205 var React26 = __toESM(require_react(), 1); 4206 var ReactDOM3 = __toESM(require_react_dom(), 1); 4207 4208 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useSyncedFloatingRootContext.mjs 4209 function useSyncedFloatingRootContext(options) { 4210 const { 4211 popupStore, 4212 treatPopupAsFloatingElement = false, 4213 floatingRootContext: store2, 4214 floatingId, 4215 nested, 4216 onOpenChange 4217 } = options; 4218 const open3 = popupStore.useState("open"); 4219 const referenceElement = popupStore.useState("activeTriggerElement"); 4220 const floatingElement = popupStore.useState(treatPopupAsFloatingElement ? "popupElement" : "positionerElement"); 4221 const handleOpenChange = onOpenChange; 4222 popupStore.useSyncedValue("floatingId", floatingId); 4223 useIsoLayoutEffect(() => { 4224 const valuesToSync = { 4225 open: open3, 4226 floatingId, 4227 referenceElement, 4228 floatingElement 4229 }; 4230 if (isElement(referenceElement)) { 4231 valuesToSync.domReferenceElement = referenceElement; 4232 } 4233 if (store2.state.positionReference === store2.state.referenceElement) { 4234 valuesToSync.positionReference = referenceElement; 4235 } 4236 store2.update(valuesToSync); 4237 }, [open3, floatingId, referenceElement, floatingElement, store2]); 4238 store2.context.onOpenChange = handleOpenChange; 4239 store2.context.nested = nested; 4240 return store2; 4241 } 4242 4243 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useUnmountAfterClose.mjs 4244 var React25 = __toESM(require_react(), 1); 4245 function useUnmountAfterClose(parameters) { 4246 const { 4247 open: open3, 4248 ref, 4249 preventUnmountOnClose, 4250 setPreventUnmountOnClose: setPreventUnmountOnCloseParam, 4251 onUnmount, 4252 animateInitialOpen 4253 } = parameters; 4254 const setPreventUnmountOnClose = useStableCallback(setPreventUnmountOnCloseParam); 4255 const { 4256 mounted, 4257 setMounted, 4258 transitionStatus 4259 } = useTransitionStatus(open3, false, false, animateInitialOpen); 4260 const preventUnmountingOnClose = open3 ? false : preventUnmountOnClose; 4261 useIsoLayoutEffect(() => { 4262 if (open3) { 4263 setPreventUnmountOnClose(false); 4264 } 4265 }, [open3, setPreventUnmountOnClose]); 4266 const mountedRef = React25.useRef(mounted); 4267 const pendingUnmountRef = React25.useRef(false); 4268 const rerender = useForcedRerendering(); 4269 const unmount = () => { 4270 mountedRef.current = false; 4271 setMounted(false); 4272 onUnmount(); 4273 }; 4274 useIsoLayoutEffect(() => { 4275 mountedRef.current = mounted; 4276 if (pendingUnmountRef.current) { 4277 pendingUnmountRef.current = false; 4278 if (!open3 && mounted) { 4279 unmount(); 4280 } 4281 } 4282 }); 4283 const forceUnmount = useStableCallback(() => { 4284 if (!mountedRef.current) { 4285 return; 4286 } 4287 if (open3) { 4288 pendingUnmountRef.current = true; 4289 rerender(); 4290 return; 4291 } 4292 unmount(); 4293 }); 4294 useOpenChangeComplete({ 4295 enabled: mounted && !open3 && !preventUnmountingOnClose, 4296 open: open3, 4297 ref, 4298 onComplete() { 4299 if (!open3) { 4300 forceUnmount(); 4301 } 4302 } 4303 }); 4304 return { 4305 mounted, 4306 transitionStatus, 4307 preventUnmountingOnClose, 4308 forceUnmount 4309 }; 4310 } 4311 4312 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popups/popupStoreUtils.mjs 4313 var FOCUSABLE_POPUP_PROPS = { 4314 tabIndex: -1, 4315 [FOCUSABLE_ATTRIBUTE]: "" 4316 }; 4317 function usePopupRootStore(createStore, treatPopupAsFloatingElement = false) { 4318 const floatingId = useId(); 4319 const nested = useFloatingParentNodeId() != null; 4320 const store2 = useRefWithInit(() => createStore(floatingId, nested)).current; 4321 useSyncedFloatingRootContext({ 4322 popupStore: store2, 4323 treatPopupAsFloatingElement, 4324 floatingRootContext: store2.state.floatingRootContext, 4325 floatingId, 4326 nested, 4327 onOpenChange: store2.setOpen 4328 }); 4329 return store2; 4330 } 4331 function PopupHandleAttachment({ 4332 handle, 4333 store: store2 4334 }) { 4335 useIsoLayoutEffect(() => { 4336 return handle.attachStore(store2); 4337 }, [handle, store2]); 4338 return null; 4339 } 4340 function syncTriggerCount(store2) { 4341 const triggerCount = store2.context.triggerElements.size; 4342 if (store2.select("open") && store2.state.triggerCount !== triggerCount) { 4343 store2.set("triggerCount", triggerCount); 4344 } 4345 } 4346 function useTriggerRegistration(id, store2) { 4347 const registrationRef = React26.useRef(null); 4348 return useStableCallback((element) => { 4349 const registration = registrationRef.current; 4350 if (registration !== null) { 4351 if (registration.element === element && registration.store === store2 && registration.id === id) { 4352 return; 4353 } 4354 registrationRef.current = null; 4355 const registeredStore = registration.store; 4356 if (registeredStore.context.triggerElements.getById(registration.id) === registration.element) { 4357 registeredStore.context.triggerElements.delete(registration.id); 4358 syncTriggerCount(registeredStore); 4359 } 4360 } 4361 if (element !== null && id !== void 0) { 4362 registrationRef.current = { 4363 store: store2, 4364 id, 4365 element 4366 }; 4367 store2.context.triggerElements.add(id, element); 4368 syncTriggerCount(store2); 4369 } 4370 }); 4371 } 4372 function createPopupOpenState(state, open3, trigger, preventUnmountOnClose = false) { 4373 let preventUnmountingOnClose = state.preventUnmountingOnClose; 4374 if (open3) { 4375 preventUnmountingOnClose = false; 4376 } else if (preventUnmountOnClose) { 4377 preventUnmountingOnClose = true; 4378 } 4379 const triggerId = trigger?.id ?? null; 4380 let activeTriggerId = state.activeTriggerId; 4381 let activeTriggerElement = state.activeTriggerElement; 4382 if (triggerId || open3) { 4383 activeTriggerId = triggerId; 4384 activeTriggerElement = trigger ?? null; 4385 } 4386 return { 4387 open: open3, 4388 preventUnmountingOnClose, 4389 activeTriggerId, 4390 activeTriggerElement, 4391 // An open request without a trigger (a handle's `open(null)` or `openWithPayload()`) must not 4392 // be reassociated with a lone registered trigger later on. Controlled and default opens never 4393 // pass through here, so they keep claiming a lone trigger. A close request keeps the flag: a 4394 // controlled root may decline it and stay open, so the Root clears the flag only once the 4395 // popup is effectively closed. 4396 openedWithoutTrigger: open3 ? trigger == null : state.openedWithoutTrigger 4397 }; 4398 } 4399 function attachPreventUnmountOnClose(eventDetails) { 4400 let preventUnmountOnClose = false; 4401 eventDetails.preventUnmountOnClose = () => { 4402 preventUnmountOnClose = true; 4403 }; 4404 return () => preventUnmountOnClose; 4405 } 4406 function applyPopupOpenChange(store2, nextOpen, eventDetails, options = {}) { 4407 const reason = eventDetails.reason; 4408 const isHover = reason === reason_parts_exports.triggerHover; 4409 const isFocusOpen = nextOpen && reason === reason_parts_exports.triggerFocus; 4410 const isDismissClose = !nextOpen && (reason === reason_parts_exports.triggerPress || reason === reason_parts_exports.escapeKey); 4411 const shouldPreventUnmountOnClose = attachPreventUnmountOnClose(eventDetails); 4412 store2.context.onOpenChange?.(nextOpen, eventDetails); 4413 if (eventDetails.isCanceled) { 4414 return; 4415 } 4416 options.onBeforeDispatch?.(); 4417 store2.state.floatingRootContext.dispatchOpenChange(nextOpen, eventDetails); 4418 const changeState = () => { 4419 const popupOpenState = createPopupOpenState(store2.state, nextOpen, eventDetails.trigger, shouldPreventUnmountOnClose()); 4420 const updatedState = { 4421 ...options.extraState, 4422 ...popupOpenState 4423 }; 4424 if (isFocusOpen) { 4425 updatedState.instantType = "focus"; 4426 } else if (isDismissClose) { 4427 updatedState.instantType = "dismiss"; 4428 } else if (isHover) { 4429 updatedState.instantType = void 0; 4430 } 4431 store2.update(updatedState); 4432 }; 4433 if (isHover) { 4434 ReactDOM3.flushSync(changeState); 4435 } else { 4436 changeState(); 4437 } 4438 } 4439 function useTriggerDataForwarding(triggerId, triggerElementRef, store2, stateUpdates) { 4440 const isMountedByThisTrigger = store2.useState("isMountedByTrigger", triggerId); 4441 const baseRegisterTrigger = useTriggerRegistration(triggerId, store2); 4442 const applyTriggerData = useStableCallback((element) => { 4443 const open3 = store2.select("open"); 4444 const activeTriggerId = store2.select("activeTriggerId"); 4445 if (activeTriggerId === triggerId) { 4446 const changes = { 4447 activeTriggerElement: element, 4448 ...open3 ? stateUpdates : null 4449 }; 4450 store2.update(changes); 4451 return; 4452 } 4453 if (activeTriggerId == null && open3 && !store2.state.openedWithoutTrigger) { 4454 const changes = { 4455 activeTriggerId: triggerId ?? null, 4456 activeTriggerElement: element, 4457 ...stateUpdates 4458 }; 4459 store2.update(changes); 4460 } 4461 }); 4462 const registerTrigger = useStableCallback((element) => { 4463 baseRegisterTrigger(element); 4464 if (element) { 4465 applyTriggerData(element); 4466 } 4467 }); 4468 useIsoLayoutEffect(() => { 4469 registerTrigger(triggerElementRef.current); 4470 return () => registerTrigger(null); 4471 }, [registerTrigger, triggerElementRef, store2, triggerId]); 4472 useIsoLayoutEffect(() => { 4473 if (isMountedByThisTrigger) { 4474 const changes = { 4475 activeTriggerElement: triggerElementRef.current, 4476 ...stateUpdates 4477 }; 4478 store2.update(changes); 4479 } 4480 }, [isMountedByThisTrigger, store2, triggerElementRef, ...Object.values(stateUpdates)]); 4481 return { 4482 registerTrigger, 4483 isMountedByThisTrigger 4484 }; 4485 } 4486 function useImplicitActiveTrigger(store2, options = {}) { 4487 const { 4488 closeOnActiveTriggerUnmount = false 4489 } = options; 4490 const resolvedActiveTriggerIdRef = React26.useRef(null); 4491 const open3 = store2.useState("open"); 4492 const reactiveTriggerCount = store2.useState("triggerCount"); 4493 const activeTriggerId = store2.useState("activeTriggerId"); 4494 const reactiveActiveTriggerElement = store2.useState("activeTriggerElement"); 4495 useIsoLayoutEffect(() => { 4496 if (!open3) { 4497 resolvedActiveTriggerIdRef.current = null; 4498 if (store2.state.triggerCount !== 0) { 4499 store2.set("triggerCount", 0); 4500 } 4501 if (store2.state.openedWithoutTrigger) { 4502 store2.set("openedWithoutTrigger", false); 4503 } 4504 return; 4505 } 4506 const triggerCount = store2.context.triggerElements.size; 4507 const stateUpdates = {}; 4508 if (store2.state.triggerCount !== triggerCount) { 4509 stateUpdates.triggerCount = triggerCount; 4510 } 4511 const currentActiveTriggerId = store2.select("activeTriggerId"); 4512 let lostActiveTriggerId = null; 4513 if (currentActiveTriggerId) { 4514 const activeTriggerElement = store2.context.triggerElements.getById(currentActiveTriggerId); 4515 if (!activeTriggerElement) { 4516 for (const [triggerId, triggerElement] of store2.context.triggerElements.entries()) { 4517 if (triggerElement === store2.state.activeTriggerElement) { 4518 stateUpdates.activeTriggerId = triggerId; 4519 stateUpdates.activeTriggerElement = triggerElement; 4520 resolvedActiveTriggerIdRef.current = triggerId; 4521 break; 4522 } 4523 } 4524 if (stateUpdates.activeTriggerId === void 0) { 4525 if (resolvedActiveTriggerIdRef.current === currentActiveTriggerId) { 4526 lostActiveTriggerId = currentActiveTriggerId; 4527 } else { 4528 resolvedActiveTriggerIdRef.current = null; 4529 } 4530 } 4531 } else { 4532 resolvedActiveTriggerIdRef.current = currentActiveTriggerId; 4533 if (activeTriggerElement !== store2.state.activeTriggerElement) { 4534 stateUpdates.activeTriggerElement = activeTriggerElement; 4535 } 4536 } 4537 } else { 4538 resolvedActiveTriggerIdRef.current = null; 4539 } 4540 if (!lostActiveTriggerId && !currentActiveTriggerId && !store2.state.openedWithoutTrigger && triggerCount === 1) { 4541 const iteratorResult = store2.context.triggerElements.entries().next(); 4542 if (!iteratorResult.done) { 4543 const [implicitTriggerId, implicitTriggerElement] = iteratorResult.value; 4544 stateUpdates.activeTriggerId = implicitTriggerId; 4545 stateUpdates.activeTriggerElement = implicitTriggerElement; 4546 resolvedActiveTriggerIdRef.current = implicitTriggerId; 4547 } 4548 } 4549 if (stateUpdates.triggerCount !== void 0 || stateUpdates.activeTriggerId !== void 0 || stateUpdates.activeTriggerElement !== void 0) { 4550 store2.update(stateUpdates); 4551 } 4552 if (lostActiveTriggerId) { 4553 if (closeOnActiveTriggerUnmount) { 4554 queueMicrotask(() => { 4555 if (store2.select("open") && store2.select("activeTriggerId") === lostActiveTriggerId && !store2.context.triggerElements.getById(lostActiveTriggerId)) { 4556 const eventDetails = createChangeEventDetails(reason_parts_exports.none); 4557 store2.setOpen(false, eventDetails); 4558 if (!eventDetails.isCanceled) { 4559 store2.update({ 4560 activeTriggerId: null, 4561 activeTriggerElement: null 4562 }); 4563 } 4564 } 4565 }); 4566 } 4567 } 4568 }, [open3, store2, reactiveTriggerCount, activeTriggerId, reactiveActiveTriggerElement, closeOnActiveTriggerUnmount]); 4569 } 4570 function useOpenStateTransitions(open3, store2, onUnmount, animateInitialOpen) { 4571 const { 4572 mounted, 4573 transitionStatus, 4574 forceUnmount 4575 } = useUnmountAfterClose({ 4576 open: open3, 4577 ref: store2.context.popupRef, 4578 preventUnmountOnClose: store2.useState("preventUnmountingOnClose"), 4579 setPreventUnmountOnClose: (preventUnmountOnClose) => store2.set("preventUnmountingOnClose", preventUnmountOnClose), 4580 animateInitialOpen, 4581 onUnmount() { 4582 store2.update({ 4583 activeTriggerId: null, 4584 activeTriggerElement: null, 4585 mounted: false, 4586 preventUnmountingOnClose: false 4587 }); 4588 onUnmount?.(); 4589 store2.context.onOpenChangeComplete?.(false); 4590 } 4591 }); 4592 useRefWithInit(() => { 4593 store2.set("mounted", mounted); 4594 return null; 4595 }); 4596 store2.useSyncedValues({ 4597 mounted, 4598 transitionStatus 4599 }); 4600 return { 4601 forceUnmount, 4602 transitionStatus 4603 }; 4604 } 4605 function usePopupInteractionProps(store2, statePart) { 4606 store2.useSyncedValues(statePart); 4607 useIsoLayoutEffect(() => () => { 4608 store2.update({ 4609 activeTriggerProps: EMPTY_OBJECT, 4610 inactiveTriggerProps: EMPTY_OBJECT, 4611 popupProps: EMPTY_OBJECT 4612 }); 4613 }, [store2]); 4614 } 4615 4616 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popups/popupTriggerMap.mjs 4617 var devElementIdsByMap; 4618 function getDevElementIds(map) { 4619 devElementIdsByMap ??= /* @__PURE__ */ new WeakMap(); 4620 let elementIds = devElementIdsByMap.get(map); 4621 if (!elementIds) { 4622 elementIds = /* @__PURE__ */ new WeakMap(); 4623 devElementIdsByMap.set(map, elementIds); 4624 } 4625 return elementIds; 4626 } 4627 var PopupTriggerMap = class { 4628 idMap = /* @__PURE__ */ new Map(); 4629 /** 4630 * Adds a trigger element with the given ID. 4631 * 4632 * Note: The provided element is assumed to not be registered under multiple IDs. 4633 */ 4634 add(id, element) { 4635 if (true) { 4636 const elementIds = getDevElementIds(this); 4637 const existingId = elementIds.get(element); 4638 if (existingId !== void 0 && existingId !== id) { 4639 throw new Error("Base UI: A trigger element cannot be registered under multiple IDs in PopupTriggerMap."); 4640 } 4641 const previousElement = this.idMap.get(id); 4642 if (previousElement !== void 0 && previousElement !== element) { 4643 elementIds.delete(previousElement); 4644 } 4645 elementIds.set(element, id); 4646 } 4647 this.idMap.set(id, element); 4648 } 4649 /** 4650 * Removes the trigger element with the given ID. 4651 */ 4652 delete(id) { 4653 if (true) { 4654 const element = this.idMap.get(id); 4655 if (element !== void 0) { 4656 devElementIdsByMap?.get(this)?.delete(element); 4657 } 4658 } 4659 this.idMap.delete(id); 4660 } 4661 /** 4662 * Whether the given element is registered as a trigger. 4663 */ 4664 hasElement(element) { 4665 for (const registered of this.idMap.values()) { 4666 if (registered === element) { 4667 return true; 4668 } 4669 } 4670 return false; 4671 } 4672 /** 4673 * Whether there is a registered trigger element matching the given predicate. 4674 */ 4675 hasMatchingElement(predicate) { 4676 for (const element of this.idMap.values()) { 4677 if (predicate(element)) { 4678 return true; 4679 } 4680 } 4681 return false; 4682 } 4683 /** 4684 * Returns the trigger element associated with the given ID, or undefined if no such element exists. 4685 */ 4686 getById(id) { 4687 return this.idMap.get(id); 4688 } 4689 /** 4690 * Returns an iterable of all registered trigger entries, where each entry is a tuple of [id, element]. 4691 */ 4692 entries() { 4693 return this.idMap.entries(); 4694 } 4695 /** 4696 * Returns an iterable of all registered trigger elements. 4697 */ 4698 elements() { 4699 return this.idMap.values(); 4700 } 4701 /** 4702 * Returns the number of registered trigger elements. 4703 */ 4704 get size() { 4705 return this.idMap.size; 4706 } 4707 }; 4708 4709 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/store/useStore.mjs 4710 var React28 = __toESM(require_react(), 1); 4711 var import_shim = __toESM(require_shim(), 1); 4712 var import_with_selector = __toESM(require_with_selector(), 1); 4713 4714 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/fastHooks.mjs 4715 var React27 = __toESM(require_react(), 1); 4716 var hooks = []; 4717 var currentInstance = void 0; 4718 function getInstance() { 4719 return currentInstance; 4720 } 4721 function register(hook) { 4722 hooks.push(hook); 4723 } 4724 function fastComponent(fn) { 4725 const FastComponent = (props, forwardedRef) => { 4726 const instance = useRefWithInit(createInstance).current; 4727 let result; 4728 try { 4729 currentInstance = instance; 4730 for (const hook of hooks) { 4731 hook.before(instance); 4732 } 4733 result = fn(props, forwardedRef); 4734 for (const hook of hooks) { 4735 hook.after(instance); 4736 } 4737 instance.didInitialize = true; 4738 } finally { 4739 currentInstance = void 0; 4740 } 4741 return result; 4742 }; 4743 FastComponent.displayName = fn.displayName || fn.name; 4744 return FastComponent; 4745 } 4746 function fastComponentRef(fn) { 4747 return /* @__PURE__ */ React27.forwardRef(fastComponent(fn)); 4748 } 4749 function createInstance() { 4750 return { 4751 didInitialize: false 4752 }; 4753 } 4754 4755 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/store/useStore.mjs 4756 var canUseRawUseSyncExternalStore = isReactVersionAtLeast(19); 4757 var useStoreImplementation = canUseRawUseSyncExternalStore ? useStoreFast : useStoreLegacy; 4758 function useStore(store2, selector, a1, a2, a3) { 4759 return useStoreImplementation(store2, selector, a1, a2, a3); 4760 } 4761 function useStoreR19(store2, selector, a1, a2, a3) { 4762 const getSelection = React28.useCallback(() => selector(store2.getSnapshot(), a1, a2, a3), [store2, selector, a1, a2, a3]); 4763 return (0, import_shim.useSyncExternalStore)(store2.subscribe, getSelection, getSelection); 4764 } 4765 register({ 4766 before(instance) { 4767 instance.syncIndex = 0; 4768 if (!instance.didInitialize) { 4769 instance.syncTick = 1; 4770 instance.syncHooks = []; 4771 instance.didChangeStore = true; 4772 instance.getSnapshot = () => { 4773 let didChange2 = false; 4774 for (let i = 0; i < instance.syncHooks.length; i += 1) { 4775 const hook = instance.syncHooks[i]; 4776 const value = hook.selector(hook.store.state, hook.a1, hook.a2, hook.a3); 4777 if (!Object.is(hook.value, value)) { 4778 didChange2 = true; 4779 hook.value = value; 4780 } 4781 } 4782 if (didChange2) { 4783 instance.syncTick += 1; 4784 } 4785 return instance.syncTick; 4786 }; 4787 } 4788 }, 4789 after(instance) { 4790 if (instance.syncHooks.length > 0) { 4791 if (instance.didChangeStore) { 4792 instance.didChangeStore = false; 4793 instance.subscribe = (onStoreChange) => { 4794 const stores = /* @__PURE__ */ new Set(); 4795 for (const hook of instance.syncHooks) { 4796 stores.add(hook.store); 4797 } 4798 const unsubscribes = []; 4799 for (const store2 of stores) { 4800 unsubscribes.push(store2.subscribe(onStoreChange)); 4801 } 4802 return () => { 4803 for (const unsubscribe of unsubscribes) { 4804 unsubscribe(); 4805 } 4806 }; 4807 }; 4808 } 4809 (0, import_shim.useSyncExternalStore)(instance.subscribe, instance.getSnapshot, instance.getSnapshot); 4810 } 4811 } 4812 }); 4813 function useStoreFast(store2, selector, a1, a2, a3) { 4814 const instance = getInstance(); 4815 if (!instance) { 4816 return useStoreR19(store2, selector, a1, a2, a3); 4817 } 4818 const index2 = instance.syncIndex; 4819 instance.syncIndex += 1; 4820 let hook; 4821 if (!instance.didInitialize) { 4822 hook = { 4823 store: store2, 4824 selector, 4825 a1, 4826 a2, 4827 a3, 4828 value: selector(store2.getSnapshot(), a1, a2, a3) 4829 }; 4830 instance.syncHooks.push(hook); 4831 } else { 4832 hook = instance.syncHooks[index2]; 4833 if (hook.store !== store2 || hook.selector !== selector || !Object.is(hook.a1, a1) || !Object.is(hook.a2, a2) || !Object.is(hook.a3, a3)) { 4834 if (hook.store !== store2) { 4835 instance.didChangeStore = true; 4836 } 4837 hook.store = store2; 4838 hook.selector = selector; 4839 hook.a1 = a1; 4840 hook.a2 = a2; 4841 hook.a3 = a3; 4842 hook.value = selector(store2.getSnapshot(), a1, a2, a3); 4843 } 4844 } 4845 return hook.value; 4846 } 4847 function useStoreLegacy(store2, selector, a1, a2, a3) { 4848 return (0, import_with_selector.useSyncExternalStoreWithSelector)(store2.subscribe, store2.getSnapshot, store2.getSnapshot, (state) => selector(state, a1, a2, a3)); 4849 } 4850 4851 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/store/Store.mjs 4852 var Store = class { 4853 /** 4854 * Creates a store with the given initial state, constructing the class it is called on. 4855 * Calling it on a generic base class (e.g. `ReactStore.create(...)`) constructs that 4856 * class but degrades the inferred instance type to `Store`; use `new` there instead. 4857 */ 4858 static create(state) { 4859 return new this(state); 4860 } 4861 /** 4862 * The current state of the store. 4863 * This property is updated immediately when the state changes as a result of calling {@link setState}, {@link update}, or {@link set}. 4864 * 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). 4865 * The values can be used directly (to avoid subscribing to the store) in effects or event handlers. 4866 * 4867 * Do not modify properties in state directly. Instead, use the provided methods to ensure proper state management and listener notification. 4868 */ 4869 // Internal state to handle recursive `setState()` calls 4870 constructor(state) { 4871 this.state = state; 4872 this.listeners = /* @__PURE__ */ new Set(); 4873 this.updateTick = 0; 4874 } 4875 /** 4876 * Registers a listener that will be called whenever the store's state changes. 4877 * 4878 * @param fn The listener function to be called on state changes. 4879 * @returns A function to unsubscribe the listener. 4880 */ 4881 subscribe = (fn) => { 4882 this.listeners.add(fn); 4883 return () => { 4884 this.listeners.delete(fn); 4885 }; 4886 }; 4887 /** 4888 * Returns the current state of the store. 4889 */ 4890 getSnapshot = () => { 4891 return this.state; 4892 }; 4893 /** 4894 * Updates the entire store's state and notifies all registered listeners. 4895 * 4896 * @param newState The new state to set for the store. 4897 */ 4898 setState(newState) { 4899 if (this.state === newState) { 4900 return; 4901 } 4902 this.state = newState; 4903 this.updateTick += 1; 4904 const currentTick = this.updateTick; 4905 for (const listener of this.listeners) { 4906 if (currentTick !== this.updateTick) { 4907 return; 4908 } 4909 listener(newState); 4910 } 4911 } 4912 /** 4913 * Merges the provided changes into the current state and notifies listeners if there are changes. 4914 * Each value must match its state key. Pass an exact known subset rather than a broad 4915 * `Partial<State>`, which may contain `undefined` for required state fields. 4916 * 4917 * @param changes An object containing the changes to apply to the current state. 4918 */ 4919 update(changes) { 4920 for (const key in changes) { 4921 if (!Object.is(this.state[key], changes[key])) { 4922 this.setState({ 4923 ...this.state, 4924 ...changes 4925 }); 4926 return; 4927 } 4928 } 4929 } 4930 /** 4931 * Sets a specific key in the store's state to a new value and notifies listeners if the value has changed. 4932 * 4933 * @param key The key in the store's state to update. 4934 * @param value The new value to set for the specified key. 4935 */ 4936 set(key, value) { 4937 if (!Object.is(this.state[key], value)) { 4938 this.setState({ 4939 ...this.state, 4940 [key]: value 4941 }); 4942 } 4943 } 4944 /** 4945 * Gives the state a new reference and updates all registered listeners. 4946 */ 4947 notifyAll() { 4948 const newState = { 4949 ...this.state 4950 }; 4951 this.setState(newState); 4952 } 4953 use(selector, a1, a2, a3) { 4954 return useStore(this, selector, a1, a2, a3); 4955 } 4956 }; 4957 4958 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/store/ReactStore.mjs 4959 var React29 = __toESM(require_react(), 1); 4960 var ReactStore = class extends Store { 4961 /** 4962 * Creates a new ReactStore instance. 4963 * 4964 * @param state Initial state of the store. 4965 * @param context Non-reactive context values. 4966 * @param selectors Optional selectors for use with `useState`. 4967 */ 4968 constructor(state, context = {}, selectors3) { 4969 super(state); 4970 this.context = context; 4971 this.selectors = selectors3; 4972 } 4973 /** 4974 * Non-reactive values such as refs, callbacks, etc. 4975 */ 4976 /** 4977 * Synchronizes a single external value into the store. 4978 * 4979 * Note that the while the value in `state` is updated immediately, the value returned 4980 * by `useState` is updated before the next render (similarly to React's `useState`). 4981 */ 4982 useSyncedValue(key, value) { 4983 React29.useDebugValue(key); 4984 const store2 = this; 4985 useIsoLayoutEffect(() => { 4986 if (store2.state[key] !== value) { 4987 store2.set(key, value); 4988 } 4989 }, [store2, key, value]); 4990 } 4991 /** 4992 * Synchronizes a single external value into the store and 4993 * cleans it up (sets to `undefined`) on unmount. 4994 * 4995 * Note that the while the value in `state` is updated immediately, the value returned 4996 * by `useState` is updated before the next render (similarly to React's `useState`). 4997 */ 4998 useSyncedValueWithCleanup(key, value) { 4999 const store2 = this; 5000 useIsoLayoutEffect(() => { 5001 if (store2.state[key] !== value) { 5002 store2.set(key, value); 5003 } 5004 return () => { 5005 store2.set(key, void 0); 5006 }; 5007 }, [store2, key, value]); 5008 } 5009 /** 5010 * Synchronizes multiple external values into the store. 5011 * Each value must match its state key. Pass an exact known subset rather than a broad 5012 * `Partial<State>`, which may contain `undefined` for required state fields. 5013 * 5014 * Note that the while the values in `state` are updated immediately, the values returned 5015 * by `useState` are updated before the next render (similarly to React's `useState`). 5016 * 5017 * @param statePart An exact subset of state fields to synchronize. Unknown keys are not accepted. 5018 */ 5019 useSyncedValues(statePart) { 5020 const store2 = this; 5021 if (true) { 5022 React29.useDebugValue(statePart, (p) => Object.keys(p)); 5023 const keys = React29.useRef(Object.keys(statePart)).current; 5024 const nextKeys = Object.keys(statePart); 5025 if (keys.length !== nextKeys.length || keys.some((key, index2) => key !== nextKeys[index2])) { 5026 console.error("ReactStore.useSyncedValues expects the same prop keys on every render. Keys should be stable."); 5027 } 5028 } 5029 const dependencies = Object.values(statePart); 5030 useIsoLayoutEffect(() => { 5031 store2.update(statePart); 5032 }, [store2, ...dependencies]); 5033 } 5034 /** 5035 * Registers a controllable prop pair (`controlled`, `defaultValue`) for a specific key. If `controlled` 5036 * is non-undefined, the store's state at `key` is updated to match `controlled`. 5037 */ 5038 useControlledProp(key, controlled) { 5039 React29.useDebugValue(key); 5040 const store2 = this; 5041 const isControlled = controlled !== void 0; 5042 useIsoLayoutEffect(() => { 5043 if (isControlled && !Object.is(store2.state[key], controlled)) { 5044 store2.setState({ 5045 ...store2.state, 5046 [key]: controlled 5047 }); 5048 } 5049 }, [store2, key, controlled, isControlled]); 5050 if (true) { 5051 const cache = this.controlledValues ??= /* @__PURE__ */ new Map(); 5052 if (!cache.has(key)) { 5053 cache.set(key, isControlled); 5054 } 5055 const previouslyControlled = cache.get(key); 5056 if (previouslyControlled !== void 0 && previouslyControlled !== isControlled) { 5057 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).`); 5058 } 5059 } 5060 } 5061 /** Gets the current value from the store using a selector with the provided key. 5062 * 5063 * @param key Key of the selector to use. 5064 */ 5065 select(key, a1, a2, a3) { 5066 const selector = this.selectors[key]; 5067 return selector(this.state, a1, a2, a3); 5068 } 5069 /** 5070 * Returns a value from the store's state using a selector function. 5071 * Used to subscribe to specific parts of the state. 5072 * This methods causes a rerender whenever the selected state changes. 5073 * 5074 * @param key Key of the selector to use. 5075 */ 5076 useState(key, a1, a2, a3) { 5077 React29.useDebugValue(key); 5078 return useStore(this, this.selectors[key], a1, a2, a3); 5079 } 5080 /** 5081 * Wraps a function with `useStableCallback` to ensure it has a stable reference 5082 * and assigns it to the context. 5083 * 5084 * @param key Key of the event callback. Must be a function in the context. 5085 * @param fn Function to assign. 5086 */ 5087 useContextCallback(key, fn) { 5088 React29.useDebugValue(key); 5089 const stableFunction = useStableCallback(fn ?? NOOP); 5090 this.context[key] = stableFunction; 5091 } 5092 /** 5093 * Returns a stable setter function for a specific key in the store's state. 5094 * It's commonly used to pass as a ref callback to React elements. 5095 * 5096 * @param key Key of the state to set. 5097 */ 5098 useStateSetter(key) { 5099 const ref = React29.useRef(void 0); 5100 if (ref.current === void 0) { 5101 ref.current = (value) => { 5102 this.set(key, value); 5103 }; 5104 } 5105 return ref.current; 5106 } 5107 /** 5108 * Observes changes derived from the store's selectors and calls the listener when the selected value changes. 5109 * 5110 * @param key Key of the selector to observe. 5111 * @param listener Listener function called when the selector result changes. 5112 */ 5113 observe(selector, listener) { 5114 let selectFn; 5115 if (typeof selector === "function") { 5116 selectFn = selector; 5117 } else { 5118 selectFn = this.selectors[selector]; 5119 } 5120 let prevValue = selectFn(this.state); 5121 listener(prevValue, prevValue, this); 5122 return this.subscribe((nextState) => { 5123 const nextValue = selectFn(nextState); 5124 if (!Object.is(prevValue, nextValue)) { 5125 const oldValue = prevValue; 5126 prevValue = nextValue; 5127 listener(nextValue, oldValue, this); 5128 } 5129 }); 5130 } 5131 }; 5132 5133 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingRootStore.mjs 5134 var selectors = { 5135 open: (state) => state.open, 5136 transitionStatus: (state) => state.transitionStatus, 5137 domReferenceElement: (state) => state.domReferenceElement, 5138 referenceElement: (state) => state.positionReference ?? state.referenceElement, 5139 floatingElement: (state) => state.floatingElement, 5140 floatingId: (state) => state.floatingId 5141 }; 5142 var FloatingRootStore = class extends ReactStore { 5143 constructor(options) { 5144 const { 5145 syncOnly, 5146 nested, 5147 onOpenChange, 5148 triggerElements, 5149 ...initialState 5150 } = options; 5151 super({ 5152 ...initialState, 5153 positionReference: initialState.referenceElement, 5154 domReferenceElement: initialState.referenceElement 5155 }, { 5156 onOpenChange, 5157 dataRef: { 5158 current: {} 5159 }, 5160 events: createEventEmitter(), 5161 nested, 5162 triggerElements 5163 }, selectors); 5164 this.syncOnly = syncOnly; 5165 } 5166 /** 5167 * Syncs the event used by hover logic to distinguish hover-open from click-like interaction. 5168 */ 5169 syncOpenEvent = (newOpen, event) => { 5170 if (!newOpen || !this.state.open || // Prevent a pending hover-open from overwriting a click-open event, while allowing 5171 // click events to upgrade a hover-open. 5172 event != null && isClickLikeEvent(event)) { 5173 this.context.dataRef.current.openEvent = newOpen ? event : void 0; 5174 } 5175 }; 5176 /** 5177 * Runs the root-owned side effects for an open state change. 5178 */ 5179 dispatchOpenChange = (newOpen, eventDetails) => { 5180 this.syncOpenEvent(newOpen, eventDetails.event); 5181 const details = { 5182 open: newOpen, 5183 reason: eventDetails.reason, 5184 nativeEvent: eventDetails.event, 5185 nested: this.context.nested, 5186 triggerElement: eventDetails.trigger 5187 }; 5188 this.context.events.emit("openchange", details); 5189 }; 5190 /** 5191 * Emits the `openchange` event through the internal event emitter and calls the `onOpenChange` handler with the provided arguments. 5192 * 5193 * @param newOpen The new open state. 5194 * @param eventDetails Details about the event that triggered the open state change. 5195 */ 5196 setOpen = (newOpen, eventDetails) => { 5197 if (this.syncOnly) { 5198 this.context.onOpenChange?.(newOpen, eventDetails); 5199 return; 5200 } 5201 this.dispatchOpenChange(newOpen, eventDetails); 5202 this.context.onOpenChange?.(newOpen, eventDetails); 5203 }; 5204 }; 5205 5206 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popups/store.mjs 5207 function createInitialPopupStoreState(triggerElements, floatingId, nested = false) { 5208 return { 5209 open: false, 5210 openProp: void 0, 5211 mounted: false, 5212 transitionStatus: void 0, 5213 floatingRootContext: new FloatingRootStore({ 5214 open: false, 5215 transitionStatus: void 0, 5216 floatingElement: null, 5217 referenceElement: null, 5218 triggerElements, 5219 floatingId, 5220 syncOnly: true, 5221 nested, 5222 onOpenChange: void 0 5223 }), 5224 floatingId, 5225 triggerCount: 0, 5226 preventUnmountingOnClose: false, 5227 payload: void 0, 5228 activeTriggerId: null, 5229 activeTriggerElement: null, 5230 openedWithoutTrigger: false, 5231 triggerIdProp: void 0, 5232 popupElement: null, 5233 positionerElement: null, 5234 activeTriggerProps: EMPTY_OBJECT, 5235 inactiveTriggerProps: EMPTY_OBJECT, 5236 popupProps: EMPTY_OBJECT 5237 }; 5238 } 5239 var activeTriggerIdSelector = (state) => state.triggerIdProp ?? state.activeTriggerId; 5240 var openSelector = (state) => state.openProp ?? state.open; 5241 var popupIdSelector = (state) => { 5242 const popupId = state.popupElement?.id ?? state.floatingId; 5243 return popupId || void 0; 5244 }; 5245 function triggerOwnsOpenPopup(state, triggerId) { 5246 return triggerId !== void 0 && openSelector(state) && activeTriggerIdSelector(state) === triggerId; 5247 } 5248 function triggerOwnsOpenPopupOrIsOnlyTrigger(state, triggerId) { 5249 if (triggerOwnsOpenPopup(state, triggerId)) { 5250 return true; 5251 } 5252 return triggerId !== void 0 && openSelector(state) && activeTriggerIdSelector(state) == null && !state.openedWithoutTrigger && state.triggerCount === 1; 5253 } 5254 var popupStoreSelectors = { 5255 open: openSelector, 5256 mounted: (state) => state.mounted, 5257 // `open` is written synchronously on an open change; `mounted`/`transitionStatus` sync in a 5258 // layout effect. Match useTransitionStatus so a retained popup does not miss its starting phase. 5259 transitionStatus: (state) => openSelector(state) && !state.mounted ? "starting" : state.transitionStatus, 5260 floatingRootContext: (state) => state.floatingRootContext, 5261 triggerCount: (state) => state.triggerCount, 5262 preventUnmountingOnClose: (state) => state.preventUnmountingOnClose, 5263 payload: (state) => state.payload, 5264 activeTriggerId: activeTriggerIdSelector, 5265 activeTriggerElement: (state) => state.mounted ? state.activeTriggerElement : null, 5266 popupId: popupIdSelector, 5267 /** 5268 * Whether the trigger with the given ID was used to open the popup. 5269 */ 5270 isTriggerActive: (state, triggerId) => triggerId !== void 0 && activeTriggerIdSelector(state) === triggerId, 5271 /** 5272 * Whether the popup is open and was activated by a trigger with the given ID. 5273 */ 5274 isOpenedByTrigger: (state, triggerId) => triggerOwnsOpenPopup(state, triggerId), 5275 /** 5276 * Whether the popup is mounted and was activated by a trigger with the given ID. 5277 */ 5278 isMountedByTrigger: (state, triggerId) => triggerId !== void 0 && activeTriggerIdSelector(state) === triggerId && state.mounted, 5279 triggerProps: (state, isActive) => isActive ? state.activeTriggerProps : state.inactiveTriggerProps, 5280 /** 5281 * Popup id for the trigger that currently owns the open popup. 5282 */ 5283 triggerPopupId: (state, triggerId) => triggerOwnsOpenPopupOrIsOnlyTrigger(state, triggerId) ? popupIdSelector(state) : void 0, 5284 popupProps: (state) => state.popupProps, 5285 popupElement: (state) => state.popupElement, 5286 positionerElement: (state) => state.positionerElement 5287 }; 5288 5289 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popups/usePopupHandleStore.mjs 5290 var React30 = __toESM(require_react(), 1); 5291 var import_shim2 = __toESM(require_shim(), 1); 5292 function usePopupHandleStore(handle) { 5293 const subscribe = React30.useCallback((listener) => { 5294 if (handle === void 0) { 5295 return NOOP; 5296 } 5297 return handle.subscribeStore(listener); 5298 }, [handle]); 5299 const getSnapshot = React30.useCallback(() => { 5300 return handle === void 0 ? void 0 : handle.store; 5301 }, [handle]); 5302 return (0, import_shim2.useSyncExternalStore)(subscribe, getSnapshot, () => handle?.serverStore); 5303 } 5304 5305 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useFocus.mjs 5306 var React31 = __toESM(require_react(), 1); 5307 var isMacSafari = parts_exports.os.mac && parts_exports.engine.webkit; 5308 function useFocus(store2, props = {}) { 5309 const { 5310 enabled = true, 5311 delay 5312 } = props; 5313 const { 5314 events, 5315 dataRef 5316 } = store2.context; 5317 const blockFocusRef = React31.useRef(false); 5318 const blockedReferenceRef = React31.useRef(null); 5319 const keyboardModalityRef = React31.useRef(true); 5320 const timeout = useTimeout(); 5321 React31.useEffect(() => { 5322 const domReference = store2.select("domReferenceElement"); 5323 if (!enabled) { 5324 return void 0; 5325 } 5326 const win = getWindow(domReference); 5327 function onBlur() { 5328 const currentDomReference = store2.select("domReferenceElement"); 5329 if (!store2.select("open") && isHTMLElement(currentDomReference) && currentDomReference === activeElement(ownerDocument(currentDomReference))) { 5330 blockFocusRef.current = true; 5331 blockedReferenceRef.current = currentDomReference; 5332 } 5333 } 5334 function onKeyDown() { 5335 keyboardModalityRef.current = true; 5336 } 5337 function onPointerDown() { 5338 keyboardModalityRef.current = false; 5339 } 5340 return mergeCleanups(addEventListener(win, "blur", onBlur), isMacSafari && addEventListener(win, "keydown", onKeyDown, true), isMacSafari && addEventListener(win, "pointerdown", onPointerDown, true)); 5341 }, [store2, enabled]); 5342 React31.useEffect(() => { 5343 if (!enabled) { 5344 return void 0; 5345 } 5346 function onOpenChangeLocal(details) { 5347 if (details.reason === reason_parts_exports.triggerPress || details.reason === reason_parts_exports.escapeKey) { 5348 const referenceElement = store2.select("domReferenceElement"); 5349 if (isElement(referenceElement)) { 5350 blockedReferenceRef.current = referenceElement; 5351 blockFocusRef.current = true; 5352 } 5353 } 5354 } 5355 events.on("openchange", onOpenChangeLocal); 5356 return () => { 5357 events.off("openchange", onOpenChangeLocal); 5358 }; 5359 }, [events, enabled, store2]); 5360 const reference = React31.useMemo(() => { 5361 function resetBlockedFocus() { 5362 blockFocusRef.current = false; 5363 blockedReferenceRef.current = null; 5364 } 5365 return { 5366 onMouseLeave() { 5367 resetBlockedFocus(); 5368 }, 5369 onFocus(event) { 5370 const focusTarget = event.currentTarget; 5371 if (blockFocusRef.current) { 5372 if (blockedReferenceRef.current === focusTarget) { 5373 return; 5374 } 5375 resetBlockedFocus(); 5376 } 5377 const target = getTarget(event.nativeEvent); 5378 if (isElement(target)) { 5379 if (isMacSafari && !event.relatedTarget) { 5380 if (!keyboardModalityRef.current && !isTypeableElement(target)) { 5381 return; 5382 } 5383 } else if (!matchesFocusVisible(target)) { 5384 return; 5385 } 5386 } 5387 const movedFromOtherEnabledTrigger = isTargetInsideEnabledTrigger(event.relatedTarget, store2.context.triggerElements); 5388 const { 5389 nativeEvent, 5390 currentTarget 5391 } = event; 5392 if (store2.select("open") && movedFromOtherEnabledTrigger || !delay) { 5393 store2.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerFocus, nativeEvent, currentTarget)); 5394 return; 5395 } 5396 timeout.start(delay, () => { 5397 if (blockFocusRef.current) { 5398 return; 5399 } 5400 store2.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerFocus, nativeEvent, currentTarget)); 5401 }); 5402 }, 5403 onBlur(event) { 5404 resetBlockedFocus(); 5405 const relatedTarget = event.relatedTarget; 5406 const nativeEvent = event.nativeEvent; 5407 const movedToFocusGuard = isElement(relatedTarget) && relatedTarget.hasAttribute(createAttribute("focus-guard")) && relatedTarget.getAttribute("data-type") === "outside"; 5408 timeout.start(0, () => { 5409 const domReference = store2.select("domReferenceElement"); 5410 const activeEl = activeElement(ownerDocument(domReference)); 5411 if (!relatedTarget && activeEl === domReference) { 5412 return; 5413 } 5414 if (contains(dataRef.current.floatingContext?.refs.floating.current, activeEl) || contains(domReference, activeEl) || movedToFocusGuard) { 5415 return; 5416 } 5417 const nextFocusedElement = relatedTarget ?? activeEl; 5418 if (isTargetInsideEnabledTrigger(nextFocusedElement, store2.context.triggerElements)) { 5419 return; 5420 } 5421 store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerFocus, nativeEvent)); 5422 }); 5423 } 5424 }; 5425 }, [dataRef, delay, store2, timeout]); 5426 return React31.useMemo(() => enabled ? { 5427 reference, 5428 trigger: reference 5429 } : {}, [enabled, reference]); 5430 } 5431 5432 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useHoverFloatingInteraction.mjs 5433 var React32 = __toESM(require_react(), 1); 5434 5435 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useHoverInteractionSharedState.mjs 5436 var HoverInteraction = class _HoverInteraction { 5437 pointerType = void 0; 5438 interactedInside = false; 5439 handler = void 0; 5440 blockMouseMove = true; 5441 performedPointerEventsMutation = false; 5442 pointerEventsScopeElement = null; 5443 pointerEventsReferenceElement = null; 5444 pointerEventsFloatingElement = null; 5445 restTimeoutPending = false; 5446 openChangeTimeout = new Timeout(); 5447 restTimeout = new Timeout(); 5448 handleCloseOptions = void 0; 5449 static create() { 5450 return new _HoverInteraction(); 5451 } 5452 dispose = () => { 5453 this.openChangeTimeout.clear(); 5454 this.restTimeout.clear(); 5455 }; 5456 disposeEffect = () => { 5457 return this.dispose; 5458 }; 5459 }; 5460 var pointerEventsMutationOwnerByScopeElement = /* @__PURE__ */ new WeakMap(); 5461 function clearSafePolygonPointerEventsMutation(instance) { 5462 if (!instance.performedPointerEventsMutation) { 5463 return; 5464 } 5465 const scopeElement = instance.pointerEventsScopeElement; 5466 if (scopeElement && pointerEventsMutationOwnerByScopeElement.get(scopeElement) === instance) { 5467 instance.pointerEventsScopeElement?.style.removeProperty("pointer-events"); 5468 instance.pointerEventsReferenceElement?.style.removeProperty("pointer-events"); 5469 instance.pointerEventsFloatingElement?.style.removeProperty("pointer-events"); 5470 pointerEventsMutationOwnerByScopeElement.delete(scopeElement); 5471 } 5472 instance.performedPointerEventsMutation = false; 5473 instance.pointerEventsScopeElement = null; 5474 instance.pointerEventsReferenceElement = null; 5475 instance.pointerEventsFloatingElement = null; 5476 } 5477 function applySafePolygonPointerEventsMutation(instance, options) { 5478 const { 5479 scopeElement, 5480 referenceElement, 5481 floatingElement 5482 } = options; 5483 const existingOwner = pointerEventsMutationOwnerByScopeElement.get(scopeElement); 5484 if (existingOwner && existingOwner !== instance) { 5485 clearSafePolygonPointerEventsMutation(existingOwner); 5486 } 5487 clearSafePolygonPointerEventsMutation(instance); 5488 instance.performedPointerEventsMutation = true; 5489 instance.pointerEventsScopeElement = scopeElement; 5490 instance.pointerEventsReferenceElement = referenceElement; 5491 instance.pointerEventsFloatingElement = floatingElement; 5492 pointerEventsMutationOwnerByScopeElement.set(scopeElement, instance); 5493 scopeElement.style.pointerEvents = "none"; 5494 referenceElement.style.pointerEvents = "auto"; 5495 floatingElement.style.pointerEvents = "auto"; 5496 } 5497 function useHoverInteractionSharedState(store2) { 5498 const data = store2.context.dataRef.current; 5499 const instance = useRefWithInit(() => data.hoverInteractionState ?? HoverInteraction.create()).current; 5500 if (!data.hoverInteractionState) { 5501 data.hoverInteractionState = instance; 5502 } 5503 useOnMount(data.hoverInteractionState.disposeEffect); 5504 return data.hoverInteractionState; 5505 } 5506 5507 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useHoverFloatingInteraction.mjs 5508 function useHoverFloatingInteraction(store2, parameters = {}) { 5509 const { 5510 enabled = true, 5511 closeDelay: closeDelayProp = 0, 5512 nodeId: nodeIdProp 5513 } = parameters; 5514 const open3 = store2.useState("open"); 5515 const floatingElement = store2.useState("floatingElement"); 5516 const domReferenceElement = store2.useState("domReferenceElement"); 5517 const { 5518 dataRef 5519 } = store2.context; 5520 const tree = useFloatingTree(); 5521 const parentId = useFloatingParentNodeId(); 5522 const instance = useHoverInteractionSharedState(store2); 5523 const childClosedTimeout = useTimeout(); 5524 const isClickLikeOpenEvent2 = useStableCallback(() => { 5525 return isClickLikeOpenEvent(dataRef.current.openEvent?.type, instance.interactedInside); 5526 }); 5527 const isHoverOpen = useStableCallback(() => { 5528 return isHoverOpenEvent(dataRef.current.openEvent?.type); 5529 }); 5530 const clearPointerEvents = useStableCallback(() => { 5531 clearSafePolygonPointerEventsMutation(instance); 5532 }); 5533 useIsoLayoutEffect(() => { 5534 if (!open3) { 5535 instance.pointerType = void 0; 5536 instance.restTimeoutPending = false; 5537 instance.interactedInside = false; 5538 clearPointerEvents(); 5539 } 5540 }, [open3, instance, clearPointerEvents]); 5541 React32.useEffect(() => { 5542 return clearPointerEvents; 5543 }, [clearPointerEvents]); 5544 useIsoLayoutEffect(() => { 5545 if (!enabled) { 5546 return void 0; 5547 } 5548 if (open3 && instance.handleCloseOptions?.blockPointerEvents && isHoverOpen() && isElement(domReferenceElement) && floatingElement) { 5549 const ref = domReferenceElement; 5550 const floatingEl = floatingElement; 5551 const doc = ownerDocument(floatingElement); 5552 const parentFloating = tree?.nodesRef.current.find((node) => node.id === parentId)?.context?.elements.floating; 5553 if (parentFloating) { 5554 parentFloating.style.pointerEvents = ""; 5555 } 5556 const cachedScopeElement = instance.pointerEventsScopeElement !== floatingEl ? instance.pointerEventsScopeElement : null; 5557 const parentScopeElement = parentFloating !== floatingEl ? parentFloating : null; 5558 const scopeElement = instance.handleCloseOptions?.getScope?.() ?? cachedScopeElement ?? parentScopeElement ?? closest(ref, "[data-rootownerid]") ?? doc.body; 5559 applySafePolygonPointerEventsMutation(instance, { 5560 scopeElement, 5561 referenceElement: ref, 5562 floatingElement: floatingEl 5563 }); 5564 return () => { 5565 clearPointerEvents(); 5566 }; 5567 } 5568 return void 0; 5569 }, [enabled, open3, domReferenceElement, floatingElement, instance, isHoverOpen, tree, parentId, clearPointerEvents]); 5570 React32.useEffect(() => { 5571 if (!enabled) { 5572 return void 0; 5573 } 5574 function hasParentChildren() { 5575 return !!(tree && parentId && getNodeChildren(tree.nodesRef.current, parentId).length > 0); 5576 } 5577 function closeWithDelay(event) { 5578 const closeDelay = getDelay(closeDelayProp, "close", instance.pointerType); 5579 const close = () => { 5580 store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event)); 5581 tree?.events.emit("floating.closed", event); 5582 }; 5583 if (closeDelay) { 5584 instance.openChangeTimeout.start(closeDelay, close); 5585 } else { 5586 instance.openChangeTimeout.clear(); 5587 close(); 5588 } 5589 } 5590 function handleInteractInside(event) { 5591 const target = getTarget(event); 5592 if (!isInteractiveElement(target)) { 5593 instance.interactedInside = false; 5594 return; 5595 } 5596 instance.interactedInside = closest(target, "[aria-haspopup]") != null; 5597 } 5598 function onFloatingMouseEnter() { 5599 instance.openChangeTimeout.clear(); 5600 childClosedTimeout.clear(); 5601 tree?.events.off("floating.closed", onNodeClosed); 5602 clearPointerEvents(); 5603 } 5604 function onFloatingMouseLeave(event) { 5605 if (hasParentChildren() && tree) { 5606 tree.events.on("floating.closed", onNodeClosed); 5607 return; 5608 } 5609 if (isTargetInsideEnabledTrigger(event.relatedTarget, store2.context.triggerElements)) { 5610 return; 5611 } 5612 const currentNodeId = dataRef.current.floatingContext?.nodeId ?? nodeIdProp; 5613 const relatedTarget = event.relatedTarget; 5614 const isMovingIntoDescendantFloating = tree && currentNodeId && isElement(relatedTarget) && getNodeChildren(tree.nodesRef.current, currentNodeId, false).some((node) => contains(node.context?.elements.floating, relatedTarget)); 5615 if (isMovingIntoDescendantFloating) { 5616 return; 5617 } 5618 if (instance.handler) { 5619 instance.handler(event); 5620 return; 5621 } 5622 clearPointerEvents(); 5623 if (isHoverOpen() && !isClickLikeOpenEvent2()) { 5624 closeWithDelay(event); 5625 } 5626 } 5627 function onNodeClosed(event) { 5628 if (!tree || !parentId || hasParentChildren()) { 5629 return; 5630 } 5631 childClosedTimeout.start(0, () => { 5632 tree.events.off("floating.closed", onNodeClosed); 5633 store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event)); 5634 tree.events.emit("floating.closed", event); 5635 }); 5636 } 5637 const floating = floatingElement; 5638 return mergeCleanups(floating && addEventListener(floating, "mouseenter", onFloatingMouseEnter), floating && addEventListener(floating, "mouseleave", onFloatingMouseLeave), floating && addEventListener(floating, "pointerdown", handleInteractInside, true), () => { 5639 tree?.events.off("floating.closed", onNodeClosed); 5640 }); 5641 }, [enabled, floatingElement, store2, dataRef, closeDelayProp, nodeIdProp, isHoverOpen, isClickLikeOpenEvent2, clearPointerEvents, instance, tree, parentId, childClosedTimeout]); 5642 } 5643 5644 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useHoverReferenceInteraction.mjs 5645 var React33 = __toESM(require_react(), 1); 5646 var ReactDOM4 = __toESM(require_react_dom(), 1); 5647 var EMPTY_REF = { 5648 current: null 5649 }; 5650 function useHoverReferenceInteraction(store2, props = {}) { 5651 const { 5652 enabled = true, 5653 delay = 0, 5654 handleClose = null, 5655 mouseOnly = false, 5656 restMs = 0, 5657 move = true, 5658 triggerElementRef = EMPTY_REF, 5659 externalTree, 5660 isActiveTrigger = true, 5661 getHandleCloseContext, 5662 isClosing, 5663 shouldOpen: shouldOpenProp, 5664 guardStaleOpen = false 5665 } = props; 5666 const { 5667 dataRef, 5668 events 5669 } = store2.context; 5670 const tree = useFloatingTree(externalTree); 5671 const instance = useHoverInteractionSharedState(store2); 5672 const isHoverCloseActiveRef = React33.useRef(false); 5673 const handleCloseRef = useValueAsRef(handleClose); 5674 const delayRef = useValueAsRef(delay); 5675 const restMsRef = useValueAsRef(restMs); 5676 const enabledRef = useValueAsRef(enabled); 5677 const shouldOpenRef = useValueAsRef(shouldOpenProp); 5678 const isClosingRef = useValueAsRef(isClosing); 5679 const isClickLikeOpenEvent2 = useStableCallback(() => { 5680 return isClickLikeOpenEvent(dataRef.current.openEvent?.type, instance.interactedInside); 5681 }); 5682 const checkShouldOpen = useStableCallback(() => { 5683 return shouldOpenRef.current?.() !== false; 5684 }); 5685 const isOverInactiveTrigger = useStableCallback((currentDomReference, currentTarget, target) => { 5686 const allTriggers = store2.context.triggerElements; 5687 if (allTriggers.hasElement(currentTarget)) { 5688 return !currentDomReference || !contains(currentDomReference, currentTarget); 5689 } 5690 if (!isElement(target)) { 5691 return false; 5692 } 5693 const targetElement = target; 5694 return allTriggers.hasMatchingElement((trigger) => contains(trigger, targetElement)) && (!currentDomReference || !contains(currentDomReference, targetElement)); 5695 }); 5696 const cleanupMouseMoveHandler = useStableCallback(() => { 5697 if (!instance.handler) { 5698 return; 5699 } 5700 const doc = ownerDocument(store2.select("domReferenceElement")); 5701 doc.removeEventListener("mousemove", instance.handler); 5702 instance.handler = void 0; 5703 }); 5704 const clearPointerEvents = useStableCallback(() => { 5705 clearSafePolygonPointerEventsMutation(instance); 5706 }); 5707 if (isActiveTrigger) { 5708 instance.handleCloseOptions = handleClose?.__options; 5709 } 5710 React33.useEffect(() => cleanupMouseMoveHandler, [cleanupMouseMoveHandler]); 5711 React33.useEffect(() => { 5712 if (!enabled) { 5713 return void 0; 5714 } 5715 function onOpenChangeLocal(details) { 5716 if (!details.open) { 5717 isHoverCloseActiveRef.current = details.reason === reason_parts_exports.triggerHover; 5718 cleanupMouseMoveHandler(); 5719 instance.openChangeTimeout.clear(); 5720 instance.restTimeout.clear(); 5721 instance.blockMouseMove = true; 5722 instance.restTimeoutPending = false; 5723 } else { 5724 isHoverCloseActiveRef.current = false; 5725 } 5726 } 5727 events.on("openchange", onOpenChangeLocal); 5728 return () => { 5729 events.off("openchange", onOpenChangeLocal); 5730 }; 5731 }, [enabled, events, instance, cleanupMouseMoveHandler]); 5732 React33.useEffect(() => { 5733 if (!enabled) { 5734 return void 0; 5735 } 5736 function closeWithDelay(event, runElseBranch = true) { 5737 const closeDelay = getDelay(delayRef.current, "close", instance.pointerType); 5738 if (closeDelay) { 5739 instance.openChangeTimeout.start(closeDelay, () => { 5740 store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event)); 5741 tree?.events.emit("floating.closed", event); 5742 }); 5743 } else if (runElseBranch) { 5744 instance.openChangeTimeout.clear(); 5745 store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event)); 5746 tree?.events.emit("floating.closed", event); 5747 } 5748 } 5749 const trigger = triggerElementRef.current ?? (isActiveTrigger ? store2.select("domReferenceElement") : null); 5750 if (!isElement(trigger)) { 5751 return void 0; 5752 } 5753 function onMouseEnter(event) { 5754 instance.openChangeTimeout.clear(); 5755 instance.blockMouseMove = false; 5756 if (mouseOnly && !isMouseLikePointerType(instance.pointerType)) { 5757 return; 5758 } 5759 const restMsValue = getRestMs(restMsRef.current); 5760 const openDelay = getDelay(delayRef.current, "open", instance.pointerType); 5761 const eventTarget = getTarget(event); 5762 const currentTarget = event.currentTarget ?? null; 5763 const currentDomReference = store2.select("domReferenceElement"); 5764 let triggerNode = currentTarget; 5765 if (isElement(eventTarget) && !store2.context.triggerElements.hasElement(eventTarget)) { 5766 for (const triggerElement of store2.context.triggerElements.elements()) { 5767 if (contains(triggerElement, eventTarget)) { 5768 triggerNode = triggerElement; 5769 break; 5770 } 5771 } 5772 } 5773 if (isElement(currentTarget) && isElement(currentDomReference) && !store2.context.triggerElements.hasElement(currentTarget) && contains(currentTarget, currentDomReference)) { 5774 triggerNode = currentDomReference; 5775 } 5776 const isOverInactive = triggerNode == null ? false : isOverInactiveTrigger(currentDomReference, triggerNode, eventTarget); 5777 const isOpen = store2.select("open"); 5778 const isInClosingTransition = isClosingRef.current?.() ?? store2.select("transitionStatus") === "ending"; 5779 const isHoverCloseTransition = !isOpen && isInClosingTransition && isHoverCloseActiveRef.current; 5780 const isReenteringSameTriggerDuringCloseTransition = !isOverInactive && isElement(triggerNode) && isElement(currentDomReference) && contains(currentDomReference, triggerNode) && isHoverCloseTransition; 5781 const isRestOnlyDelay = restMsValue > 0 && !openDelay; 5782 const shouldOpenImmediately = isOverInactive && (isOpen || isHoverCloseTransition) || isReenteringSameTriggerDuringCloseTransition; 5783 const shouldOpen = !isOpen || isOverInactive; 5784 if (shouldOpenImmediately) { 5785 if (checkShouldOpen()) { 5786 store2.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerNode)); 5787 } 5788 return; 5789 } 5790 if (isRestOnlyDelay) { 5791 return; 5792 } 5793 if (openDelay) { 5794 instance.openChangeTimeout.start(openDelay, () => { 5795 if (shouldOpen && checkShouldOpen()) { 5796 store2.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerNode)); 5797 } 5798 }); 5799 } else if (shouldOpen) { 5800 if (checkShouldOpen()) { 5801 store2.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerNode)); 5802 } 5803 } 5804 } 5805 function onMouseLeave(event) { 5806 if (isClickLikeOpenEvent2()) { 5807 clearPointerEvents(); 5808 return; 5809 } 5810 cleanupMouseMoveHandler(); 5811 const domReferenceElement = store2.select("domReferenceElement"); 5812 const doc = ownerDocument(domReferenceElement); 5813 instance.restTimeout.clear(); 5814 instance.restTimeoutPending = false; 5815 const handleCloseContextBase = dataRef.current.floatingContext ?? getHandleCloseContext?.(); 5816 if (isTargetInsideEnabledTrigger(event.relatedTarget, store2.context.triggerElements)) { 5817 return; 5818 } 5819 if (handleCloseRef.current && handleCloseContextBase) { 5820 if (!store2.select("open")) { 5821 instance.openChangeTimeout.clear(); 5822 } 5823 const currentTrigger = triggerElementRef.current; 5824 instance.handler = handleCloseRef.current({ 5825 ...handleCloseContextBase, 5826 tree, 5827 x: event.clientX, 5828 y: event.clientY, 5829 onClose() { 5830 clearPointerEvents(); 5831 cleanupMouseMoveHandler(); 5832 if (enabledRef.current && !isClickLikeOpenEvent2() && currentTrigger === store2.select("domReferenceElement")) { 5833 closeWithDelay(event, true); 5834 } 5835 } 5836 }); 5837 doc.addEventListener("mousemove", instance.handler); 5838 instance.handler(event); 5839 return; 5840 } 5841 const shouldClose = instance.pointerType === "touch" ? !contains(store2.select("floatingElement"), event.relatedTarget) : true; 5842 if (shouldClose) { 5843 closeWithDelay(event); 5844 } 5845 } 5846 function onMouseOut(event) { 5847 if (contains(trigger, event.relatedTarget)) { 5848 return; 5849 } 5850 instance.openChangeTimeout.clear(); 5851 instance.restTimeout.clear(); 5852 instance.restTimeoutPending = false; 5853 } 5854 const staleOpenGuard = guardStaleOpen ? addEventListener(trigger, "mouseout", onMouseOut) : void 0; 5855 if (move) { 5856 return mergeCleanups(addEventListener(trigger, "mousemove", onMouseEnter, { 5857 once: true 5858 }), addEventListener(trigger, "mouseenter", onMouseEnter), addEventListener(trigger, "mouseleave", onMouseLeave), staleOpenGuard); 5859 } 5860 return mergeCleanups(addEventListener(trigger, "mouseenter", onMouseEnter), addEventListener(trigger, "mouseleave", onMouseLeave), staleOpenGuard); 5861 }, [cleanupMouseMoveHandler, clearPointerEvents, dataRef, delayRef, store2, enabled, handleCloseRef, instance, isActiveTrigger, isOverInactiveTrigger, isClickLikeOpenEvent2, mouseOnly, move, restMsRef, triggerElementRef, tree, enabledRef, getHandleCloseContext, isClosingRef, checkShouldOpen, guardStaleOpen]); 5862 return React33.useMemo(() => { 5863 if (!enabled) { 5864 return void 0; 5865 } 5866 function setPointerRef(event) { 5867 instance.pointerType = event.pointerType; 5868 } 5869 return { 5870 onPointerDown: setPointerRef, 5871 onPointerEnter: setPointerRef, 5872 onMouseMove(event) { 5873 const { 5874 nativeEvent 5875 } = event; 5876 const trigger = event.currentTarget; 5877 const currentDomReference = store2.select("domReferenceElement"); 5878 const currentOpen = store2.select("open"); 5879 const isOverInactive = isOverInactiveTrigger(currentDomReference, trigger, event.target); 5880 if (mouseOnly && !isMouseLikePointerType(instance.pointerType)) { 5881 return; 5882 } 5883 if (currentOpen && isOverInactive && instance.handleCloseOptions?.blockPointerEvents) { 5884 const floatingElement = store2.select("floatingElement"); 5885 if (floatingElement) { 5886 const scopeElement = instance.handleCloseOptions?.getScope?.() ?? trigger.ownerDocument.body; 5887 applySafePolygonPointerEventsMutation(instance, { 5888 scopeElement, 5889 referenceElement: trigger, 5890 floatingElement 5891 }); 5892 } 5893 } 5894 const restMsValue = getRestMs(restMsRef.current); 5895 if (currentOpen && !isOverInactive || restMsValue === 0) { 5896 return; 5897 } 5898 if (!isOverInactive && instance.restTimeoutPending && event.movementX ** 2 + event.movementY ** 2 < 2) { 5899 return; 5900 } 5901 instance.restTimeout.clear(); 5902 function handleMouseMove() { 5903 instance.restTimeoutPending = false; 5904 if (isClickLikeOpenEvent2()) { 5905 return; 5906 } 5907 const latestOpen = store2.select("open"); 5908 if (!instance.blockMouseMove && (!latestOpen || isOverInactive) && checkShouldOpen()) { 5909 store2.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, nativeEvent, trigger)); 5910 } 5911 } 5912 if (instance.pointerType === "touch") { 5913 ReactDOM4.flushSync(() => { 5914 handleMouseMove(); 5915 }); 5916 } else if (isOverInactive && currentOpen) { 5917 handleMouseMove(); 5918 } else { 5919 instance.restTimeoutPending = true; 5920 instance.restTimeout.start(restMsValue, handleMouseMove); 5921 } 5922 } 5923 }; 5924 }, [enabled, instance, isClickLikeOpenEvent2, isOverInactiveTrigger, mouseOnly, store2, restMsRef, checkShouldOpen]); 5925 } 5926 5927 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/safePolygon.mjs 5928 var CURSOR_SPEED_THRESHOLD = 0.1; 5929 var CURSOR_SPEED_THRESHOLD_SQUARED = CURSOR_SPEED_THRESHOLD * CURSOR_SPEED_THRESHOLD; 5930 var POLYGON_BUFFER = 0.5; 5931 function hasIntersectingEdge(pointX, pointY, xi, yi, xj, yj) { 5932 return yi >= pointY !== yj >= pointY && pointX <= (xj - xi) * (pointY - yi) / (yj - yi) + xi; 5933 } 5934 function isPointInQuadrilateral(pointX, pointY, x1, y1, x2, y2, x3, y3, x4, y4) { 5935 let isInsideValue = false; 5936 if (hasIntersectingEdge(pointX, pointY, x1, y1, x2, y2)) { 5937 isInsideValue = !isInsideValue; 5938 } 5939 if (hasIntersectingEdge(pointX, pointY, x2, y2, x3, y3)) { 5940 isInsideValue = !isInsideValue; 5941 } 5942 if (hasIntersectingEdge(pointX, pointY, x3, y3, x4, y4)) { 5943 isInsideValue = !isInsideValue; 5944 } 5945 if (hasIntersectingEdge(pointX, pointY, x4, y4, x1, y1)) { 5946 isInsideValue = !isInsideValue; 5947 } 5948 return isInsideValue; 5949 } 5950 function isInsideRect(pointX, pointY, rect) { 5951 return pointX >= rect.x && pointX <= rect.x + rect.width && pointY >= rect.y && pointY <= rect.y + rect.height; 5952 } 5953 function isInsideAxisAlignedRect(pointX, pointY, x1, y1, x2, y2) { 5954 const minX = Math.min(x1, x2); 5955 const maxX = Math.max(x1, x2); 5956 const minY = Math.min(y1, y2); 5957 const maxY = Math.max(y1, y2); 5958 return pointX >= minX && pointX <= maxX && pointY >= minY && pointY <= maxY; 5959 } 5960 function safePolygon(options = {}) { 5961 const { 5962 blockPointerEvents = false 5963 } = options; 5964 const timeout = new Timeout(); 5965 const fn = ({ 5966 x, 5967 y, 5968 placement, 5969 elements, 5970 onClose, 5971 nodeId, 5972 tree 5973 }) => { 5974 const side = placement?.split("-")[0]; 5975 let hasLanded = false; 5976 let lastX = null; 5977 let lastY = null; 5978 let lastCursorTime = typeof performance !== "undefined" ? performance.now() : 0; 5979 function isCursorMovingSlowly(nextX, nextY) { 5980 const currentTime = performance.now(); 5981 const elapsedTime = currentTime - lastCursorTime; 5982 if (lastX === null || lastY === null || elapsedTime === 0) { 5983 lastX = nextX; 5984 lastY = nextY; 5985 lastCursorTime = currentTime; 5986 return false; 5987 } 5988 const deltaX = nextX - lastX; 5989 const deltaY = nextY - lastY; 5990 const distanceSquared = deltaX * deltaX + deltaY * deltaY; 5991 const thresholdSquared = elapsedTime * elapsedTime * CURSOR_SPEED_THRESHOLD_SQUARED; 5992 lastX = nextX; 5993 lastY = nextY; 5994 lastCursorTime = currentTime; 5995 return distanceSquared < thresholdSquared; 5996 } 5997 function close() { 5998 timeout.clear(); 5999 onClose(); 6000 } 6001 return function onMouseMove(event) { 6002 timeout.clear(); 6003 const domReference = elements.domReference; 6004 const floating = elements.floating; 6005 if (!domReference || !floating || side == null || x == null || y == null) { 6006 return void 0; 6007 } 6008 const { 6009 clientX, 6010 clientY 6011 } = event; 6012 const target = getTarget(event); 6013 const isLeave = event.type === "mouseleave"; 6014 const isOverFloatingEl = contains(floating, target); 6015 const isOverReferenceEl = contains(domReference, target); 6016 if (isOverFloatingEl) { 6017 hasLanded = true; 6018 if (!isLeave) { 6019 return void 0; 6020 } 6021 } 6022 if (isOverReferenceEl) { 6023 hasLanded = false; 6024 if (!isLeave) { 6025 hasLanded = true; 6026 return void 0; 6027 } 6028 } 6029 if (isLeave && isElement(event.relatedTarget) && contains(floating, event.relatedTarget)) { 6030 return void 0; 6031 } 6032 function hasOpenChildNode() { 6033 return Boolean(tree && getNodeChildren(tree.nodesRef.current, nodeId).length > 0); 6034 } 6035 function closeIfNoOpenChild() { 6036 if (!hasOpenChildNode()) { 6037 close(); 6038 } 6039 } 6040 if (hasOpenChildNode()) { 6041 return void 0; 6042 } 6043 const refRect = domReference.getBoundingClientRect(); 6044 const rect = floating.getBoundingClientRect(); 6045 const cursorLeaveFromRight = x > rect.right - rect.width / 2; 6046 const cursorLeaveFromBottom = y > rect.bottom - rect.height / 2; 6047 const isFloatingWider = rect.width > refRect.width; 6048 const isFloatingTaller = rect.height > refRect.height; 6049 const left = (isFloatingWider ? refRect : rect).left; 6050 const right = (isFloatingWider ? refRect : rect).right; 6051 const top = (isFloatingTaller ? refRect : rect).top; 6052 const bottom = (isFloatingTaller ? refRect : rect).bottom; 6053 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) { 6054 closeIfNoOpenChild(); 6055 return void 0; 6056 } 6057 let isInsideTroughRect = false; 6058 switch (side) { 6059 case "top": 6060 isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, left, refRect.top + 1, right, rect.bottom - 1); 6061 break; 6062 case "bottom": 6063 isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, left, rect.top + 1, right, refRect.bottom - 1); 6064 break; 6065 case "left": 6066 isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, rect.right - 1, bottom, refRect.left + 1, top); 6067 break; 6068 case "right": 6069 isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, refRect.right - 1, bottom, rect.left + 1, top); 6070 break; 6071 default: 6072 } 6073 if (isInsideTroughRect) { 6074 return void 0; 6075 } 6076 if (hasLanded && !isInsideRect(clientX, clientY, refRect)) { 6077 closeIfNoOpenChild(); 6078 return void 0; 6079 } 6080 if (!isLeave && isCursorMovingSlowly(clientX, clientY)) { 6081 closeIfNoOpenChild(); 6082 return void 0; 6083 } 6084 let isInsidePolygon = false; 6085 switch (side) { 6086 case "top": { 6087 const cursorXOffset = isFloatingWider ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4; 6088 const cursorPointOneX = isFloatingWider ? x + cursorXOffset : cursorLeaveFromRight ? x + cursorXOffset : x - cursorXOffset; 6089 const cursorPointTwoX = isFloatingWider ? x - cursorXOffset : cursorLeaveFromRight ? x + cursorXOffset : x - cursorXOffset; 6090 const cursorPointY = y + POLYGON_BUFFER + 1; 6091 const commonYLeft = cursorLeaveFromRight ? rect.bottom - POLYGON_BUFFER : isFloatingWider ? rect.bottom - POLYGON_BUFFER : rect.top; 6092 const commonYRight = cursorLeaveFromRight ? isFloatingWider ? rect.bottom - POLYGON_BUFFER : rect.top : rect.bottom - POLYGON_BUFFER; 6093 isInsidePolygon = isPointInQuadrilateral(clientX, clientY, cursorPointOneX, cursorPointY, cursorPointTwoX, cursorPointY, rect.left, commonYLeft, rect.right, commonYRight); 6094 break; 6095 } 6096 case "bottom": { 6097 const cursorXOffset = isFloatingWider ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4; 6098 const cursorPointOneX = isFloatingWider ? x + cursorXOffset : cursorLeaveFromRight ? x + cursorXOffset : x - cursorXOffset; 6099 const cursorPointTwoX = isFloatingWider ? x - cursorXOffset : cursorLeaveFromRight ? x + cursorXOffset : x - cursorXOffset; 6100 const cursorPointY = y - POLYGON_BUFFER; 6101 const commonYLeft = cursorLeaveFromRight ? rect.top + POLYGON_BUFFER : isFloatingWider ? rect.top + POLYGON_BUFFER : rect.bottom; 6102 const commonYRight = cursorLeaveFromRight ? isFloatingWider ? rect.top + POLYGON_BUFFER : rect.bottom : rect.top + POLYGON_BUFFER; 6103 isInsidePolygon = isPointInQuadrilateral(clientX, clientY, cursorPointOneX, cursorPointY, cursorPointTwoX, cursorPointY, rect.left, commonYLeft, rect.right, commonYRight); 6104 break; 6105 } 6106 case "left": { 6107 const cursorYOffset = isFloatingTaller ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4; 6108 const cursorPointOneY = isFloatingTaller ? y + cursorYOffset : cursorLeaveFromBottom ? y + cursorYOffset : y - cursorYOffset; 6109 const cursorPointTwoY = isFloatingTaller ? y - cursorYOffset : cursorLeaveFromBottom ? y + cursorYOffset : y - cursorYOffset; 6110 const cursorPointX = x + POLYGON_BUFFER + 1; 6111 const commonXTop = cursorLeaveFromBottom ? rect.right - POLYGON_BUFFER : isFloatingTaller ? rect.right - POLYGON_BUFFER : rect.left; 6112 const commonXBottom = cursorLeaveFromBottom ? isFloatingTaller ? rect.right - POLYGON_BUFFER : rect.left : rect.right - POLYGON_BUFFER; 6113 isInsidePolygon = isPointInQuadrilateral(clientX, clientY, commonXTop, rect.top, commonXBottom, rect.bottom, cursorPointX, cursorPointOneY, cursorPointX, cursorPointTwoY); 6114 break; 6115 } 6116 case "right": { 6117 const cursorYOffset = isFloatingTaller ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4; 6118 const cursorPointOneY = isFloatingTaller ? y + cursorYOffset : cursorLeaveFromBottom ? y + cursorYOffset : y - cursorYOffset; 6119 const cursorPointTwoY = isFloatingTaller ? y - cursorYOffset : cursorLeaveFromBottom ? y + cursorYOffset : y - cursorYOffset; 6120 const cursorPointX = x - POLYGON_BUFFER; 6121 const commonXTop = cursorLeaveFromBottom ? rect.left + POLYGON_BUFFER : isFloatingTaller ? rect.left + POLYGON_BUFFER : rect.right; 6122 const commonXBottom = cursorLeaveFromBottom ? isFloatingTaller ? rect.left + POLYGON_BUFFER : rect.right : rect.left + POLYGON_BUFFER; 6123 isInsidePolygon = isPointInQuadrilateral(clientX, clientY, cursorPointX, cursorPointOneY, cursorPointX, cursorPointTwoY, commonXTop, rect.top, commonXBottom, rect.bottom); 6124 break; 6125 } 6126 default: 6127 } 6128 if (!isInsidePolygon) { 6129 closeIfNoOpenChild(); 6130 } else if (!hasLanded) { 6131 timeout.start(40, closeIfNoOpenChild); 6132 } 6133 return void 0; 6134 }; 6135 }; 6136 fn.__options = { 6137 ...options, 6138 blockPointerEvents 6139 }; 6140 return fn; 6141 } 6142 6143 // node_modules/.store/@floating-ui/core@1.8.0-3V8aS7jJHHGcsCINjP9-5A/node_modules/@floating-ui/core/dist/floating-ui.core.mjs 6144 function computeCoordsFromPlacement(_ref, placement, rtl) { 6145 let { 6146 reference, 6147 floating 6148 } = _ref; 6149 const sideAxis = getSideAxis(placement); 6150 const alignmentAxis = getAlignmentAxis(placement); 6151 const alignLength = getAxisLength(alignmentAxis); 6152 const side = getSide(placement); 6153 const isVertical = sideAxis === "y"; 6154 const commonX = reference.x + reference.width / 2 - floating.width / 2; 6155 const commonY = reference.y + reference.height / 2 - floating.height / 2; 6156 const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2; 6157 let coords; 6158 switch (side) { 6159 case "top": 6160 coords = { 6161 x: commonX, 6162 y: reference.y - floating.height 6163 }; 6164 break; 6165 case "bottom": 6166 coords = { 6167 x: commonX, 6168 y: reference.y + reference.height 6169 }; 6170 break; 6171 case "right": 6172 coords = { 6173 x: reference.x + reference.width, 6174 y: commonY 6175 }; 6176 break; 6177 case "left": 6178 coords = { 6179 x: reference.x - floating.width, 6180 y: commonY 6181 }; 6182 break; 6183 default: 6184 coords = { 6185 x: reference.x, 6186 y: reference.y 6187 }; 6188 } 6189 const alignment = getAlignment(placement); 6190 if (alignment) { 6191 coords[alignmentAxis] += commonAlign * (alignment === "end" ? 1 : -1) * (rtl && isVertical ? -1 : 1); 6192 } 6193 return coords; 6194 } 6195 async function detectOverflow(state, options) { 6196 var _await$platform$isEle; 6197 if (options === void 0) { 6198 options = {}; 6199 } 6200 const { 6201 x, 6202 y, 6203 platform: platform3, 6204 rects, 6205 elements, 6206 strategy 6207 } = state; 6208 const { 6209 boundary = "clippingAncestors", 6210 rootBoundary = "viewport", 6211 elementContext = "floating", 6212 altBoundary = false, 6213 padding = 0 6214 } = evaluate(options, state); 6215 const paddingObject = getPaddingObject(padding); 6216 const altContext = elementContext === "floating" ? "reference" : "floating"; 6217 const element = elements[altBoundary ? altContext : elementContext]; 6218 const clippingClientRect = rectToClientRect(await platform3.getClippingRect({ 6219 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)), 6220 boundary, 6221 rootBoundary, 6222 strategy 6223 })); 6224 const rect = elementContext === "floating" ? { 6225 x, 6226 y, 6227 width: rects.floating.width, 6228 height: rects.floating.height 6229 } : rects.reference; 6230 const offsetParent = await (platform3.getOffsetParent == null ? void 0 : platform3.getOffsetParent(elements.floating)); 6231 const offsetScale = await (platform3.isElement == null ? void 0 : platform3.isElement(offsetParent)) && await (platform3.getScale == null ? void 0 : platform3.getScale(offsetParent)) || { 6232 x: 1, 6233 y: 1 6234 }; 6235 const elementClientRect = rectToClientRect(platform3.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform3.convertOffsetParentRelativeRectToViewportRelativeRect({ 6236 elements, 6237 rect, 6238 offsetParent, 6239 strategy 6240 }) : rect); 6241 return { 6242 top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y, 6243 bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y, 6244 left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x, 6245 right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x 6246 }; 6247 } 6248 var MAX_RESET_COUNT = 50; 6249 var computePosition = async (reference, floating, config) => { 6250 const { 6251 placement = "bottom", 6252 strategy = "absolute", 6253 middleware = [], 6254 platform: platform3 6255 } = config; 6256 const platformWithDetectOverflow = platform3.detectOverflow ? platform3 : { 6257 ...platform3, 6258 detectOverflow 6259 }; 6260 const rtl = await (platform3.isRTL == null ? void 0 : platform3.isRTL(floating)); 6261 let rects = await platform3.getElementRects({ 6262 reference, 6263 floating, 6264 strategy 6265 }); 6266 let { 6267 x, 6268 y 6269 } = computeCoordsFromPlacement(rects, placement, rtl); 6270 let statefulPlacement = placement; 6271 let resetCount = 0; 6272 const middlewareData = {}; 6273 for (let i = 0; i < middleware.length; i++) { 6274 const currentMiddleware = middleware[i]; 6275 if (!currentMiddleware) { 6276 continue; 6277 } 6278 const { 6279 name, 6280 fn 6281 } = currentMiddleware; 6282 const { 6283 x: nextX, 6284 y: nextY, 6285 data, 6286 reset 6287 } = await fn({ 6288 x, 6289 y, 6290 initialPlacement: placement, 6291 placement: statefulPlacement, 6292 strategy, 6293 middlewareData, 6294 rects, 6295 platform: platformWithDetectOverflow, 6296 elements: { 6297 reference, 6298 floating 6299 } 6300 }); 6301 x = nextX != null ? nextX : x; 6302 y = nextY != null ? nextY : y; 6303 middlewareData[name] = { 6304 ...middlewareData[name], 6305 ...data 6306 }; 6307 if (reset && resetCount < MAX_RESET_COUNT) { 6308 resetCount++; 6309 if (typeof reset === "object") { 6310 if (reset.placement) { 6311 statefulPlacement = reset.placement; 6312 } 6313 if (reset.rects) { 6314 rects = reset.rects === true ? await platform3.getElementRects({ 6315 reference, 6316 floating, 6317 strategy 6318 }) : reset.rects; 6319 } 6320 ({ 6321 x, 6322 y 6323 } = computeCoordsFromPlacement(rects, statefulPlacement, rtl)); 6324 } 6325 i = -1; 6326 } 6327 } 6328 return { 6329 x, 6330 y, 6331 placement: statefulPlacement, 6332 strategy, 6333 middlewareData 6334 }; 6335 }; 6336 var flip = function(options) { 6337 if (options === void 0) { 6338 options = {}; 6339 } 6340 return { 6341 name: "flip", 6342 options, 6343 async fn(state) { 6344 var _middlewareData$arrow, _middlewareData$flip; 6345 const { 6346 placement, 6347 middlewareData, 6348 rects, 6349 initialPlacement, 6350 platform: platform3, 6351 elements 6352 } = state; 6353 const { 6354 mainAxis: checkMainAxis = true, 6355 crossAxis: checkCrossAxis = true, 6356 fallbackPlacements: specifiedFallbackPlacements, 6357 fallbackStrategy = "bestFit", 6358 fallbackAxisSideDirection = "none", 6359 flipAlignment = true, 6360 ...detectOverflowOptions 6361 } = evaluate(options, state); 6362 if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) { 6363 return {}; 6364 } 6365 const side = getSide(placement); 6366 const initialSideAxis = getSideAxis(initialPlacement); 6367 const isBasePlacement = getSide(initialPlacement) === initialPlacement; 6368 const rtl = await (platform3.isRTL == null ? void 0 : platform3.isRTL(elements.floating)); 6369 const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement)); 6370 const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== "none"; 6371 if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) { 6372 fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl)); 6373 } 6374 const placements2 = [initialPlacement, ...fallbackPlacements]; 6375 const overflow = await platform3.detectOverflow(state, detectOverflowOptions); 6376 const overflows = []; 6377 let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || []; 6378 if (checkMainAxis) { 6379 overflows.push(overflow[side]); 6380 } 6381 if (checkCrossAxis) { 6382 const sides2 = getAlignmentSides(placement, rects, rtl); 6383 overflows.push(overflow[sides2[0]], overflow[sides2[1]]); 6384 } 6385 overflowsData = [...overflowsData, { 6386 placement, 6387 overflows 6388 }]; 6389 if (!overflows.every((side2) => side2 <= 0)) { 6390 var _middlewareData$flip2, _overflowsData$filter; 6391 const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1; 6392 const nextPlacement = placements2[nextIndex]; 6393 if (nextPlacement) { 6394 const ignoreCrossAxisOverflow = checkCrossAxis === "alignment" ? initialSideAxis !== getSideAxis(nextPlacement) : false; 6395 if (!ignoreCrossAxisOverflow || // We leave the current main axis only if every placement on that axis 6396 // overflows the main axis. 6397 overflowsData.every((d) => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) { 6398 return { 6399 data: { 6400 index: nextIndex, 6401 overflows: overflowsData 6402 }, 6403 reset: { 6404 placement: nextPlacement 6405 } 6406 }; 6407 } 6408 } 6409 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; 6410 if (!resetPlacement) { 6411 switch (fallbackStrategy) { 6412 case "bestFit": { 6413 var _overflowsData$filter2; 6414 const placement2 = (_overflowsData$filter2 = overflowsData.filter((d) => { 6415 if (hasFallbackAxisSideDirection) { 6416 const currentSideAxis = getSideAxis(d.placement); 6417 return currentSideAxis === initialSideAxis || // Create a bias to the `y` side axis due to horizontal 6418 // reading directions favoring greater width. 6419 currentSideAxis === "y"; 6420 } 6421 return true; 6422 }).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]; 6423 if (placement2) { 6424 resetPlacement = placement2; 6425 } 6426 break; 6427 } 6428 case "initialPlacement": 6429 resetPlacement = initialPlacement; 6430 break; 6431 } 6432 } 6433 if (placement !== resetPlacement) { 6434 return { 6435 reset: { 6436 placement: resetPlacement 6437 } 6438 }; 6439 } 6440 } 6441 return {}; 6442 } 6443 }; 6444 }; 6445 var originSides = /* @__PURE__ */ new Set(["left", "top"]); 6446 async function convertValueToCoords(state, options) { 6447 const { 6448 placement, 6449 platform: platform3, 6450 elements 6451 } = state; 6452 const rtl = await (platform3.isRTL == null ? void 0 : platform3.isRTL(elements.floating)); 6453 const side = getSide(placement); 6454 const alignment = getAlignment(placement); 6455 const isVertical = getSideAxis(placement) === "y"; 6456 const mainAxisMulti = originSides.has(side) ? -1 : 1; 6457 const crossAxisMulti = rtl && isVertical ? -1 : 1; 6458 const rawValue = evaluate(options, state); 6459 let { 6460 mainAxis, 6461 crossAxis, 6462 alignmentAxis 6463 } = typeof rawValue === "number" ? { 6464 mainAxis: rawValue, 6465 crossAxis: 0, 6466 alignmentAxis: null 6467 } : { 6468 mainAxis: rawValue.mainAxis || 0, 6469 crossAxis: rawValue.crossAxis || 0, 6470 alignmentAxis: rawValue.alignmentAxis 6471 }; 6472 if (alignment && typeof alignmentAxis === "number") { 6473 crossAxis = alignment === "end" ? alignmentAxis * -1 : alignmentAxis; 6474 } 6475 return isVertical ? { 6476 x: crossAxis * crossAxisMulti, 6477 y: mainAxis * mainAxisMulti 6478 } : { 6479 x: mainAxis * mainAxisMulti, 6480 y: crossAxis * crossAxisMulti 6481 }; 6482 } 6483 var offset = function(options) { 6484 if (options === void 0) { 6485 options = 0; 6486 } 6487 return { 6488 name: "offset", 6489 options, 6490 async fn(state) { 6491 var _middlewareData$offse, _middlewareData$arrow; 6492 const { 6493 x, 6494 y, 6495 placement, 6496 middlewareData 6497 } = state; 6498 const diffCoords = await convertValueToCoords(state, options); 6499 if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) { 6500 return {}; 6501 } 6502 return { 6503 x: x + diffCoords.x, 6504 y: y + diffCoords.y, 6505 data: { 6506 ...diffCoords, 6507 placement 6508 } 6509 }; 6510 } 6511 }; 6512 }; 6513 var shift = function(options) { 6514 if (options === void 0) { 6515 options = {}; 6516 } 6517 return { 6518 name: "shift", 6519 options, 6520 async fn(state) { 6521 const { 6522 x, 6523 y, 6524 placement, 6525 platform: platform3 6526 } = state; 6527 const { 6528 mainAxis: checkMainAxis = true, 6529 crossAxis: checkCrossAxis = false, 6530 limiter = { 6531 fn: (_ref) => { 6532 let { 6533 x: x2, 6534 y: y2 6535 } = _ref; 6536 return { 6537 x: x2, 6538 y: y2 6539 }; 6540 } 6541 }, 6542 ...detectOverflowOptions 6543 } = evaluate(options, state); 6544 const coords = { 6545 x, 6546 y 6547 }; 6548 const overflow = await platform3.detectOverflow(state, detectOverflowOptions); 6549 const crossAxis = getSideAxis(placement); 6550 const mainAxis = getOppositeAxis(crossAxis); 6551 let mainAxisCoord = coords[mainAxis]; 6552 let crossAxisCoord = coords[crossAxis]; 6553 const clampCoord = (axis, coord) => clamp(coord + overflow[axis === "y" ? "top" : "left"], coord, coord - overflow[axis === "y" ? "bottom" : "right"]); 6554 if (checkMainAxis) { 6555 mainAxisCoord = clampCoord(mainAxis, mainAxisCoord); 6556 } 6557 if (checkCrossAxis) { 6558 crossAxisCoord = clampCoord(crossAxis, crossAxisCoord); 6559 } 6560 const limitedCoords = limiter.fn({ 6561 ...state, 6562 [mainAxis]: mainAxisCoord, 6563 [crossAxis]: crossAxisCoord 6564 }); 6565 return { 6566 ...limitedCoords, 6567 data: { 6568 x: limitedCoords.x - x, 6569 y: limitedCoords.y - y, 6570 enabled: { 6571 [mainAxis]: checkMainAxis, 6572 [crossAxis]: checkCrossAxis 6573 } 6574 } 6575 }; 6576 } 6577 }; 6578 }; 6579 var limitShift = function(options) { 6580 if (options === void 0) { 6581 options = {}; 6582 } 6583 return { 6584 options, 6585 fn(state) { 6586 var _rawOffset$mainAxis, _rawOffset$crossAxis; 6587 const { 6588 x, 6589 y, 6590 placement, 6591 rects, 6592 middlewareData 6593 } = state; 6594 const { 6595 offset: offset4 = 0, 6596 mainAxis: checkMainAxis = true, 6597 crossAxis: checkCrossAxis = true 6598 } = evaluate(options, state); 6599 const coords = { 6600 x, 6601 y 6602 }; 6603 const crossAxis = getSideAxis(placement); 6604 const mainAxis = getOppositeAxis(crossAxis); 6605 let mainAxisCoord = coords[mainAxis]; 6606 let crossAxisCoord = coords[crossAxis]; 6607 const rawOffset = evaluate(offset4, state); 6608 const computedOffset = typeof rawOffset === "number" ? { 6609 mainAxis: rawOffset, 6610 crossAxis: 0 6611 } : { 6612 mainAxis: (_rawOffset$mainAxis = rawOffset.mainAxis) != null ? _rawOffset$mainAxis : 0, 6613 crossAxis: (_rawOffset$crossAxis = rawOffset.crossAxis) != null ? _rawOffset$crossAxis : 0 6614 }; 6615 if (checkMainAxis) { 6616 const len = mainAxis === "y" ? "height" : "width"; 6617 const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis; 6618 const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis; 6619 if (mainAxisCoord < limitMin) { 6620 mainAxisCoord = limitMin; 6621 } else if (mainAxisCoord > limitMax) { 6622 mainAxisCoord = limitMax; 6623 } 6624 } 6625 if (checkCrossAxis) { 6626 var _middlewareData$offse, _middlewareData$offse2; 6627 const len = mainAxis === "y" ? "width" : "height"; 6628 const isOriginSide = originSides.has(getSide(placement)); 6629 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); 6630 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); 6631 if (crossAxisCoord < limitMin) { 6632 crossAxisCoord = limitMin; 6633 } else if (crossAxisCoord > limitMax) { 6634 crossAxisCoord = limitMax; 6635 } 6636 } 6637 return { 6638 [mainAxis]: mainAxisCoord, 6639 [crossAxis]: crossAxisCoord 6640 }; 6641 } 6642 }; 6643 }; 6644 var size = function(options) { 6645 if (options === void 0) { 6646 options = {}; 6647 } 6648 return { 6649 name: "size", 6650 options, 6651 async fn(state) { 6652 const { 6653 placement, 6654 rects, 6655 platform: platform3, 6656 elements 6657 } = state; 6658 const { 6659 apply = () => { 6660 }, 6661 ...detectOverflowOptions 6662 } = evaluate(options, state); 6663 const overflow = await platform3.detectOverflow(state, detectOverflowOptions); 6664 const side = getSide(placement); 6665 const alignment = getAlignment(placement); 6666 const isYAxis = getSideAxis(placement) === "y"; 6667 const { 6668 width, 6669 height 6670 } = rects.floating; 6671 let heightSide; 6672 let widthSide; 6673 if (side === "top" || side === "bottom") { 6674 heightSide = side; 6675 widthSide = alignment === (await (platform3.isRTL == null ? void 0 : platform3.isRTL(elements.floating)) ? "start" : "end") ? "left" : "right"; 6676 } else { 6677 widthSide = side; 6678 heightSide = alignment === "end" ? "top" : "bottom"; 6679 } 6680 const maximumClippingHeight = height - overflow.top - overflow.bottom; 6681 const maximumClippingWidth = width - overflow.left - overflow.right; 6682 const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight); 6683 const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth); 6684 const shiftData = state.middlewareData.shift; 6685 const noShift = !shiftData; 6686 let availableHeight2 = overflowAvailableHeight; 6687 let availableWidth2 = overflowAvailableWidth; 6688 if (shiftData != null && shiftData.enabled.x) { 6689 availableWidth2 = maximumClippingWidth; 6690 } 6691 if (shiftData != null && shiftData.enabled.y) { 6692 availableHeight2 = maximumClippingHeight; 6693 } 6694 if (noShift && !alignment) { 6695 if (isYAxis) { 6696 availableWidth2 = width - 2 * max(overflow.left, overflow.right); 6697 } else { 6698 availableHeight2 = height - 2 * max(overflow.top, overflow.bottom); 6699 } 6700 } 6701 await apply({ 6702 ...state, 6703 availableWidth: availableWidth2, 6704 availableHeight: availableHeight2 6705 }); 6706 const nextDimensions = await platform3.getDimensions(elements.floating); 6707 if (width !== nextDimensions.width || height !== nextDimensions.height) { 6708 return { 6709 reset: { 6710 rects: true 6711 } 6712 }; 6713 } 6714 return {}; 6715 } 6716 }; 6717 }; 6718 6719 // node_modules/.store/@floating-ui/dom@1.8.0-vHXcr4FgWneV0cgwFw-d7A/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs 6720 function getCssDimensions(element) { 6721 const css = getComputedStyle2(element); 6722 let width = parseFloat(css.width) || 0; 6723 let height = parseFloat(css.height) || 0; 6724 const hasOffset = isHTMLElement(element); 6725 const offsetWidth = hasOffset ? element.offsetWidth : width; 6726 const offsetHeight = hasOffset ? element.offsetHeight : height; 6727 const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight; 6728 if (shouldFallback) { 6729 width = offsetWidth; 6730 height = offsetHeight; 6731 } 6732 return { 6733 width, 6734 height, 6735 $: shouldFallback 6736 }; 6737 } 6738 function unwrapElement(element) { 6739 return !isElement(element) ? element.contextElement : element; 6740 } 6741 function getScale(element) { 6742 const domElement = unwrapElement(element); 6743 if (!isHTMLElement(domElement)) { 6744 return createCoords(1); 6745 } 6746 const rect = domElement.getBoundingClientRect(); 6747 const { 6748 width, 6749 height, 6750 $ 6751 } = getCssDimensions(domElement); 6752 let x = ($ ? round(rect.width) : rect.width) / width; 6753 let y = ($ ? round(rect.height) : rect.height) / height; 6754 if (!x || !Number.isFinite(x)) { 6755 x = 1; 6756 } 6757 if (!y || !Number.isFinite(y)) { 6758 y = 1; 6759 } 6760 return { 6761 x, 6762 y 6763 }; 6764 } 6765 var noOffsets = /* @__PURE__ */ createCoords(0); 6766 function getVisualOffsets(element) { 6767 const win = getWindow(element); 6768 if (!isWebKit() || !win.visualViewport) { 6769 return noOffsets; 6770 } 6771 return { 6772 x: win.visualViewport.offsetLeft, 6773 y: win.visualViewport.offsetTop 6774 }; 6775 } 6776 function shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) { 6777 if (isFixed === void 0) { 6778 isFixed = false; 6779 } 6780 return !!floatingOffsetParent && isFixed && floatingOffsetParent === getWindow(element); 6781 } 6782 function getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) { 6783 if (includeScale === void 0) { 6784 includeScale = false; 6785 } 6786 if (isFixedStrategy === void 0) { 6787 isFixedStrategy = false; 6788 } 6789 const clientRect = element.getBoundingClientRect(); 6790 const domElement = unwrapElement(element); 6791 let scale = createCoords(1); 6792 if (includeScale) { 6793 if (offsetParent) { 6794 if (isElement(offsetParent)) { 6795 scale = getScale(offsetParent); 6796 } 6797 } else { 6798 scale = getScale(element); 6799 } 6800 } 6801 const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0); 6802 let x = (clientRect.left + visualOffsets.x) / scale.x; 6803 let y = (clientRect.top + visualOffsets.y) / scale.y; 6804 let width = clientRect.width / scale.x; 6805 let height = clientRect.height / scale.y; 6806 if (domElement && offsetParent) { 6807 const win = getWindow(domElement); 6808 const offsetWin = isElement(offsetParent) ? getWindow(offsetParent) : offsetParent; 6809 let currentWin = win; 6810 let currentIFrame = getFrameElement(currentWin); 6811 while (currentIFrame && offsetWin !== currentWin) { 6812 const iframeScale = getScale(currentIFrame); 6813 const iframeRect = currentIFrame.getBoundingClientRect(); 6814 const css = getComputedStyle2(currentIFrame); 6815 const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x; 6816 const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y; 6817 x *= iframeScale.x; 6818 y *= iframeScale.y; 6819 width *= iframeScale.x; 6820 height *= iframeScale.y; 6821 x += left; 6822 y += top; 6823 currentWin = getWindow(currentIFrame); 6824 currentIFrame = getFrameElement(currentWin); 6825 } 6826 } 6827 return rectToClientRect({ 6828 width, 6829 height, 6830 x, 6831 y 6832 }); 6833 } 6834 function getWindowScrollBarX(element, rect) { 6835 const leftScroll = getNodeScroll(element).scrollLeft; 6836 if (!rect) { 6837 return getBoundingClientRect(getDocumentElement(element)).left + leftScroll; 6838 } 6839 return rect.left + leftScroll; 6840 } 6841 function getHTMLOffset(documentElement, scroll) { 6842 const htmlRect = documentElement.getBoundingClientRect(); 6843 const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect); 6844 const y = htmlRect.top + scroll.scrollTop; 6845 return { 6846 x, 6847 y 6848 }; 6849 } 6850 function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) { 6851 let { 6852 elements, 6853 rect, 6854 offsetParent, 6855 strategy 6856 } = _ref; 6857 const isFixed = strategy === "fixed"; 6858 const documentElement = getDocumentElement(offsetParent); 6859 const topLayer = elements ? isTopLayer(elements.floating) : false; 6860 if (offsetParent === documentElement || topLayer && isFixed) { 6861 return rect; 6862 } 6863 let scroll = { 6864 scrollLeft: 0, 6865 scrollTop: 0 6866 }; 6867 let scale = createCoords(1); 6868 const offsets = createCoords(0); 6869 const isOffsetParentAnElement = isHTMLElement(offsetParent); 6870 if (isOffsetParentAnElement || !isFixed) { 6871 if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) { 6872 scroll = getNodeScroll(offsetParent); 6873 } 6874 if (isOffsetParentAnElement) { 6875 const offsetRect = getBoundingClientRect(offsetParent); 6876 scale = getScale(offsetParent); 6877 offsets.x = offsetRect.x + offsetParent.clientLeft; 6878 offsets.y = offsetRect.y + offsetParent.clientTop; 6879 } 6880 } 6881 const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0); 6882 return { 6883 width: rect.width * scale.x, 6884 height: rect.height * scale.y, 6885 x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x, 6886 y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y 6887 }; 6888 } 6889 function getClientRects(element) { 6890 return element.getClientRects ? Array.from(element.getClientRects()) : []; 6891 } 6892 function getDocumentRect(html) { 6893 const scroll = getNodeScroll(html); 6894 const body = html.ownerDocument.body; 6895 const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth); 6896 const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight); 6897 let x = -scroll.scrollLeft + getWindowScrollBarX(html); 6898 const y = -scroll.scrollTop; 6899 if (getComputedStyle2(body).direction === "rtl") { 6900 x += max(html.clientWidth, body.clientWidth) - width; 6901 } 6902 return { 6903 width, 6904 height, 6905 x, 6906 y 6907 }; 6908 } 6909 var SCROLLBAR_MAX = 25; 6910 function getViewportRect(element, strategy, rootBoundary) { 6911 if (rootBoundary === void 0) { 6912 rootBoundary = "viewport"; 6913 } 6914 const isLayoutViewport = rootBoundary === "layoutViewport"; 6915 const win = getWindow(element); 6916 const html = getDocumentElement(element); 6917 const visualViewport = win.visualViewport; 6918 let width = html.clientWidth; 6919 let height = html.clientHeight; 6920 let x = 0; 6921 let y = 0; 6922 if (visualViewport) { 6923 const layoutRelativeClientCoords = !isWebKit() || strategy === "fixed"; 6924 if (isLayoutViewport) { 6925 if (!layoutRelativeClientCoords) { 6926 x = -visualViewport.offsetLeft; 6927 y = -visualViewport.offsetTop; 6928 } 6929 } else { 6930 width = visualViewport.width; 6931 height = visualViewport.height; 6932 if (layoutRelativeClientCoords) { 6933 x = visualViewport.offsetLeft; 6934 y = visualViewport.offsetTop; 6935 } 6936 } 6937 } 6938 const windowScrollbarX = getWindowScrollBarX(html); 6939 if (windowScrollbarX <= 0) { 6940 const doc = html.ownerDocument; 6941 const body = doc.body; 6942 const bodyStyles = getComputedStyle(body); 6943 const bodyMarginInline = doc.compatMode === "CSS1Compat" ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0; 6944 const reservedWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline); 6945 const gutter = getComputedStyle(html).scrollbarGutter === "stable both-edges" ? reservedWidth / 2 : reservedWidth; 6946 if (gutter <= SCROLLBAR_MAX) { 6947 width -= gutter; 6948 } 6949 } 6950 return { 6951 width, 6952 height, 6953 x, 6954 y 6955 }; 6956 } 6957 function getInnerBoundingClientRect(element, strategy) { 6958 const clientRect = getBoundingClientRect(element, true, strategy === "fixed"); 6959 const top = clientRect.top + element.clientTop; 6960 const left = clientRect.left + element.clientLeft; 6961 const scale = getScale(element); 6962 const width = element.clientWidth * scale.x; 6963 const height = element.clientHeight * scale.y; 6964 const x = left * scale.x; 6965 const y = top * scale.y; 6966 return { 6967 width, 6968 height, 6969 x, 6970 y 6971 }; 6972 } 6973 function getClientRectFromClippingAncestor(element, clippingAncestor, strategy) { 6974 let rect; 6975 if (clippingAncestor === "viewport" || clippingAncestor === "layoutViewport") { 6976 rect = getViewportRect(element, strategy, clippingAncestor); 6977 } else if (clippingAncestor === "document") { 6978 rect = getDocumentRect(getDocumentElement(element)); 6979 } else if (isElement(clippingAncestor)) { 6980 rect = getInnerBoundingClientRect(clippingAncestor, strategy); 6981 } else { 6982 const visualOffsets = getVisualOffsets(element); 6983 rect = { 6984 x: clippingAncestor.x - visualOffsets.x, 6985 y: clippingAncestor.y - visualOffsets.y, 6986 width: clippingAncestor.width, 6987 height: clippingAncestor.height 6988 }; 6989 } 6990 return rectToClientRect(rect); 6991 } 6992 function getClippingElementAncestors(element, cache) { 6993 const cachedResult = cache.get(element); 6994 if (cachedResult) { 6995 return cachedResult; 6996 } 6997 let result = getOverflowAncestors(element, [], false).filter((el) => isElement(el) && getNodeName(el) !== "body"); 6998 let lastKeptComputedStyle = null; 6999 const elementIsFixed = getComputedStyle2(element).position === "fixed"; 7000 let currentNode = elementIsFixed ? getParentNode(element) : element; 7001 while (isElement(currentNode) && !isLastTraversableNode(currentNode)) { 7002 const computedStyle = getComputedStyle2(currentNode); 7003 const currentNodeIsContaining = isContainingBlock(currentNode); 7004 const lastPosition = lastKeptComputedStyle ? lastKeptComputedStyle.position : elementIsFixed ? "fixed" : ""; 7005 const shouldDropCurrentNode = !currentNodeIsContaining && (lastPosition === "fixed" || lastPosition === "absolute" && computedStyle.position === "static"); 7006 if (shouldDropCurrentNode) { 7007 result = result.filter((ancestor) => ancestor !== currentNode); 7008 } else { 7009 lastKeptComputedStyle = computedStyle; 7010 } 7011 currentNode = getParentNode(currentNode); 7012 } 7013 cache.set(element, result); 7014 return result; 7015 } 7016 function getClippingRect(_ref) { 7017 let { 7018 element, 7019 boundary, 7020 rootBoundary, 7021 strategy 7022 } = _ref; 7023 const elementClippingAncestors = boundary === "clippingAncestors" ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary); 7024 const clippingAncestors = [...elementClippingAncestors, rootBoundary]; 7025 const firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy); 7026 let top = firstRect.top; 7027 let right = firstRect.right; 7028 let bottom = firstRect.bottom; 7029 let left = firstRect.left; 7030 for (let i = 1; i < clippingAncestors.length; i++) { 7031 const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i], strategy); 7032 top = max(rect.top, top); 7033 right = min(rect.right, right); 7034 bottom = min(rect.bottom, bottom); 7035 left = max(rect.left, left); 7036 } 7037 return { 7038 width: right - left, 7039 height: bottom - top, 7040 x: left, 7041 y: top 7042 }; 7043 } 7044 function getDimensions2(element) { 7045 const { 7046 width, 7047 height 7048 } = getCssDimensions(element); 7049 return { 7050 width, 7051 height 7052 }; 7053 } 7054 function getRectRelativeToOffsetParent(element, offsetParent, strategy) { 7055 const isOffsetParentAnElement = isHTMLElement(offsetParent); 7056 const documentElement = getDocumentElement(offsetParent); 7057 const isFixed = strategy === "fixed"; 7058 const rect = getBoundingClientRect(element, true, isFixed, offsetParent); 7059 let scroll = { 7060 scrollLeft: 0, 7061 scrollTop: 0 7062 }; 7063 const offsets = createCoords(0); 7064 if (isOffsetParentAnElement || !isFixed) { 7065 if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) { 7066 scroll = getNodeScroll(offsetParent); 7067 } 7068 if (isOffsetParentAnElement) { 7069 const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent); 7070 offsets.x = offsetRect.x + offsetParent.clientLeft; 7071 offsets.y = offsetRect.y + offsetParent.clientTop; 7072 } 7073 } 7074 if (!isOffsetParentAnElement && documentElement) { 7075 offsets.x = getWindowScrollBarX(documentElement); 7076 } 7077 const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0); 7078 const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x; 7079 const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y; 7080 return { 7081 x, 7082 y, 7083 width: rect.width, 7084 height: rect.height 7085 }; 7086 } 7087 function isStaticPositioned(element) { 7088 return getComputedStyle2(element).position === "static"; 7089 } 7090 function getTrueOffsetParent(element, polyfill) { 7091 if (!isHTMLElement(element) || getComputedStyle2(element).position === "fixed") { 7092 return null; 7093 } 7094 if (polyfill) { 7095 return polyfill(element); 7096 } 7097 let rawOffsetParent = element.offsetParent; 7098 if (getDocumentElement(element) === rawOffsetParent) { 7099 rawOffsetParent = rawOffsetParent.ownerDocument.body; 7100 } 7101 return rawOffsetParent; 7102 } 7103 function getOffsetParent(element, polyfill) { 7104 const win = getWindow(element); 7105 if (isTopLayer(element)) { 7106 return win; 7107 } 7108 if (!isHTMLElement(element)) { 7109 let svgOffsetParent = getParentNode(element); 7110 while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) { 7111 if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) { 7112 return svgOffsetParent; 7113 } 7114 svgOffsetParent = getParentNode(svgOffsetParent); 7115 } 7116 return win; 7117 } 7118 let offsetParent = getTrueOffsetParent(element, polyfill); 7119 while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) { 7120 offsetParent = getTrueOffsetParent(offsetParent, polyfill); 7121 } 7122 if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) { 7123 return win; 7124 } 7125 return offsetParent || getContainingBlock(element) || win; 7126 } 7127 var getElementRects = async function(data) { 7128 const getOffsetParentFn = this.getOffsetParent || getOffsetParent; 7129 const getDimensionsFn = this.getDimensions; 7130 const floatingDimensions = await getDimensionsFn(data.floating); 7131 return { 7132 reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy), 7133 floating: { 7134 x: 0, 7135 y: 0, 7136 width: floatingDimensions.width, 7137 height: floatingDimensions.height 7138 } 7139 }; 7140 }; 7141 function isRTL(element) { 7142 return getComputedStyle2(element).direction === "rtl"; 7143 } 7144 var platform2 = { 7145 convertOffsetParentRelativeRectToViewportRelativeRect, 7146 getDocumentElement, 7147 getClippingRect, 7148 getOffsetParent, 7149 getElementRects, 7150 getClientRects, 7151 getDimensions: getDimensions2, 7152 getScale, 7153 isElement, 7154 isRTL 7155 }; 7156 function rectsAreEqual(a, b) { 7157 return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height; 7158 } 7159 function observeMove(element, onMove, ancestorResize) { 7160 let io = null; 7161 let timeoutId; 7162 const root = getDocumentElement(element); 7163 function cleanup() { 7164 var _io; 7165 clearTimeout(timeoutId); 7166 (_io = io) == null || _io.disconnect(); 7167 io = null; 7168 } 7169 function refresh(skip, threshold) { 7170 if (skip === void 0) { 7171 skip = false; 7172 } 7173 if (threshold === void 0) { 7174 threshold = 1; 7175 } 7176 cleanup(); 7177 const elementRectForRootMargin = element.getBoundingClientRect(); 7178 const { 7179 left, 7180 top, 7181 width, 7182 height 7183 } = elementRectForRootMargin; 7184 if (!skip) { 7185 onMove(); 7186 } 7187 if (!width || !height) { 7188 return; 7189 } 7190 const insetTop = floor(top); 7191 const insetRight = floor(root.clientWidth - (left + width)); 7192 const insetBottom = floor(root.clientHeight - (top + height)); 7193 const insetLeft = floor(left); 7194 const rootMargin = -insetTop + "px " + -insetRight + "px " + -insetBottom + "px " + -insetLeft + "px"; 7195 const options = { 7196 rootMargin, 7197 threshold: max(0, min(1, threshold)) || 1 7198 }; 7199 let isFirstUpdate = true; 7200 function handleObserve(entries) { 7201 const ratio = entries[0].intersectionRatio; 7202 if (!rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) { 7203 return refresh(); 7204 } 7205 if (ratio !== threshold) { 7206 if (!isFirstUpdate) { 7207 return refresh(); 7208 } 7209 if (!ratio) { 7210 timeoutId = setTimeout(() => { 7211 refresh(false, 1e-7); 7212 }, 1e3); 7213 } else { 7214 refresh(false, ratio); 7215 } 7216 } 7217 isFirstUpdate = false; 7218 } 7219 try { 7220 io = new IntersectionObserver(handleObserve, { 7221 ...options, 7222 // Handle <iframe>s 7223 root: root.ownerDocument 7224 }); 7225 } catch (_e) { 7226 io = new IntersectionObserver(handleObserve, options); 7227 } 7228 io.observe(element); 7229 } 7230 const win = getWindow(element); 7231 const handleResize = () => refresh(ancestorResize); 7232 win.addEventListener("resize", handleResize); 7233 refresh(true); 7234 return () => { 7235 win.removeEventListener("resize", handleResize); 7236 cleanup(); 7237 }; 7238 } 7239 function autoUpdate(reference, floating, update2, options) { 7240 if (options === void 0) { 7241 options = {}; 7242 } 7243 const { 7244 ancestorScroll = true, 7245 ancestorResize = true, 7246 elementResize = typeof ResizeObserver === "function", 7247 layoutShift = typeof IntersectionObserver === "function", 7248 animationFrame = false 7249 } = options; 7250 const referenceEl = unwrapElement(reference); 7251 const ancestors = ancestorScroll || ancestorResize ? [...referenceEl ? getOverflowAncestors(referenceEl) : [], ...floating ? getOverflowAncestors(floating) : []] : []; 7252 ancestors.forEach((ancestor) => { 7253 ancestorScroll && ancestor.addEventListener("scroll", update2); 7254 ancestorResize && ancestor.addEventListener("resize", update2); 7255 }); 7256 const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update2, ancestorResize) : null; 7257 let reobserveFrame = -1; 7258 let resizeObserver = null; 7259 if (elementResize) { 7260 resizeObserver = new ResizeObserver((_ref) => { 7261 let [firstEntry] = _ref; 7262 if (firstEntry && firstEntry.target === referenceEl && resizeObserver && floating) { 7263 resizeObserver.unobserve(floating); 7264 cancelAnimationFrame(reobserveFrame); 7265 reobserveFrame = requestAnimationFrame(() => { 7266 var _resizeObserver; 7267 (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating); 7268 }); 7269 } 7270 update2(); 7271 }); 7272 if (referenceEl && !animationFrame) { 7273 resizeObserver.observe(referenceEl); 7274 } 7275 if (floating) { 7276 resizeObserver.observe(floating); 7277 } 7278 } 7279 let frameId; 7280 let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null; 7281 if (animationFrame) { 7282 frameLoop(); 7283 } 7284 function frameLoop() { 7285 const nextRefRect = getBoundingClientRect(reference); 7286 if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) { 7287 update2(); 7288 } 7289 prevRefRect = nextRefRect; 7290 frameId = requestAnimationFrame(frameLoop); 7291 } 7292 update2(); 7293 return () => { 7294 var _resizeObserver2; 7295 ancestors.forEach((ancestor) => { 7296 ancestorScroll && ancestor.removeEventListener("scroll", update2); 7297 ancestorResize && ancestor.removeEventListener("resize", update2); 7298 }); 7299 cleanupIo == null || cleanupIo(); 7300 (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect(); 7301 resizeObserver = null; 7302 if (animationFrame) { 7303 cancelAnimationFrame(frameId); 7304 } 7305 }; 7306 } 7307 var offset2 = offset; 7308 var shift2 = shift; 7309 var flip2 = flip; 7310 var size2 = size; 7311 var limitShift2 = limitShift; 7312 var computePosition2 = (reference, floating, options) => { 7313 const cache = /* @__PURE__ */ new Map(); 7314 const mergedOptions = options != null ? options : {}; 7315 const platformWithCache = { 7316 ...platform2, 7317 ...mergedOptions.platform, 7318 _c: cache 7319 }; 7320 return computePosition(reference, floating, { 7321 ...mergedOptions, 7322 platform: platformWithCache 7323 }); 7324 }; 7325 7326 // node_modules/.store/@floating-ui/react-dom@2.1.9-AxWcAwqlMfOrAFOinFKSVg/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs 7327 var React34 = __toESM(require_react(), 1); 7328 var import_react2 = __toESM(require_react(), 1); 7329 var ReactDOM5 = __toESM(require_react_dom(), 1); 7330 var isClient = typeof document !== "undefined"; 7331 var noop2 = function noop3() { 7332 }; 7333 var index = isClient ? import_react2.useLayoutEffect : noop2; 7334 function deepEqual(a, b) { 7335 if (a === b) { 7336 return true; 7337 } 7338 if (typeof a !== typeof b) { 7339 return false; 7340 } 7341 if (typeof a === "function" && a.toString() === b.toString()) { 7342 return true; 7343 } 7344 let length; 7345 let i; 7346 let keys; 7347 if (a && b && typeof a === "object") { 7348 if (Array.isArray(a)) { 7349 length = a.length; 7350 if (length !== b.length) return false; 7351 for (i = length; i-- !== 0; ) { 7352 if (!deepEqual(a[i], b[i])) { 7353 return false; 7354 } 7355 } 7356 return true; 7357 } 7358 keys = Object.keys(a); 7359 length = keys.length; 7360 if (length !== Object.keys(b).length) { 7361 return false; 7362 } 7363 for (i = length; i-- !== 0; ) { 7364 if (!{}.hasOwnProperty.call(b, keys[i])) { 7365 return false; 7366 } 7367 } 7368 for (i = length; i-- !== 0; ) { 7369 const key = keys[i]; 7370 if (key === "_owner" && a.$$typeof) { 7371 continue; 7372 } 7373 if (!deepEqual(a[key], b[key])) { 7374 return false; 7375 } 7376 } 7377 return true; 7378 } 7379 return a !== a && b !== b; 7380 } 7381 function getDPR(element) { 7382 if (typeof window === "undefined") { 7383 return 1; 7384 } 7385 const win = element.ownerDocument.defaultView || window; 7386 return win.devicePixelRatio || 1; 7387 } 7388 function roundByDPR(element, value) { 7389 const dpr = getDPR(element); 7390 return Math.round(value * dpr) / dpr; 7391 } 7392 function useLatestRef(value) { 7393 const ref = React34.useRef(value); 7394 index(() => { 7395 ref.current = value; 7396 }); 7397 return ref; 7398 } 7399 function useFloating(options) { 7400 if (options === void 0) { 7401 options = {}; 7402 } 7403 const { 7404 placement = "bottom", 7405 strategy = "absolute", 7406 middleware = [], 7407 platform: platform3, 7408 elements: { 7409 reference: externalReference, 7410 floating: externalFloating 7411 } = {}, 7412 transform = true, 7413 whileElementsMounted, 7414 open: open3 7415 } = options; 7416 const [data, setData] = React34.useState({ 7417 x: 0, 7418 y: 0, 7419 strategy, 7420 placement, 7421 middlewareData: {}, 7422 isPositioned: false 7423 }); 7424 const [latestMiddleware, setLatestMiddleware] = React34.useState(middleware); 7425 if (!deepEqual(latestMiddleware, middleware)) { 7426 setLatestMiddleware(middleware); 7427 } 7428 const [_reference, _setReference] = React34.useState(null); 7429 const [_floating, _setFloating] = React34.useState(null); 7430 const setReference = React34.useCallback((node) => { 7431 if (node !== referenceRef.current) { 7432 referenceRef.current = node; 7433 _setReference(node); 7434 } 7435 }, []); 7436 const setFloating = React34.useCallback((node) => { 7437 if (node !== floatingRef.current) { 7438 floatingRef.current = node; 7439 _setFloating(node); 7440 } 7441 }, []); 7442 const referenceEl = externalReference || _reference; 7443 const floatingEl = externalFloating || _floating; 7444 const referenceRef = React34.useRef(null); 7445 const floatingRef = React34.useRef(null); 7446 const dataRef = React34.useRef(data); 7447 const hasWhileElementsMounted = whileElementsMounted != null; 7448 const whileElementsMountedRef = useLatestRef(whileElementsMounted); 7449 const platformRef = useLatestRef(platform3); 7450 const openRef = useLatestRef(open3); 7451 const update2 = React34.useCallback(() => { 7452 if (!referenceRef.current || !floatingRef.current) { 7453 return; 7454 } 7455 const config = { 7456 placement, 7457 strategy, 7458 middleware: latestMiddleware 7459 }; 7460 if (platformRef.current) { 7461 config.platform = platformRef.current; 7462 } 7463 computePosition2(referenceRef.current, floatingRef.current, config).then((data2) => { 7464 const fullData = { 7465 ...data2, 7466 // The floating element's position may be recomputed while it's closed 7467 // but still mounted (such as when transitioning out). To ensure 7468 // `isPositioned` will be `false` initially on the next open, avoid 7469 // setting it to `true` when `open === false` (must be specified). 7470 isPositioned: openRef.current !== false 7471 }; 7472 if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) { 7473 dataRef.current = fullData; 7474 ReactDOM5.flushSync(() => { 7475 setData(fullData); 7476 }); 7477 } 7478 }); 7479 }, [latestMiddleware, placement, strategy, platformRef, openRef]); 7480 index(() => { 7481 if (open3 === false && dataRef.current.isPositioned) { 7482 dataRef.current.isPositioned = false; 7483 setData((data2) => ({ 7484 ...data2, 7485 isPositioned: false 7486 })); 7487 } 7488 }, [open3]); 7489 const isMountedRef = React34.useRef(false); 7490 index(() => { 7491 isMountedRef.current = true; 7492 return () => { 7493 isMountedRef.current = false; 7494 }; 7495 }, []); 7496 index(() => { 7497 if (referenceEl) referenceRef.current = referenceEl; 7498 if (floatingEl) floatingRef.current = floatingEl; 7499 if (referenceEl && floatingEl) { 7500 if (whileElementsMountedRef.current) { 7501 return whileElementsMountedRef.current(referenceEl, floatingEl, update2); 7502 } 7503 update2(); 7504 } 7505 }, [referenceEl, floatingEl, update2, whileElementsMountedRef, hasWhileElementsMounted]); 7506 const refs = React34.useMemo(() => ({ 7507 reference: referenceRef, 7508 floating: floatingRef, 7509 setReference, 7510 setFloating 7511 }), [setReference, setFloating]); 7512 const elements = React34.useMemo(() => ({ 7513 reference: referenceEl, 7514 floating: floatingEl 7515 }), [referenceEl, floatingEl]); 7516 const floatingStyles = React34.useMemo(() => { 7517 const initialStyles = { 7518 position: strategy, 7519 left: 0, 7520 top: 0 7521 }; 7522 if (!elements.floating) { 7523 return initialStyles; 7524 } 7525 const x = roundByDPR(elements.floating, data.x); 7526 const y = roundByDPR(elements.floating, data.y); 7527 if (transform) { 7528 return { 7529 ...initialStyles, 7530 transform: "translate(" + x + "px, " + y + "px)", 7531 ...getDPR(elements.floating) >= 1.5 && { 7532 willChange: "transform" 7533 } 7534 }; 7535 } 7536 return { 7537 position: strategy, 7538 left: x, 7539 top: y 7540 }; 7541 }, [strategy, transform, elements.floating, data.x, data.y]); 7542 return React34.useMemo(() => ({ 7543 ...data, 7544 update: update2, 7545 refs, 7546 elements, 7547 floatingStyles 7548 }), [data, update2, refs, elements, floatingStyles]); 7549 } 7550 var offset3 = (options, deps) => { 7551 const result = offset2(options); 7552 return { 7553 name: result.name, 7554 fn: result.fn, 7555 options: [options, deps] 7556 }; 7557 }; 7558 var shift3 = (options, deps) => { 7559 const result = shift2(options); 7560 return { 7561 name: result.name, 7562 fn: result.fn, 7563 options: [options, deps] 7564 }; 7565 }; 7566 var limitShift3 = (options, deps) => { 7567 const result = limitShift2(options); 7568 return { 7569 fn: result.fn, 7570 options: [options, deps] 7571 }; 7572 }; 7573 var flip3 = (options, deps) => { 7574 const result = flip2(options); 7575 return { 7576 name: result.name, 7577 fn: result.fn, 7578 options: [options, deps] 7579 }; 7580 }; 7581 var size3 = (options, deps) => { 7582 const result = size2(options); 7583 return { 7584 name: result.name, 7585 fn: result.fn, 7586 options: [options, deps] 7587 }; 7588 }; 7589 7590 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/NullStore.mjs 7591 var NullStore = class extends ReactStore { 7592 // `update`/`set`/`notifyAll` funnel through `setState` in the base `Store`, so overriding 7593 // `setState` alone would neutralize them today. They are overridden explicitly so the store stays 7594 // inert even if a future base-class change stops routing a mutator through `setState`. 7595 setState(_newState) { 7596 } 7597 update(_changes) { 7598 } 7599 set(_key, _value) { 7600 } 7601 notifyAll() { 7602 } 7603 }; 7604 7605 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/inertValue.mjs 7606 function inertValue(value) { 7607 if (isReactVersionAtLeast(19)) { 7608 return value; 7609 } 7610 return value ? "true" : void 0; 7611 } 7612 7613 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/direction-context/DirectionContext.mjs 7614 var React35 = __toESM(require_react(), 1); 7615 var DirectionContext = /* @__PURE__ */ React35.createContext(void 0); 7616 if (true) DirectionContext.displayName = "DirectionContext"; 7617 function useDirection() { 7618 const context = React35.useContext(DirectionContext); 7619 return context?.direction ?? "ltr"; 7620 } 7621 7622 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useAnchorPositioning.mjs 7623 var React37 = __toESM(require_react(), 1); 7624 7625 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useFloating.mjs 7626 var React36 = __toESM(require_react(), 1); 7627 function useBaseUIFloating(options) { 7628 const { 7629 nodeId, 7630 externalTree, 7631 rootContext: store2 7632 } = options; 7633 const referenceElement = store2.useState("referenceElement"); 7634 const floatingElement = store2.useState("floatingElement"); 7635 const domReferenceElement = store2.useState("domReferenceElement"); 7636 const open3 = store2.useState("open"); 7637 const floatingId = store2.useState("floatingId"); 7638 const [positionReference, setPositionReferenceRaw] = React36.useState(null); 7639 const domReferenceRef = React36.useRef(null); 7640 const tree = useFloatingTree(externalTree); 7641 const storeElements = React36.useMemo(() => ({ 7642 reference: referenceElement, 7643 floating: floatingElement, 7644 domReference: domReferenceElement 7645 }), [referenceElement, floatingElement, domReferenceElement]); 7646 const position = useFloating({ 7647 ...options, 7648 elements: { 7649 ...storeElements, 7650 ...positionReference && { 7651 reference: positionReference 7652 } 7653 } 7654 }); 7655 const setPositionReference = React36.useCallback((node) => { 7656 const computedPositionReference = isElement(node) ? { 7657 getBoundingClientRect: () => node.getBoundingClientRect(), 7658 getClientRects: () => node.getClientRects(), 7659 contextElement: node 7660 } : node; 7661 setPositionReferenceRaw(computedPositionReference); 7662 position.refs.setReference(computedPositionReference); 7663 }, [position.refs]); 7664 const refs = React36.useMemo(() => ({ 7665 ...position.refs, 7666 setPositionReference, 7667 domReference: domReferenceRef 7668 }), [position.refs, setPositionReference]); 7669 const elements = React36.useMemo(() => ({ 7670 ...position.elements, 7671 domReference: domReferenceElement 7672 }), [position.elements, domReferenceElement]); 7673 const context = React36.useMemo(() => ({ 7674 ...position, 7675 dataRef: store2.context.dataRef, 7676 open: open3, 7677 onOpenChange: store2.setOpen, 7678 events: store2.context.events, 7679 floatingId, 7680 refs, 7681 elements, 7682 nodeId, 7683 rootStore: store2 7684 }), [position, refs, elements, nodeId, store2, open3, floatingId]); 7685 useIsoLayoutEffect(() => { 7686 if (domReferenceElement) { 7687 domReferenceRef.current = domReferenceElement; 7688 } 7689 }, [domReferenceElement]); 7690 useIsoLayoutEffect(() => { 7691 store2.context.dataRef.current.floatingContext = context; 7692 const node = tree?.nodesRef.current.find((n) => n.id === nodeId); 7693 if (node) { 7694 node.context = context; 7695 } 7696 }); 7697 return React36.useMemo(() => ({ 7698 ...position, 7699 context, 7700 refs, 7701 elements, 7702 rootStore: store2 7703 }), [position, refs, elements, context, store2]); 7704 } 7705 7706 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/middleware/arrow.mjs 7707 var baseArrow = (options) => ({ 7708 name: "arrow", 7709 options, 7710 async fn(state) { 7711 const { 7712 x, 7713 y, 7714 placement, 7715 rects, 7716 platform: platform3, 7717 elements, 7718 middlewareData 7719 } = state; 7720 const { 7721 element, 7722 padding = 0 7723 } = evaluate(options, state) || {}; 7724 if (element == null) { 7725 return {}; 7726 } 7727 const paddingObject = getPaddingObject(padding); 7728 const coords = { 7729 x, 7730 y 7731 }; 7732 const axis = getAlignmentAxis(placement); 7733 const length = getAxisLength(axis); 7734 const arrowDimensions = await platform3.getDimensions(element); 7735 const isYAxis = axis === "y"; 7736 const minProp = isYAxis ? "top" : "left"; 7737 const maxProp = isYAxis ? "bottom" : "right"; 7738 const clientProp = isYAxis ? "clientHeight" : "clientWidth"; 7739 const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length]; 7740 const startDiff = coords[axis] - rects.reference[axis]; 7741 const clientSize = elements.floating[clientProp] || rects.floating[length]; 7742 const centerToReference = endDiff / 2 - startDiff / 2; 7743 const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1; 7744 const minPadding = Math.min(paddingObject[minProp], largestPossiblePadding); 7745 const maxPadding = Math.min(paddingObject[maxProp], largestPossiblePadding); 7746 const min2 = minPadding; 7747 const max2 = clientSize - arrowDimensions[length] - maxPadding; 7748 const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference; 7749 const offset4 = clamp(min2, center, max2); 7750 const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset4 && rects.reference[length] / 2 - (center < min2 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0; 7751 const alignmentOffset = shouldAddOffset ? center < min2 ? center - min2 : center - max2 : 0; 7752 return { 7753 [axis]: coords[axis] + alignmentOffset, 7754 data: { 7755 [axis]: offset4, 7756 centerOffset: center - offset4 - alignmentOffset, 7757 ...shouldAddOffset && { 7758 alignmentOffset 7759 } 7760 }, 7761 reset: shouldAddOffset 7762 }; 7763 } 7764 }); 7765 var arrow4 = (options, deps) => { 7766 const { 7767 name, 7768 fn 7769 } = baseArrow(options); 7770 return { 7771 name, 7772 fn, 7773 options: [options, deps] 7774 }; 7775 }; 7776 7777 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/hideMiddleware.mjs 7778 var hide4 = { 7779 name: "hide", 7780 async fn(state) { 7781 const { 7782 width, 7783 height, 7784 x, 7785 y 7786 } = state.rects.reference; 7787 const anchorHidden2 = width === 0 && height === 0 && x === 0 && y === 0; 7788 const overflow = await state.platform.detectOverflow(state, { 7789 elementContext: "reference" 7790 }); 7791 const referenceHidden = overflow.top - height >= 0 || overflow.right - width >= 0 || overflow.bottom - height >= 0 || overflow.left - width >= 0; 7792 return { 7793 data: { 7794 referenceHidden: referenceHidden || anchorHidden2 7795 } 7796 }; 7797 } 7798 }; 7799 7800 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/adaptiveOriginConstants.mjs 7801 var DEFAULT_SIDES = { 7802 sideX: "left", 7803 sideY: "top" 7804 }; 7805 7806 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/CommonPositionerCssVars.mjs 7807 var availableWidth = "--available-width"; 7808 var availableHeight = "--available-height"; 7809 var anchorWidth = "--anchor-width"; 7810 var anchorHeight = "--anchor-height"; 7811 var transformOrigin = "--transform-origin"; 7812 var positionerWidth = "--positioner-width"; 7813 var positionerHeight = "--positioner-height"; 7814 7815 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useAnchorPositioning.mjs 7816 var AVAILABLE_WIDTH_VAR = availableWidth; 7817 var AVAILABLE_HEIGHT_VAR = availableHeight; 7818 function getLogicalSide(sideParam, renderedSide, isRtl) { 7819 const isLogicalSideParam = sideParam === "inline-start" || sideParam === "inline-end"; 7820 const logicalRight = isRtl ? "inline-start" : "inline-end"; 7821 const logicalLeft = isRtl ? "inline-end" : "inline-start"; 7822 return { 7823 top: "top", 7824 right: isLogicalSideParam ? logicalRight : "right", 7825 bottom: "bottom", 7826 left: isLogicalSideParam ? logicalLeft : "left" 7827 }[renderedSide]; 7828 } 7829 function getOffsetData(state, sideParam, isRtl) { 7830 const { 7831 rects, 7832 placement 7833 } = state; 7834 const data = { 7835 side: getLogicalSide(sideParam, getSide(placement), isRtl), 7836 align: getAlignment(placement) || "center", 7837 anchor: { 7838 width: rects.reference.width, 7839 height: rects.reference.height 7840 }, 7841 positioner: { 7842 width: rects.floating.width, 7843 height: rects.floating.height 7844 } 7845 }; 7846 return data; 7847 } 7848 function useAnchorPositioning(params) { 7849 return useAnchorPositioningWithHook(params, useBaseUIFloating); 7850 } 7851 function useAnchorPositioningWithHook(params, useFloatingHook) { 7852 const { 7853 // Public parameters 7854 anchor, 7855 positionMethod = "absolute", 7856 side: sideParam = "bottom", 7857 sideOffset = 0, 7858 align = "center", 7859 alignOffset = 0, 7860 collisionBoundary, 7861 collisionPadding: collisionPaddingParam = 5, 7862 sticky = false, 7863 arrowPadding = 5, 7864 disableAnchorTracking = false, 7865 inline: inlineMiddleware, 7866 // Private parameters 7867 keepMounted = false, 7868 floatingRootContext, 7869 mounted, 7870 collisionAvoidance, 7871 shift: shift4, 7872 nodeId, 7873 adaptiveOrigin: adaptiveOrigin2, 7874 lazyFlip = false, 7875 externalTree 7876 } = params; 7877 const collisionAvoidanceSide = collisionAvoidance.side || "flip"; 7878 const collisionAvoidanceAlign = collisionAvoidance.align || "flip"; 7879 const collisionAvoidanceFallbackAxisSide = collisionAvoidance.fallbackAxisSide || "end"; 7880 const shiftCrossAxis = shift4?.crossAxis ?? false; 7881 const shiftRootBoundary = shift4?.rootBoundary; 7882 const anchorFn = typeof anchor === "function" ? anchor : void 0; 7883 const anchorFnCallback = useStableCallback(anchorFn); 7884 const anchorDep = anchorFn ? anchorFnCallback : anchor; 7885 const anchorValueRef = useValueAsRef(anchor); 7886 const mountedRef = useValueAsRef(mounted); 7887 const direction = useDirection(); 7888 const isRtl = direction === "rtl"; 7889 const [mountPlacement, setMountPlacement] = React37.useState(null); 7890 if (!mounted && mountPlacement !== null) { 7891 setMountPlacement(null); 7892 } 7893 const lockAlign = lazyFlip === "placement"; 7894 const mountSide = mountPlacement ? getSide(mountPlacement) : null; 7895 const mountAlign = mountPlacement && lockAlign ? getAlignment(mountPlacement) || "center" : null; 7896 const side = mountSide || { 7897 top: "top", 7898 right: "right", 7899 bottom: "bottom", 7900 left: "left", 7901 "inline-end": isRtl ? "left" : "right", 7902 "inline-start": isRtl ? "right" : "left" 7903 }[sideParam]; 7904 const placementAlign = mountAlign || align; 7905 const placement = placementAlign === "center" ? side : `$side}-$placementAlign}`; 7906 let collisionPadding = collisionPaddingParam; 7907 if (typeof collisionPadding === "number") { 7908 collisionPadding = { 7909 top: collisionPadding, 7910 right: collisionPadding, 7911 bottom: collisionPadding, 7912 left: collisionPadding 7913 }; 7914 } else if (collisionPadding) { 7915 collisionPadding = { 7916 top: collisionPadding.top || 0, 7917 right: collisionPadding.right || 0, 7918 bottom: collisionPadding.bottom || 0, 7919 left: collisionPadding.left || 0 7920 }; 7921 } 7922 const bias = 1; 7923 const biasTop = sideParam === "bottom" ? bias : 0; 7924 const biasBottom = sideParam === "top" ? bias : 0; 7925 const biasLeft = sideParam === "right" ? bias : 0; 7926 const biasRight = sideParam === "left" ? bias : 0; 7927 const commonCollisionProps = { 7928 boundary: collisionBoundary === "clipping-ancestors" ? "clippingAncestors" : collisionBoundary, 7929 padding: collisionPadding 7930 }; 7931 const arrowRef = React37.useRef(null); 7932 const sideOffsetRef = useValueAsRef(sideOffset); 7933 const alignOffsetRef = useValueAsRef(alignOffset); 7934 const sideOffsetDep = typeof sideOffset !== "function" ? sideOffset : 0; 7935 const alignOffsetDep = typeof alignOffset !== "function" ? alignOffset : 0; 7936 const middleware = []; 7937 if (inlineMiddleware) { 7938 middleware.push(inlineMiddleware); 7939 } 7940 middleware.push(offset3((state) => { 7941 const data = getOffsetData(state, sideParam, isRtl); 7942 const sideAxis = typeof sideOffsetRef.current === "function" ? sideOffsetRef.current(data) : sideOffsetRef.current; 7943 const alignAxis = typeof alignOffsetRef.current === "function" ? alignOffsetRef.current(data) : alignOffsetRef.current; 7944 return { 7945 mainAxis: sideAxis, 7946 crossAxis: alignAxis, 7947 alignmentAxis: alignAxis 7948 }; 7949 }, [sideOffsetDep, alignOffsetDep, isRtl, sideParam])); 7950 const shiftDisabled = collisionAvoidanceAlign === "none" && collisionAvoidanceSide !== "shift"; 7951 const crossAxisShiftEnabled = !shiftDisabled && (sticky || shiftCrossAxis || collisionAvoidanceSide === "shift"); 7952 const flipMiddleware = collisionAvoidanceSide === "none" ? null : flip3({ 7953 ...commonCollisionProps, 7954 // Ensure the popup flips if it's been limited by its --available-height and it resizes. 7955 // Since the size() padding is smaller than the flip() padding, flip() will take precedence. 7956 padding: { 7957 top: collisionPadding.top + bias + biasTop, 7958 right: collisionPadding.right + bias + biasRight, 7959 bottom: collisionPadding.bottom + bias + biasBottom, 7960 left: collisionPadding.left + bias + biasLeft 7961 }, 7962 mainAxis: !shiftCrossAxis && collisionAvoidanceSide === "flip", 7963 crossAxis: collisionAvoidanceAlign === "flip" ? "alignment" : false, 7964 fallbackAxisSideDirection: collisionAvoidanceFallbackAxisSide 7965 }); 7966 const shiftMiddleware = shiftDisabled ? null : shift3({ 7967 ...commonCollisionProps, 7968 // Use the Layout Viewport to avoid shifting around when pinch-zooming. 7969 rootBoundary: shiftRootBoundary, 7970 mainAxis: collisionAvoidanceAlign !== "none", 7971 crossAxis: crossAxisShiftEnabled, 7972 limiter: sticky || shiftCrossAxis ? void 0 : limitShift3((limitData) => { 7973 if (!arrowRef.current) { 7974 return {}; 7975 } 7976 const { 7977 width, 7978 height 7979 } = arrowRef.current.getBoundingClientRect(); 7980 const sideAxis = getSideAxis(getSide(limitData.placement)); 7981 const arrowSize = sideAxis === "y" ? width : height; 7982 const offsetAmount = sideAxis === "y" ? collisionPadding.left + collisionPadding.right : collisionPadding.top + collisionPadding.bottom; 7983 return { 7984 offset: arrowSize / 2 + offsetAmount / 2 7985 }; 7986 }) 7987 }, [commonCollisionProps, sticky, shiftCrossAxis, shiftRootBoundary, collisionPadding, collisionAvoidanceAlign]); 7988 if (collisionAvoidanceSide === "shift" || collisionAvoidanceAlign === "shift" || placementAlign === "center") { 7989 middleware.push(shiftMiddleware, flipMiddleware); 7990 } else { 7991 middleware.push(flipMiddleware, shiftMiddleware); 7992 } 7993 middleware.push(size3({ 7994 ...commonCollisionProps, 7995 apply({ 7996 elements: { 7997 floating 7998 }, 7999 availableWidth: availableWidth2, 8000 availableHeight: availableHeight2, 8001 rects 8002 }) { 8003 if (!mountedRef.current) { 8004 return; 8005 } 8006 const floatingStyle = floating.style; 8007 floatingStyle.setProperty(AVAILABLE_WIDTH_VAR, `$availableWidth2}px`); 8008 floatingStyle.setProperty(AVAILABLE_HEIGHT_VAR, `$availableHeight2}px`); 8009 const dpr = getWindow(floating).devicePixelRatio || 1; 8010 const { 8011 x: x2, 8012 y: y2, 8013 width, 8014 height 8015 } = rects.reference; 8016 const anchorWidth2 = (Math.round((x2 + width) * dpr) - Math.round(x2 * dpr)) / dpr; 8017 const anchorHeight2 = (Math.round((y2 + height) * dpr) - Math.round(y2 * dpr)) / dpr; 8018 floatingStyle.setProperty(anchorWidth, `$anchorWidth2}px`); 8019 floatingStyle.setProperty(anchorHeight, `$anchorHeight2}px`); 8020 } 8021 }), arrow4((state) => ({ 8022 // `transform-origin` calculations rely on an element existing. If the arrow hasn't been set, 8023 // we'll create a fake element. 8024 element: arrowRef.current || ownerDocument(state.elements.floating).createElement("div"), 8025 // No padding for the fake arrow: it would displace aligned popups on narrow anchors. 8026 padding: arrowRef.current ? arrowPadding : 0 8027 }), [arrowPadding]), { 8028 name: "transformOrigin", 8029 fn(state) { 8030 const { 8031 elements: { 8032 floating 8033 }, 8034 middlewareData: middlewareData2, 8035 placement: renderedPlacement2, 8036 platform: platform3, 8037 rects, 8038 y: y2 8039 } = state; 8040 const renderedSide2 = getSide(renderedPlacement2); 8041 const renderedAlign2 = getAlignment(renderedPlacement2); 8042 const isVertical = getSideAxis(renderedSide2) === "y"; 8043 const arrowEl = arrowRef.current; 8044 const sideOffsetValue = typeof sideOffset === "function" ? sideOffset(getOffsetData(state, sideParam, isRtl)) : sideOffset; 8045 let crossOrigin; 8046 if (!arrowEl && renderedAlign2 && Math.abs(isVertical ? middlewareData2.shift?.x || 0 : middlewareData2.shift?.y || 0) <= 1) { 8047 crossOrigin = renderedAlign2 === "start" === (isVertical && platform3.isRTL?.(floating) === true) ? "100%" : "0%"; 8048 } else { 8049 const arrowOffset = isVertical ? middlewareData2.arrow?.x || 0 : middlewareData2.arrow?.y || 0; 8050 const arrowSize = isVertical ? arrowEl?.clientWidth || 0 : arrowEl?.clientHeight || 0; 8051 crossOrigin = `$arrowOffset + arrowSize / 2}px`; 8052 } 8053 let sideOrigin = renderedSide2 === "top" || renderedSide2 === "left" ? `calc(100% + $sideOffsetValue}px)` : `${-sideOffsetValue}px`; 8054 if (crossAxisShiftEnabled && isVertical && Math.abs(middlewareData2.shift?.y || 0) > sideOffsetValue) { 8055 sideOrigin = `$rects.reference.y + rects.reference.height / 2 - y2}px`; 8056 } 8057 floating.style.setProperty(transformOrigin, isVertical ? `$crossOrigin} $sideOrigin}` : `$sideOrigin} $crossOrigin}`); 8058 return {}; 8059 } 8060 }, hide4, adaptiveOrigin2); 8061 useIsoLayoutEffect(() => { 8062 if (!mounted && floatingRootContext) { 8063 floatingRootContext.update({ 8064 referenceElement: null, 8065 floatingElement: null, 8066 domReferenceElement: null, 8067 positionReference: null 8068 }); 8069 } 8070 }, [mounted, floatingRootContext]); 8071 const autoUpdateOptions = React37.useMemo(() => ({ 8072 ancestorScroll: !disableAnchorTracking, 8073 elementResize: !disableAnchorTracking && typeof ResizeObserver !== "undefined", 8074 layoutShift: !disableAnchorTracking && typeof IntersectionObserver !== "undefined" 8075 }), [disableAnchorTracking]); 8076 const { 8077 refs, 8078 elements, 8079 x, 8080 y, 8081 middlewareData, 8082 update: update2, 8083 placement: renderedPlacement, 8084 context, 8085 isPositioned, 8086 floatingStyles: originalFloatingStyles 8087 } = useFloatingHook({ 8088 rootContext: floatingRootContext, 8089 open: keepMounted ? mounted : void 0, 8090 placement, 8091 middleware, 8092 strategy: positionMethod, 8093 whileElementsMounted: keepMounted ? void 0 : (...args) => autoUpdate(...args, autoUpdateOptions), 8094 nodeId, 8095 externalTree 8096 }); 8097 const { 8098 sideX, 8099 sideY 8100 } = middlewareData.adaptiveOrigin || DEFAULT_SIDES; 8101 const resolvedPosition = isPositioned ? positionMethod : "fixed"; 8102 const floatingStyles = React37.useMemo(() => { 8103 let base; 8104 if (!isPositioned) { 8105 base = { 8106 position: resolvedPosition, 8107 top: 0, 8108 left: 0 8109 }; 8110 } else if (adaptiveOrigin2) { 8111 base = { 8112 position: resolvedPosition, 8113 [sideX]: x, 8114 [sideY]: y 8115 }; 8116 } else { 8117 base = { 8118 ...originalFloatingStyles, 8119 position: resolvedPosition 8120 }; 8121 } 8122 base[AVAILABLE_WIDTH_VAR] = "100vw"; 8123 base[AVAILABLE_HEIGHT_VAR] = "100vh"; 8124 if (!isPositioned) { 8125 base.opacity = 0; 8126 } 8127 return base; 8128 }, [adaptiveOrigin2, resolvedPosition, sideX, x, sideY, y, originalFloatingStyles, isPositioned]); 8129 const registeredPositionReferenceRef = React37.useRef(null); 8130 useIsoLayoutEffect(() => { 8131 if (!mounted) { 8132 return; 8133 } 8134 const anchorValue = anchorValueRef.current; 8135 const resolvedAnchor = typeof anchorValue === "function" ? anchorValue() : anchorValue; 8136 const unwrappedElement = (isRef(resolvedAnchor) ? resolvedAnchor.current : resolvedAnchor) || null; 8137 const finalAnchor = unwrappedElement || null; 8138 if (finalAnchor !== registeredPositionReferenceRef.current) { 8139 refs.setPositionReference(finalAnchor); 8140 registeredPositionReferenceRef.current = finalAnchor; 8141 } 8142 }, [mounted, refs, anchorDep, anchorValueRef]); 8143 React37.useEffect(() => { 8144 if (!mounted) { 8145 return; 8146 } 8147 const anchorValue = anchorValueRef.current; 8148 if (typeof anchorValue === "function") { 8149 return; 8150 } 8151 if (isRef(anchorValue) && anchorValue.current !== registeredPositionReferenceRef.current) { 8152 refs.setPositionReference(anchorValue.current); 8153 registeredPositionReferenceRef.current = anchorValue.current; 8154 } 8155 }, [mounted, refs, anchorDep, anchorValueRef]); 8156 React37.useEffect(() => { 8157 if (keepMounted && mounted && elements.reference && elements.floating) { 8158 return autoUpdate(elements.reference, elements.floating, update2, autoUpdateOptions); 8159 } 8160 return void 0; 8161 }, [keepMounted, mounted, elements, update2, autoUpdateOptions]); 8162 const renderedSide = getSide(renderedPlacement); 8163 const logicalRenderedSide = getLogicalSide(sideParam, renderedSide, isRtl); 8164 const renderedAlign = getAlignment(renderedPlacement) || "center"; 8165 const anchorHidden2 = Boolean(middlewareData.hide?.referenceHidden); 8166 useIsoLayoutEffect(() => { 8167 if (lazyFlip && mounted && isPositioned && (renderedSide !== side || lockAlign && renderedAlign !== placementAlign)) { 8168 setMountPlacement(renderedPlacement); 8169 } 8170 }, [lazyFlip, lockAlign, mounted, isPositioned, renderedPlacement, renderedSide, renderedAlign, side, placementAlign]); 8171 const arrowStyles = React37.useMemo(() => ({ 8172 position: "absolute", 8173 top: middlewareData.arrow?.y, 8174 left: middlewareData.arrow?.x 8175 }), [middlewareData.arrow]); 8176 const arrowUncentered = middlewareData.arrow?.centerOffset !== 0; 8177 return React37.useMemo(() => ({ 8178 positionerStyles: floatingStyles, 8179 arrowStyles, 8180 arrowRef, 8181 arrowUncentered, 8182 side: logicalRenderedSide, 8183 align: renderedAlign, 8184 physicalSide: renderedSide, 8185 anchorHidden: anchorHidden2, 8186 refs, 8187 context, 8188 isPositioned, 8189 update: update2 8190 }), [floatingStyles, arrowStyles, arrowRef, arrowUncentered, logicalRenderedSide, renderedAlign, renderedSide, anchorHidden2, refs, context, isPositioned, update2]); 8191 } 8192 function isRef(param) { 8193 return param != null && "current" in param; 8194 } 8195 8196 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/getDisabledMountTransitionStyles.mjs 8197 function getDisabledMountTransitionStyles(transitionStatus) { 8198 return transitionStatus === "starting" ? DISABLED_TRANSITIONS_STYLE : EMPTY_OBJECT; 8199 } 8200 8201 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/usePositioner.mjs 8202 function usePositioner(componentProps, state, { 8203 styles, 8204 transitionStatus, 8205 props, 8206 refs, 8207 hidden, 8208 inert = false 8209 }) { 8210 const style = { 8211 ...styles 8212 }; 8213 if (inert) { 8214 style.pointerEvents = "none"; 8215 } 8216 return useRenderElement("div", componentProps, { 8217 state, 8218 ref: refs, 8219 props: [{ 8220 role: "presentation", 8221 hidden, 8222 style 8223 }, getDisabledMountTransitionStyles(transitionStatus), props], 8224 stateAttributesMapping: popupStateMapping 8225 }); 8226 } 8227 8228 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/button/Button.mjs 8229 var React38 = __toESM(require_react(), 1); 8230 var Button = /* @__PURE__ */ React38.forwardRef(function Button2(componentProps, forwardedRef) { 8231 const { 8232 render, 8233 className, 8234 disabled: disabled2 = false, 8235 focusableWhenDisabled = false, 8236 nativeButton = true, 8237 style, 8238 ...elementProps 8239 } = componentProps; 8240 const { 8241 getButtonProps, 8242 buttonRef 8243 } = useButton({ 8244 disabled: disabled2, 8245 focusableWhenDisabled, 8246 native: nativeButton 8247 }); 8248 const state = { 8249 disabled: disabled2 8250 }; 8251 return useRenderElement("button", componentProps, { 8252 state, 8253 ref: [forwardedRef, buttonRef], 8254 props: [elementProps, getButtonProps] 8255 }); 8256 }); 8257 if (true) Button.displayName = "Button"; 8258 8259 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/collapsible/index.parts.mjs 8260 var index_parts_exports = {}; 8261 __export(index_parts_exports, { 8262 Panel: () => CollapsiblePanel, 8263 Root: () => CollapsibleRoot, 8264 Trigger: () => CollapsibleTrigger 8265 }); 8266 8267 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/collapsible/root/CollapsibleRoot.mjs 8268 var React39 = __toESM(require_react(), 1); 8269 8270 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/collapsible/root/stateAttributesMapping.mjs 8271 var collapsibleStateAttributesMapping = { 8272 ...collapsibleOpenStateMapping, 8273 ...transitionStatusMapping 8274 }; 8275 8276 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/collapsible/root/CollapsibleRoot.mjs 8277 var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1); 8278 var CollapsibleRoot = /* @__PURE__ */ React39.forwardRef(function CollapsibleRoot2(componentProps, forwardedRef) { 8279 const { 8280 render, 8281 className, 8282 defaultOpen = false, 8283 disabled: disabled2 = false, 8284 onOpenChange: onOpenChangeProp, 8285 open: open3, 8286 style, 8287 ...elementProps 8288 } = componentProps; 8289 const onOpenChange = useStableCallback(onOpenChangeProp); 8290 const collapsible = useCollapsibleRoot({ 8291 open: open3, 8292 defaultOpen, 8293 onOpenChange, 8294 disabled: disabled2 8295 }); 8296 const state = React39.useMemo(() => ({ 8297 open: collapsible.open, 8298 disabled: collapsible.disabled, 8299 transitionStatus: collapsible.transitionStatus 8300 }), [collapsible.open, collapsible.disabled, collapsible.transitionStatus]); 8301 const contextValue = React39.useMemo(() => ({ 8302 ...collapsible, 8303 onOpenChange, 8304 state 8305 }), [collapsible, onOpenChange, state]); 8306 const element = useRenderElement("div", componentProps, { 8307 state, 8308 ref: forwardedRef, 8309 props: elementProps, 8310 stateAttributesMapping: collapsibleStateAttributesMapping 8311 }); 8312 return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(CollapsibleRootContext.Provider, { 8313 value: contextValue, 8314 children: element 8315 }); 8316 }); 8317 if (true) CollapsibleRoot.displayName = "CollapsibleRoot"; 8318 8319 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/collapsible/trigger/CollapsibleTrigger.mjs 8320 var React40 = __toESM(require_react(), 1); 8321 var stateAttributesMapping = { 8322 ...triggerOpenStateMapping, 8323 ...transitionStatusMapping 8324 }; 8325 var CollapsibleTrigger = /* @__PURE__ */ React40.forwardRef(function CollapsibleTrigger2(componentProps, forwardedRef) { 8326 const { 8327 panelId, 8328 open: open3, 8329 handleTrigger, 8330 state, 8331 disabled: contextDisabled 8332 } = useCollapsibleRootContext(); 8333 const { 8334 className, 8335 disabled: disabled2 = contextDisabled, 8336 render, 8337 nativeButton = true, 8338 style, 8339 ...elementProps 8340 } = componentProps; 8341 const { 8342 getButtonProps, 8343 buttonRef 8344 } = useButton({ 8345 disabled: disabled2, 8346 native: nativeButton 8347 }); 8348 const element = useRenderElement("button", componentProps, { 8349 state, 8350 ref: [forwardedRef, buttonRef], 8351 props: [{ 8352 "aria-controls": open3 ? panelId : void 0, 8353 "aria-expanded": open3, 8354 onClick: handleTrigger 8355 }, elementProps, getButtonProps], 8356 stateAttributesMapping 8357 }); 8358 return element; 8359 }); 8360 if (true) CollapsibleTrigger.displayName = "CollapsibleTrigger"; 8361 8362 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/collapsible/panel/CollapsiblePanel.mjs 8363 var React41 = __toESM(require_react(), 1); 8364 8365 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/collapsible/panel/CollapsiblePanelCssVars.mjs 8366 var collapsiblePanelHeight = "--collapsible-panel-height"; 8367 var collapsiblePanelWidth = "--collapsible-panel-width"; 8368 8369 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/collapsible/panel/CollapsiblePanel.mjs 8370 var CollapsiblePanel = /* @__PURE__ */ React41.forwardRef(function CollapsiblePanel2(componentProps, forwardedRef) { 8371 const { 8372 className, 8373 hiddenUntilFound: hiddenUntilFoundProp, 8374 keepMounted: keepMountedProp, 8375 render, 8376 id: idProp, 8377 style, 8378 ...elementProps 8379 } = componentProps; 8380 if (true) { 8381 React41.useEffect(() => { 8382 if (hiddenUntilFoundProp && keepMountedProp === false) { 8383 warn("The `keepMounted={false}` prop on `Collapsible.Panel` is ignored when `hiddenUntilFound` is enabled, since the panel must remain mounted while closed."); 8384 } 8385 }, [hiddenUntilFoundProp, keepMountedProp]); 8386 } 8387 const { 8388 defaultPanelId, 8389 mounted, 8390 onOpenChange, 8391 open: open3, 8392 setMounted, 8393 setPanelIdState, 8394 setOpen, 8395 state, 8396 transitionStatus 8397 } = useCollapsibleRootContext(); 8398 const hiddenUntilFound = hiddenUntilFoundProp ?? false; 8399 const keepMounted = keepMountedProp ?? false; 8400 const registeredId = idProp || void 0; 8401 const id = registeredId ?? defaultPanelId; 8402 useIsoLayoutEffect(() => { 8403 setPanelIdState((currentId) => registeredId ?? (currentId === null ? void 0 : currentId)); 8404 return () => { 8405 setPanelIdState((currentId) => currentId === registeredId ? null : currentId); 8406 }; 8407 }, [registeredId, setPanelIdState]); 8408 const { 8409 height, 8410 props, 8411 ref, 8412 shouldPreventOpenAnimation, 8413 shouldRender, 8414 transitionStatus: panelTransitionStatus, 8415 width 8416 } = useCollapsiblePanel({ 8417 externalRef: forwardedRef, 8418 hiddenUntilFound, 8419 id, 8420 keepMounted, 8421 mounted, 8422 onOpenChange, 8423 open: open3, 8424 setMounted, 8425 setOpen, 8426 transitionStatus 8427 }); 8428 const panelState = { 8429 ...state, 8430 transitionStatus: panelTransitionStatus 8431 }; 8432 const resolvedStyle = resolveStyle(style, panelState); 8433 const element = useRenderElement("div", { 8434 ...componentProps, 8435 style: void 0 8436 }, { 8437 state: panelState, 8438 ref, 8439 props: [ 8440 props, 8441 { 8442 style: { 8443 [collapsiblePanelHeight]: height === void 0 ? "auto" : `$height}px`, 8444 [collapsiblePanelWidth]: width === void 0 ? "auto" : `$width}px` 8445 } 8446 }, 8447 elementProps, 8448 resolvedStyle ? { 8449 style: resolvedStyle 8450 } : void 0, 8451 // Resolve the public `style` prop so temporary `animationName: 'none'` 8452 // can still win after user's inline styles have been merged. 8453 shouldPreventOpenAnimation ? { 8454 style: { 8455 animationName: "none" 8456 } 8457 } : void 0 8458 ], 8459 stateAttributesMapping: collapsibleStateAttributesMapping 8460 }); 8461 if (!shouldRender) { 8462 return null; 8463 } 8464 return element; 8465 }); 8466 if (true) CollapsiblePanel.displayName = "CollapsiblePanel"; 8467 8468 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/usePopupViewport.mjs 8469 var React45 = __toESM(require_react(), 1); 8470 var ReactDOM6 = __toESM(require_react_dom(), 1); 8471 8472 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/usePreviousValue.mjs 8473 var React42 = __toESM(require_react(), 1); 8474 function usePreviousValue(value) { 8475 const [state, setState] = React42.useState({ 8476 current: value, 8477 previous: null 8478 }); 8479 if (!Object.is(value, state.current)) { 8480 setState({ 8481 current: value, 8482 previous: state.current 8483 }); 8484 } 8485 return state.previous; 8486 } 8487 8488 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/usePopupAutoResize.mjs 8489 var React43 = __toESM(require_react(), 1); 8490 8491 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/getCssDimensions.mjs 8492 function getCssDimensions2(element) { 8493 const css = getComputedStyle2(element); 8494 let width = parseFloat(css.width) || 0; 8495 let height = parseFloat(css.height) || 0; 8496 const hasOffset = isHTMLElement(element); 8497 const offsetWidth = hasOffset ? element.offsetWidth : width; 8498 const offsetHeight = hasOffset ? element.offsetHeight : height; 8499 const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight; 8500 if (shouldFallback) { 8501 width = offsetWidth; 8502 height = offsetHeight; 8503 } 8504 return { 8505 width, 8506 height 8507 }; 8508 } 8509 8510 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/CommonPopupCssVars.mjs 8511 var popupWidth = "--popup-width"; 8512 var popupHeight = "--popup-height"; 8513 8514 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/usePopupAutoResize.mjs 8515 function usePopupAutoResize(parameters) { 8516 const { 8517 popupElement, 8518 positionerElement, 8519 content, 8520 mounted, 8521 onMeasureLayout: onMeasureLayoutParam, 8522 onMeasureLayoutComplete: onMeasureLayoutCompleteParam, 8523 side, 8524 direction 8525 } = parameters; 8526 const runOnceAnimationsFinish = useAnimationsFinished(popupElement, true); 8527 const animationFrame = useAnimationFrame(); 8528 const committedDimensionsRef = React43.useRef(null); 8529 const onMeasureLayout = useStableCallback(onMeasureLayoutParam); 8530 const onMeasureLayoutComplete = useStableCallback(onMeasureLayoutCompleteParam); 8531 const anchoringStyles = React43.useMemo(() => getPopupAnchoringStyles(side, direction), [side, direction]); 8532 useIsoLayoutEffect(() => { 8533 if (!mounted) { 8534 committedDimensionsRef.current = null; 8535 return void 0; 8536 } 8537 if (!popupElement || !positionerElement) { 8538 return void 0; 8539 } 8540 const restoreAnchoringStyles = applyElementStyles(popupElement, anchoringStyles); 8541 setPopupCssSize(popupElement, "auto"); 8542 const restorePopupPosition = overrideElementStyle(popupElement, "position", "static"); 8543 const restorePopupTransform = overrideElementStyle(popupElement, "transform", "none"); 8544 const restorePopupScale = overrideElementStyle(popupElement, "scale", "1"); 8545 const restorePositionerAvailableSize = applyElementStyles(positionerElement, { 8546 [availableWidth]: "max-content", 8547 [availableHeight]: "max-content" 8548 }); 8549 function restoreMeasurementOverrides() { 8550 restorePopupPosition(); 8551 restorePopupTransform(); 8552 restorePositionerAvailableSize(); 8553 restorePopupScale(); 8554 } 8555 onMeasureLayout?.(); 8556 if (committedDimensionsRef.current === null) { 8557 setPositionerCssSize(positionerElement, "max-content"); 8558 const dimensions = getCssDimensions2(popupElement); 8559 committedDimensionsRef.current = dimensions; 8560 setPositionerCssSize(positionerElement, dimensions); 8561 restoreMeasurementOverrides(); 8562 onMeasureLayoutComplete?.(null, dimensions); 8563 return restoreAnchoringStyles; 8564 } 8565 setPositionerCssSize(positionerElement, "max-content"); 8566 const previousDimensions = committedDimensionsRef.current; 8567 const newDimensions = getCssDimensions2(popupElement); 8568 committedDimensionsRef.current = newDimensions; 8569 setPopupCssSize(popupElement, previousDimensions); 8570 restoreMeasurementOverrides(); 8571 onMeasureLayoutComplete?.(previousDimensions, newDimensions); 8572 setPositionerCssSize(positionerElement, newDimensions); 8573 const abortController = new AbortController(); 8574 animationFrame.request(() => { 8575 setPopupCssSize(popupElement, newDimensions); 8576 runOnceAnimationsFinish(() => { 8577 popupElement.style.setProperty(popupWidth, "auto"); 8578 popupElement.style.setProperty(popupHeight, "auto"); 8579 }, abortController.signal); 8580 }); 8581 return () => { 8582 abortController.abort(); 8583 animationFrame.cancel(); 8584 restoreAnchoringStyles(); 8585 }; 8586 }, [content, popupElement, positionerElement, runOnceAnimationsFinish, animationFrame, mounted, onMeasureLayout, onMeasureLayoutComplete, anchoringStyles]); 8587 } 8588 function getPopupAnchoringStyles(side, direction) { 8589 const isPhysicalTop = side === "top"; 8590 const isPhysicalLeft = side === "left" || side === (direction === "rtl" ? "inline-end" : "inline-start"); 8591 if (!isPhysicalTop && !isPhysicalLeft) { 8592 return EMPTY_OBJECT; 8593 } 8594 return { 8595 position: "absolute", 8596 [isPhysicalTop ? "bottom" : "top"]: "0", 8597 [isPhysicalLeft ? "right" : "left"]: "0" 8598 }; 8599 } 8600 function overrideElementStyle(element, property, value) { 8601 const originalValue = element.style.getPropertyValue(property); 8602 element.style.setProperty(property, value); 8603 return () => { 8604 element.style.setProperty(property, originalValue); 8605 }; 8606 } 8607 function applyElementStyles(element, styles) { 8608 const restorers = []; 8609 for (const [key, value] of Object.entries(styles)) { 8610 restorers.push(overrideElementStyle(element, key, value)); 8611 } 8612 return restorers.length ? () => { 8613 restorers.forEach((restore) => restore()); 8614 } : NOOP; 8615 } 8616 function setPopupCssSize(popupElement, size4) { 8617 const width = size4 === "auto" ? "auto" : `$size4.width}px`; 8618 const height = size4 === "auto" ? "auto" : `$size4.height}px`; 8619 popupElement.style.setProperty(popupWidth, width); 8620 popupElement.style.setProperty(popupHeight, height); 8621 } 8622 function setPositionerCssSize(positionerElement, size4) { 8623 const width = size4 === "max-content" ? "max-content" : `$size4.width}px`; 8624 const height = size4 === "max-content" ? "max-content" : `$size4.height}px`; 8625 positionerElement.style.setProperty(positionerWidth, width); 8626 positionerElement.style.setProperty(positionerHeight, height); 8627 } 8628 8629 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/direction-provider/DirectionProvider.mjs 8630 var React44 = __toESM(require_react(), 1); 8631 var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1); 8632 var DirectionProvider = function DirectionProvider2(props) { 8633 const { 8634 direction = "ltr" 8635 } = props; 8636 const contextValue = React44.useMemo(() => ({ 8637 direction 8638 }), [direction]); 8639 return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(DirectionContext.Provider, { 8640 value: contextValue, 8641 children: props.children 8642 }); 8643 }; 8644 if (true) DirectionProvider.displayName = "DirectionProvider"; 8645 8646 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/adaptiveOriginMiddleware.mjs 8647 var adaptiveOrigin = { 8648 name: "adaptiveOrigin", 8649 async fn(state) { 8650 const { 8651 x: rawX, 8652 y: rawY, 8653 rects: { 8654 floating: floatRect 8655 }, 8656 elements: { 8657 floating 8658 }, 8659 platform: platform3, 8660 strategy, 8661 placement 8662 } = state; 8663 const win = getWindow(floating); 8664 const styles = win.getComputedStyle(floating); 8665 const hasTransition = styles.transitionDuration !== "0s" && styles.transitionDuration !== ""; 8666 if (!hasTransition) { 8667 return { 8668 x: rawX, 8669 y: rawY, 8670 data: DEFAULT_SIDES 8671 }; 8672 } 8673 const offsetParent = await platform3.getOffsetParent?.(floating); 8674 let offsetDimensions = { 8675 width: 0, 8676 height: 0 8677 }; 8678 if (strategy === "fixed" && win?.visualViewport) { 8679 offsetDimensions = { 8680 width: win.visualViewport.width, 8681 height: win.visualViewport.height 8682 }; 8683 } else if (offsetParent === win) { 8684 const doc = ownerDocument(floating); 8685 offsetDimensions = { 8686 width: doc.documentElement.clientWidth, 8687 height: doc.documentElement.clientHeight 8688 }; 8689 } else if (await platform3.isElement?.(offsetParent)) { 8690 offsetDimensions = await platform3.getDimensions(offsetParent); 8691 } 8692 const currentSide = getSide(placement); 8693 let x = rawX; 8694 let y = rawY; 8695 if (currentSide === "left") { 8696 x = offsetDimensions.width - (rawX + floatRect.width); 8697 } 8698 if (currentSide === "top") { 8699 y = offsetDimensions.height - (rawY + floatRect.height); 8700 } 8701 const sideX = currentSide === "left" ? "right" : DEFAULT_SIDES.sideX; 8702 const sideY = currentSide === "top" ? "bottom" : DEFAULT_SIDES.sideY; 8703 return { 8704 x, 8705 y, 8706 data: { 8707 sideX, 8708 sideY 8709 } 8710 }; 8711 } 8712 }; 8713 8714 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/CommonViewportDataAttributes.mjs 8715 var activationDirection = "data-activation-direction"; 8716 8717 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/usePopupViewport.mjs 8718 var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1); 8719 var popupViewportStateMapping = { 8720 activationDirection: (value) => value ? { 8721 [activationDirection]: value 8722 } : null 8723 }; 8724 function usePopupViewport(parameters) { 8725 const { 8726 store: store2, 8727 side, 8728 children 8729 } = parameters; 8730 const direction = useDirection(); 8731 const activeTrigger = store2.useState("activeTriggerElement"); 8732 const activeTriggerId = store2.useState("activeTriggerId"); 8733 const open3 = store2.useState("open"); 8734 const payload = store2.useState("payload"); 8735 const mounted = store2.useState("mounted"); 8736 const popupElement = store2.useState("popupElement"); 8737 const positionerElement = store2.useState("positionerElement"); 8738 const previousActiveTrigger = usePreviousValue(open3 ? activeTrigger : null); 8739 const currentContentKey = usePopupContentKey(activeTriggerId, payload); 8740 const capturedNodeRef = React45.useRef(null); 8741 const [previousContentNode, setPreviousContentNode] = React45.useState(null); 8742 const [newTriggerOffset, setNewTriggerOffset] = React45.useState(null); 8743 const currentContainerRef = React45.useRef(null); 8744 const previousContainerRef = React45.useRef(null); 8745 const onAnimationsFinished = useAnimationsFinished(currentContainerRef, true); 8746 const cleanupFrame = useAnimationFrame(); 8747 const cleanupControllerRef = React45.useRef(null); 8748 const [previousContentDimensions, setPreviousContentDimensions] = React45.useState(null); 8749 const [showStartingStyleAttribute, setShowStartingStyleAttribute] = React45.useState(false); 8750 useIsoLayoutEffect(() => { 8751 store2.set("adaptiveOrigin", adaptiveOrigin); 8752 return () => { 8753 store2.set("adaptiveOrigin", void 0); 8754 }; 8755 }, [store2]); 8756 const handleMeasureLayout = useStableCallback(() => { 8757 currentContainerRef.current?.style.setProperty("animation", "none"); 8758 currentContainerRef.current?.style.setProperty("transition", "none"); 8759 previousContainerRef.current?.style.setProperty("display", "none"); 8760 }); 8761 const handleMeasureLayoutComplete = useStableCallback((previousDimensions) => { 8762 currentContainerRef.current?.style.removeProperty("animation"); 8763 currentContainerRef.current?.style.removeProperty("transition"); 8764 previousContainerRef.current?.style.removeProperty("display"); 8765 if (previousDimensions) { 8766 setPreviousContentDimensions(previousDimensions); 8767 } 8768 }); 8769 const armViewportCleanup = useStableCallback(() => { 8770 cleanupControllerRef.current?.abort(); 8771 const controller = new AbortController(); 8772 cleanupControllerRef.current = controller; 8773 onAnimationsFinished(() => { 8774 setPreviousContentNode(null); 8775 setPreviousContentDimensions(null); 8776 capturedNodeRef.current = null; 8777 }, controller.signal); 8778 }); 8779 const lastHandledTriggerRef = React45.useRef(null); 8780 useIsoLayoutEffect(() => { 8781 if (!open3 || !mounted) { 8782 lastHandledTriggerRef.current = null; 8783 } 8784 }, [open3, mounted]); 8785 useIsoLayoutEffect(() => { 8786 if (open3 && activeTrigger && previousActiveTrigger && activeTrigger !== previousActiveTrigger && lastHandledTriggerRef.current !== activeTrigger && capturedNodeRef.current) { 8787 setPreviousContentNode(capturedNodeRef.current); 8788 setShowStartingStyleAttribute(true); 8789 const offset4 = calculateRelativePosition(previousActiveTrigger, activeTrigger); 8790 setNewTriggerOffset(offset4); 8791 lastHandledTriggerRef.current = activeTrigger; 8792 } 8793 }, [open3, activeTrigger, previousActiveTrigger]); 8794 useIsoLayoutEffect(() => { 8795 if (previousContentNode == null) { 8796 return; 8797 } 8798 cleanupControllerRef.current?.abort(); 8799 setShowStartingStyleAttribute(true); 8800 cleanupFrame.request(() => { 8801 ReactDOM6.flushSync(() => { 8802 setShowStartingStyleAttribute(false); 8803 }); 8804 armViewportCleanup(); 8805 }); 8806 }, [currentContentKey, previousContentNode, armViewportCleanup, cleanupFrame]); 8807 useIsoLayoutEffect(() => { 8808 const source = currentContainerRef.current; 8809 if (!source) { 8810 return; 8811 } 8812 const wrapper = ownerDocument(source).createElement("div"); 8813 for (const child of Array.from(source.childNodes)) { 8814 wrapper.appendChild(child.cloneNode(true)); 8815 } 8816 capturedNodeRef.current = wrapper; 8817 }); 8818 const isTransitioning = previousContentNode != null; 8819 let childrenToRender; 8820 if (!isTransitioning) { 8821 childrenToRender = /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { 8822 "data-current": true, 8823 ref: currentContainerRef, 8824 children 8825 }, currentContentKey); 8826 } else { 8827 childrenToRender = /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(React45.Fragment, { 8828 children: [/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { 8829 "data-previous": true, 8830 inert: inertValue(true), 8831 ref: previousContainerRef, 8832 style: { 8833 ...previousContentDimensions ? { 8834 [popupWidth]: `$previousContentDimensions.width}px`, 8835 [popupHeight]: `$previousContentDimensions.height}px` 8836 } : null, 8837 position: "absolute" 8838 }, 8839 "data-ending-style": showStartingStyleAttribute ? void 0 : "" 8840 }, "previous"), /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { 8841 "data-current": true, 8842 ref: currentContainerRef, 8843 "data-starting-style": showStartingStyleAttribute ? "" : void 0, 8844 children 8845 }, currentContentKey)] 8846 }); 8847 } 8848 useIsoLayoutEffect(() => { 8849 const container = previousContainerRef.current; 8850 if (!container || !previousContentNode) { 8851 return; 8852 } 8853 container.replaceChildren(...Array.from(previousContentNode.childNodes)); 8854 }, [previousContentNode]); 8855 usePopupAutoResize({ 8856 popupElement, 8857 positionerElement, 8858 mounted, 8859 content: payload, 8860 onMeasureLayout: handleMeasureLayout, 8861 onMeasureLayoutComplete: handleMeasureLayoutComplete, 8862 side, 8863 direction 8864 }); 8865 const state = { 8866 activationDirection: getActivationDirection(newTriggerOffset), 8867 transitioning: isTransitioning 8868 }; 8869 return { 8870 children: childrenToRender, 8871 state 8872 }; 8873 } 8874 function getActivationDirection(offset4) { 8875 if (!offset4) { 8876 return void 0; 8877 } 8878 return `$getValueWithTolerance(offset4.horizontal, 5, "right", "left")} $getValueWithTolerance(offset4.vertical, 5, "down", "up")}`; 8879 } 8880 function getValueWithTolerance(value, tolerance, positiveLabel, negativeLabel) { 8881 if (value > tolerance) { 8882 return positiveLabel; 8883 } 8884 if (value < -tolerance) { 8885 return negativeLabel; 8886 } 8887 return ""; 8888 } 8889 function calculateRelativePosition(from, to) { 8890 const fromRect = from.getBoundingClientRect(); 8891 const toRect = to.getBoundingClientRect(); 8892 const fromCenter = { 8893 x: fromRect.left + fromRect.width / 2, 8894 y: fromRect.top + fromRect.height / 2 8895 }; 8896 const toCenter = { 8897 x: toRect.left + toRect.width / 2, 8898 y: toRect.top + toRect.height / 2 8899 }; 8900 return { 8901 horizontal: toCenter.x - fromCenter.x, 8902 vertical: toCenter.y - fromCenter.y 8903 }; 8904 } 8905 function usePopupContentKey(activeTriggerId, payload) { 8906 const [contentKey, setContentKey] = React45.useState(0); 8907 const previousActiveTriggerIdRef = React45.useRef(activeTriggerId); 8908 const previousPayloadRef = React45.useRef(payload); 8909 const pendingPayloadUpdateRef = React45.useRef(false); 8910 useIsoLayoutEffect(() => { 8911 const previousActiveTriggerId = previousActiveTriggerIdRef.current; 8912 const previousPayload = previousPayloadRef.current; 8913 const triggerIdChanged = activeTriggerId !== previousActiveTriggerId; 8914 const payloadChanged = payload !== previousPayload; 8915 if (triggerIdChanged) { 8916 setContentKey((value) => value + 1); 8917 pendingPayloadUpdateRef.current = !payloadChanged; 8918 } else if (pendingPayloadUpdateRef.current && payloadChanged) { 8919 setContentKey((value) => value + 1); 8920 pendingPayloadUpdateRef.current = false; 8921 } 8922 previousActiveTriggerIdRef.current = activeTriggerId; 8923 previousPayloadRef.current = payload; 8924 }, [activeTriggerId, payload]); 8925 return `$activeTriggerId ?? "current"}-$contentKey}`; 8926 } 8927 8928 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/FloatingPortalLite.mjs 8929 var React46 = __toESM(require_react(), 1); 8930 var ReactDOM7 = __toESM(require_react_dom(), 1); 8931 var import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1); 8932 var FloatingPortalLite = /* @__PURE__ */ React46.forwardRef(function FloatingPortalLite2(componentProps, forwardedRef) { 8933 const { 8934 children, 8935 container, 8936 className, 8937 render, 8938 style, 8939 ...elementProps 8940 } = componentProps; 8941 const { 8942 node: portalNode, 8943 subtree: portalSubtree 8944 } = useFloatingPortalNode({ 8945 container, 8946 ref: forwardedRef, 8947 componentProps, 8948 elementProps 8949 }); 8950 if (!portalSubtree && !portalNode) { 8951 return null; 8952 } 8953 return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(React46.Fragment, { 8954 children: [portalSubtree, portalNode && /* @__PURE__ */ ReactDOM7.createPortal(children, portalNode)] 8955 }); 8956 }); 8957 if (true) FloatingPortalLite.displayName = "FloatingPortalLite"; 8958 8959 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/index.parts.mjs 8960 var index_parts_exports2 = {}; 8961 __export(index_parts_exports2, { 8962 Arrow: () => TooltipArrow, 8963 Handle: () => TooltipHandle, 8964 Popup: () => TooltipPopup, 8965 Portal: () => TooltipPortal, 8966 Positioner: () => TooltipPositioner, 8967 Provider: () => TooltipProvider, 8968 Root: () => TooltipRoot, 8969 Trigger: () => TooltipTrigger, 8970 Viewport: () => TooltipViewport, 8971 createHandle: () => createTooltipHandle 8972 }); 8973 8974 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/root/TooltipRoot.mjs 8975 var React49 = __toESM(require_react(), 1); 8976 8977 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/root/TooltipRootContext.mjs 8978 var React47 = __toESM(require_react(), 1); 8979 var TooltipRootContext = /* @__PURE__ */ React47.createContext(void 0); 8980 if (true) TooltipRootContext.displayName = "TooltipRootContext"; 8981 function useTooltipRootContext(optional) { 8982 const context = React47.useContext(TooltipRootContext); 8983 if (context === void 0 && !optional) { 8984 throw new Error(true ? "Base UI: TooltipRootContext is missing. Tooltip parts must be placed within <Tooltip.Root>." : formatErrorMessage_default(72)); 8985 } 8986 return context; 8987 } 8988 8989 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/store/TooltipStore.mjs 8990 var React48 = __toESM(require_react(), 1); 8991 var selectors2 = { 8992 ...popupStoreSelectors, 8993 disabled: (state) => state.disabled, 8994 instantType: (state) => state.instantType, 8995 isInstantPhase: (state) => state.isInstantPhase, 8996 trackCursorAxis: (state) => state.trackCursorAxis, 8997 disableHoverablePopup: (state) => state.disableHoverablePopup, 8998 lastOpenChangeReason: (state) => state.openChangeReason, 8999 closeOnClick: (state) => state.closeOnClick, 9000 // Active and inactive trigger props are the same object, so a constant for triggers that discard 9001 // them keeps those triggers from re-rendering when the props change. 9002 appliedTriggerProps: (state, apply) => apply ? state.activeTriggerProps : void 0, 9003 closeDelay: (state) => state.closeDelay, 9004 adaptiveOrigin: (state) => state.adaptiveOrigin 9005 }; 9006 var TooltipStore = class extends ReactStore { 9007 constructor(initialState, floatingId, nested) { 9008 const triggerElements = new PopupTriggerMap(); 9009 super(createInitialState(initialState, triggerElements, floatingId, nested), createInitialContext(triggerElements), selectors2); 9010 } 9011 setOpen = (nextOpen, eventDetails) => { 9012 applyPopupOpenChange(this, nextOpen, eventDetails, { 9013 extraState: { 9014 openChangeReason: eventDetails.reason 9015 } 9016 }); 9017 }; 9018 // Used by trigger clicks to clear a delayed hover open without reporting a public open-state change. 9019 cancelPendingOpen(event) { 9020 this.state.floatingRootContext.dispatchOpenChange(false, createChangeEventDetails(reason_parts_exports.triggerPress, event)); 9021 } 9022 }; 9023 function createNullTooltipStore() { 9024 const triggerElements = new PopupTriggerMap(); 9025 const store2 = new NullStore(Object.freeze(createInitialState(void 0, triggerElements)), Object.freeze(createInitialContext(triggerElements)), selectors2); 9026 return Object.assign(store2, { 9027 setOpen: NOOP, 9028 cancelPendingOpen: NOOP 9029 }); 9030 } 9031 function createInitialState(initialState, triggerElements, floatingId, nested = false) { 9032 const state = { 9033 ...createInitialPopupStoreState(triggerElements, floatingId, nested), 9034 disabled: false, 9035 instantType: void 0, 9036 isInstantPhase: false, 9037 trackCursorAxis: "none", 9038 disableHoverablePopup: false, 9039 openChangeReason: null, 9040 closeOnClick: true, 9041 closeDelay: 0, 9042 adaptiveOrigin: void 0, 9043 ...initialState 9044 }; 9045 return state; 9046 } 9047 function createInitialContext(triggerElements) { 9048 return { 9049 popupRef: /* @__PURE__ */ React48.createRef(), 9050 onOpenChange: void 0, 9051 onOpenChangeComplete: void 0, 9052 triggerElements 9053 }; 9054 } 9055 9056 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/root/TooltipRoot.mjs 9057 var import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1); 9058 var TooltipRoot = fastComponent(function TooltipRoot2(props) { 9059 const { 9060 disabled: disabled2 = false, 9061 defaultOpen = false, 9062 open: openProp, 9063 disableHoverablePopup = false, 9064 trackCursorAxis = "none", 9065 actionsRef, 9066 onOpenChange, 9067 onOpenChangeComplete, 9068 handle, 9069 triggerId: triggerIdProp, 9070 defaultTriggerId: defaultTriggerIdProp = null, 9071 children 9072 } = props; 9073 const store2 = usePopupRootStore((floatingId, nested) => new TooltipStore({ 9074 open: defaultOpen, 9075 openProp, 9076 activeTriggerId: defaultTriggerIdProp, 9077 triggerIdProp 9078 }, floatingId, nested)); 9079 store2.useControlledProp("openProp", openProp); 9080 store2.useControlledProp("triggerIdProp", triggerIdProp); 9081 store2.useContextCallback("onOpenChange", onOpenChange); 9082 store2.useContextCallback("onOpenChangeComplete", onOpenChangeComplete); 9083 const openState = store2.useState("open"); 9084 const open3 = !disabled2 && openState; 9085 const activeTriggerId = store2.useState("activeTriggerId"); 9086 const mounted = store2.useState("mounted"); 9087 const payload = store2.useState("payload"); 9088 store2.useSyncedValues({ 9089 trackCursorAxis, 9090 disableHoverablePopup, 9091 disabled: disabled2 9092 }); 9093 useImplicitActiveTrigger(store2, { 9094 closeOnActiveTriggerUnmount: true 9095 }); 9096 const { 9097 forceUnmount, 9098 transitionStatus 9099 } = useOpenStateTransitions(open3, store2); 9100 const isInstantPhase = store2.useState("isInstantPhase"); 9101 const instantType = store2.useState("instantType"); 9102 const lastOpenChangeReason = store2.useState("lastOpenChangeReason"); 9103 const previousInstantTypeRef = React49.useRef(null); 9104 useIsoLayoutEffect(() => { 9105 if (openState && disabled2) { 9106 store2.setOpen(false, createChangeEventDetails(reason_parts_exports.disabled)); 9107 } 9108 }, [openState, disabled2, store2]); 9109 useIsoLayoutEffect(() => { 9110 if (transitionStatus === "ending" && lastOpenChangeReason === reason_parts_exports.none || transitionStatus !== "ending" && isInstantPhase) { 9111 if (instantType !== "delay") { 9112 previousInstantTypeRef.current = instantType; 9113 } 9114 store2.set("instantType", "delay"); 9115 } else if (previousInstantTypeRef.current !== null) { 9116 store2.set("instantType", previousInstantTypeRef.current); 9117 previousInstantTypeRef.current = null; 9118 } 9119 }, [transitionStatus, isInstantPhase, lastOpenChangeReason, instantType, store2]); 9120 useIsoLayoutEffect(() => { 9121 if (open3) { 9122 if (activeTriggerId == null) { 9123 store2.set("payload", void 0); 9124 } 9125 } 9126 }, [store2, activeTriggerId, open3]); 9127 React49.useImperativeHandle(actionsRef, () => ({ 9128 unmount: forceUnmount, 9129 close: () => store2.setOpen(false, createChangeEventDetails(reason_parts_exports.imperativeAction)) 9130 }), [forceUnmount, store2]); 9131 const shouldRenderInteractions = open3 || mounted || !disabled2 && trackCursorAxis !== "none"; 9132 return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(TooltipRootContext.Provider, { 9133 value: store2, 9134 children: [handle && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(PopupHandleAttachment, { 9135 handle, 9136 store: store2 9137 }), shouldRenderInteractions && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(TooltipInteractions, { 9138 store: store2, 9139 disabled: disabled2, 9140 trackCursorAxis 9141 }), typeof children === "function" ? children({ 9142 payload 9143 }) : children] 9144 }); 9145 }); 9146 if (true) TooltipRoot.displayName = "TooltipRoot"; 9147 function TooltipInteractions({ 9148 store: store2, 9149 disabled: disabled2, 9150 trackCursorAxis 9151 }) { 9152 const floatingRootContext = store2.useState("floatingRootContext"); 9153 const dismiss = useDismiss(floatingRootContext, { 9154 enabled: !disabled2, 9155 referencePress: () => store2.select("closeOnClick") 9156 }); 9157 const clientPoint = useClientPoint(floatingRootContext, { 9158 enabled: !disabled2 && trackCursorAxis !== "none", 9159 axis: trackCursorAxis === "none" ? void 0 : trackCursorAxis 9160 }); 9161 const triggerProps = React49.useMemo(() => mergeProps(clientPoint.reference, dismiss.reference), [clientPoint.reference, dismiss.reference]); 9162 usePopupInteractionProps(store2, { 9163 activeTriggerProps: triggerProps, 9164 inactiveTriggerProps: triggerProps, 9165 popupProps: dismiss.floating ?? EMPTY_OBJECT 9166 }); 9167 return null; 9168 } 9169 9170 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/trigger/TooltipTrigger.mjs 9171 var React51 = __toESM(require_react(), 1); 9172 9173 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/provider/TooltipProviderContext.mjs 9174 var React50 = __toESM(require_react(), 1); 9175 var TooltipProviderContext = /* @__PURE__ */ React50.createContext(void 0); 9176 if (true) TooltipProviderContext.displayName = "TooltipProviderContext"; 9177 function useTooltipProviderContext() { 9178 return React50.useContext(TooltipProviderContext); 9179 } 9180 9181 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/utils/constants.mjs 9182 var OPEN_DELAY = 600; 9183 9184 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/trigger/TooltipTrigger.mjs 9185 var TOOLTIP_TRIGGER_IDENTIFIER = "data-base-ui-tooltip-trigger"; 9186 function getTargetElement(event) { 9187 const target = getTarget(event); 9188 return isElement(target) ? target : null; 9189 } 9190 var TooltipTrigger = fastComponentRef(function TooltipTrigger2(componentProps, forwardedRef) { 9191 const { 9192 render, 9193 className, 9194 style, 9195 handle, 9196 payload, 9197 disabled: disabledProp, 9198 delay, 9199 closeOnClick = true, 9200 closeDelay, 9201 id: idProp, 9202 ...elementProps 9203 } = componentProps; 9204 const rootContext = useTooltipRootContext(true); 9205 const handleStore = usePopupHandleStore(handle); 9206 const store2 = handleStore ?? rootContext; 9207 if (!store2) { 9208 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)); 9209 } 9210 const thisTriggerId = useBaseUiId(idProp); 9211 const isTriggerActive = store2.useState("isTriggerActive", thisTriggerId); 9212 const isOpenedByThisTrigger = store2.useState("isOpenedByTrigger", thisTriggerId); 9213 const floatingRootContext = store2.useState("floatingRootContext"); 9214 const triggerElementRef = React51.useRef(null); 9215 const closeDelayWithDefault = closeDelay ?? 0; 9216 const { 9217 registerTrigger, 9218 isMountedByThisTrigger 9219 } = useTriggerDataForwarding(thisTriggerId, triggerElementRef, store2, { 9220 payload, 9221 closeOnClick, 9222 closeDelay: closeDelayWithDefault 9223 }); 9224 const providerDelay = useTooltipProviderContext(); 9225 const { 9226 activeIdRef, 9227 delayRef, 9228 isInstantPhase, 9229 hasProvider 9230 } = useDelayGroup(floatingRootContext, { 9231 open: isOpenedByThisTrigger 9232 }); 9233 const hoverInteraction = useHoverInteractionSharedState(floatingRootContext); 9234 store2.useSyncedValue("isInstantPhase", isInstantPhase); 9235 const rootDisabled = store2.useState("disabled"); 9236 const disabled2 = disabledProp ?? rootDisabled; 9237 const disabledRef = useValueAsRef(disabled2); 9238 const trackCursorAxis = store2.useState("trackCursorAxis"); 9239 const disableHoverablePopup = store2.useState("disableHoverablePopup"); 9240 const isNestedTriggerHoveredRef = React51.useRef(false); 9241 const nestedTriggerOpenTimeout = useTimeout(); 9242 const pointerTypeRef = React51.useRef(void 0); 9243 function getOpenDelay() { 9244 if (hasProvider && activeIdRef.current != null) { 9245 return 0; 9246 } 9247 return delay ?? providerDelay ?? OPEN_DELAY; 9248 } 9249 function isEnabledNestedTriggerTarget(target) { 9250 const triggerEl = triggerElementRef.current; 9251 if (!triggerEl || !target) { 9252 return false; 9253 } 9254 const nearestTrigger = closest(target, `[$TOOLTIP_TRIGGER_IDENTIFIER}]`); 9255 return nearestTrigger !== null && nearestTrigger !== triggerEl && contains(triggerEl, nearestTrigger); 9256 } 9257 function detectNestedTriggerHover(target) { 9258 const nestedTriggerHovered = isEnabledNestedTriggerTarget(target); 9259 isNestedTriggerHoveredRef.current = nestedTriggerHovered; 9260 if (nestedTriggerHovered) { 9261 hoverInteraction.openChangeTimeout.clear(); 9262 hoverInteraction.restTimeout.clear(); 9263 hoverInteraction.restTimeoutPending = false; 9264 nestedTriggerOpenTimeout.clear(); 9265 } 9266 return nestedTriggerHovered; 9267 } 9268 const hoverProps = useHoverReferenceInteraction(floatingRootContext, { 9269 enabled: !disabled2, 9270 mouseOnly: true, 9271 move: false, 9272 handleClose: !disableHoverablePopup && trackCursorAxis !== "both" ? safePolygon() : null, 9273 restMs: getOpenDelay, 9274 delay() { 9275 if (closeDelay == null && hasProvider) { 9276 return { 9277 close: getDelay(delayRef.current, "close") 9278 }; 9279 } 9280 return { 9281 close: closeDelayWithDefault 9282 }; 9283 }, 9284 triggerElementRef, 9285 isActiveTrigger: isTriggerActive, 9286 isClosing: () => store2.select("transitionStatus") === "ending", 9287 shouldOpen() { 9288 return !isNestedTriggerHoveredRef.current; 9289 } 9290 }); 9291 const focusProps = useFocus(floatingRootContext, { 9292 enabled: !disabled2 9293 }).reference; 9294 const handleNestedTriggerHover = (event) => { 9295 const wasNestedTriggerHovered = isNestedTriggerHoveredRef.current; 9296 const target = getTargetElement(event); 9297 const nestedTriggerHovered = detectNestedTriggerHover(target); 9298 const triggerEl = triggerElementRef.current; 9299 const targetInsideTrigger = triggerEl && target && contains(triggerEl, target); 9300 if (nestedTriggerHovered && store2.select("open") && store2.select("lastOpenChangeReason") === reason_parts_exports.triggerHover) { 9301 store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event)); 9302 return; 9303 } 9304 if (wasNestedTriggerHovered && !nestedTriggerHovered && targetInsideTrigger && !disabledRef.current && !store2.select("open") && triggerEl && // Match the hover hook's non-strict mouse fallback for mouse-only event sequences. 9305 isMouseLikePointerType(pointerTypeRef.current)) { 9306 const open3 = () => { 9307 if (!isNestedTriggerHoveredRef.current && !disabledRef.current && !store2.select("open")) { 9308 store2.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerEl)); 9309 } 9310 }; 9311 const openDelay = getOpenDelay(); 9312 if (openDelay === 0) { 9313 nestedTriggerOpenTimeout.clear(); 9314 open3(); 9315 } else { 9316 nestedTriggerOpenTimeout.start(openDelay, open3); 9317 } 9318 } 9319 }; 9320 const rootTriggerProps = store2.useState("appliedTriggerProps", isMountedByThisTrigger || trackCursorAxis !== "none"); 9321 const state = { 9322 open: isOpenedByThisTrigger 9323 }; 9324 const element = useRenderElement("button", componentProps, { 9325 state, 9326 ref: [forwardedRef, registerTrigger, triggerElementRef], 9327 props: [hoverProps, focusProps, rootTriggerProps, { 9328 onMouseOver(event) { 9329 handleNestedTriggerHover(event.nativeEvent); 9330 }, 9331 onFocus(event) { 9332 if (isEnabledNestedTriggerTarget(getTargetElement(event.nativeEvent))) { 9333 event.preventBaseUIHandler(); 9334 } 9335 }, 9336 onMouseLeave() { 9337 isNestedTriggerHoveredRef.current = false; 9338 nestedTriggerOpenTimeout.clear(); 9339 pointerTypeRef.current = void 0; 9340 }, 9341 onPointerEnter(event) { 9342 pointerTypeRef.current = event.pointerType; 9343 }, 9344 onPointerDown(event) { 9345 pointerTypeRef.current = event.pointerType; 9346 store2.set("closeOnClick", closeOnClick); 9347 if (closeOnClick && !store2.select("open")) { 9348 store2.cancelPendingOpen(event.nativeEvent); 9349 } 9350 }, 9351 onClick(event) { 9352 if (closeOnClick && !store2.select("open")) { 9353 store2.cancelPendingOpen(event.nativeEvent); 9354 } 9355 }, 9356 id: thisTriggerId, 9357 [triggerDisabled]: disabled2 ? "" : void 0, 9358 [TOOLTIP_TRIGGER_IDENTIFIER]: disabled2 ? void 0 : "" 9359 }, elementProps], 9360 stateAttributesMapping: triggerOpenStateMapping2 9361 }); 9362 return element; 9363 }); 9364 if (true) TooltipTrigger.displayName = "TooltipTrigger"; 9365 9366 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/portal/TooltipPortal.mjs 9367 var React53 = __toESM(require_react(), 1); 9368 9369 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/portal/TooltipPortalContext.mjs 9370 var React52 = __toESM(require_react(), 1); 9371 var TooltipPortalContext = /* @__PURE__ */ React52.createContext(void 0); 9372 if (true) TooltipPortalContext.displayName = "TooltipPortalContext"; 9373 function useTooltipPortalContext() { 9374 const value = React52.useContext(TooltipPortalContext); 9375 if (value === void 0) { 9376 throw new Error(true ? "Base UI: <Tooltip.Portal> is missing." : formatErrorMessage_default(70)); 9377 } 9378 return value; 9379 } 9380 9381 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/portal/TooltipPortal.mjs 9382 var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1); 9383 var TooltipPortal = /* @__PURE__ */ React53.forwardRef(function TooltipPortal2(props, forwardedRef) { 9384 const { 9385 keepMounted = false, 9386 ...portalProps 9387 } = props; 9388 const store2 = useTooltipRootContext(); 9389 const mounted = store2.useState("mounted"); 9390 const shouldRender = mounted || keepMounted; 9391 if (!shouldRender) { 9392 return null; 9393 } 9394 return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(TooltipPortalContext.Provider, { 9395 value: keepMounted, 9396 children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(FloatingPortalLite, { 9397 ref: forwardedRef, 9398 ...portalProps 9399 }) 9400 }); 9401 }); 9402 if (true) TooltipPortal.displayName = "TooltipPortal"; 9403 9404 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/positioner/TooltipPositioner.mjs 9405 var React55 = __toESM(require_react(), 1); 9406 9407 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/positioner/TooltipPositionerContext.mjs 9408 var React54 = __toESM(require_react(), 1); 9409 var TooltipPositionerContext = /* @__PURE__ */ React54.createContext(void 0); 9410 if (true) TooltipPositionerContext.displayName = "TooltipPositionerContext"; 9411 function useTooltipPositionerContext() { 9412 const context = React54.useContext(TooltipPositionerContext); 9413 if (context === void 0) { 9414 throw new Error(true ? "Base UI: TooltipPositionerContext is missing. TooltipPositioner parts must be placed within <Tooltip.Positioner>." : formatErrorMessage_default(71)); 9415 } 9416 return context; 9417 } 9418 9419 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/positioner/TooltipPositioner.mjs 9420 var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1); 9421 var TooltipPositioner = /* @__PURE__ */ React55.forwardRef(function TooltipPositioner2(componentProps, forwardedRef) { 9422 const { 9423 render, 9424 className, 9425 anchor, 9426 positionMethod = "absolute", 9427 side = "top", 9428 align = "center", 9429 sideOffset = 0, 9430 alignOffset = 0, 9431 collisionBoundary = "clipping-ancestors", 9432 collisionPadding = 5, 9433 arrowPadding = 5, 9434 sticky = false, 9435 disableAnchorTracking = false, 9436 collisionAvoidance = POPUP_COLLISION_AVOIDANCE, 9437 style, 9438 ...elementProps 9439 } = componentProps; 9440 const store2 = useTooltipRootContext(); 9441 const keepMounted = useTooltipPortalContext(); 9442 const open3 = store2.useState("open"); 9443 const mounted = store2.useState("mounted"); 9444 const trackCursorAxis = store2.useState("trackCursorAxis"); 9445 const disableHoverablePopup = store2.useState("disableHoverablePopup"); 9446 const floatingRootContext = store2.useState("floatingRootContext"); 9447 const instantType = store2.useState("instantType"); 9448 const transitionStatus = store2.useState("transitionStatus"); 9449 const adaptiveOrigin2 = store2.useState("adaptiveOrigin"); 9450 const positioning = useAnchorPositioning({ 9451 anchor, 9452 positionMethod, 9453 floatingRootContext, 9454 mounted, 9455 side, 9456 sideOffset, 9457 align, 9458 alignOffset, 9459 collisionBoundary, 9460 collisionPadding, 9461 sticky, 9462 arrowPadding, 9463 disableAnchorTracking, 9464 keepMounted, 9465 collisionAvoidance, 9466 adaptiveOrigin: adaptiveOrigin2 9467 }); 9468 const state = React55.useMemo(() => ({ 9469 open: open3, 9470 side: positioning.side, 9471 align: positioning.align, 9472 anchorHidden: positioning.anchorHidden, 9473 instant: trackCursorAxis !== "none" ? "tracking-cursor" : instantType 9474 }), [open3, positioning.side, positioning.align, positioning.anchorHidden, trackCursorAxis, instantType]); 9475 const element = usePositioner(componentProps, state, { 9476 styles: positioning.positionerStyles, 9477 transitionStatus, 9478 props: elementProps, 9479 refs: [forwardedRef, store2.useStateSetter("positionerElement")], 9480 hidden: !mounted, 9481 inert: !open3 || trackCursorAxis === "both" || disableHoverablePopup 9482 }); 9483 return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(TooltipPositionerContext.Provider, { 9484 value: positioning, 9485 children: element 9486 }); 9487 }); 9488 if (true) TooltipPositioner.displayName = "TooltipPositioner"; 9489 9490 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/popup/TooltipPopup.mjs 9491 var React56 = __toESM(require_react(), 1); 9492 var TooltipPopup = /* @__PURE__ */ React56.forwardRef(function TooltipPopup2(componentProps, forwardedRef) { 9493 const { 9494 render, 9495 className, 9496 style, 9497 ...elementProps 9498 } = componentProps; 9499 const store2 = useTooltipRootContext(); 9500 const { 9501 side, 9502 align 9503 } = useTooltipPositionerContext(); 9504 const open3 = store2.useState("open"); 9505 const instantType = store2.useState("instantType"); 9506 const transitionStatus = store2.useState("transitionStatus"); 9507 const popupProps = store2.useState("popupProps"); 9508 const floatingContext = store2.useState("floatingRootContext"); 9509 const disabled2 = store2.useState("disabled"); 9510 const closeDelay = store2.useState("closeDelay"); 9511 useOpenChangeComplete({ 9512 open: open3, 9513 ref: store2.context.popupRef, 9514 onComplete() { 9515 if (open3) { 9516 store2.context.onOpenChangeComplete?.(true); 9517 } 9518 } 9519 }); 9520 useHoverFloatingInteraction(floatingContext, { 9521 enabled: !disabled2, 9522 closeDelay 9523 }); 9524 const setPopupElement = store2.useStateSetter("popupElement"); 9525 const state = { 9526 open: open3, 9527 side, 9528 align, 9529 instant: instantType, 9530 transitionStatus 9531 }; 9532 const element = useRenderElement("div", componentProps, { 9533 state, 9534 ref: [forwardedRef, store2.context.popupRef, setPopupElement], 9535 props: [FOCUSABLE_POPUP_PROPS, popupProps, getDisabledMountTransitionStyles(transitionStatus), elementProps], 9536 stateAttributesMapping: popupTransitionStateMapping 9537 }); 9538 return element; 9539 }); 9540 if (true) TooltipPopup.displayName = "TooltipPopup"; 9541 9542 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/arrow/TooltipArrow.mjs 9543 var React57 = __toESM(require_react(), 1); 9544 var TooltipArrow = /* @__PURE__ */ React57.forwardRef(function TooltipArrow2(componentProps, forwardedRef) { 9545 const { 9546 render, 9547 className, 9548 style, 9549 ...elementProps 9550 } = componentProps; 9551 const store2 = useTooltipRootContext(); 9552 const { 9553 arrowRef, 9554 side, 9555 align, 9556 arrowUncentered, 9557 arrowStyles 9558 } = useTooltipPositionerContext(); 9559 const open3 = store2.useState("open"); 9560 const instantType = store2.useState("instantType"); 9561 const state = { 9562 open: open3, 9563 side, 9564 align, 9565 uncentered: arrowUncentered, 9566 instant: instantType 9567 }; 9568 const element = useRenderElement("div", componentProps, { 9569 state, 9570 ref: [forwardedRef, arrowRef], 9571 props: [{ 9572 style: arrowStyles, 9573 "aria-hidden": true 9574 }, elementProps], 9575 stateAttributesMapping: popupStateMapping 9576 }); 9577 return element; 9578 }); 9579 if (true) TooltipArrow.displayName = "TooltipArrow"; 9580 9581 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/provider/TooltipProvider.mjs 9582 var React58 = __toESM(require_react(), 1); 9583 var import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1); 9584 var TooltipProvider = function TooltipProvider2(props) { 9585 const { 9586 delay, 9587 closeDelay, 9588 timeout = 400 9589 } = props; 9590 const delayValue = React58.useMemo(() => ({ 9591 open: delay, 9592 close: closeDelay 9593 }), [delay, closeDelay]); 9594 return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(TooltipProviderContext.Provider, { 9595 value: delay, 9596 children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(FloatingDelayGroup, { 9597 delay: delayValue, 9598 timeoutMs: timeout, 9599 children: props.children 9600 }) 9601 }); 9602 }; 9603 if (true) TooltipProvider.displayName = "TooltipProvider"; 9604 9605 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/viewport/TooltipViewport.mjs 9606 var React59 = __toESM(require_react(), 1); 9607 var TooltipViewport = /* @__PURE__ */ React59.forwardRef(function TooltipViewport2(componentProps, forwardedRef) { 9608 const { 9609 render, 9610 className, 9611 style, 9612 children, 9613 ...elementProps 9614 } = componentProps; 9615 const store2 = useTooltipRootContext(); 9616 const positioner = useTooltipPositionerContext(); 9617 const instantType = store2.useState("instantType"); 9618 const { 9619 children: childrenToRender, 9620 state: viewportState 9621 } = usePopupViewport({ 9622 store: store2, 9623 side: positioner.side, 9624 children 9625 }); 9626 const state = { 9627 activationDirection: viewportState.activationDirection, 9628 transitioning: viewportState.transitioning, 9629 instant: instantType 9630 }; 9631 return useRenderElement("div", componentProps, { 9632 state, 9633 ref: forwardedRef, 9634 props: [elementProps, { 9635 children: childrenToRender 9636 }], 9637 stateAttributesMapping: popupViewportStateMapping 9638 }); 9639 }); 9640 if (true) TooltipViewport.displayName = "TooltipViewport"; 9641 9642 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/store/TooltipHandle.mjs 9643 var TooltipHandle = class extends BasePopupHandle { 9644 constructor() { 9645 super(createNullTooltipStore(), "Tooltip"); 9646 } 9647 /** 9648 * Opens the tooltip and associates it with the trigger with the given id. 9649 * 9650 * This method should only be called in an event handler or an effect (not during rendering). 9651 * 9652 * @param triggerId ID of the trigger to associate with the tooltip. The trigger must be a matching 9653 * `Tooltip.Trigger` with this handle passed as a prop. 9654 */ 9655 open(triggerId) { 9656 this.openByTrigger(triggerId); 9657 } 9658 /** 9659 * Closes the tooltip. 9660 * 9661 * This method should only be called in an event handler or an effect (not during rendering). 9662 */ 9663 close() { 9664 this.closePopup(); 9665 } 9666 /** 9667 * Whether the tooltip is currently open. Returns `false` while no root is attached to the handle. 9668 */ 9669 get isOpen() { 9670 return this.attachedStore?.select("open") ?? false; 9671 } 9672 }; 9673 function createTooltipHandle() { 9674 return new TooltipHandle(); 9675 } 9676 9677 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/use-render/useRender.mjs 9678 function useRender(params) { 9679 return useRenderElement(params.defaultTagName ?? "div", params, params); 9680 } 9681 9682 // packages/ui/build-module/text/text.mjs 9683 var import_element11 = __toESM(require_element(), 1); 9684 var STYLE_HASH_ATTRIBUTE = "data-wp-hash"; 9685 function getRuntime() { 9686 const globalScope = globalThis; 9687 if (globalScope.__wpStyleRuntime) { 9688 return globalScope.__wpStyleRuntime; 9689 } 9690 globalScope.__wpStyleRuntime = { 9691 documents: /* @__PURE__ */ new Map(), 9692 styles: /* @__PURE__ */ new Map(), 9693 injectedStyles: /* @__PURE__ */ new WeakMap() 9694 }; 9695 if (typeof document !== "undefined") { 9696 registerDocument(document); 9697 } 9698 return globalScope.__wpStyleRuntime; 9699 } 9700 function documentContainsStyleHash(targetDocument, hash) { 9701 if (!targetDocument.head) { 9702 return false; 9703 } 9704 for (const style of targetDocument.head.querySelectorAll( 9705 `style[$STYLE_HASH_ATTRIBUTE}]` 9706 )) { 9707 if (style.getAttribute(STYLE_HASH_ATTRIBUTE) === hash) { 9708 return true; 9709 } 9710 } 9711 return false; 9712 } 9713 function injectStyle(targetDocument, hash, css) { 9714 if (!targetDocument.head) { 9715 return; 9716 } 9717 const runtime = getRuntime(); 9718 let injectedStyles = runtime.injectedStyles.get(targetDocument); 9719 if (!injectedStyles) { 9720 injectedStyles = /* @__PURE__ */ new Set(); 9721 runtime.injectedStyles.set(targetDocument, injectedStyles); 9722 } 9723 if (injectedStyles.has(hash)) { 9724 return; 9725 } 9726 if (documentContainsStyleHash(targetDocument, hash)) { 9727 injectedStyles.add(hash); 9728 return; 9729 } 9730 const style = targetDocument.createElement("style"); 9731 style.setAttribute(STYLE_HASH_ATTRIBUTE, hash); 9732 style.appendChild(targetDocument.createTextNode(css)); 9733 targetDocument.head.appendChild(style); 9734 injectedStyles.add(hash); 9735 } 9736 function registerDocument(targetDocument) { 9737 const runtime = getRuntime(); 9738 runtime.documents.set( 9739 targetDocument, 9740 (runtime.documents.get(targetDocument) ?? 0) + 1 9741 ); 9742 for (const [hash, css] of runtime.styles) { 9743 injectStyle(targetDocument, hash, css); 9744 } 9745 return () => { 9746 const count = runtime.documents.get(targetDocument); 9747 if (count === void 0) { 9748 return; 9749 } 9750 if (count <= 1) { 9751 runtime.documents.delete(targetDocument); 9752 return; 9753 } 9754 runtime.documents.set(targetDocument, count - 1); 9755 }; 9756 } 9757 function registerStyle(hash, css) { 9758 const runtime = getRuntime(); 9759 runtime.styles.set(hash, css); 9760 for (const targetDocument of runtime.documents.keys()) { 9761 injectStyle(targetDocument, hash, css); 9762 } 9763 } 9764 if (typeof process === "undefined" || true) { 9765 registerStyle("09bae534ff", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._9745ffa515d864cf__text{text-wrap:pretty;margin:0}._8882b6a7feb4fd3d__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)}._664e3e7687c45603__heading-xl,._8882b6a7feb4fd3d__heading-2xl{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)}._664e3e7687c45603__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)}.dac661a5de0ed2bd__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)}._59c7f3f740e2f96e__heading-md,.dac661a5de0ed2bd__heading-lg{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)}._59c7f3f740e2f96e__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)}.cf052fbad8d93b7e__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}._212b9cfef57a0af4__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)}._07f57bc0aa36b2c6__body-lg,._212b9cfef57a0af4__body-xl{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)}._07f57bc0aa36b2c6__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)}._0c6da4457aec9e62__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)}._0c6da4457aec9e62__body-md,.b998f87ff17b7bec__body-sm{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)}.b998f87ff17b7bec__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)}}}'); 9766 } 9767 var style_default = { "text": "_9745ffa515d864cf__text", "heading-2xl": "_8882b6a7feb4fd3d__heading-2xl", "heading-xl": "_664e3e7687c45603__heading-xl", "heading-lg": "dac661a5de0ed2bd__heading-lg", "heading-md": "_59c7f3f740e2f96e__heading-md", "heading-sm": "cf052fbad8d93b7e__heading-sm", "body-xl": "_212b9cfef57a0af4__body-xl", "body-lg": "_07f57bc0aa36b2c6__body-lg", "body-md": "_0c6da4457aec9e62__body-md", "body-sm": "b998f87ff17b7bec__body-sm" }; 9768 if (typeof process === "undefined" || true) { 9769 registerStyle("726f348f3f", "._78c10a0773e51a91__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)}._5b33aa2d48624b4f__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)}}._980b3b4776ac8f81__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._43e478b4279a076c__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._698099e25b0fb1a6__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)._326aee4184d261fd__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)}.e9576240835601ba__a,.e9576240835601ba__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)}._3f05789653864a73__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)}._3c72ff72abe57859__li{margin:var(--_gcd-li-margin,0)}[role=treeitem] span._79d16267c15d9eb2__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)}"); 9770 } 9771 var global_css_defense_default = { "button": "_78c10a0773e51a91__button", "input": "_5b33aa2d48624b4f__input", "textarea": "_980b3b4776ac8f81__textarea", "div": "_43e478b4279a076c__div", "p": "_698099e25b0fb1a6__p", "heading": "_326aee4184d261fd__heading", "a": "e9576240835601ba__a", "ol": "_3f05789653864a73__ol", "li": "_3c72ff72abe57859__li", "span": "_79d16267c15d9eb2__span" }; 9772 var Text = (0, import_element11.forwardRef)( 9773 function UnforwardedText({ variant = "body-md", render, className, ...props }, ref) { 9774 const element = useRender({ 9775 render, 9776 defaultTagName: "span", 9777 ref, 9778 props: mergeProps(props, { 9779 className: clsx_default( 9780 style_default.text, 9781 global_css_defense_default.heading, 9782 global_css_defense_default.p, 9783 style_default[variant], 9784 className 9785 ) 9786 }) 9787 }); 9788 return element; 9789 } 9790 ); 9791 9792 // packages/ui/build-module/button/button.mjs 9793 var import_a11y = __toESM(require_a11y(), 1); 9794 var import_element13 = __toESM(require_element(), 1); 9795 var import_i18n = __toESM(require_i18n(), 1); 9796 9797 // packages/ui/build-module/spinner/spinner.mjs 9798 var import_element12 = __toESM(require_element(), 1); 9799 var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1); 9800 var STYLE_HASH_ATTRIBUTE2 = "data-wp-hash"; 9801 function getRuntime2() { 9802 const globalScope = globalThis; 9803 if (globalScope.__wpStyleRuntime) { 9804 return globalScope.__wpStyleRuntime; 9805 } 9806 globalScope.__wpStyleRuntime = { 9807 documents: /* @__PURE__ */ new Map(), 9808 styles: /* @__PURE__ */ new Map(), 9809 injectedStyles: /* @__PURE__ */ new WeakMap() 9810 }; 9811 if (typeof document !== "undefined") { 9812 registerDocument2(document); 9813 } 9814 return globalScope.__wpStyleRuntime; 9815 } 9816 function documentContainsStyleHash2(targetDocument, hash) { 9817 if (!targetDocument.head) { 9818 return false; 9819 } 9820 for (const style of targetDocument.head.querySelectorAll( 9821 `style[$STYLE_HASH_ATTRIBUTE2}]` 9822 )) { 9823 if (style.getAttribute(STYLE_HASH_ATTRIBUTE2) === hash) { 9824 return true; 9825 } 9826 } 9827 return false; 9828 } 9829 function injectStyle2(targetDocument, hash, css) { 9830 if (!targetDocument.head) { 9831 return; 9832 } 9833 const runtime = getRuntime2(); 9834 let injectedStyles = runtime.injectedStyles.get(targetDocument); 9835 if (!injectedStyles) { 9836 injectedStyles = /* @__PURE__ */ new Set(); 9837 runtime.injectedStyles.set(targetDocument, injectedStyles); 9838 } 9839 if (injectedStyles.has(hash)) { 9840 return; 9841 } 9842 if (documentContainsStyleHash2(targetDocument, hash)) { 9843 injectedStyles.add(hash); 9844 return; 9845 } 9846 const style = targetDocument.createElement("style"); 9847 style.setAttribute(STYLE_HASH_ATTRIBUTE2, hash); 9848 style.appendChild(targetDocument.createTextNode(css)); 9849 targetDocument.head.appendChild(style); 9850 injectedStyles.add(hash); 9851 } 9852 function registerDocument2(targetDocument) { 9853 const runtime = getRuntime2(); 9854 runtime.documents.set( 9855 targetDocument, 9856 (runtime.documents.get(targetDocument) ?? 0) + 1 9857 ); 9858 for (const [hash, css] of runtime.styles) { 9859 injectStyle2(targetDocument, hash, css); 9860 } 9861 return () => { 9862 const count = runtime.documents.get(targetDocument); 9863 if (count === void 0) { 9864 return; 9865 } 9866 if (count <= 1) { 9867 runtime.documents.delete(targetDocument); 9868 return; 9869 } 9870 runtime.documents.set(targetDocument, count - 1); 9871 }; 9872 } 9873 function registerStyle2(hash, css) { 9874 const runtime = getRuntime2(); 9875 runtime.styles.set(hash, css); 9876 for (const targetDocument of runtime.documents.keys()) { 9877 injectStyle2(targetDocument, hash, css); 9878 } 9879 } 9880 if (typeof process === "undefined" || true) { 9881 registerStyle2("b081213352", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.da418dc15e63be57__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)}._8b83deccaefa3c92__indicator{fill:transparent;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;transform-origin:50% 50%;@media (forced-colors:active){stroke:CanvasText}animation:_0da63cf2c7b08803__spinner-spin 1.4s linear infinite both}@keyframes _0da63cf2c7b08803__spinner-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}}}"); 9882 } 9883 var style_default2 = { "spinner": "da418dc15e63be57__spinner", "indicator": "_8b83deccaefa3c92__indicator", "spinner-spin": "_0da63cf2c7b08803__spinner-spin" }; 9884 var Spinner = (0, import_element12.forwardRef)( 9885 function UnforwardedSpinner({ className, color, style, ...props }, ref) { 9886 return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)( 9887 "svg", 9888 { 9889 className: clsx_default(style_default2.spinner, className), 9890 style: color === void 0 ? style : { ...style, color }, 9891 viewBox: "0 0 24 24", 9892 xmlns: "http://www.w3.org/2000/svg", 9893 role: "presentation", 9894 focusable: "false", 9895 ...props, 9896 ref, 9897 children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)( 9898 "path", 9899 { 9900 className: style_default2.indicator, 9901 d: "m 12 0 a 12 12 0 0 1 0 24" 9902 } 9903 ) 9904 } 9905 ); 9906 } 9907 ); 9908 9909 // packages/ui/build-module/button/button.mjs 9910 var import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1); 9911 var STYLE_HASH_ATTRIBUTE3 = "data-wp-hash"; 9912 function getRuntime3() { 9913 const globalScope = globalThis; 9914 if (globalScope.__wpStyleRuntime) { 9915 return globalScope.__wpStyleRuntime; 9916 } 9917 globalScope.__wpStyleRuntime = { 9918 documents: /* @__PURE__ */ new Map(), 9919 styles: /* @__PURE__ */ new Map(), 9920 injectedStyles: /* @__PURE__ */ new WeakMap() 9921 }; 9922 if (typeof document !== "undefined") { 9923 registerDocument3(document); 9924 } 9925 return globalScope.__wpStyleRuntime; 9926 } 9927 function documentContainsStyleHash3(targetDocument, hash) { 9928 if (!targetDocument.head) { 9929 return false; 9930 } 9931 for (const style of targetDocument.head.querySelectorAll( 9932 `style[$STYLE_HASH_ATTRIBUTE3}]` 9933 )) { 9934 if (style.getAttribute(STYLE_HASH_ATTRIBUTE3) === hash) { 9935 return true; 9936 } 9937 } 9938 return false; 9939 } 9940 function injectStyle3(targetDocument, hash, css) { 9941 if (!targetDocument.head) { 9942 return; 9943 } 9944 const runtime = getRuntime3(); 9945 let injectedStyles = runtime.injectedStyles.get(targetDocument); 9946 if (!injectedStyles) { 9947 injectedStyles = /* @__PURE__ */ new Set(); 9948 runtime.injectedStyles.set(targetDocument, injectedStyles); 9949 } 9950 if (injectedStyles.has(hash)) { 9951 return; 9952 } 9953 if (documentContainsStyleHash3(targetDocument, hash)) { 9954 injectedStyles.add(hash); 9955 return; 9956 } 9957 const style = targetDocument.createElement("style"); 9958 style.setAttribute(STYLE_HASH_ATTRIBUTE3, hash); 9959 style.appendChild(targetDocument.createTextNode(css)); 9960 targetDocument.head.appendChild(style); 9961 injectedStyles.add(hash); 9962 } 9963 function registerDocument3(targetDocument) { 9964 const runtime = getRuntime3(); 9965 runtime.documents.set( 9966 targetDocument, 9967 (runtime.documents.get(targetDocument) ?? 0) + 1 9968 ); 9969 for (const [hash, css] of runtime.styles) { 9970 injectStyle3(targetDocument, hash, css); 9971 } 9972 return () => { 9973 const count = runtime.documents.get(targetDocument); 9974 if (count === void 0) { 9975 return; 9976 } 9977 if (count <= 1) { 9978 runtime.documents.delete(targetDocument); 9979 return; 9980 } 9981 runtime.documents.set(targetDocument, count - 1); 9982 }; 9983 } 9984 function registerStyle3(hash, css) { 9985 const runtime = getRuntime3(); 9986 runtime.styles.set(hash, css); 9987 for (const targetDocument of runtime.documents.keys()) { 9988 injectStyle3(targetDocument, hash, css); 9989 } 9990 } 9991 if (typeof process === "undefined" || true) { 9992 registerStyle3("06ca4dbe45", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.e01b07636421375d__button,.ec10ae721bc68934__is-unstyled{appearance:none;padding:0}.e01b07636421375d__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(._414eb921eb9928fa__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}}}._36aecfa8aa1c059c__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)}._6e27e09880945492__icon{margin:var(--wp-ui-button-icon-margin)}.e861e38ec209c386__is-brand{&._126c37d7228179eb__is-outline,&._52d3a0733adabb28__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)}&._126c37d7228179eb__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)}&._52d3a0733adabb28__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)}}._4f1e6661283d0b09__is-neutral{&._52d3a0733adabb28__is-minimal[aria-pressed=true],&._7b8ab25ed58515d2__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)}&._126c37d7228179eb__is-outline,&._52d3a0733adabb28__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)}&._126c37d7228179eb__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)}&._52d3a0733adabb28__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)}}.ec10ae721bc68934__is-unstyled{background:none;border:none;min-width:unset}.df99f7773c9c8915__is-compact{--wp-ui-button-height:var(--wpds-dimension-size-md,32px)}._414eb921eb9928fa__is-loading:not(.ec10ae721bc68934__is-unstyled){color:transparent;&:not([data-disabled]):is(:hover,:active,:focus){color:transparent}@media (forced-colors:active){color:ButtonFace}>:not(._20f9e334daee91a7__spinner){opacity:0}}}@layer compositions{._20f9e334daee91a7__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}}}}}'); 9993 } 9994 var style_default3 = { "button": "e01b07636421375d__button", "is-unstyled": "ec10ae721bc68934__is-unstyled", "is-loading": "_414eb921eb9928fa__is-loading", "is-small": "_36aecfa8aa1c059c__is-small", "icon": "_6e27e09880945492__icon", "is-brand": "e861e38ec209c386__is-brand", "is-outline": "_126c37d7228179eb__is-outline", "is-minimal": "_52d3a0733adabb28__is-minimal", "is-neutral": "_4f1e6661283d0b09__is-neutral", "is-solid": "_7b8ab25ed58515d2__is-solid", "is-compact": "df99f7773c9c8915__is-compact", "spinner": "_20f9e334daee91a7__spinner" }; 9995 if (typeof process === "undefined" || true) { 9996 registerStyle3("37477070fb", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{.ccc29f9575c4c758__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 9997 } 9998 var resets_default = { "box-sizing": "ccc29f9575c4c758__box-sizing" }; 9999 if (typeof process === "undefined" || true) { 10000 registerStyle3("c13e206e92", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._0f52be5f1d4ce686__outset-ring--focus-within:focus-within,._8f922cee854f2408__outset-ring--focus-visible:focus-visible,.accedd6ae8fd878e__outset-ring--focus:focus{--_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))}._3ad2c88c126f2bdd__outset-ring--focus-within-except-active:focus-within,.c20f61b115485a7f__outset-ring--focus-except-active:focus{outline:none}._3ad2c88c126f2bdd__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.c20f61b115485a7f__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))}}}"); 10001 } 10002 var focus_module_default = { "outset-ring--focus": "accedd6ae8fd878e__outset-ring--focus", "outset-ring--focus-visible": "_8f922cee854f2408__outset-ring--focus-visible", "outset-ring--focus-within": "_0f52be5f1d4ce686__outset-ring--focus-within", "outset-ring--focus-except-active": "c20f61b115485a7f__outset-ring--focus-except-active", "outset-ring--focus-within-except-active": "_3ad2c88c126f2bdd__outset-ring--focus-within-except-active" }; 10003 if (typeof process === "undefined" || true) { 10004 registerStyle3("726f348f3f", "._78c10a0773e51a91__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)}._5b33aa2d48624b4f__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)}}._980b3b4776ac8f81__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._43e478b4279a076c__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._698099e25b0fb1a6__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)._326aee4184d261fd__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)}.e9576240835601ba__a,.e9576240835601ba__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)}._3f05789653864a73__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)}._3c72ff72abe57859__li{margin:var(--_gcd-li-margin,0)}[role=treeitem] span._79d16267c15d9eb2__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)}"); 10005 } 10006 var global_css_defense_default2 = { "button": "_78c10a0773e51a91__button", "input": "_5b33aa2d48624b4f__input", "textarea": "_980b3b4776ac8f81__textarea", "div": "_43e478b4279a076c__div", "p": "_698099e25b0fb1a6__p", "heading": "_326aee4184d261fd__heading", "a": "e9576240835601ba__a", "ol": "_3f05789653864a73__ol", "li": "_3c72ff72abe57859__li", "span": "_79d16267c15d9eb2__span" }; 10007 var Button3 = (0, import_element13.forwardRef)( 10008 function UnforwardedButton({ 10009 tone = "brand", 10010 variant = "solid", 10011 size: size4 = "default", 10012 className, 10013 focusableWhenDisabled = true, 10014 disabled: disabled2, 10015 loading, 10016 loadingAnnouncement = (0, import_i18n.__)("Loading"), 10017 children, 10018 ...props 10019 }, ref) { 10020 const mergedClassName = clsx_default( 10021 global_css_defense_default2.button, 10022 resets_default["box-sizing"], 10023 focus_module_default["outset-ring--focus-except-active"], 10024 variant !== "unstyled" && style_default3.button, 10025 style_default3[`is-$tone}`], 10026 style_default3[`is-$variant}`], 10027 style_default3[`is-$size4}`], 10028 loading && style_default3["is-loading"], 10029 className 10030 ); 10031 (0, import_element13.useEffect)(() => { 10032 if (loading && loadingAnnouncement) { 10033 (0, import_a11y.speak)(loadingAnnouncement); 10034 } 10035 }, [loading, loadingAnnouncement]); 10036 return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)( 10037 Button, 10038 { 10039 ref, 10040 className: mergedClassName, 10041 focusableWhenDisabled, 10042 disabled: disabled2 ?? loading, 10043 ...props, 10044 children: [ 10045 children, 10046 loading && variant !== "unstyled" && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Spinner, { className: style_default3.spinner }) 10047 ] 10048 } 10049 ); 10050 } 10051 ); 10052 10053 // packages/ui/build-module/button/icon.mjs 10054 var import_element14 = __toESM(require_element(), 1); 10055 var import_jsx_runtime16 = __toESM(require_jsx_runtime(), 1); 10056 var STYLE_HASH_ATTRIBUTE4 = "data-wp-hash"; 10057 function getRuntime4() { 10058 const globalScope = globalThis; 10059 if (globalScope.__wpStyleRuntime) { 10060 return globalScope.__wpStyleRuntime; 10061 } 10062 globalScope.__wpStyleRuntime = { 10063 documents: /* @__PURE__ */ new Map(), 10064 styles: /* @__PURE__ */ new Map(), 10065 injectedStyles: /* @__PURE__ */ new WeakMap() 10066 }; 10067 if (typeof document !== "undefined") { 10068 registerDocument4(document); 10069 } 10070 return globalScope.__wpStyleRuntime; 10071 } 10072 function documentContainsStyleHash4(targetDocument, hash) { 10073 if (!targetDocument.head) { 10074 return false; 10075 } 10076 for (const style of targetDocument.head.querySelectorAll( 10077 `style[$STYLE_HASH_ATTRIBUTE4}]` 10078 )) { 10079 if (style.getAttribute(STYLE_HASH_ATTRIBUTE4) === hash) { 10080 return true; 10081 } 10082 } 10083 return false; 10084 } 10085 function injectStyle4(targetDocument, hash, css) { 10086 if (!targetDocument.head) { 10087 return; 10088 } 10089 const runtime = getRuntime4(); 10090 let injectedStyles = runtime.injectedStyles.get(targetDocument); 10091 if (!injectedStyles) { 10092 injectedStyles = /* @__PURE__ */ new Set(); 10093 runtime.injectedStyles.set(targetDocument, injectedStyles); 10094 } 10095 if (injectedStyles.has(hash)) { 10096 return; 10097 } 10098 if (documentContainsStyleHash4(targetDocument, hash)) { 10099 injectedStyles.add(hash); 10100 return; 10101 } 10102 const style = targetDocument.createElement("style"); 10103 style.setAttribute(STYLE_HASH_ATTRIBUTE4, hash); 10104 style.appendChild(targetDocument.createTextNode(css)); 10105 targetDocument.head.appendChild(style); 10106 injectedStyles.add(hash); 10107 } 10108 function registerDocument4(targetDocument) { 10109 const runtime = getRuntime4(); 10110 runtime.documents.set( 10111 targetDocument, 10112 (runtime.documents.get(targetDocument) ?? 0) + 1 10113 ); 10114 for (const [hash, css] of runtime.styles) { 10115 injectStyle4(targetDocument, hash, css); 10116 } 10117 return () => { 10118 const count = runtime.documents.get(targetDocument); 10119 if (count === void 0) { 10120 return; 10121 } 10122 if (count <= 1) { 10123 runtime.documents.delete(targetDocument); 10124 return; 10125 } 10126 runtime.documents.set(targetDocument, count - 1); 10127 }; 10128 } 10129 function registerStyle4(hash, css) { 10130 const runtime = getRuntime4(); 10131 runtime.styles.set(hash, css); 10132 for (const targetDocument of runtime.documents.keys()) { 10133 injectStyle4(targetDocument, hash, css); 10134 } 10135 } 10136 if (typeof process === "undefined" || true) { 10137 registerStyle4("06ca4dbe45", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.e01b07636421375d__button,.ec10ae721bc68934__is-unstyled{appearance:none;padding:0}.e01b07636421375d__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(._414eb921eb9928fa__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}}}._36aecfa8aa1c059c__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)}._6e27e09880945492__icon{margin:var(--wp-ui-button-icon-margin)}.e861e38ec209c386__is-brand{&._126c37d7228179eb__is-outline,&._52d3a0733adabb28__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)}&._126c37d7228179eb__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)}&._52d3a0733adabb28__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)}}._4f1e6661283d0b09__is-neutral{&._52d3a0733adabb28__is-minimal[aria-pressed=true],&._7b8ab25ed58515d2__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)}&._126c37d7228179eb__is-outline,&._52d3a0733adabb28__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)}&._126c37d7228179eb__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)}&._52d3a0733adabb28__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)}}.ec10ae721bc68934__is-unstyled{background:none;border:none;min-width:unset}.df99f7773c9c8915__is-compact{--wp-ui-button-height:var(--wpds-dimension-size-md,32px)}._414eb921eb9928fa__is-loading:not(.ec10ae721bc68934__is-unstyled){color:transparent;&:not([data-disabled]):is(:hover,:active,:focus){color:transparent}@media (forced-colors:active){color:ButtonFace}>:not(._20f9e334daee91a7__spinner){opacity:0}}}@layer compositions{._20f9e334daee91a7__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}}}}}'); 10138 } 10139 var style_default4 = { "button": "e01b07636421375d__button", "is-unstyled": "ec10ae721bc68934__is-unstyled", "is-loading": "_414eb921eb9928fa__is-loading", "is-small": "_36aecfa8aa1c059c__is-small", "icon": "_6e27e09880945492__icon", "is-brand": "e861e38ec209c386__is-brand", "is-outline": "_126c37d7228179eb__is-outline", "is-minimal": "_52d3a0733adabb28__is-minimal", "is-neutral": "_4f1e6661283d0b09__is-neutral", "is-solid": "_7b8ab25ed58515d2__is-solid", "is-compact": "df99f7773c9c8915__is-compact", "spinner": "_20f9e334daee91a7__spinner" }; 10140 var ButtonIcon = (0, import_element14.forwardRef)( 10141 function UnforwardedButtonIcon({ className, icon, ...props }, ref) { 10142 return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)( 10143 Icon, 10144 { 10145 ref, 10146 icon, 10147 className: clsx_default(style_default4.icon, className), 10148 size: 24, 10149 ...props 10150 } 10151 ); 10152 } 10153 ); 10154 10155 // packages/ui/build-module/button/index.mjs 10156 ButtonIcon.displayName = "Button.Icon"; 10157 var Button4 = Object.assign(Button3, { 10158 /** 10159 * An icon component specifically designed to work well when rendered inside 10160 * a `Button` component. 10161 */ 10162 Icon: ButtonIcon 10163 }); 10164 10165 // packages/icons/build-module/library/caution.mjs 10166 var import_primitives2 = __toESM(require_primitives(), 1); 10167 var import_jsx_runtime17 = __toESM(require_jsx_runtime(), 1); 10168 var caution_default = /* @__PURE__ */ (0, import_jsx_runtime17.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_runtime17.jsx)(import_primitives2.Path, { d: "M12 8L12 13M12 14.5L12 16M4.75 12C4.75 7.99593 7.99594 4.75 12 4.75C16.0041 4.75 19.25 7.99594 19.25 12C19.25 16.0041 16.0041 19.25 12 19.25C7.99594 19.25 4.75 16.0041 4.75 12Z", strokeLinejoin: "round" }) }); 10169 10170 // packages/icons/build-module/library/chevron-down.mjs 10171 var import_primitives3 = __toESM(require_primitives(), 1); 10172 var import_jsx_runtime18 = __toESM(require_jsx_runtime(), 1); 10173 var chevron_down_default = /* @__PURE__ */ (0, import_jsx_runtime18.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_runtime18.jsx)(import_primitives3.Path, { d: "M7 11L12 15L17 11" }) }); 10174 10175 // packages/icons/build-module/library/close-small.mjs 10176 var import_primitives4 = __toESM(require_primitives(), 1); 10177 var import_jsx_runtime19 = __toESM(require_jsx_runtime(), 1); 10178 var close_small_default = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_primitives4.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_primitives4.Path, { d: "M7.75 16.25L16.25 7.75M16.25 16.25L7.75 7.75" }) }); 10179 10180 // packages/icons/build-module/library/error.mjs 10181 var import_primitives5 = __toESM(require_primitives(), 1); 10182 var import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1); 10183 var error_default = /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_primitives5.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_primitives5.Path, { d: "M12 9L12 14M12 15.5V17M11.1284 5.04947L3.83827 18.0097C3.46331 18.6763 3.94502 19.5 4.70985 19.5H19.2902C20.055 19.5 20.5367 18.6763 20.1617 18.0097L12.8716 5.04947C12.4893 4.36982 11.5107 4.36982 11.1284 5.04947Z" }) }); 10184 10185 // packages/icons/build-module/library/external.mjs 10186 var import_primitives6 = __toESM(require_primitives(), 1); 10187 var import_jsx_runtime21 = __toESM(require_jsx_runtime(), 1); 10188 var external_default = /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_primitives6.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_primitives6.Path, { d: "M9.5 6.25H6.5C5.80964 6.25 5.25 6.80964 5.25 7.5V17.5C5.25 18.1904 5.80964 18.75 6.5 18.75H16.5C17.1904 18.75 17.75 18.1904 17.75 17.5V14.5M11.5 12.5L18.75 5.25M12.5 5.25H18.75V11.5" }) }); 10189 10190 // packages/icons/build-module/library/info.mjs 10191 var import_primitives7 = __toESM(require_primitives(), 1); 10192 var import_jsx_runtime22 = __toESM(require_jsx_runtime(), 1); 10193 var info_default = /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_primitives7.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_primitives7.Path, { d: "M12 16V11M12 9.5V8M19.25 12C19.25 16.0041 16.0041 19.25 12 19.25C7.99594 19.25 4.75 16.0041 4.75 12C4.75 7.99594 7.99594 4.75 12 4.75C16.0041 4.75 19.25 7.99594 19.25 12Z", strokeLinejoin: "round" }) }); 10194 10195 // packages/icons/build-module/library/more-vertical.mjs 10196 var import_primitives8 = __toESM(require_primitives(), 1); 10197 var import_jsx_runtime23 = __toESM(require_jsx_runtime(), 1); 10198 var more_vertical_default = /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_primitives8.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [ 10199 /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_primitives8.Path, { d: "M11.75 18.25L12.25 18.25L12.25 17.75L11.75 17.75L11.75 18.25Z", fill: "currentColor", stroke: "none" }), 10200 /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_primitives8.Path, { d: "M11.75 12.25L12.25 12.25L12.25 11.75L11.75 11.75L11.75 12.25Z", fill: "currentColor", stroke: "none" }), 10201 /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_primitives8.Path, { d: "M11.75 6.25L12.25 6.25L12.25 5.75L11.75 5.75L11.75 6.25Z", fill: "currentColor", stroke: "none" }), 10202 /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_primitives8.Path, { d: "M11.75 18.25L12.25 18.25L12.25 17.75L11.75 17.75L11.75 18.25Z" }), 10203 /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_primitives8.Path, { d: "M11.75 12.25L12.25 12.25L12.25 11.75L11.75 11.75L11.75 12.25Z" }), 10204 /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_primitives8.Path, { d: "M11.75 6.25L12.25 6.25L12.25 5.75L11.75 5.75L11.75 6.25Z" }) 10205 ] }); 10206 10207 // packages/icons/build-module/library/plus.mjs 10208 var import_primitives9 = __toESM(require_primitives(), 1); 10209 var import_jsx_runtime24 = __toESM(require_jsx_runtime(), 1); 10210 var plus_default = /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_primitives9.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_primitives9.Path, { d: "M12 18V6M18 12H6" }) }); 10211 10212 // packages/icons/build-module/library/published.mjs 10213 var import_primitives10 = __toESM(require_primitives(), 1); 10214 var import_jsx_runtime25 = __toESM(require_jsx_runtime(), 1); 10215 var published_default = /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_primitives10.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [ 10216 /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_primitives10.Path, { d: "M12 19.25C16.0041 19.25 19.25 16.0041 19.25 12C19.25 7.99594 16.0041 4.75 12 4.75C7.99594 4.75 4.75 7.99594 4.75 12C4.75 16.0041 7.99594 19.25 12 19.25Z", strokeLinejoin: "round" }), 10217 /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_primitives10.Path, { d: "M9 12L11 14L15 10" }) 10218 ] }); 10219 10220 // packages/icons/build-module/library/redo.mjs 10221 var import_primitives11 = __toESM(require_primitives(), 1); 10222 var import_jsx_runtime26 = __toESM(require_jsx_runtime(), 1); 10223 var redo_default = /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_primitives11.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_primitives11.Path, { d: "M15 15L18.5 11L15 7M18.5 11H8C5 11 4.75 13.8 4.75 17" }) }); 10224 10225 // packages/icons/build-module/library/undo.mjs 10226 var import_primitives12 = __toESM(require_primitives(), 1); 10227 var import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1); 10228 var undo_default = /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_primitives12.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_primitives12.Path, { d: "M8.25 15L4.75 11L8.25 7M4.75 11H15.25C18.25 11 18.5 13.8 18.5 17" }) }); 10229 10230 // packages/ui/build-module/utils/keyboard-shortcut.mjs 10231 var import_element16 = __toESM(require_element(), 1); 10232 var import_i18n2 = __toESM(require_i18n(), 1); 10233 10234 // packages/ui/build-module/visually-hidden/visually-hidden.mjs 10235 var import_element15 = __toESM(require_element(), 1); 10236 var STYLE_HASH_ATTRIBUTE5 = "data-wp-hash"; 10237 function getRuntime5() { 10238 const globalScope = globalThis; 10239 if (globalScope.__wpStyleRuntime) { 10240 return globalScope.__wpStyleRuntime; 10241 } 10242 globalScope.__wpStyleRuntime = { 10243 documents: /* @__PURE__ */ new Map(), 10244 styles: /* @__PURE__ */ new Map(), 10245 injectedStyles: /* @__PURE__ */ new WeakMap() 10246 }; 10247 if (typeof document !== "undefined") { 10248 registerDocument5(document); 10249 } 10250 return globalScope.__wpStyleRuntime; 10251 } 10252 function documentContainsStyleHash5(targetDocument, hash) { 10253 if (!targetDocument.head) { 10254 return false; 10255 } 10256 for (const style of targetDocument.head.querySelectorAll( 10257 `style[$STYLE_HASH_ATTRIBUTE5}]` 10258 )) { 10259 if (style.getAttribute(STYLE_HASH_ATTRIBUTE5) === hash) { 10260 return true; 10261 } 10262 } 10263 return false; 10264 } 10265 function injectStyle5(targetDocument, hash, css) { 10266 if (!targetDocument.head) { 10267 return; 10268 } 10269 const runtime = getRuntime5(); 10270 let injectedStyles = runtime.injectedStyles.get(targetDocument); 10271 if (!injectedStyles) { 10272 injectedStyles = /* @__PURE__ */ new Set(); 10273 runtime.injectedStyles.set(targetDocument, injectedStyles); 10274 } 10275 if (injectedStyles.has(hash)) { 10276 return; 10277 } 10278 if (documentContainsStyleHash5(targetDocument, hash)) { 10279 injectedStyles.add(hash); 10280 return; 10281 } 10282 const style = targetDocument.createElement("style"); 10283 style.setAttribute(STYLE_HASH_ATTRIBUTE5, hash); 10284 style.appendChild(targetDocument.createTextNode(css)); 10285 targetDocument.head.appendChild(style); 10286 injectedStyles.add(hash); 10287 } 10288 function registerDocument5(targetDocument) { 10289 const runtime = getRuntime5(); 10290 runtime.documents.set( 10291 targetDocument, 10292 (runtime.documents.get(targetDocument) ?? 0) + 1 10293 ); 10294 for (const [hash, css] of runtime.styles) { 10295 injectStyle5(targetDocument, hash, css); 10296 } 10297 return () => { 10298 const count = runtime.documents.get(targetDocument); 10299 if (count === void 0) { 10300 return; 10301 } 10302 if (count <= 1) { 10303 runtime.documents.delete(targetDocument); 10304 return; 10305 } 10306 runtime.documents.set(targetDocument, count - 1); 10307 }; 10308 } 10309 function registerStyle5(hash, css) { 10310 const runtime = getRuntime5(); 10311 runtime.styles.set(hash, css); 10312 for (const targetDocument of runtime.documents.keys()) { 10313 injectStyle5(targetDocument, hash, css); 10314 } 10315 } 10316 if (typeof process === "undefined" || true) { 10317 registerStyle5("7caae29f9e", ".e2c3cbe6ada7d785__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}"); 10318 } 10319 var style_default5 = { "visually-hidden": "e2c3cbe6ada7d785__visually-hidden" }; 10320 var VisuallyHidden = (0, import_element15.forwardRef)( 10321 function UnforwardedVisuallyHidden({ render, ...restProps }, ref) { 10322 const element = useRender({ 10323 render, 10324 ref, 10325 props: mergeProps( 10326 { className: style_default5["visually-hidden"] }, 10327 restProps, 10328 { 10329 // @ts-expect-error Arbitrary data-* attributes aren't indexable on the typed div props. Kept hardcoded so consumers can't change or remove it. 10330 "data-visually-hidden": "" 10331 } 10332 ) 10333 }); 10334 return element; 10335 } 10336 ); 10337 10338 // packages/ui/build-module/utils/keyboard-shortcut.mjs 10339 var import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1); 10340 function useKeyboardShortcutProps({ 10341 "aria-describedby": ariaDescribedBy, 10342 "aria-keyshortcuts": ariaKeyShortcuts, 10343 shortcut 10344 }) { 10345 const generatedDescriptionId = (0, import_element16.useId)(); 10346 const descriptionId = shortcut ? generatedDescriptionId : void 0; 10347 const describedBy = [ariaDescribedBy, descriptionId].filter(Boolean).join(" "); 10348 return { 10349 descriptionId, 10350 targetProps: { 10351 "aria-describedby": describedBy || void 0, 10352 "aria-keyshortcuts": shortcut?.ariaKeyShortcut ?? ariaKeyShortcuts 10353 } 10354 }; 10355 } 10356 var KeyboardShortcutDescription = (0, import_element16.forwardRef)(function UnforwardedKeyboardShortcutDescription({ descriptionId, shortcut }, ref) { 10357 return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)( 10358 VisuallyHidden, 10359 { 10360 id: descriptionId, 10361 "aria-hidden": "true", 10362 render: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { ref }), 10363 children: (0, import_i18n2.sprintf)( 10364 /* translators: %s: keyboard shortcut. */ 10365 (0, import_i18n2.__)("Keyboard shortcut: %s"), 10366 shortcut.label ?? shortcut.ariaKeyShortcut 10367 ) 10368 } 10369 ); 10370 }); 10371 var KeyboardShortcutDisplay = (0, import_element16.forwardRef)(function UnforwardedKeyboardShortcutDisplay({ className, shortcut }, ref) { 10372 return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { ref, "aria-hidden": "true", className, dir: "ltr", children: shortcut.displayShortcut }); 10373 }); 10374 10375 // packages/ui/build-module/utils/render-slot-with-children.mjs 10376 var import_element17 = __toESM(require_element(), 1); 10377 function renderSlotWithChildren(slot, defaultSlot, children) { 10378 return (0, import_element17.cloneElement)( 10379 slot ?? defaultSlot, 10380 { children } 10381 ); 10382 } 10383 10384 // packages/ui/build-module/utils/wp-compat-overlay-slot.mjs 10385 var STYLE_HASH_ATTRIBUTE6 = "data-wp-hash"; 10386 function getRuntime6() { 10387 const globalScope = globalThis; 10388 if (globalScope.__wpStyleRuntime) { 10389 return globalScope.__wpStyleRuntime; 10390 } 10391 globalScope.__wpStyleRuntime = { 10392 documents: /* @__PURE__ */ new Map(), 10393 styles: /* @__PURE__ */ new Map(), 10394 injectedStyles: /* @__PURE__ */ new WeakMap() 10395 }; 10396 if (typeof document !== "undefined") { 10397 registerDocument6(document); 10398 } 10399 return globalScope.__wpStyleRuntime; 10400 } 10401 function documentContainsStyleHash6(targetDocument, hash) { 10402 if (!targetDocument.head) { 10403 return false; 10404 } 10405 for (const style of targetDocument.head.querySelectorAll( 10406 `style[$STYLE_HASH_ATTRIBUTE6}]` 10407 )) { 10408 if (style.getAttribute(STYLE_HASH_ATTRIBUTE6) === hash) { 10409 return true; 10410 } 10411 } 10412 return false; 10413 } 10414 function injectStyle6(targetDocument, hash, css) { 10415 if (!targetDocument.head) { 10416 return; 10417 } 10418 const runtime = getRuntime6(); 10419 let injectedStyles = runtime.injectedStyles.get(targetDocument); 10420 if (!injectedStyles) { 10421 injectedStyles = /* @__PURE__ */ new Set(); 10422 runtime.injectedStyles.set(targetDocument, injectedStyles); 10423 } 10424 if (injectedStyles.has(hash)) { 10425 return; 10426 } 10427 if (documentContainsStyleHash6(targetDocument, hash)) { 10428 injectedStyles.add(hash); 10429 return; 10430 } 10431 const style = targetDocument.createElement("style"); 10432 style.setAttribute(STYLE_HASH_ATTRIBUTE6, hash); 10433 style.appendChild(targetDocument.createTextNode(css)); 10434 targetDocument.head.appendChild(style); 10435 injectedStyles.add(hash); 10436 } 10437 function registerDocument6(targetDocument) { 10438 const runtime = getRuntime6(); 10439 runtime.documents.set( 10440 targetDocument, 10441 (runtime.documents.get(targetDocument) ?? 0) + 1 10442 ); 10443 for (const [hash, css] of runtime.styles) { 10444 injectStyle6(targetDocument, hash, css); 10445 } 10446 return () => { 10447 const count = runtime.documents.get(targetDocument); 10448 if (count === void 0) { 10449 return; 10450 } 10451 if (count <= 1) { 10452 runtime.documents.delete(targetDocument); 10453 return; 10454 } 10455 runtime.documents.set(targetDocument, count - 1); 10456 }; 10457 } 10458 function registerStyle6(hash, css) { 10459 const runtime = getRuntime6(); 10460 runtime.styles.set(hash, css); 10461 for (const targetDocument of runtime.documents.keys()) { 10462 injectStyle6(targetDocument, hash, css); 10463 } 10464 } 10465 if (typeof process === "undefined" || true) { 10466 registerStyle6("40df669685", "._9e7887c25dedb459__slot{inset:0;isolation:isolate;pointer-events:none;position:fixed;z-index:1000000003}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._9e7887c25dedb459__slot>*{pointer-events:auto}}}"); 10467 } 10468 var wp_compat_overlay_slot_default = { "slot": "_9e7887c25dedb459__slot" }; 10469 var WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE = "data-wp-compat-overlay-slot"; 10470 function resolveOwnerDocument() { 10471 return typeof document === "undefined" ? null : document; 10472 } 10473 function isInWordPressEnvironment() { 10474 let topWp; 10475 try { 10476 topWp = window.top?.wp; 10477 } catch { 10478 } 10479 const wp4 = topWp ?? window.wp; 10480 return typeof wp4?.components === "object" && wp4.components !== null; 10481 } 10482 var cachedSlot = null; 10483 function ensureSlotIsAccessible(element) { 10484 element.setAttribute("aria-hidden", "false"); 10485 return element; 10486 } 10487 function createSlot(ownerDocument2) { 10488 const element = ownerDocument2.createElement("div"); 10489 element.setAttribute(WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE, ""); 10490 if (wp_compat_overlay_slot_default.slot) { 10491 element.classList.add(wp_compat_overlay_slot_default.slot); 10492 } 10493 ownerDocument2.body.appendChild(element); 10494 return element; 10495 } 10496 function getWpCompatOverlaySlot() { 10497 if (typeof window === "undefined") { 10498 return void 0; 10499 } 10500 if (!isInWordPressEnvironment() && window.__wpUiCompatOverlaySlotEnabled !== true) { 10501 return void 0; 10502 } 10503 const ownerDocument2 = resolveOwnerDocument(); 10504 if (!ownerDocument2 || !ownerDocument2.body) { 10505 return void 0; 10506 } 10507 if (cachedSlot && cachedSlot.ownerDocument === ownerDocument2 && cachedSlot.isConnected) { 10508 return ensureSlotIsAccessible(cachedSlot); 10509 } 10510 const existing = ownerDocument2.querySelector( 10511 `[$WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE}]` 10512 ); 10513 if (existing instanceof HTMLDivElement) { 10514 cachedSlot = ensureSlotIsAccessible(existing); 10515 return cachedSlot; 10516 } 10517 if (cachedSlot?.isConnected) { 10518 cachedSlot.remove(); 10519 } 10520 cachedSlot = ensureSlotIsAccessible(createSlot(ownerDocument2)); 10521 return cachedSlot; 10522 } 10523 10524 // packages/ui/build-module/utils/direction-provider.mjs 10525 var import_i18n3 = __toESM(require_i18n(), 1); 10526 var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1); 10527 function DirectionProvider3({ children }) { 10528 return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(DirectionProvider, { direction: (0, import_i18n3.isRTL)() ? "rtl" : "ltr", children }); 10529 } 10530 10531 // packages/ui/build-module/tooltip/popup.mjs 10532 var import_element20 = __toESM(require_element(), 1); 10533 10534 // packages/ui/build-module/tooltip/portal.mjs 10535 var import_element18 = __toESM(require_element(), 1); 10536 var import_jsx_runtime30 = __toESM(require_jsx_runtime(), 1); 10537 var Portal = (0, import_element18.forwardRef)( 10538 function TooltipPortal3({ container, ...restProps }, ref) { 10539 return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)( 10540 index_parts_exports2.Portal, 10541 { 10542 container: container === void 0 ? getWpCompatOverlaySlot() : container, 10543 ...restProps, 10544 ref 10545 } 10546 ); 10547 } 10548 ); 10549 10550 // packages/ui/build-module/tooltip/positioner.mjs 10551 var import_element19 = __toESM(require_element(), 1); 10552 var import_jsx_runtime31 = __toESM(require_jsx_runtime(), 1); 10553 var STYLE_HASH_ATTRIBUTE7 = "data-wp-hash"; 10554 function getRuntime7() { 10555 const globalScope = globalThis; 10556 if (globalScope.__wpStyleRuntime) { 10557 return globalScope.__wpStyleRuntime; 10558 } 10559 globalScope.__wpStyleRuntime = { 10560 documents: /* @__PURE__ */ new Map(), 10561 styles: /* @__PURE__ */ new Map(), 10562 injectedStyles: /* @__PURE__ */ new WeakMap() 10563 }; 10564 if (typeof document !== "undefined") { 10565 registerDocument7(document); 10566 } 10567 return globalScope.__wpStyleRuntime; 10568 } 10569 function documentContainsStyleHash7(targetDocument, hash) { 10570 if (!targetDocument.head) { 10571 return false; 10572 } 10573 for (const style of targetDocument.head.querySelectorAll( 10574 `style[$STYLE_HASH_ATTRIBUTE7}]` 10575 )) { 10576 if (style.getAttribute(STYLE_HASH_ATTRIBUTE7) === hash) { 10577 return true; 10578 } 10579 } 10580 return false; 10581 } 10582 function injectStyle7(targetDocument, hash, css) { 10583 if (!targetDocument.head) { 10584 return; 10585 } 10586 const runtime = getRuntime7(); 10587 let injectedStyles = runtime.injectedStyles.get(targetDocument); 10588 if (!injectedStyles) { 10589 injectedStyles = /* @__PURE__ */ new Set(); 10590 runtime.injectedStyles.set(targetDocument, injectedStyles); 10591 } 10592 if (injectedStyles.has(hash)) { 10593 return; 10594 } 10595 if (documentContainsStyleHash7(targetDocument, hash)) { 10596 injectedStyles.add(hash); 10597 return; 10598 } 10599 const style = targetDocument.createElement("style"); 10600 style.setAttribute(STYLE_HASH_ATTRIBUTE7, hash); 10601 style.appendChild(targetDocument.createTextNode(css)); 10602 targetDocument.head.appendChild(style); 10603 injectedStyles.add(hash); 10604 } 10605 function registerDocument7(targetDocument) { 10606 const runtime = getRuntime7(); 10607 runtime.documents.set( 10608 targetDocument, 10609 (runtime.documents.get(targetDocument) ?? 0) + 1 10610 ); 10611 for (const [hash, css] of runtime.styles) { 10612 injectStyle7(targetDocument, hash, css); 10613 } 10614 return () => { 10615 const count = runtime.documents.get(targetDocument); 10616 if (count === void 0) { 10617 return; 10618 } 10619 if (count <= 1) { 10620 runtime.documents.delete(targetDocument); 10621 return; 10622 } 10623 runtime.documents.set(targetDocument, count - 1); 10624 }; 10625 } 10626 function registerStyle7(hash, css) { 10627 const runtime = getRuntime7(); 10628 runtime.styles.set(hash, css); 10629 for (const targetDocument of runtime.documents.keys()) { 10630 injectStyle7(targetDocument, hash, css); 10631 } 10632 } 10633 if (typeof process === "undefined" || true) { 10634 registerStyle7("37477070fb", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{.ccc29f9575c4c758__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 10635 } 10636 var resets_default2 = { "box-sizing": "ccc29f9575c4c758__box-sizing" }; 10637 if (typeof process === "undefined" || true) { 10638 registerStyle7("aaf79ac691", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.b9266862d9435660__positioner{z-index:var(--wp-ui-tooltip-z-index,initial)}._7bb3fd8a0810be6d__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}}}}'); 10639 } 10640 var style_default6 = { "positioner": "b9266862d9435660__positioner", "popup": "_7bb3fd8a0810be6d__popup" }; 10641 var Positioner = (0, import_element19.forwardRef)( 10642 function TooltipPositioner3({ align = "center", className, side = "top", sideOffset = 4, ...props }, ref) { 10643 return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( 10644 index_parts_exports2.Positioner, 10645 { 10646 ref, 10647 align, 10648 side, 10649 sideOffset, 10650 ...props, 10651 className: clsx_default( 10652 resets_default2["box-sizing"], 10653 style_default6.positioner, 10654 className 10655 ) 10656 } 10657 ); 10658 } 10659 ); 10660 10661 // packages/ui/build-module/utils/theme-provider.mjs 10662 var theme = __toESM(require_theme(), 1); 10663 10664 // packages/ui/build-module/lock-unlock.mjs 10665 var import_private_apis = __toESM(require_private_apis(), 1); 10666 var { lock, unlock } = (0, import_private_apis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)( 10667 "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.", 10668 "@wordpress/ui" 10669 ); 10670 10671 // packages/ui/build-module/utils/theme-provider.mjs 10672 function getThemeProvider() { 10673 const themePackage = theme; 10674 if (themePackage.ThemeProvider) { 10675 return themePackage.ThemeProvider; 10676 } 10677 if (!themePackage.privateApis) { 10678 throw new Error( 10679 "@wordpress/ui: @wordpress/theme must expose `ThemeProvider` or `privateApis.ThemeProvider`." 10680 ); 10681 } 10682 return unlock( 10683 themePackage.privateApis 10684 ).ThemeProvider; 10685 } 10686 var ThemeProvider = getThemeProvider(); 10687 10688 // packages/ui/build-module/tooltip/popup.mjs 10689 var import_jsx_runtime32 = __toESM(require_jsx_runtime(), 1); 10690 var STYLE_HASH_ATTRIBUTE8 = "data-wp-hash"; 10691 function getRuntime8() { 10692 const globalScope = globalThis; 10693 if (globalScope.__wpStyleRuntime) { 10694 return globalScope.__wpStyleRuntime; 10695 } 10696 globalScope.__wpStyleRuntime = { 10697 documents: /* @__PURE__ */ new Map(), 10698 styles: /* @__PURE__ */ new Map(), 10699 injectedStyles: /* @__PURE__ */ new WeakMap() 10700 }; 10701 if (typeof document !== "undefined") { 10702 registerDocument8(document); 10703 } 10704 return globalScope.__wpStyleRuntime; 10705 } 10706 function documentContainsStyleHash8(targetDocument, hash) { 10707 if (!targetDocument.head) { 10708 return false; 10709 } 10710 for (const style of targetDocument.head.querySelectorAll( 10711 `style[$STYLE_HASH_ATTRIBUTE8}]` 10712 )) { 10713 if (style.getAttribute(STYLE_HASH_ATTRIBUTE8) === hash) { 10714 return true; 10715 } 10716 } 10717 return false; 10718 } 10719 function injectStyle8(targetDocument, hash, css) { 10720 if (!targetDocument.head) { 10721 return; 10722 } 10723 const runtime = getRuntime8(); 10724 let injectedStyles = runtime.injectedStyles.get(targetDocument); 10725 if (!injectedStyles) { 10726 injectedStyles = /* @__PURE__ */ new Set(); 10727 runtime.injectedStyles.set(targetDocument, injectedStyles); 10728 } 10729 if (injectedStyles.has(hash)) { 10730 return; 10731 } 10732 if (documentContainsStyleHash8(targetDocument, hash)) { 10733 injectedStyles.add(hash); 10734 return; 10735 } 10736 const style = targetDocument.createElement("style"); 10737 style.setAttribute(STYLE_HASH_ATTRIBUTE8, hash); 10738 style.appendChild(targetDocument.createTextNode(css)); 10739 targetDocument.head.appendChild(style); 10740 injectedStyles.add(hash); 10741 } 10742 function registerDocument8(targetDocument) { 10743 const runtime = getRuntime8(); 10744 runtime.documents.set( 10745 targetDocument, 10746 (runtime.documents.get(targetDocument) ?? 0) + 1 10747 ); 10748 for (const [hash, css] of runtime.styles) { 10749 injectStyle8(targetDocument, hash, css); 10750 } 10751 return () => { 10752 const count = runtime.documents.get(targetDocument); 10753 if (count === void 0) { 10754 return; 10755 } 10756 if (count <= 1) { 10757 runtime.documents.delete(targetDocument); 10758 return; 10759 } 10760 runtime.documents.set(targetDocument, count - 1); 10761 }; 10762 } 10763 function registerStyle8(hash, css) { 10764 const runtime = getRuntime8(); 10765 runtime.styles.set(hash, css); 10766 for (const targetDocument of runtime.documents.keys()) { 10767 injectStyle8(targetDocument, hash, css); 10768 } 10769 } 10770 if (typeof process === "undefined" || true) { 10771 registerStyle8("aaf79ac691", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.b9266862d9435660__positioner{z-index:var(--wp-ui-tooltip-z-index,initial)}._7bb3fd8a0810be6d__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}}}}'); 10772 } 10773 var style_default7 = { "positioner": "b9266862d9435660__positioner", "popup": "_7bb3fd8a0810be6d__popup" }; 10774 var POPUP_COLOR = { background: "#1e1e1e" }; 10775 var Popup = (0, import_element20.forwardRef)(function TooltipPopup3({ portal, positioner, children, className, ...props }, ref) { 10776 const popupContent = /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(ThemeProvider, { color: POPUP_COLOR, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)( 10777 index_parts_exports2.Popup, 10778 { 10779 ref, 10780 className: clsx_default(style_default7.popup, className), 10781 ...props, 10782 children 10783 } 10784 ) }); 10785 const positionedPopup = renderSlotWithChildren( 10786 positioner, 10787 /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Positioner, {}), 10788 popupContent 10789 ); 10790 return renderSlotWithChildren(portal, /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Portal, {}), positionedPopup); 10791 }); 10792 10793 // packages/ui/build-module/tooltip/trigger.mjs 10794 var import_element21 = __toESM(require_element(), 1); 10795 var import_jsx_runtime33 = __toESM(require_jsx_runtime(), 1); 10796 var Trigger = (0, import_element21.forwardRef)( 10797 function TooltipTrigger3(props, ref) { 10798 return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(index_parts_exports2.Trigger, { ref, ...props }); 10799 } 10800 ); 10801 10802 // packages/ui/build-module/tooltip/root.mjs 10803 var import_jsx_runtime34 = __toESM(require_jsx_runtime(), 1); 10804 function Root(props) { 10805 return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(DirectionProvider3, { children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(index_parts_exports2.Root, { ...props }) }); 10806 } 10807 10808 // packages/ui/build-module/link/link.mjs 10809 var import_element22 = __toESM(require_element(), 1); 10810 var import_i18n4 = __toESM(require_i18n(), 1); 10811 var import_jsx_runtime35 = __toESM(require_jsx_runtime(), 1); 10812 var STYLE_HASH_ATTRIBUTE9 = "data-wp-hash"; 10813 function getRuntime9() { 10814 const globalScope = globalThis; 10815 if (globalScope.__wpStyleRuntime) { 10816 return globalScope.__wpStyleRuntime; 10817 } 10818 globalScope.__wpStyleRuntime = { 10819 documents: /* @__PURE__ */ new Map(), 10820 styles: /* @__PURE__ */ new Map(), 10821 injectedStyles: /* @__PURE__ */ new WeakMap() 10822 }; 10823 if (typeof document !== "undefined") { 10824 registerDocument9(document); 10825 } 10826 return globalScope.__wpStyleRuntime; 10827 } 10828 function documentContainsStyleHash9(targetDocument, hash) { 10829 if (!targetDocument.head) { 10830 return false; 10831 } 10832 for (const style of targetDocument.head.querySelectorAll( 10833 `style[$STYLE_HASH_ATTRIBUTE9}]` 10834 )) { 10835 if (style.getAttribute(STYLE_HASH_ATTRIBUTE9) === hash) { 10836 return true; 10837 } 10838 } 10839 return false; 10840 } 10841 function injectStyle9(targetDocument, hash, css) { 10842 if (!targetDocument.head) { 10843 return; 10844 } 10845 const runtime = getRuntime9(); 10846 let injectedStyles = runtime.injectedStyles.get(targetDocument); 10847 if (!injectedStyles) { 10848 injectedStyles = /* @__PURE__ */ new Set(); 10849 runtime.injectedStyles.set(targetDocument, injectedStyles); 10850 } 10851 if (injectedStyles.has(hash)) { 10852 return; 10853 } 10854 if (documentContainsStyleHash9(targetDocument, hash)) { 10855 injectedStyles.add(hash); 10856 return; 10857 } 10858 const style = targetDocument.createElement("style"); 10859 style.setAttribute(STYLE_HASH_ATTRIBUTE9, hash); 10860 style.appendChild(targetDocument.createTextNode(css)); 10861 targetDocument.head.appendChild(style); 10862 injectedStyles.add(hash); 10863 } 10864 function registerDocument9(targetDocument) { 10865 const runtime = getRuntime9(); 10866 runtime.documents.set( 10867 targetDocument, 10868 (runtime.documents.get(targetDocument) ?? 0) + 1 10869 ); 10870 for (const [hash, css] of runtime.styles) { 10871 injectStyle9(targetDocument, hash, css); 10872 } 10873 return () => { 10874 const count = runtime.documents.get(targetDocument); 10875 if (count === void 0) { 10876 return; 10877 } 10878 if (count <= 1) { 10879 runtime.documents.delete(targetDocument); 10880 return; 10881 } 10882 runtime.documents.set(targetDocument, count - 1); 10883 }; 10884 } 10885 function registerStyle9(hash, css) { 10886 const runtime = getRuntime9(); 10887 runtime.styles.set(hash, css); 10888 for (const targetDocument of runtime.documents.keys()) { 10889 injectStyle9(targetDocument, hash, css); 10890 } 10891 } 10892 if (typeof process === "undefined" || true) { 10893 registerStyle9("37477070fb", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{.ccc29f9575c4c758__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 10894 } 10895 var resets_default3 = { "box-sizing": "ccc29f9575c4c758__box-sizing" }; 10896 if (typeof process === "undefined" || true) { 10897 registerStyle9("c13e206e92", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._0f52be5f1d4ce686__outset-ring--focus-within:focus-within,._8f922cee854f2408__outset-ring--focus-visible:focus-visible,.accedd6ae8fd878e__outset-ring--focus:focus{--_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))}._3ad2c88c126f2bdd__outset-ring--focus-within-except-active:focus-within,.c20f61b115485a7f__outset-ring--focus-except-active:focus{outline:none}._3ad2c88c126f2bdd__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.c20f61b115485a7f__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))}}}"); 10898 } 10899 var focus_module_default2 = { "outset-ring--focus": "accedd6ae8fd878e__outset-ring--focus", "outset-ring--focus-visible": "_8f922cee854f2408__outset-ring--focus-visible", "outset-ring--focus-within": "_0f52be5f1d4ce686__outset-ring--focus-within", "outset-ring--focus-except-active": "c20f61b115485a7f__outset-ring--focus-except-active", "outset-ring--focus-within-except-active": "_3ad2c88c126f2bdd__outset-ring--focus-within-except-active" }; 10900 if (typeof process === "undefined" || true) { 10901 registerStyle9("c87d91cdf7", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.a574f9f242212d58__link{--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);border-radius:var(--wpds-border-radius-sm,2px);text-decoration-thickness:from-font;text-underline-offset:.2em}._2d2f0506e717a46c__link-with-icon{text-decoration-line:none}._92b7b6a03fbb27ac__link-contents{text-decoration:inherit;text-decoration-line:underline}._69f40d9212adc58d__is-brand,._69f40d9212adc58d__is-brand:visited{--_gcd-a-color:var(--wpds-color-foreground-interactive-brand,var(--wp-admin-theme-color,#3858e9));color:var(--wpds-color-foreground-interactive-brand,var(--wp-admin-theme-color,#3858e9))}._69f40d9212adc58d__is-brand:active,._69f40d9212adc58d__is-brand:hover{--_gcd-a-color:var(--wpds-color-foreground-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 52%,#000));color:var(--wpds-color-foreground-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 52%,#000))}._9a9c54c6e67b4c3c__is-neutral,._9a9c54c6e67b4c3c__is-neutral:visited{--_gcd-a-color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);text-decoration-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d)}._9a9c54c6e67b4c3c__is-neutral:active,._9a9c54c6e67b4c3c__is-neutral:hover{--_gcd-a-color:var(--wpds-color-foreground-interactive-neutral-active,#1e1e1e);color:var(--wpds-color-foreground-interactive-neutral-active,#1e1e1e)}._93be0b747897baad__is-unstyled{--_gcd-a-border-radius:0;--_gcd-a-color:inherit;color:inherit;text-decoration:none}._9c39df40fdc09594__link-icon{font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-padding-xs,4px);text-decoration:none}._9c39df40fdc09594__link-icon:after{content:"\\2060\\2197"}._9c39df40fdc09594__link-icon:dir(rtl):after{content:"\\2060\\2196"}}}'); 10902 } 10903 var style_default8 = { "link": "a574f9f242212d58__link", "link-with-icon": "_2d2f0506e717a46c__link-with-icon", "link-contents": "_92b7b6a03fbb27ac__link-contents", "is-brand": "_69f40d9212adc58d__is-brand", "is-neutral": "_9a9c54c6e67b4c3c__is-neutral", "is-unstyled": "_93be0b747897baad__is-unstyled", "link-icon": "_9c39df40fdc09594__link-icon" }; 10904 if (typeof process === "undefined" || true) { 10905 registerStyle9("726f348f3f", "._78c10a0773e51a91__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)}._5b33aa2d48624b4f__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)}}._980b3b4776ac8f81__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._43e478b4279a076c__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._698099e25b0fb1a6__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)._326aee4184d261fd__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)}.e9576240835601ba__a,.e9576240835601ba__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)}._3f05789653864a73__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)}._3c72ff72abe57859__li{margin:var(--_gcd-li-margin,0)}[role=treeitem] span._79d16267c15d9eb2__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)}"); 10906 } 10907 var global_css_defense_default3 = { "button": "_78c10a0773e51a91__button", "input": "_5b33aa2d48624b4f__input", "textarea": "_980b3b4776ac8f81__textarea", "div": "_43e478b4279a076c__div", "p": "_698099e25b0fb1a6__p", "heading": "_326aee4184d261fd__heading", "a": "e9576240835601ba__a", "ol": "_3f05789653864a73__ol", "li": "_3c72ff72abe57859__li", "span": "_79d16267c15d9eb2__span" }; 10908 var Link = (0, import_element22.forwardRef)( 10909 function UnforwardedLink({ 10910 children, 10911 variant = "default", 10912 tone = "brand", 10913 openInNewTab = false, 10914 target, 10915 render, 10916 className, 10917 ...props 10918 }, ref) { 10919 const shouldShowNewTabIndicator = openInNewTab || /^_blank$/i.test(target ?? ""); 10920 const element = useRender({ 10921 render, 10922 defaultTagName: "a", 10923 ref, 10924 props: mergeProps(props, { 10925 className: clsx_default( 10926 global_css_defense_default3.a, 10927 resets_default3["box-sizing"], 10928 focus_module_default2["outset-ring--focus-except-active"], 10929 variant !== "unstyled" && style_default8.link, 10930 variant !== "unstyled" && shouldShowNewTabIndicator && style_default8["link-with-icon"], 10931 variant !== "unstyled" && style_default8[`is-$tone}`], 10932 variant === "unstyled" && style_default8["is-unstyled"], 10933 className 10934 ), 10935 target: target ?? (openInNewTab ? "_blank" : void 0), 10936 children: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_jsx_runtime35.Fragment, { children: [ 10937 shouldShowNewTabIndicator && variant !== "unstyled" ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: style_default8["link-contents"], children }) : children, 10938 shouldShowNewTabIndicator && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( 10939 "span", 10940 { 10941 className: style_default8["link-icon"], 10942 role: "img", 10943 "aria-label": ( 10944 /* translators: accessibility text appended to link text */ 10945 (0, import_i18n4.__)("(opens in a new tab)") 10946 ) 10947 } 10948 ) 10949 ] }) 10950 }) 10951 }); 10952 return element; 10953 } 10954 ); 10955 10956 // packages/ui/build-module/icon-button/icon-button.mjs 10957 var import_element23 = __toESM(require_element(), 1); 10958 var import_jsx_runtime36 = __toESM(require_jsx_runtime(), 1); 10959 var STYLE_HASH_ATTRIBUTE10 = "data-wp-hash"; 10960 function getRuntime10() { 10961 const globalScope = globalThis; 10962 if (globalScope.__wpStyleRuntime) { 10963 return globalScope.__wpStyleRuntime; 10964 } 10965 globalScope.__wpStyleRuntime = { 10966 documents: /* @__PURE__ */ new Map(), 10967 styles: /* @__PURE__ */ new Map(), 10968 injectedStyles: /* @__PURE__ */ new WeakMap() 10969 }; 10970 if (typeof document !== "undefined") { 10971 registerDocument10(document); 10972 } 10973 return globalScope.__wpStyleRuntime; 10974 } 10975 function documentContainsStyleHash10(targetDocument, hash) { 10976 if (!targetDocument.head) { 10977 return false; 10978 } 10979 for (const style of targetDocument.head.querySelectorAll( 10980 `style[$STYLE_HASH_ATTRIBUTE10}]` 10981 )) { 10982 if (style.getAttribute(STYLE_HASH_ATTRIBUTE10) === hash) { 10983 return true; 10984 } 10985 } 10986 return false; 10987 } 10988 function injectStyle10(targetDocument, hash, css) { 10989 if (!targetDocument.head) { 10990 return; 10991 } 10992 const runtime = getRuntime10(); 10993 let injectedStyles = runtime.injectedStyles.get(targetDocument); 10994 if (!injectedStyles) { 10995 injectedStyles = /* @__PURE__ */ new Set(); 10996 runtime.injectedStyles.set(targetDocument, injectedStyles); 10997 } 10998 if (injectedStyles.has(hash)) { 10999 return; 11000 } 11001 if (documentContainsStyleHash10(targetDocument, hash)) { 11002 injectedStyles.add(hash); 11003 return; 11004 } 11005 const style = targetDocument.createElement("style"); 11006 style.setAttribute(STYLE_HASH_ATTRIBUTE10, hash); 11007 style.appendChild(targetDocument.createTextNode(css)); 11008 targetDocument.head.appendChild(style); 11009 injectedStyles.add(hash); 11010 } 11011 function registerDocument10(targetDocument) { 11012 const runtime = getRuntime10(); 11013 runtime.documents.set( 11014 targetDocument, 11015 (runtime.documents.get(targetDocument) ?? 0) + 1 11016 ); 11017 for (const [hash, css] of runtime.styles) { 11018 injectStyle10(targetDocument, hash, css); 11019 } 11020 return () => { 11021 const count = runtime.documents.get(targetDocument); 11022 if (count === void 0) { 11023 return; 11024 } 11025 if (count <= 1) { 11026 runtime.documents.delete(targetDocument); 11027 return; 11028 } 11029 runtime.documents.set(targetDocument, count - 1); 11030 }; 11031 } 11032 function registerStyle10(hash, css) { 11033 const runtime = getRuntime10(); 11034 runtime.styles.set(hash, css); 11035 for (const targetDocument of runtime.documents.keys()) { 11036 injectStyle10(targetDocument, hash, css); 11037 } 11038 } 11039 if (typeof process === "undefined" || true) { 11040 registerStyle10("2a111665b3", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer compositions{._7f5dbf30e44a43dd__icon-button{--wp-ui-button-aspect-ratio:1;--wp-ui-button-padding-inline:0px;--wp-ui-button-min-width:unset}._1b3c0d159ecbf3d5__icon{margin:-1px}}}"); 11041 } 11042 var style_default9 = { "icon-button": "_7f5dbf30e44a43dd__icon-button", "icon": "_1b3c0d159ecbf3d5__icon" }; 11043 var IconButton = (0, import_element23.forwardRef)( 11044 function UnforwardedIconButton({ 11045 label, 11046 className, 11047 // Prevent accidental forwarding of `children` 11048 children: _children, 11049 disabled: disabled2, 11050 focusableWhenDisabled = true, 11051 icon, 11052 size: size4, 11053 shortcut, 11054 positioner, 11055 "aria-describedby": ariaDescribedBy, 11056 "aria-keyshortcuts": ariaKeyShortcuts, 11057 ...restProps 11058 }, ref) { 11059 const classes = clsx_default(style_default9["icon-button"], className); 11060 const { descriptionId, targetProps } = useKeyboardShortcutProps({ 11061 "aria-describedby": ariaDescribedBy, 11062 "aria-keyshortcuts": ariaKeyShortcuts, 11063 shortcut 11064 }); 11065 return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(Root, { children: [ 11066 /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)( 11067 Trigger, 11068 { 11069 ref, 11070 ...targetProps, 11071 disabled: disabled2 && !focusableWhenDisabled, 11072 render: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( 11073 Button4, 11074 { 11075 ...restProps, 11076 size: size4, 11077 "aria-label": label, 11078 disabled: disabled2, 11079 focusableWhenDisabled 11080 } 11081 ), 11082 className: classes, 11083 children: [ 11084 /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Icon, { icon, size: 24, className: style_default9.icon }), 11085 shortcut && descriptionId && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( 11086 KeyboardShortcutDescription, 11087 { 11088 descriptionId, 11089 shortcut 11090 } 11091 ) 11092 ] 11093 } 11094 ), 11095 /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(Popup, { positioner, children: [ 11096 label, 11097 shortcut && /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_jsx_runtime36.Fragment, { children: [ 11098 " ", 11099 /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(KeyboardShortcutDisplay, { shortcut }) 11100 ] }) 11101 ] }) 11102 ] }); 11103 } 11104 ); 11105 11106 // packages/ui/build-module/card/index.mjs 11107 var card_exports = {}; 11108 __export(card_exports, { 11109 Content: () => Content, 11110 FullBleed: () => FullBleed, 11111 Header: () => Header, 11112 Root: () => Root2, 11113 Title: () => Title 11114 }); 11115 11116 // packages/ui/build-module/card/root.mjs 11117 var import_element24 = __toESM(require_element(), 1); 11118 var STYLE_HASH_ATTRIBUTE11 = "data-wp-hash"; 11119 function getRuntime11() { 11120 const globalScope = globalThis; 11121 if (globalScope.__wpStyleRuntime) { 11122 return globalScope.__wpStyleRuntime; 11123 } 11124 globalScope.__wpStyleRuntime = { 11125 documents: /* @__PURE__ */ new Map(), 11126 styles: /* @__PURE__ */ new Map(), 11127 injectedStyles: /* @__PURE__ */ new WeakMap() 11128 }; 11129 if (typeof document !== "undefined") { 11130 registerDocument11(document); 11131 } 11132 return globalScope.__wpStyleRuntime; 11133 } 11134 function documentContainsStyleHash11(targetDocument, hash) { 11135 if (!targetDocument.head) { 11136 return false; 11137 } 11138 for (const style of targetDocument.head.querySelectorAll( 11139 `style[$STYLE_HASH_ATTRIBUTE11}]` 11140 )) { 11141 if (style.getAttribute(STYLE_HASH_ATTRIBUTE11) === hash) { 11142 return true; 11143 } 11144 } 11145 return false; 11146 } 11147 function injectStyle11(targetDocument, hash, css) { 11148 if (!targetDocument.head) { 11149 return; 11150 } 11151 const runtime = getRuntime11(); 11152 let injectedStyles = runtime.injectedStyles.get(targetDocument); 11153 if (!injectedStyles) { 11154 injectedStyles = /* @__PURE__ */ new Set(); 11155 runtime.injectedStyles.set(targetDocument, injectedStyles); 11156 } 11157 if (injectedStyles.has(hash)) { 11158 return; 11159 } 11160 if (documentContainsStyleHash11(targetDocument, hash)) { 11161 injectedStyles.add(hash); 11162 return; 11163 } 11164 const style = targetDocument.createElement("style"); 11165 style.setAttribute(STYLE_HASH_ATTRIBUTE11, hash); 11166 style.appendChild(targetDocument.createTextNode(css)); 11167 targetDocument.head.appendChild(style); 11168 injectedStyles.add(hash); 11169 } 11170 function registerDocument11(targetDocument) { 11171 const runtime = getRuntime11(); 11172 runtime.documents.set( 11173 targetDocument, 11174 (runtime.documents.get(targetDocument) ?? 0) + 1 11175 ); 11176 for (const [hash, css] of runtime.styles) { 11177 injectStyle11(targetDocument, hash, css); 11178 } 11179 return () => { 11180 const count = runtime.documents.get(targetDocument); 11181 if (count === void 0) { 11182 return; 11183 } 11184 if (count <= 1) { 11185 runtime.documents.delete(targetDocument); 11186 return; 11187 } 11188 runtime.documents.set(targetDocument, count - 1); 11189 }; 11190 } 11191 function registerStyle11(hash, css) { 11192 const runtime = getRuntime11(); 11193 runtime.styles.set(hash, css); 11194 for (const targetDocument of runtime.documents.keys()) { 11195 injectStyle11(targetDocument, hash, css); 11196 } 11197 } 11198 if (typeof process === "undefined" || true) { 11199 registerStyle11("37477070fb", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{.ccc29f9575c4c758__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 11200 } 11201 var resets_default4 = { "box-sizing": "ccc29f9575c4c758__box-sizing" }; 11202 if (typeof process === "undefined" || true) { 11203 registerStyle11("ada2aa0e9f", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.bced04d30c075714__root{--wp-ui-card-padding:var(--wpds-dimension-padding-2xl,24px);--wp-ui-card-header-content-gap:var(--wpds-dimension-gap-xl,24px);--wp-ui-card-header-content-margin:calc(var(--wp-ui-card-header-content-gap) - var(--wp-ui-card-padding));background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:1px solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-lg,8px);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);display:flex;flex-direction:column;overflow:clip}.b4b2578de6f75764__header,.cadd1062398e929c__content{padding:var(--wp-ui-card-padding);&:not(:first-child):not(:last-child){padding-block-end:0}}.b4b2578de6f75764__header+.cadd1062398e929c__content{margin-block-start:var(--wp-ui-card-header-content-margin);padding-block-start:0}.c25959d41c245c8c__fullbleed{margin-inline:calc(var(--wp-ui-card-padding)*-1);width:calc(100% + var(--wp-ui-card-padding)*2)}.bced04d30c075714__root>:is(.b4b2578de6f75764__header,.cadd1062398e929c__content):first-child>.c25959d41c245c8c__fullbleed:first-child{margin-block-start:calc(var(--wp-ui-card-padding)*-1)}:is(.b4b2578de6f75764__header,.cadd1062398e929c__content):last-child>.c25959d41c245c8c__fullbleed:last-child{margin-block-end:calc(var(--wp-ui-card-padding)*-1)}}}"); 11204 } 11205 var style_default10 = { "root": "bced04d30c075714__root", "header": "b4b2578de6f75764__header", "content": "cadd1062398e929c__content", "fullbleed": "c25959d41c245c8c__fullbleed" }; 11206 var Root2 = (0, import_element24.forwardRef)(function Card({ render, ...restProps }, ref) { 11207 const mergedClassName = clsx_default(style_default10.root, resets_default4["box-sizing"]); 11208 const element = useRender({ 11209 defaultTagName: "div", 11210 render, 11211 ref, 11212 props: mergeProps({ className: mergedClassName }, restProps) 11213 }); 11214 return element; 11215 }); 11216 11217 // packages/ui/build-module/card/header.mjs 11218 var import_element25 = __toESM(require_element(), 1); 11219 var STYLE_HASH_ATTRIBUTE12 = "data-wp-hash"; 11220 function getRuntime12() { 11221 const globalScope = globalThis; 11222 if (globalScope.__wpStyleRuntime) { 11223 return globalScope.__wpStyleRuntime; 11224 } 11225 globalScope.__wpStyleRuntime = { 11226 documents: /* @__PURE__ */ new Map(), 11227 styles: /* @__PURE__ */ new Map(), 11228 injectedStyles: /* @__PURE__ */ new WeakMap() 11229 }; 11230 if (typeof document !== "undefined") { 11231 registerDocument12(document); 11232 } 11233 return globalScope.__wpStyleRuntime; 11234 } 11235 function documentContainsStyleHash12(targetDocument, hash) { 11236 if (!targetDocument.head) { 11237 return false; 11238 } 11239 for (const style of targetDocument.head.querySelectorAll( 11240 `style[$STYLE_HASH_ATTRIBUTE12}]` 11241 )) { 11242 if (style.getAttribute(STYLE_HASH_ATTRIBUTE12) === hash) { 11243 return true; 11244 } 11245 } 11246 return false; 11247 } 11248 function injectStyle12(targetDocument, hash, css) { 11249 if (!targetDocument.head) { 11250 return; 11251 } 11252 const runtime = getRuntime12(); 11253 let injectedStyles = runtime.injectedStyles.get(targetDocument); 11254 if (!injectedStyles) { 11255 injectedStyles = /* @__PURE__ */ new Set(); 11256 runtime.injectedStyles.set(targetDocument, injectedStyles); 11257 } 11258 if (injectedStyles.has(hash)) { 11259 return; 11260 } 11261 if (documentContainsStyleHash12(targetDocument, hash)) { 11262 injectedStyles.add(hash); 11263 return; 11264 } 11265 const style = targetDocument.createElement("style"); 11266 style.setAttribute(STYLE_HASH_ATTRIBUTE12, hash); 11267 style.appendChild(targetDocument.createTextNode(css)); 11268 targetDocument.head.appendChild(style); 11269 injectedStyles.add(hash); 11270 } 11271 function registerDocument12(targetDocument) { 11272 const runtime = getRuntime12(); 11273 runtime.documents.set( 11274 targetDocument, 11275 (runtime.documents.get(targetDocument) ?? 0) + 1 11276 ); 11277 for (const [hash, css] of runtime.styles) { 11278 injectStyle12(targetDocument, hash, css); 11279 } 11280 return () => { 11281 const count = runtime.documents.get(targetDocument); 11282 if (count === void 0) { 11283 return; 11284 } 11285 if (count <= 1) { 11286 runtime.documents.delete(targetDocument); 11287 return; 11288 } 11289 runtime.documents.set(targetDocument, count - 1); 11290 }; 11291 } 11292 function registerStyle12(hash, css) { 11293 const runtime = getRuntime12(); 11294 runtime.styles.set(hash, css); 11295 for (const targetDocument of runtime.documents.keys()) { 11296 injectStyle12(targetDocument, hash, css); 11297 } 11298 } 11299 if (typeof process === "undefined" || true) { 11300 registerStyle12("ada2aa0e9f", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.bced04d30c075714__root{--wp-ui-card-padding:var(--wpds-dimension-padding-2xl,24px);--wp-ui-card-header-content-gap:var(--wpds-dimension-gap-xl,24px);--wp-ui-card-header-content-margin:calc(var(--wp-ui-card-header-content-gap) - var(--wp-ui-card-padding));background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:1px solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-lg,8px);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);display:flex;flex-direction:column;overflow:clip}.b4b2578de6f75764__header,.cadd1062398e929c__content{padding:var(--wp-ui-card-padding);&:not(:first-child):not(:last-child){padding-block-end:0}}.b4b2578de6f75764__header+.cadd1062398e929c__content{margin-block-start:var(--wp-ui-card-header-content-margin);padding-block-start:0}.c25959d41c245c8c__fullbleed{margin-inline:calc(var(--wp-ui-card-padding)*-1);width:calc(100% + var(--wp-ui-card-padding)*2)}.bced04d30c075714__root>:is(.b4b2578de6f75764__header,.cadd1062398e929c__content):first-child>.c25959d41c245c8c__fullbleed:first-child{margin-block-start:calc(var(--wp-ui-card-padding)*-1)}:is(.b4b2578de6f75764__header,.cadd1062398e929c__content):last-child>.c25959d41c245c8c__fullbleed:last-child{margin-block-end:calc(var(--wp-ui-card-padding)*-1)}}}"); 11301 } 11302 var style_default11 = { "root": "bced04d30c075714__root", "header": "b4b2578de6f75764__header", "content": "cadd1062398e929c__content", "fullbleed": "c25959d41c245c8c__fullbleed" }; 11303 var Header = (0, import_element25.forwardRef)( 11304 function CardHeader({ render, ...props }, ref) { 11305 const element = useRender({ 11306 defaultTagName: "div", 11307 render, 11308 ref, 11309 props: mergeProps({ className: style_default11.header }, props) 11310 }); 11311 return element; 11312 } 11313 ); 11314 11315 // packages/ui/build-module/card/content.mjs 11316 var import_element26 = __toESM(require_element(), 1); 11317 var STYLE_HASH_ATTRIBUTE13 = "data-wp-hash"; 11318 function getRuntime13() { 11319 const globalScope = globalThis; 11320 if (globalScope.__wpStyleRuntime) { 11321 return globalScope.__wpStyleRuntime; 11322 } 11323 globalScope.__wpStyleRuntime = { 11324 documents: /* @__PURE__ */ new Map(), 11325 styles: /* @__PURE__ */ new Map(), 11326 injectedStyles: /* @__PURE__ */ new WeakMap() 11327 }; 11328 if (typeof document !== "undefined") { 11329 registerDocument13(document); 11330 } 11331 return globalScope.__wpStyleRuntime; 11332 } 11333 function documentContainsStyleHash13(targetDocument, hash) { 11334 if (!targetDocument.head) { 11335 return false; 11336 } 11337 for (const style of targetDocument.head.querySelectorAll( 11338 `style[$STYLE_HASH_ATTRIBUTE13}]` 11339 )) { 11340 if (style.getAttribute(STYLE_HASH_ATTRIBUTE13) === hash) { 11341 return true; 11342 } 11343 } 11344 return false; 11345 } 11346 function injectStyle13(targetDocument, hash, css) { 11347 if (!targetDocument.head) { 11348 return; 11349 } 11350 const runtime = getRuntime13(); 11351 let injectedStyles = runtime.injectedStyles.get(targetDocument); 11352 if (!injectedStyles) { 11353 injectedStyles = /* @__PURE__ */ new Set(); 11354 runtime.injectedStyles.set(targetDocument, injectedStyles); 11355 } 11356 if (injectedStyles.has(hash)) { 11357 return; 11358 } 11359 if (documentContainsStyleHash13(targetDocument, hash)) { 11360 injectedStyles.add(hash); 11361 return; 11362 } 11363 const style = targetDocument.createElement("style"); 11364 style.setAttribute(STYLE_HASH_ATTRIBUTE13, hash); 11365 style.appendChild(targetDocument.createTextNode(css)); 11366 targetDocument.head.appendChild(style); 11367 injectedStyles.add(hash); 11368 } 11369 function registerDocument13(targetDocument) { 11370 const runtime = getRuntime13(); 11371 runtime.documents.set( 11372 targetDocument, 11373 (runtime.documents.get(targetDocument) ?? 0) + 1 11374 ); 11375 for (const [hash, css] of runtime.styles) { 11376 injectStyle13(targetDocument, hash, css); 11377 } 11378 return () => { 11379 const count = runtime.documents.get(targetDocument); 11380 if (count === void 0) { 11381 return; 11382 } 11383 if (count <= 1) { 11384 runtime.documents.delete(targetDocument); 11385 return; 11386 } 11387 runtime.documents.set(targetDocument, count - 1); 11388 }; 11389 } 11390 function registerStyle13(hash, css) { 11391 const runtime = getRuntime13(); 11392 runtime.styles.set(hash, css); 11393 for (const targetDocument of runtime.documents.keys()) { 11394 injectStyle13(targetDocument, hash, css); 11395 } 11396 } 11397 if (typeof process === "undefined" || true) { 11398 registerStyle13("ada2aa0e9f", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.bced04d30c075714__root{--wp-ui-card-padding:var(--wpds-dimension-padding-2xl,24px);--wp-ui-card-header-content-gap:var(--wpds-dimension-gap-xl,24px);--wp-ui-card-header-content-margin:calc(var(--wp-ui-card-header-content-gap) - var(--wp-ui-card-padding));background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:1px solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-lg,8px);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);display:flex;flex-direction:column;overflow:clip}.b4b2578de6f75764__header,.cadd1062398e929c__content{padding:var(--wp-ui-card-padding);&:not(:first-child):not(:last-child){padding-block-end:0}}.b4b2578de6f75764__header+.cadd1062398e929c__content{margin-block-start:var(--wp-ui-card-header-content-margin);padding-block-start:0}.c25959d41c245c8c__fullbleed{margin-inline:calc(var(--wp-ui-card-padding)*-1);width:calc(100% + var(--wp-ui-card-padding)*2)}.bced04d30c075714__root>:is(.b4b2578de6f75764__header,.cadd1062398e929c__content):first-child>.c25959d41c245c8c__fullbleed:first-child{margin-block-start:calc(var(--wp-ui-card-padding)*-1)}:is(.b4b2578de6f75764__header,.cadd1062398e929c__content):last-child>.c25959d41c245c8c__fullbleed:last-child{margin-block-end:calc(var(--wp-ui-card-padding)*-1)}}}"); 11399 } 11400 var style_default12 = { "root": "bced04d30c075714__root", "header": "b4b2578de6f75764__header", "content": "cadd1062398e929c__content", "fullbleed": "c25959d41c245c8c__fullbleed" }; 11401 var Content = (0, import_element26.forwardRef)( 11402 function CardContent({ render, ...props }, ref) { 11403 const element = useRender({ 11404 defaultTagName: "div", 11405 render, 11406 ref, 11407 props: mergeProps({ className: style_default12.content }, props) 11408 }); 11409 return element; 11410 } 11411 ); 11412 11413 // packages/ui/build-module/card/full-bleed.mjs 11414 var import_element27 = __toESM(require_element(), 1); 11415 var STYLE_HASH_ATTRIBUTE14 = "data-wp-hash"; 11416 function getRuntime14() { 11417 const globalScope = globalThis; 11418 if (globalScope.__wpStyleRuntime) { 11419 return globalScope.__wpStyleRuntime; 11420 } 11421 globalScope.__wpStyleRuntime = { 11422 documents: /* @__PURE__ */ new Map(), 11423 styles: /* @__PURE__ */ new Map(), 11424 injectedStyles: /* @__PURE__ */ new WeakMap() 11425 }; 11426 if (typeof document !== "undefined") { 11427 registerDocument14(document); 11428 } 11429 return globalScope.__wpStyleRuntime; 11430 } 11431 function documentContainsStyleHash14(targetDocument, hash) { 11432 if (!targetDocument.head) { 11433 return false; 11434 } 11435 for (const style of targetDocument.head.querySelectorAll( 11436 `style[$STYLE_HASH_ATTRIBUTE14}]` 11437 )) { 11438 if (style.getAttribute(STYLE_HASH_ATTRIBUTE14) === hash) { 11439 return true; 11440 } 11441 } 11442 return false; 11443 } 11444 function injectStyle14(targetDocument, hash, css) { 11445 if (!targetDocument.head) { 11446 return; 11447 } 11448 const runtime = getRuntime14(); 11449 let injectedStyles = runtime.injectedStyles.get(targetDocument); 11450 if (!injectedStyles) { 11451 injectedStyles = /* @__PURE__ */ new Set(); 11452 runtime.injectedStyles.set(targetDocument, injectedStyles); 11453 } 11454 if (injectedStyles.has(hash)) { 11455 return; 11456 } 11457 if (documentContainsStyleHash14(targetDocument, hash)) { 11458 injectedStyles.add(hash); 11459 return; 11460 } 11461 const style = targetDocument.createElement("style"); 11462 style.setAttribute(STYLE_HASH_ATTRIBUTE14, hash); 11463 style.appendChild(targetDocument.createTextNode(css)); 11464 targetDocument.head.appendChild(style); 11465 injectedStyles.add(hash); 11466 } 11467 function registerDocument14(targetDocument) { 11468 const runtime = getRuntime14(); 11469 runtime.documents.set( 11470 targetDocument, 11471 (runtime.documents.get(targetDocument) ?? 0) + 1 11472 ); 11473 for (const [hash, css] of runtime.styles) { 11474 injectStyle14(targetDocument, hash, css); 11475 } 11476 return () => { 11477 const count = runtime.documents.get(targetDocument); 11478 if (count === void 0) { 11479 return; 11480 } 11481 if (count <= 1) { 11482 runtime.documents.delete(targetDocument); 11483 return; 11484 } 11485 runtime.documents.set(targetDocument, count - 1); 11486 }; 11487 } 11488 function registerStyle14(hash, css) { 11489 const runtime = getRuntime14(); 11490 runtime.styles.set(hash, css); 11491 for (const targetDocument of runtime.documents.keys()) { 11492 injectStyle14(targetDocument, hash, css); 11493 } 11494 } 11495 if (typeof process === "undefined" || true) { 11496 registerStyle14("ada2aa0e9f", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.bced04d30c075714__root{--wp-ui-card-padding:var(--wpds-dimension-padding-2xl,24px);--wp-ui-card-header-content-gap:var(--wpds-dimension-gap-xl,24px);--wp-ui-card-header-content-margin:calc(var(--wp-ui-card-header-content-gap) - var(--wp-ui-card-padding));background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:1px solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-lg,8px);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);display:flex;flex-direction:column;overflow:clip}.b4b2578de6f75764__header,.cadd1062398e929c__content{padding:var(--wp-ui-card-padding);&:not(:first-child):not(:last-child){padding-block-end:0}}.b4b2578de6f75764__header+.cadd1062398e929c__content{margin-block-start:var(--wp-ui-card-header-content-margin);padding-block-start:0}.c25959d41c245c8c__fullbleed{margin-inline:calc(var(--wp-ui-card-padding)*-1);width:calc(100% + var(--wp-ui-card-padding)*2)}.bced04d30c075714__root>:is(.b4b2578de6f75764__header,.cadd1062398e929c__content):first-child>.c25959d41c245c8c__fullbleed:first-child{margin-block-start:calc(var(--wp-ui-card-padding)*-1)}:is(.b4b2578de6f75764__header,.cadd1062398e929c__content):last-child>.c25959d41c245c8c__fullbleed:last-child{margin-block-end:calc(var(--wp-ui-card-padding)*-1)}}}"); 11497 } 11498 var style_default13 = { "root": "bced04d30c075714__root", "header": "b4b2578de6f75764__header", "content": "cadd1062398e929c__content", "fullbleed": "c25959d41c245c8c__fullbleed" }; 11499 var FullBleed = (0, import_element27.forwardRef)( 11500 function CardFullBleed({ render, ...props }, ref) { 11501 const element = useRender({ 11502 defaultTagName: "div", 11503 render, 11504 ref, 11505 props: mergeProps( 11506 { className: style_default13.fullbleed }, 11507 props 11508 ) 11509 }); 11510 return element; 11511 } 11512 ); 11513 11514 // packages/ui/build-module/card/title.mjs 11515 var import_element28 = __toESM(require_element(), 1); 11516 var import_jsx_runtime37 = __toESM(require_jsx_runtime(), 1); 11517 var DEFAULT_TAG = /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", {}); 11518 var Title = (0, import_element28.forwardRef)( 11519 function CardTitle({ render = DEFAULT_TAG, children, ...props }, ref) { 11520 return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( 11521 Text, 11522 { 11523 ref, 11524 variant: "heading-lg", 11525 render, 11526 ...props, 11527 children 11528 } 11529 ); 11530 } 11531 ); 11532 11533 // packages/ui/build-module/collapsible/panel.mjs 11534 var import_element29 = __toESM(require_element(), 1); 11535 var import_jsx_runtime38 = __toESM(require_jsx_runtime(), 1); 11536 var Panel = (0, import_element29.forwardRef)( 11537 function CollapsiblePanel3(props, forwardedRef) { 11538 return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(index_parts_exports.Panel, { ref: forwardedRef, ...props }); 11539 } 11540 ); 11541 11542 // packages/ui/build-module/collapsible/root.mjs 11543 var import_element30 = __toESM(require_element(), 1); 11544 var import_jsx_runtime39 = __toESM(require_jsx_runtime(), 1); 11545 var Root3 = (0, import_element30.forwardRef)( 11546 function CollapsibleRoot3(props, forwardedRef) { 11547 return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(index_parts_exports.Root, { ref: forwardedRef, ...props }); 11548 } 11549 ); 11550 11551 // packages/ui/build-module/collapsible/trigger.mjs 11552 var import_element31 = __toESM(require_element(), 1); 11553 var import_jsx_runtime40 = __toESM(require_jsx_runtime(), 1); 11554 var Trigger2 = (0, import_element31.forwardRef)( 11555 function CollapsibleTrigger3(props, forwardedRef) { 11556 return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(index_parts_exports.Trigger, { ref: forwardedRef, ...props }); 11557 } 11558 ); 11559 11560 // packages/ui/build-module/collapsible-card/index.mjs 11561 var collapsible_card_exports = {}; 11562 __export(collapsible_card_exports, { 11563 Content: () => Content2, 11564 Header: () => Header2, 11565 HeaderDescription: () => HeaderDescription, 11566 Root: () => Root32 11567 }); 11568 11569 // packages/ui/build-module/collapsible-card/root.mjs 11570 var import_element32 = __toESM(require_element(), 1); 11571 var import_jsx_runtime41 = __toESM(require_jsx_runtime(), 1); 11572 var Root32 = (0, import_element32.forwardRef)( 11573 function CollapsibleCardRoot({ render, ...restProps }, ref) { 11574 return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( 11575 Root3, 11576 { 11577 ref, 11578 render: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Root2, { render }), 11579 ...restProps 11580 } 11581 ); 11582 } 11583 ); 11584 11585 // packages/ui/build-module/collapsible-card/header.mjs 11586 var import_compose = __toESM(require_compose(), 1); 11587 var import_element34 = __toESM(require_element(), 1); 11588 11589 // packages/ui/build-module/collapsible-card/context.mjs 11590 var import_element33 = __toESM(require_element(), 1); 11591 var HeaderDescriptionIdContext = (0, import_element33.createContext)(null); 11592 11593 // packages/ui/build-module/collapsible-card/header.mjs 11594 var import_jsx_runtime42 = __toESM(require_jsx_runtime(), 1); 11595 var STYLE_HASH_ATTRIBUTE15 = "data-wp-hash"; 11596 function getRuntime15() { 11597 const globalScope = globalThis; 11598 if (globalScope.__wpStyleRuntime) { 11599 return globalScope.__wpStyleRuntime; 11600 } 11601 globalScope.__wpStyleRuntime = { 11602 documents: /* @__PURE__ */ new Map(), 11603 styles: /* @__PURE__ */ new Map(), 11604 injectedStyles: /* @__PURE__ */ new WeakMap() 11605 }; 11606 if (typeof document !== "undefined") { 11607 registerDocument15(document); 11608 } 11609 return globalScope.__wpStyleRuntime; 11610 } 11611 function documentContainsStyleHash15(targetDocument, hash) { 11612 if (!targetDocument.head) { 11613 return false; 11614 } 11615 for (const style of targetDocument.head.querySelectorAll( 11616 `style[$STYLE_HASH_ATTRIBUTE15}]` 11617 )) { 11618 if (style.getAttribute(STYLE_HASH_ATTRIBUTE15) === hash) { 11619 return true; 11620 } 11621 } 11622 return false; 11623 } 11624 function injectStyle15(targetDocument, hash, css) { 11625 if (!targetDocument.head) { 11626 return; 11627 } 11628 const runtime = getRuntime15(); 11629 let injectedStyles = runtime.injectedStyles.get(targetDocument); 11630 if (!injectedStyles) { 11631 injectedStyles = /* @__PURE__ */ new Set(); 11632 runtime.injectedStyles.set(targetDocument, injectedStyles); 11633 } 11634 if (injectedStyles.has(hash)) { 11635 return; 11636 } 11637 if (documentContainsStyleHash15(targetDocument, hash)) { 11638 injectedStyles.add(hash); 11639 return; 11640 } 11641 const style = targetDocument.createElement("style"); 11642 style.setAttribute(STYLE_HASH_ATTRIBUTE15, hash); 11643 style.appendChild(targetDocument.createTextNode(css)); 11644 targetDocument.head.appendChild(style); 11645 injectedStyles.add(hash); 11646 } 11647 function registerDocument15(targetDocument) { 11648 const runtime = getRuntime15(); 11649 runtime.documents.set( 11650 targetDocument, 11651 (runtime.documents.get(targetDocument) ?? 0) + 1 11652 ); 11653 for (const [hash, css] of runtime.styles) { 11654 injectStyle15(targetDocument, hash, css); 11655 } 11656 return () => { 11657 const count = runtime.documents.get(targetDocument); 11658 if (count === void 0) { 11659 return; 11660 } 11661 if (count <= 1) { 11662 runtime.documents.delete(targetDocument); 11663 return; 11664 } 11665 runtime.documents.set(targetDocument, count - 1); 11666 }; 11667 } 11668 function registerStyle15(hash, css) { 11669 const runtime = getRuntime15(); 11670 runtime.styles.set(hash, css); 11671 for (const targetDocument of runtime.documents.keys()) { 11672 injectStyle15(targetDocument, hash, css); 11673 } 11674 } 11675 if (typeof process === "undefined" || true) { 11676 registerStyle15("4b918be902", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.c518fd8936700931__heading-wrapper{--_gcd-heading-color:inherit;--_gcd-heading-font-size:inherit;--_gcd-heading-font-weight:inherit;--_gcd-heading-margin:0;font-family:inherit;line-height:inherit}.fea34f4e9dfacd71__header-content{flex:1;min-width:0}._0d708389b4074955__header-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}.ff044cc511d350dc__header-trigger-positioner{align-self:flex-start;flex-shrink:0;margin-block-start:calc(var(--wpds-typography-line-height-sm, 20px)/2);max-height:0;overflow:visible}.fff122094d192bfe__header-trigger-wrapper{border-radius:var(--wpds-border-radius-sm,2px);display:flex;translate:0 -50%}._2d6d78d85e28c6a1__header:focus-visible .fff122094d192bfe__header-trigger-wrapper{--_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))}@media not (prefers-reduced-motion){.bd8376580a8ef445__header-trigger{transition:rotate .15s ease-out}}._2d6d78d85e28c6a1__header[data-panel-open] .bd8376580a8ef445__header-trigger{rotate:180deg}._2d6d78d85e28c6a1__header[data-disabled] .bd8376580a8ef445__header-trigger{color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d)}.b470df8119d32037__content{height:var(--collapsible-panel-height);margin-block-start:var(--wp-ui-card-header-content-margin);overflow:hidden}.b470df8119d32037__content._640cbe83366c89c3__overflow-visible{overflow:visible}.b470df8119d32037__content[hidden]:not([hidden=until-found]){display:none}.b470df8119d32037__content[data-ending-style],.b470df8119d32037__content[data-starting-style]{height:0}@media not (prefers-reduced-motion){.b470df8119d32037__content{transition:all .15s ease-out}}}@layer compositions{._51c02cc98c745389__content-inner{padding-block-start:0}._2d6d78d85e28c6a1__header{align-items:stretch;display:flex;flex-direction:row;gap:var(--wpds-dimension-gap-sm,8px);outline:none}._2d6d78d85e28c6a1__header:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}}}"); 11677 } 11678 var style_module_default = { "heading-wrapper": "c518fd8936700931__heading-wrapper", "header-content": "fea34f4e9dfacd71__header-content", "header-description": "_0d708389b4074955__header-description", "header-trigger-positioner": "ff044cc511d350dc__header-trigger-positioner", "header-trigger-wrapper": "fff122094d192bfe__header-trigger-wrapper", "header": "_2d6d78d85e28c6a1__header", "header-trigger": "bd8376580a8ef445__header-trigger", "content": "b470df8119d32037__content", "overflow-visible": "_640cbe83366c89c3__overflow-visible", "content-inner": "_51c02cc98c745389__content-inner" }; 11679 if (typeof process === "undefined" || true) { 11680 registerStyle15("726f348f3f", "._78c10a0773e51a91__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)}._5b33aa2d48624b4f__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)}}._980b3b4776ac8f81__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._43e478b4279a076c__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._698099e25b0fb1a6__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)._326aee4184d261fd__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)}.e9576240835601ba__a,.e9576240835601ba__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)}._3f05789653864a73__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)}._3c72ff72abe57859__li{margin:var(--_gcd-li-margin,0)}[role=treeitem] span._79d16267c15d9eb2__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)}"); 11681 } 11682 var global_css_defense_default4 = { "button": "_78c10a0773e51a91__button", "input": "_5b33aa2d48624b4f__input", "textarea": "_980b3b4776ac8f81__textarea", "div": "_43e478b4279a076c__div", "p": "_698099e25b0fb1a6__p", "heading": "_326aee4184d261fd__heading", "a": "e9576240835601ba__a", "ol": "_3f05789653864a73__ol", "li": "_3c72ff72abe57859__li", "span": "_79d16267c15d9eb2__span" }; 11683 var Header2 = (0, import_element34.forwardRef)( 11684 function CollapsibleCardHeader({ 11685 children, 11686 className, 11687 render, 11688 "aria-describedby": ariaDescribedByProp, 11689 ...restProps 11690 }, ref) { 11691 const [descriptionIds, setDescriptionIds] = (0, import_element34.useState)( 11692 [] 11693 ); 11694 const [orderedDescriptionIds, setOrderedDescriptionIds] = (0, import_element34.useState)([]); 11695 const headerContentRef = (0, import_element34.useRef)(null); 11696 const registerDescriptionId = (0, import_element34.useCallback)((id) => { 11697 setDescriptionIds((currentDescriptionIds) => { 11698 if (currentDescriptionIds.includes(id)) { 11699 return currentDescriptionIds; 11700 } 11701 return [...currentDescriptionIds, id]; 11702 }); 11703 return () => { 11704 setDescriptionIds( 11705 (currentDescriptionIds) => currentDescriptionIds.filter( 11706 (descriptionId) => descriptionId !== id 11707 ) 11708 ); 11709 }; 11710 }, []); 11711 const contextValue = (0, import_element34.useMemo)( 11712 () => ({ registerDescriptionId }), 11713 [registerDescriptionId] 11714 ); 11715 (0, import_compose.useIsomorphicLayoutEffect)(() => { 11716 const registeredDescriptionIds = new Set(descriptionIds); 11717 const nextDescriptionIds = Array.from( 11718 headerContentRef.current?.querySelectorAll("[id]") ?? [] 11719 ).map((element) => element.id).filter((id) => registeredDescriptionIds.has(id)); 11720 setOrderedDescriptionIds((currentDescriptionIds) => { 11721 if (currentDescriptionIds.length === nextDescriptionIds.length && currentDescriptionIds.every( 11722 (id, index2) => id === nextDescriptionIds[index2] 11723 )) { 11724 return currentDescriptionIds; 11725 } 11726 return nextDescriptionIds; 11727 }); 11728 }); 11729 const ariaDescribedBy = Array.from( 11730 /* @__PURE__ */ new Set([ 11731 ...ariaDescribedByProp?.split(/\s+/).filter(Boolean) ?? [], 11732 ...orderedDescriptionIds 11733 ]) 11734 ).join(" ") || void 0; 11735 return useRender({ 11736 defaultTagName: "div", 11737 render, 11738 ref, 11739 props: mergeProps(restProps, { 11740 className: clsx_default( 11741 global_css_defense_default4.heading, 11742 style_module_default["heading-wrapper"], 11743 className 11744 ), 11745 children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(HeaderDescriptionIdContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)( 11746 Trigger2, 11747 { 11748 className: style_module_default.header, 11749 render: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Header, {}), 11750 nativeButton: false, 11751 "aria-describedby": ariaDescribedBy, 11752 children: [ 11753 /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( 11754 "div", 11755 { 11756 ref: headerContentRef, 11757 className: style_module_default["header-content"], 11758 children 11759 } 11760 ), 11761 /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( 11762 "div", 11763 { 11764 className: clsx_default( 11765 style_module_default["header-trigger-positioner"] 11766 ), 11767 children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( 11768 "div", 11769 { 11770 className: clsx_default( 11771 style_module_default["header-trigger-wrapper"], 11772 global_css_defense_default4.div 11773 ), 11774 children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( 11775 Icon, 11776 { 11777 icon: chevron_down_default, 11778 className: style_module_default["header-trigger"] 11779 } 11780 ) 11781 } 11782 ) 11783 } 11784 ) 11785 ] 11786 } 11787 ) }) 11788 }) 11789 }); 11790 } 11791 ); 11792 11793 // packages/ui/build-module/collapsible-card/header-description.mjs 11794 var import_element35 = __toESM(require_element(), 1); 11795 var import_jsx_runtime43 = __toESM(require_jsx_runtime(), 1); 11796 var STYLE_HASH_ATTRIBUTE16 = "data-wp-hash"; 11797 function getRuntime16() { 11798 const globalScope = globalThis; 11799 if (globalScope.__wpStyleRuntime) { 11800 return globalScope.__wpStyleRuntime; 11801 } 11802 globalScope.__wpStyleRuntime = { 11803 documents: /* @__PURE__ */ new Map(), 11804 styles: /* @__PURE__ */ new Map(), 11805 injectedStyles: /* @__PURE__ */ new WeakMap() 11806 }; 11807 if (typeof document !== "undefined") { 11808 registerDocument16(document); 11809 } 11810 return globalScope.__wpStyleRuntime; 11811 } 11812 function documentContainsStyleHash16(targetDocument, hash) { 11813 if (!targetDocument.head) { 11814 return false; 11815 } 11816 for (const style of targetDocument.head.querySelectorAll( 11817 `style[$STYLE_HASH_ATTRIBUTE16}]` 11818 )) { 11819 if (style.getAttribute(STYLE_HASH_ATTRIBUTE16) === hash) { 11820 return true; 11821 } 11822 } 11823 return false; 11824 } 11825 function injectStyle16(targetDocument, hash, css) { 11826 if (!targetDocument.head) { 11827 return; 11828 } 11829 const runtime = getRuntime16(); 11830 let injectedStyles = runtime.injectedStyles.get(targetDocument); 11831 if (!injectedStyles) { 11832 injectedStyles = /* @__PURE__ */ new Set(); 11833 runtime.injectedStyles.set(targetDocument, injectedStyles); 11834 } 11835 if (injectedStyles.has(hash)) { 11836 return; 11837 } 11838 if (documentContainsStyleHash16(targetDocument, hash)) { 11839 injectedStyles.add(hash); 11840 return; 11841 } 11842 const style = targetDocument.createElement("style"); 11843 style.setAttribute(STYLE_HASH_ATTRIBUTE16, hash); 11844 style.appendChild(targetDocument.createTextNode(css)); 11845 targetDocument.head.appendChild(style); 11846 injectedStyles.add(hash); 11847 } 11848 function registerDocument16(targetDocument) { 11849 const runtime = getRuntime16(); 11850 runtime.documents.set( 11851 targetDocument, 11852 (runtime.documents.get(targetDocument) ?? 0) + 1 11853 ); 11854 for (const [hash, css] of runtime.styles) { 11855 injectStyle16(targetDocument, hash, css); 11856 } 11857 return () => { 11858 const count = runtime.documents.get(targetDocument); 11859 if (count === void 0) { 11860 return; 11861 } 11862 if (count <= 1) { 11863 runtime.documents.delete(targetDocument); 11864 return; 11865 } 11866 runtime.documents.set(targetDocument, count - 1); 11867 }; 11868 } 11869 function registerStyle16(hash, css) { 11870 const runtime = getRuntime16(); 11871 runtime.styles.set(hash, css); 11872 for (const targetDocument of runtime.documents.keys()) { 11873 injectStyle16(targetDocument, hash, css); 11874 } 11875 } 11876 if (typeof process === "undefined" || true) { 11877 registerStyle16("4b918be902", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.c518fd8936700931__heading-wrapper{--_gcd-heading-color:inherit;--_gcd-heading-font-size:inherit;--_gcd-heading-font-weight:inherit;--_gcd-heading-margin:0;font-family:inherit;line-height:inherit}.fea34f4e9dfacd71__header-content{flex:1;min-width:0}._0d708389b4074955__header-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}.ff044cc511d350dc__header-trigger-positioner{align-self:flex-start;flex-shrink:0;margin-block-start:calc(var(--wpds-typography-line-height-sm, 20px)/2);max-height:0;overflow:visible}.fff122094d192bfe__header-trigger-wrapper{border-radius:var(--wpds-border-radius-sm,2px);display:flex;translate:0 -50%}._2d6d78d85e28c6a1__header:focus-visible .fff122094d192bfe__header-trigger-wrapper{--_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))}@media not (prefers-reduced-motion){.bd8376580a8ef445__header-trigger{transition:rotate .15s ease-out}}._2d6d78d85e28c6a1__header[data-panel-open] .bd8376580a8ef445__header-trigger{rotate:180deg}._2d6d78d85e28c6a1__header[data-disabled] .bd8376580a8ef445__header-trigger{color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d)}.b470df8119d32037__content{height:var(--collapsible-panel-height);margin-block-start:var(--wp-ui-card-header-content-margin);overflow:hidden}.b470df8119d32037__content._640cbe83366c89c3__overflow-visible{overflow:visible}.b470df8119d32037__content[hidden]:not([hidden=until-found]){display:none}.b470df8119d32037__content[data-ending-style],.b470df8119d32037__content[data-starting-style]{height:0}@media not (prefers-reduced-motion){.b470df8119d32037__content{transition:all .15s ease-out}}}@layer compositions{._51c02cc98c745389__content-inner{padding-block-start:0}._2d6d78d85e28c6a1__header{align-items:stretch;display:flex;flex-direction:row;gap:var(--wpds-dimension-gap-sm,8px);outline:none}._2d6d78d85e28c6a1__header:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}}}"); 11878 } 11879 var style_module_default2 = { "heading-wrapper": "c518fd8936700931__heading-wrapper", "header-content": "fea34f4e9dfacd71__header-content", "header-description": "_0d708389b4074955__header-description", "header-trigger-positioner": "ff044cc511d350dc__header-trigger-positioner", "header-trigger-wrapper": "fff122094d192bfe__header-trigger-wrapper", "header": "_2d6d78d85e28c6a1__header", "header-trigger": "bd8376580a8ef445__header-trigger", "content": "b470df8119d32037__content", "overflow-visible": "_640cbe83366c89c3__overflow-visible", "content-inner": "_51c02cc98c745389__content-inner" }; 11880 var DEFAULT_TAG2 = /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", {}); 11881 var HeaderDescription = (0, import_element35.forwardRef)(function CollapsibleCardHeaderDescription({ children, className, id: idProp, render = DEFAULT_TAG2, ...restProps }, ref) { 11882 const generatedId = (0, import_element35.useId)(); 11883 const descriptionId = idProp ?? generatedId; 11884 const context = (0, import_element35.useContext)(HeaderDescriptionIdContext); 11885 if (!context) { 11886 throw new Error( 11887 "CollapsibleCard.HeaderDescription: Missing parent <CollapsibleCard.Header>. Render <CollapsibleCard.HeaderDescription> inside <CollapsibleCard.Header>." 11888 ); 11889 } 11890 (0, import_element35.useEffect)(() => { 11891 return context?.registerDescriptionId(descriptionId); 11892 }, [context, descriptionId]); 11893 return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( 11894 Text, 11895 { 11896 ref, 11897 variant: "body-md", 11898 render, 11899 id: descriptionId, 11900 "aria-hidden": "true", 11901 className: clsx_default(style_module_default2["header-description"], className), 11902 ...restProps, 11903 children 11904 } 11905 ); 11906 }); 11907 11908 // packages/ui/build-module/collapsible-card/content.mjs 11909 var import_element36 = __toESM(require_element(), 1); 11910 var import_jsx_runtime44 = __toESM(require_jsx_runtime(), 1); 11911 var STYLE_HASH_ATTRIBUTE17 = "data-wp-hash"; 11912 function getRuntime17() { 11913 const globalScope = globalThis; 11914 if (globalScope.__wpStyleRuntime) { 11915 return globalScope.__wpStyleRuntime; 11916 } 11917 globalScope.__wpStyleRuntime = { 11918 documents: /* @__PURE__ */ new Map(), 11919 styles: /* @__PURE__ */ new Map(), 11920 injectedStyles: /* @__PURE__ */ new WeakMap() 11921 }; 11922 if (typeof document !== "undefined") { 11923 registerDocument17(document); 11924 } 11925 return globalScope.__wpStyleRuntime; 11926 } 11927 function documentContainsStyleHash17(targetDocument, hash) { 11928 if (!targetDocument.head) { 11929 return false; 11930 } 11931 for (const style of targetDocument.head.querySelectorAll( 11932 `style[$STYLE_HASH_ATTRIBUTE17}]` 11933 )) { 11934 if (style.getAttribute(STYLE_HASH_ATTRIBUTE17) === hash) { 11935 return true; 11936 } 11937 } 11938 return false; 11939 } 11940 function injectStyle17(targetDocument, hash, css) { 11941 if (!targetDocument.head) { 11942 return; 11943 } 11944 const runtime = getRuntime17(); 11945 let injectedStyles = runtime.injectedStyles.get(targetDocument); 11946 if (!injectedStyles) { 11947 injectedStyles = /* @__PURE__ */ new Set(); 11948 runtime.injectedStyles.set(targetDocument, injectedStyles); 11949 } 11950 if (injectedStyles.has(hash)) { 11951 return; 11952 } 11953 if (documentContainsStyleHash17(targetDocument, hash)) { 11954 injectedStyles.add(hash); 11955 return; 11956 } 11957 const style = targetDocument.createElement("style"); 11958 style.setAttribute(STYLE_HASH_ATTRIBUTE17, hash); 11959 style.appendChild(targetDocument.createTextNode(css)); 11960 targetDocument.head.appendChild(style); 11961 injectedStyles.add(hash); 11962 } 11963 function registerDocument17(targetDocument) { 11964 const runtime = getRuntime17(); 11965 runtime.documents.set( 11966 targetDocument, 11967 (runtime.documents.get(targetDocument) ?? 0) + 1 11968 ); 11969 for (const [hash, css] of runtime.styles) { 11970 injectStyle17(targetDocument, hash, css); 11971 } 11972 return () => { 11973 const count = runtime.documents.get(targetDocument); 11974 if (count === void 0) { 11975 return; 11976 } 11977 if (count <= 1) { 11978 runtime.documents.delete(targetDocument); 11979 return; 11980 } 11981 runtime.documents.set(targetDocument, count - 1); 11982 }; 11983 } 11984 function registerStyle17(hash, css) { 11985 const runtime = getRuntime17(); 11986 runtime.styles.set(hash, css); 11987 for (const targetDocument of runtime.documents.keys()) { 11988 injectStyle17(targetDocument, hash, css); 11989 } 11990 } 11991 if (typeof process === "undefined" || true) { 11992 registerStyle17("4b918be902", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.c518fd8936700931__heading-wrapper{--_gcd-heading-color:inherit;--_gcd-heading-font-size:inherit;--_gcd-heading-font-weight:inherit;--_gcd-heading-margin:0;font-family:inherit;line-height:inherit}.fea34f4e9dfacd71__header-content{flex:1;min-width:0}._0d708389b4074955__header-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}.ff044cc511d350dc__header-trigger-positioner{align-self:flex-start;flex-shrink:0;margin-block-start:calc(var(--wpds-typography-line-height-sm, 20px)/2);max-height:0;overflow:visible}.fff122094d192bfe__header-trigger-wrapper{border-radius:var(--wpds-border-radius-sm,2px);display:flex;translate:0 -50%}._2d6d78d85e28c6a1__header:focus-visible .fff122094d192bfe__header-trigger-wrapper{--_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))}@media not (prefers-reduced-motion){.bd8376580a8ef445__header-trigger{transition:rotate .15s ease-out}}._2d6d78d85e28c6a1__header[data-panel-open] .bd8376580a8ef445__header-trigger{rotate:180deg}._2d6d78d85e28c6a1__header[data-disabled] .bd8376580a8ef445__header-trigger{color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d)}.b470df8119d32037__content{height:var(--collapsible-panel-height);margin-block-start:var(--wp-ui-card-header-content-margin);overflow:hidden}.b470df8119d32037__content._640cbe83366c89c3__overflow-visible{overflow:visible}.b470df8119d32037__content[hidden]:not([hidden=until-found]){display:none}.b470df8119d32037__content[data-ending-style],.b470df8119d32037__content[data-starting-style]{height:0}@media not (prefers-reduced-motion){.b470df8119d32037__content{transition:all .15s ease-out}}}@layer compositions{._51c02cc98c745389__content-inner{padding-block-start:0}._2d6d78d85e28c6a1__header{align-items:stretch;display:flex;flex-direction:row;gap:var(--wpds-dimension-gap-sm,8px);outline:none}._2d6d78d85e28c6a1__header:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}}}"); 11993 } 11994 var style_module_default3 = { "heading-wrapper": "c518fd8936700931__heading-wrapper", "header-content": "fea34f4e9dfacd71__header-content", "header-description": "_0d708389b4074955__header-description", "header-trigger-positioner": "ff044cc511d350dc__header-trigger-positioner", "header-trigger-wrapper": "fff122094d192bfe__header-trigger-wrapper", "header": "_2d6d78d85e28c6a1__header", "header-trigger": "bd8376580a8ef445__header-trigger", "content": "b470df8119d32037__content", "overflow-visible": "_640cbe83366c89c3__overflow-visible", "content-inner": "_51c02cc98c745389__content-inner" }; 11995 var Content2 = (0, import_element36.forwardRef)( 11996 function CollapsibleCardContent({ className, render, children, hiddenUntilFound = true, ...restProps }, ref) { 11997 return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)( 11998 Panel, 11999 { 12000 ref, 12001 className: (state) => clsx_default( 12002 style_module_default3.content, 12003 state.open && state.transitionStatus === "idle" && style_module_default3["overflow-visible"], 12004 className 12005 ), 12006 hiddenUntilFound, 12007 ...restProps, 12008 children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)( 12009 Content, 12010 { 12011 className: style_module_default3["content-inner"], 12012 render, 12013 children 12014 } 12015 ) 12016 } 12017 ); 12018 } 12019 ); 12020 12021 // packages/ui/build-module/stack/stack.mjs 12022 var import_element37 = __toESM(require_element(), 1); 12023 var STYLE_HASH_ATTRIBUTE18 = "data-wp-hash"; 12024 function getRuntime18() { 12025 const globalScope = globalThis; 12026 if (globalScope.__wpStyleRuntime) { 12027 return globalScope.__wpStyleRuntime; 12028 } 12029 globalScope.__wpStyleRuntime = { 12030 documents: /* @__PURE__ */ new Map(), 12031 styles: /* @__PURE__ */ new Map(), 12032 injectedStyles: /* @__PURE__ */ new WeakMap() 12033 }; 12034 if (typeof document !== "undefined") { 12035 registerDocument18(document); 12036 } 12037 return globalScope.__wpStyleRuntime; 12038 } 12039 function documentContainsStyleHash18(targetDocument, hash) { 12040 if (!targetDocument.head) { 12041 return false; 12042 } 12043 for (const style of targetDocument.head.querySelectorAll( 12044 `style[$STYLE_HASH_ATTRIBUTE18}]` 12045 )) { 12046 if (style.getAttribute(STYLE_HASH_ATTRIBUTE18) === hash) { 12047 return true; 12048 } 12049 } 12050 return false; 12051 } 12052 function injectStyle18(targetDocument, hash, css) { 12053 if (!targetDocument.head) { 12054 return; 12055 } 12056 const runtime = getRuntime18(); 12057 let injectedStyles = runtime.injectedStyles.get(targetDocument); 12058 if (!injectedStyles) { 12059 injectedStyles = /* @__PURE__ */ new Set(); 12060 runtime.injectedStyles.set(targetDocument, injectedStyles); 12061 } 12062 if (injectedStyles.has(hash)) { 12063 return; 12064 } 12065 if (documentContainsStyleHash18(targetDocument, hash)) { 12066 injectedStyles.add(hash); 12067 return; 12068 } 12069 const style = targetDocument.createElement("style"); 12070 style.setAttribute(STYLE_HASH_ATTRIBUTE18, hash); 12071 style.appendChild(targetDocument.createTextNode(css)); 12072 targetDocument.head.appendChild(style); 12073 injectedStyles.add(hash); 12074 } 12075 function registerDocument18(targetDocument) { 12076 const runtime = getRuntime18(); 12077 runtime.documents.set( 12078 targetDocument, 12079 (runtime.documents.get(targetDocument) ?? 0) + 1 12080 ); 12081 for (const [hash, css] of runtime.styles) { 12082 injectStyle18(targetDocument, hash, css); 12083 } 12084 return () => { 12085 const count = runtime.documents.get(targetDocument); 12086 if (count === void 0) { 12087 return; 12088 } 12089 if (count <= 1) { 12090 runtime.documents.delete(targetDocument); 12091 return; 12092 } 12093 runtime.documents.set(targetDocument, count - 1); 12094 }; 12095 } 12096 function registerStyle18(hash, css) { 12097 const runtime = getRuntime18(); 12098 runtime.styles.set(hash, css); 12099 for (const targetDocument of runtime.documents.keys()) { 12100 injectStyle18(targetDocument, hash, css); 12101 } 12102 } 12103 if (typeof process === "undefined" || true) { 12104 registerStyle18("67591fa198", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._8e8e79c1a2eec43b__stack{display:flex}}}"); 12105 } 12106 var style_default14 = { "stack": "_8e8e79c1a2eec43b__stack" }; 12107 var gapTokens = { 12108 xs: "var(--wpds-dimension-gap-xs, 4px)", 12109 sm: "var(--wpds-dimension-gap-sm, 8px)", 12110 md: "var(--wpds-dimension-gap-md, 12px)", 12111 lg: "var(--wpds-dimension-gap-lg, 16px)", 12112 xl: "var(--wpds-dimension-gap-xl, 24px)", 12113 "2xl": "var(--wpds-dimension-gap-2xl, 32px)", 12114 "3xl": "var(--wpds-dimension-gap-3xl, 40px)" 12115 }; 12116 var Stack = (0, import_element37.forwardRef)( 12117 function UnforwardedStack({ direction, gap, align, justify, wrap, render, ...props }, ref) { 12118 const style = { 12119 gap: gap && gapTokens[gap], 12120 alignItems: align, 12121 justifyContent: justify, 12122 flexDirection: direction, 12123 flexWrap: wrap 12124 }; 12125 const element = useRender({ 12126 render, 12127 ref, 12128 props: mergeProps(props, { 12129 style, 12130 className: style_default14.stack 12131 }) 12132 }); 12133 return element; 12134 } 12135 ); 12136 12137 // packages/ui/build-module/notice/index.mjs 12138 var notice_exports = {}; 12139 __export(notice_exports, { 12140 ActionButton: () => ActionButton, 12141 ActionLink: () => ActionLink, 12142 Actions: () => Actions, 12143 CloseIconButton: () => CloseIconButton, 12144 Description: () => Description, 12145 Root: () => Root4, 12146 Title: () => Title2 12147 }); 12148 12149 // packages/ui/build-module/notice/root.mjs 12150 var import_element38 = __toESM(require_element(), 1); 12151 var import_jsx_runtime45 = __toESM(require_jsx_runtime(), 1); 12152 var STYLE_HASH_ATTRIBUTE19 = "data-wp-hash"; 12153 function getRuntime19() { 12154 const globalScope = globalThis; 12155 if (globalScope.__wpStyleRuntime) { 12156 return globalScope.__wpStyleRuntime; 12157 } 12158 globalScope.__wpStyleRuntime = { 12159 documents: /* @__PURE__ */ new Map(), 12160 styles: /* @__PURE__ */ new Map(), 12161 injectedStyles: /* @__PURE__ */ new WeakMap() 12162 }; 12163 if (typeof document !== "undefined") { 12164 registerDocument19(document); 12165 } 12166 return globalScope.__wpStyleRuntime; 12167 } 12168 function documentContainsStyleHash19(targetDocument, hash) { 12169 if (!targetDocument.head) { 12170 return false; 12171 } 12172 for (const style of targetDocument.head.querySelectorAll( 12173 `style[$STYLE_HASH_ATTRIBUTE19}]` 12174 )) { 12175 if (style.getAttribute(STYLE_HASH_ATTRIBUTE19) === hash) { 12176 return true; 12177 } 12178 } 12179 return false; 12180 } 12181 function injectStyle19(targetDocument, hash, css) { 12182 if (!targetDocument.head) { 12183 return; 12184 } 12185 const runtime = getRuntime19(); 12186 let injectedStyles = runtime.injectedStyles.get(targetDocument); 12187 if (!injectedStyles) { 12188 injectedStyles = /* @__PURE__ */ new Set(); 12189 runtime.injectedStyles.set(targetDocument, injectedStyles); 12190 } 12191 if (injectedStyles.has(hash)) { 12192 return; 12193 } 12194 if (documentContainsStyleHash19(targetDocument, hash)) { 12195 injectedStyles.add(hash); 12196 return; 12197 } 12198 const style = targetDocument.createElement("style"); 12199 style.setAttribute(STYLE_HASH_ATTRIBUTE19, hash); 12200 style.appendChild(targetDocument.createTextNode(css)); 12201 targetDocument.head.appendChild(style); 12202 injectedStyles.add(hash); 12203 } 12204 function registerDocument19(targetDocument) { 12205 const runtime = getRuntime19(); 12206 runtime.documents.set( 12207 targetDocument, 12208 (runtime.documents.get(targetDocument) ?? 0) + 1 12209 ); 12210 for (const [hash, css] of runtime.styles) { 12211 injectStyle19(targetDocument, hash, css); 12212 } 12213 return () => { 12214 const count = runtime.documents.get(targetDocument); 12215 if (count === void 0) { 12216 return; 12217 } 12218 if (count <= 1) { 12219 runtime.documents.delete(targetDocument); 12220 return; 12221 } 12222 runtime.documents.set(targetDocument, count - 1); 12223 }; 12224 } 12225 function registerStyle19(hash, css) { 12226 const runtime = getRuntime19(); 12227 runtime.styles.set(hash, css); 12228 for (const targetDocument of runtime.documents.keys()) { 12229 injectStyle19(targetDocument, hash, css); 12230 } 12231 } 12232 if (typeof process === "undefined" || true) { 12233 registerStyle19("37477070fb", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{.ccc29f9575c4c758__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 12234 } 12235 var resets_default5 = { "box-sizing": "ccc29f9575c4c758__box-sizing" }; 12236 if (typeof process === "undefined" || true) { 12237 registerStyle19("e57e872b6c", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._173ad03087dbb509__notice{--icon-height:var(--wpds-dimension-size-sm,24px);--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-background-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;isolation:isolate;padding:var(--wpds-dimension-padding-md,12px)}._86733bd626c7e048__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._6688caffadaf5a66__description{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._48b3142dec93ee87__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._173ad03087dbb509__notice:has(._6688caffadaf5a66__description) ._48b3142dec93ee87__actions,._173ad03087dbb509__notice:has(._6d6c0651ee903d00__title) ._48b3142dec93ee87__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}.adcfc74c7c481a8b__action-button{flex-shrink:0}.b0ce2ddf3e16f445__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._234d6ae581e5eb29__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._4e822398b0e00dd5__is-info{--wp-ui-notice-background-color:var(--wpds-color-background-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#adc6e2);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-info-weak,#006bd7)}._1ef9a1d966bd5220__is-warning{--wp-ui-notice-background-color:var(--wpds-color-background-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#e1bd7c);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-warning-weak,#936300)}.e98dc9c1e2c0bf3b__is-success{--wp-ui-notice-background-color:var(--wpds-color-background-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#92d39d);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-success-weak,#008030)}._673065a55bda7056__is-error{--wp-ui-notice-background-color:var(--wpds-color-background-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#e0afa7);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-error-weak,#cc1818)}@container (max-width: 320px){._173ad03087dbb509__notice:has(._6d6c0651ee903d00__title) ._48b3142dec93ee87__actions,._173ad03087dbb509__notice:has(._6d6c0651ee903d00__title) ._6688caffadaf5a66__description{grid-column:1/3}}}@layer compositions{._6d6c0651ee903d00__title{--_gcd-heading-color:var(--wp-ui-notice-text-color);color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}.b0ce2ddf3e16f445__action-link{margin-block:auto}._234d6ae581e5eb29__close-icon,.adcfc74c7c481a8b__action-button,.b0ce2ddf3e16f445__action-link{mix-blend-mode:luminosity;@media (forced-colors:active){mix-blend-mode:normal}}}}"); 12238 } 12239 var style_default15 = { "notice": "_173ad03087dbb509__notice", "icon": "_86733bd626c7e048__icon", "description": "_6688caffadaf5a66__description", "actions": "_48b3142dec93ee87__actions", "title": "_6d6c0651ee903d00__title", "action-button": "adcfc74c7c481a8b__action-button", "action-link": "b0ce2ddf3e16f445__action-link", "close-icon": "_234d6ae581e5eb29__close-icon", "is-info": "_4e822398b0e00dd5__is-info", "is-warning": "_1ef9a1d966bd5220__is-warning", "is-success": "e98dc9c1e2c0bf3b__is-success", "is-error": "_673065a55bda7056__is-error" }; 12240 var icons = { 12241 neutral: null, 12242 info: info_default, 12243 warning: caution_default, 12244 success: published_default, 12245 error: error_default 12246 }; 12247 var Root4 = (0, import_element38.forwardRef)(function Notice({ intent = "neutral", children, icon, render, ...restProps }, ref) { 12248 const iconElement = icon === null ? null : icon ?? icons[intent]; 12249 const mergedClassName = clsx_default( 12250 style_default15.notice, 12251 style_default15[`is-$intent}`], 12252 resets_default5["box-sizing"] 12253 ); 12254 const element = useRender({ 12255 defaultTagName: "div", 12256 render, 12257 ref, 12258 props: mergeProps( 12259 { 12260 className: mergedClassName, 12261 children: /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(import_jsx_runtime45.Fragment, { children: [ 12262 children, 12263 iconElement && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)( 12264 Icon, 12265 { 12266 className: style_default15.icon, 12267 icon: iconElement 12268 } 12269 ) 12270 ] }) 12271 }, 12272 restProps 12273 ) 12274 }); 12275 return element; 12276 }); 12277 12278 // packages/ui/build-module/notice/title.mjs 12279 var import_element39 = __toESM(require_element(), 1); 12280 var import_jsx_runtime46 = __toESM(require_jsx_runtime(), 1); 12281 var STYLE_HASH_ATTRIBUTE20 = "data-wp-hash"; 12282 function getRuntime20() { 12283 const globalScope = globalThis; 12284 if (globalScope.__wpStyleRuntime) { 12285 return globalScope.__wpStyleRuntime; 12286 } 12287 globalScope.__wpStyleRuntime = { 12288 documents: /* @__PURE__ */ new Map(), 12289 styles: /* @__PURE__ */ new Map(), 12290 injectedStyles: /* @__PURE__ */ new WeakMap() 12291 }; 12292 if (typeof document !== "undefined") { 12293 registerDocument20(document); 12294 } 12295 return globalScope.__wpStyleRuntime; 12296 } 12297 function documentContainsStyleHash20(targetDocument, hash) { 12298 if (!targetDocument.head) { 12299 return false; 12300 } 12301 for (const style of targetDocument.head.querySelectorAll( 12302 `style[$STYLE_HASH_ATTRIBUTE20}]` 12303 )) { 12304 if (style.getAttribute(STYLE_HASH_ATTRIBUTE20) === hash) { 12305 return true; 12306 } 12307 } 12308 return false; 12309 } 12310 function injectStyle20(targetDocument, hash, css) { 12311 if (!targetDocument.head) { 12312 return; 12313 } 12314 const runtime = getRuntime20(); 12315 let injectedStyles = runtime.injectedStyles.get(targetDocument); 12316 if (!injectedStyles) { 12317 injectedStyles = /* @__PURE__ */ new Set(); 12318 runtime.injectedStyles.set(targetDocument, injectedStyles); 12319 } 12320 if (injectedStyles.has(hash)) { 12321 return; 12322 } 12323 if (documentContainsStyleHash20(targetDocument, hash)) { 12324 injectedStyles.add(hash); 12325 return; 12326 } 12327 const style = targetDocument.createElement("style"); 12328 style.setAttribute(STYLE_HASH_ATTRIBUTE20, hash); 12329 style.appendChild(targetDocument.createTextNode(css)); 12330 targetDocument.head.appendChild(style); 12331 injectedStyles.add(hash); 12332 } 12333 function registerDocument20(targetDocument) { 12334 const runtime = getRuntime20(); 12335 runtime.documents.set( 12336 targetDocument, 12337 (runtime.documents.get(targetDocument) ?? 0) + 1 12338 ); 12339 for (const [hash, css] of runtime.styles) { 12340 injectStyle20(targetDocument, hash, css); 12341 } 12342 return () => { 12343 const count = runtime.documents.get(targetDocument); 12344 if (count === void 0) { 12345 return; 12346 } 12347 if (count <= 1) { 12348 runtime.documents.delete(targetDocument); 12349 return; 12350 } 12351 runtime.documents.set(targetDocument, count - 1); 12352 }; 12353 } 12354 function registerStyle20(hash, css) { 12355 const runtime = getRuntime20(); 12356 runtime.styles.set(hash, css); 12357 for (const targetDocument of runtime.documents.keys()) { 12358 injectStyle20(targetDocument, hash, css); 12359 } 12360 } 12361 if (typeof process === "undefined" || true) { 12362 registerStyle20("e57e872b6c", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._173ad03087dbb509__notice{--icon-height:var(--wpds-dimension-size-sm,24px);--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-background-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;isolation:isolate;padding:var(--wpds-dimension-padding-md,12px)}._86733bd626c7e048__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._6688caffadaf5a66__description{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._48b3142dec93ee87__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._173ad03087dbb509__notice:has(._6688caffadaf5a66__description) ._48b3142dec93ee87__actions,._173ad03087dbb509__notice:has(._6d6c0651ee903d00__title) ._48b3142dec93ee87__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}.adcfc74c7c481a8b__action-button{flex-shrink:0}.b0ce2ddf3e16f445__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._234d6ae581e5eb29__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._4e822398b0e00dd5__is-info{--wp-ui-notice-background-color:var(--wpds-color-background-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#adc6e2);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-info-weak,#006bd7)}._1ef9a1d966bd5220__is-warning{--wp-ui-notice-background-color:var(--wpds-color-background-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#e1bd7c);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-warning-weak,#936300)}.e98dc9c1e2c0bf3b__is-success{--wp-ui-notice-background-color:var(--wpds-color-background-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#92d39d);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-success-weak,#008030)}._673065a55bda7056__is-error{--wp-ui-notice-background-color:var(--wpds-color-background-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#e0afa7);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-error-weak,#cc1818)}@container (max-width: 320px){._173ad03087dbb509__notice:has(._6d6c0651ee903d00__title) ._48b3142dec93ee87__actions,._173ad03087dbb509__notice:has(._6d6c0651ee903d00__title) ._6688caffadaf5a66__description{grid-column:1/3}}}@layer compositions{._6d6c0651ee903d00__title{--_gcd-heading-color:var(--wp-ui-notice-text-color);color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}.b0ce2ddf3e16f445__action-link{margin-block:auto}._234d6ae581e5eb29__close-icon,.adcfc74c7c481a8b__action-button,.b0ce2ddf3e16f445__action-link{mix-blend-mode:luminosity;@media (forced-colors:active){mix-blend-mode:normal}}}}"); 12363 } 12364 var style_default16 = { "notice": "_173ad03087dbb509__notice", "icon": "_86733bd626c7e048__icon", "description": "_6688caffadaf5a66__description", "actions": "_48b3142dec93ee87__actions", "title": "_6d6c0651ee903d00__title", "action-button": "adcfc74c7c481a8b__action-button", "action-link": "b0ce2ddf3e16f445__action-link", "close-icon": "_234d6ae581e5eb29__close-icon", "is-info": "_4e822398b0e00dd5__is-info", "is-warning": "_1ef9a1d966bd5220__is-warning", "is-success": "e98dc9c1e2c0bf3b__is-success", "is-error": "_673065a55bda7056__is-error" }; 12365 var Title2 = (0, import_element39.forwardRef)( 12366 function NoticeTitle({ className, ...props }, ref) { 12367 return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)( 12368 Text, 12369 { 12370 ref, 12371 variant: "heading-md", 12372 className: clsx_default(style_default16.title, className), 12373 ...props 12374 } 12375 ); 12376 } 12377 ); 12378 12379 // packages/ui/build-module/notice/description.mjs 12380 var import_element40 = __toESM(require_element(), 1); 12381 var import_jsx_runtime47 = __toESM(require_jsx_runtime(), 1); 12382 var STYLE_HASH_ATTRIBUTE21 = "data-wp-hash"; 12383 function getRuntime21() { 12384 const globalScope = globalThis; 12385 if (globalScope.__wpStyleRuntime) { 12386 return globalScope.__wpStyleRuntime; 12387 } 12388 globalScope.__wpStyleRuntime = { 12389 documents: /* @__PURE__ */ new Map(), 12390 styles: /* @__PURE__ */ new Map(), 12391 injectedStyles: /* @__PURE__ */ new WeakMap() 12392 }; 12393 if (typeof document !== "undefined") { 12394 registerDocument21(document); 12395 } 12396 return globalScope.__wpStyleRuntime; 12397 } 12398 function documentContainsStyleHash21(targetDocument, hash) { 12399 if (!targetDocument.head) { 12400 return false; 12401 } 12402 for (const style of targetDocument.head.querySelectorAll( 12403 `style[$STYLE_HASH_ATTRIBUTE21}]` 12404 )) { 12405 if (style.getAttribute(STYLE_HASH_ATTRIBUTE21) === hash) { 12406 return true; 12407 } 12408 } 12409 return false; 12410 } 12411 function injectStyle21(targetDocument, hash, css) { 12412 if (!targetDocument.head) { 12413 return; 12414 } 12415 const runtime = getRuntime21(); 12416 let injectedStyles = runtime.injectedStyles.get(targetDocument); 12417 if (!injectedStyles) { 12418 injectedStyles = /* @__PURE__ */ new Set(); 12419 runtime.injectedStyles.set(targetDocument, injectedStyles); 12420 } 12421 if (injectedStyles.has(hash)) { 12422 return; 12423 } 12424 if (documentContainsStyleHash21(targetDocument, hash)) { 12425 injectedStyles.add(hash); 12426 return; 12427 } 12428 const style = targetDocument.createElement("style"); 12429 style.setAttribute(STYLE_HASH_ATTRIBUTE21, hash); 12430 style.appendChild(targetDocument.createTextNode(css)); 12431 targetDocument.head.appendChild(style); 12432 injectedStyles.add(hash); 12433 } 12434 function registerDocument21(targetDocument) { 12435 const runtime = getRuntime21(); 12436 runtime.documents.set( 12437 targetDocument, 12438 (runtime.documents.get(targetDocument) ?? 0) + 1 12439 ); 12440 for (const [hash, css] of runtime.styles) { 12441 injectStyle21(targetDocument, hash, css); 12442 } 12443 return () => { 12444 const count = runtime.documents.get(targetDocument); 12445 if (count === void 0) { 12446 return; 12447 } 12448 if (count <= 1) { 12449 runtime.documents.delete(targetDocument); 12450 return; 12451 } 12452 runtime.documents.set(targetDocument, count - 1); 12453 }; 12454 } 12455 function registerStyle21(hash, css) { 12456 const runtime = getRuntime21(); 12457 runtime.styles.set(hash, css); 12458 for (const targetDocument of runtime.documents.keys()) { 12459 injectStyle21(targetDocument, hash, css); 12460 } 12461 } 12462 if (typeof process === "undefined" || true) { 12463 registerStyle21("e57e872b6c", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._173ad03087dbb509__notice{--icon-height:var(--wpds-dimension-size-sm,24px);--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-background-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;isolation:isolate;padding:var(--wpds-dimension-padding-md,12px)}._86733bd626c7e048__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._6688caffadaf5a66__description{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._48b3142dec93ee87__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._173ad03087dbb509__notice:has(._6688caffadaf5a66__description) ._48b3142dec93ee87__actions,._173ad03087dbb509__notice:has(._6d6c0651ee903d00__title) ._48b3142dec93ee87__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}.adcfc74c7c481a8b__action-button{flex-shrink:0}.b0ce2ddf3e16f445__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._234d6ae581e5eb29__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._4e822398b0e00dd5__is-info{--wp-ui-notice-background-color:var(--wpds-color-background-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#adc6e2);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-info-weak,#006bd7)}._1ef9a1d966bd5220__is-warning{--wp-ui-notice-background-color:var(--wpds-color-background-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#e1bd7c);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-warning-weak,#936300)}.e98dc9c1e2c0bf3b__is-success{--wp-ui-notice-background-color:var(--wpds-color-background-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#92d39d);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-success-weak,#008030)}._673065a55bda7056__is-error{--wp-ui-notice-background-color:var(--wpds-color-background-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#e0afa7);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-error-weak,#cc1818)}@container (max-width: 320px){._173ad03087dbb509__notice:has(._6d6c0651ee903d00__title) ._48b3142dec93ee87__actions,._173ad03087dbb509__notice:has(._6d6c0651ee903d00__title) ._6688caffadaf5a66__description{grid-column:1/3}}}@layer compositions{._6d6c0651ee903d00__title{--_gcd-heading-color:var(--wp-ui-notice-text-color);color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}.b0ce2ddf3e16f445__action-link{margin-block:auto}._234d6ae581e5eb29__close-icon,.adcfc74c7c481a8b__action-button,.b0ce2ddf3e16f445__action-link{mix-blend-mode:luminosity;@media (forced-colors:active){mix-blend-mode:normal}}}}"); 12464 } 12465 var style_default17 = { "notice": "_173ad03087dbb509__notice", "icon": "_86733bd626c7e048__icon", "description": "_6688caffadaf5a66__description", "actions": "_48b3142dec93ee87__actions", "title": "_6d6c0651ee903d00__title", "action-button": "adcfc74c7c481a8b__action-button", "action-link": "b0ce2ddf3e16f445__action-link", "close-icon": "_234d6ae581e5eb29__close-icon", "is-info": "_4e822398b0e00dd5__is-info", "is-warning": "_1ef9a1d966bd5220__is-warning", "is-success": "e98dc9c1e2c0bf3b__is-success", "is-error": "_673065a55bda7056__is-error" }; 12466 var Description = (0, import_element40.forwardRef)( 12467 function NoticeDescription({ className, ...props }, ref) { 12468 return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( 12469 Text, 12470 { 12471 ref, 12472 variant: "body-md", 12473 className: clsx_default(style_default17.description, className), 12474 ...props 12475 } 12476 ); 12477 } 12478 ); 12479 12480 // packages/ui/build-module/notice/actions.mjs 12481 var import_element41 = __toESM(require_element(), 1); 12482 var STYLE_HASH_ATTRIBUTE22 = "data-wp-hash"; 12483 function getRuntime22() { 12484 const globalScope = globalThis; 12485 if (globalScope.__wpStyleRuntime) { 12486 return globalScope.__wpStyleRuntime; 12487 } 12488 globalScope.__wpStyleRuntime = { 12489 documents: /* @__PURE__ */ new Map(), 12490 styles: /* @__PURE__ */ new Map(), 12491 injectedStyles: /* @__PURE__ */ new WeakMap() 12492 }; 12493 if (typeof document !== "undefined") { 12494 registerDocument22(document); 12495 } 12496 return globalScope.__wpStyleRuntime; 12497 } 12498 function documentContainsStyleHash22(targetDocument, hash) { 12499 if (!targetDocument.head) { 12500 return false; 12501 } 12502 for (const style of targetDocument.head.querySelectorAll( 12503 `style[$STYLE_HASH_ATTRIBUTE22}]` 12504 )) { 12505 if (style.getAttribute(STYLE_HASH_ATTRIBUTE22) === hash) { 12506 return true; 12507 } 12508 } 12509 return false; 12510 } 12511 function injectStyle22(targetDocument, hash, css) { 12512 if (!targetDocument.head) { 12513 return; 12514 } 12515 const runtime = getRuntime22(); 12516 let injectedStyles = runtime.injectedStyles.get(targetDocument); 12517 if (!injectedStyles) { 12518 injectedStyles = /* @__PURE__ */ new Set(); 12519 runtime.injectedStyles.set(targetDocument, injectedStyles); 12520 } 12521 if (injectedStyles.has(hash)) { 12522 return; 12523 } 12524 if (documentContainsStyleHash22(targetDocument, hash)) { 12525 injectedStyles.add(hash); 12526 return; 12527 } 12528 const style = targetDocument.createElement("style"); 12529 style.setAttribute(STYLE_HASH_ATTRIBUTE22, hash); 12530 style.appendChild(targetDocument.createTextNode(css)); 12531 targetDocument.head.appendChild(style); 12532 injectedStyles.add(hash); 12533 } 12534 function registerDocument22(targetDocument) { 12535 const runtime = getRuntime22(); 12536 runtime.documents.set( 12537 targetDocument, 12538 (runtime.documents.get(targetDocument) ?? 0) + 1 12539 ); 12540 for (const [hash, css] of runtime.styles) { 12541 injectStyle22(targetDocument, hash, css); 12542 } 12543 return () => { 12544 const count = runtime.documents.get(targetDocument); 12545 if (count === void 0) { 12546 return; 12547 } 12548 if (count <= 1) { 12549 runtime.documents.delete(targetDocument); 12550 return; 12551 } 12552 runtime.documents.set(targetDocument, count - 1); 12553 }; 12554 } 12555 function registerStyle22(hash, css) { 12556 const runtime = getRuntime22(); 12557 runtime.styles.set(hash, css); 12558 for (const targetDocument of runtime.documents.keys()) { 12559 injectStyle22(targetDocument, hash, css); 12560 } 12561 } 12562 if (typeof process === "undefined" || true) { 12563 registerStyle22("e57e872b6c", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._173ad03087dbb509__notice{--icon-height:var(--wpds-dimension-size-sm,24px);--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-background-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;isolation:isolate;padding:var(--wpds-dimension-padding-md,12px)}._86733bd626c7e048__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._6688caffadaf5a66__description{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._48b3142dec93ee87__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._173ad03087dbb509__notice:has(._6688caffadaf5a66__description) ._48b3142dec93ee87__actions,._173ad03087dbb509__notice:has(._6d6c0651ee903d00__title) ._48b3142dec93ee87__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}.adcfc74c7c481a8b__action-button{flex-shrink:0}.b0ce2ddf3e16f445__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._234d6ae581e5eb29__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._4e822398b0e00dd5__is-info{--wp-ui-notice-background-color:var(--wpds-color-background-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#adc6e2);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-info-weak,#006bd7)}._1ef9a1d966bd5220__is-warning{--wp-ui-notice-background-color:var(--wpds-color-background-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#e1bd7c);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-warning-weak,#936300)}.e98dc9c1e2c0bf3b__is-success{--wp-ui-notice-background-color:var(--wpds-color-background-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#92d39d);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-success-weak,#008030)}._673065a55bda7056__is-error{--wp-ui-notice-background-color:var(--wpds-color-background-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#e0afa7);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-error-weak,#cc1818)}@container (max-width: 320px){._173ad03087dbb509__notice:has(._6d6c0651ee903d00__title) ._48b3142dec93ee87__actions,._173ad03087dbb509__notice:has(._6d6c0651ee903d00__title) ._6688caffadaf5a66__description{grid-column:1/3}}}@layer compositions{._6d6c0651ee903d00__title{--_gcd-heading-color:var(--wp-ui-notice-text-color);color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}.b0ce2ddf3e16f445__action-link{margin-block:auto}._234d6ae581e5eb29__close-icon,.adcfc74c7c481a8b__action-button,.b0ce2ddf3e16f445__action-link{mix-blend-mode:luminosity;@media (forced-colors:active){mix-blend-mode:normal}}}}"); 12564 } 12565 var style_default18 = { "notice": "_173ad03087dbb509__notice", "icon": "_86733bd626c7e048__icon", "description": "_6688caffadaf5a66__description", "actions": "_48b3142dec93ee87__actions", "title": "_6d6c0651ee903d00__title", "action-button": "adcfc74c7c481a8b__action-button", "action-link": "b0ce2ddf3e16f445__action-link", "close-icon": "_234d6ae581e5eb29__close-icon", "is-info": "_4e822398b0e00dd5__is-info", "is-warning": "_1ef9a1d966bd5220__is-warning", "is-success": "e98dc9c1e2c0bf3b__is-success", "is-error": "_673065a55bda7056__is-error" }; 12566 var Actions = (0, import_element41.forwardRef)( 12567 function NoticeActions({ render, ...props }, ref) { 12568 const element = useRender({ 12569 defaultTagName: "div", 12570 render, 12571 ref, 12572 props: mergeProps( 12573 { 12574 className: style_default18.actions 12575 }, 12576 props 12577 ) 12578 }); 12579 return element; 12580 } 12581 ); 12582 12583 // packages/ui/build-module/notice/close-icon-button.mjs 12584 var import_element42 = __toESM(require_element(), 1); 12585 var import_i18n5 = __toESM(require_i18n(), 1); 12586 var import_jsx_runtime48 = __toESM(require_jsx_runtime(), 1); 12587 var STYLE_HASH_ATTRIBUTE23 = "data-wp-hash"; 12588 function getRuntime23() { 12589 const globalScope = globalThis; 12590 if (globalScope.__wpStyleRuntime) { 12591 return globalScope.__wpStyleRuntime; 12592 } 12593 globalScope.__wpStyleRuntime = { 12594 documents: /* @__PURE__ */ new Map(), 12595 styles: /* @__PURE__ */ new Map(), 12596 injectedStyles: /* @__PURE__ */ new WeakMap() 12597 }; 12598 if (typeof document !== "undefined") { 12599 registerDocument23(document); 12600 } 12601 return globalScope.__wpStyleRuntime; 12602 } 12603 function documentContainsStyleHash23(targetDocument, hash) { 12604 if (!targetDocument.head) { 12605 return false; 12606 } 12607 for (const style of targetDocument.head.querySelectorAll( 12608 `style[$STYLE_HASH_ATTRIBUTE23}]` 12609 )) { 12610 if (style.getAttribute(STYLE_HASH_ATTRIBUTE23) === hash) { 12611 return true; 12612 } 12613 } 12614 return false; 12615 } 12616 function injectStyle23(targetDocument, hash, css) { 12617 if (!targetDocument.head) { 12618 return; 12619 } 12620 const runtime = getRuntime23(); 12621 let injectedStyles = runtime.injectedStyles.get(targetDocument); 12622 if (!injectedStyles) { 12623 injectedStyles = /* @__PURE__ */ new Set(); 12624 runtime.injectedStyles.set(targetDocument, injectedStyles); 12625 } 12626 if (injectedStyles.has(hash)) { 12627 return; 12628 } 12629 if (documentContainsStyleHash23(targetDocument, hash)) { 12630 injectedStyles.add(hash); 12631 return; 12632 } 12633 const style = targetDocument.createElement("style"); 12634 style.setAttribute(STYLE_HASH_ATTRIBUTE23, hash); 12635 style.appendChild(targetDocument.createTextNode(css)); 12636 targetDocument.head.appendChild(style); 12637 injectedStyles.add(hash); 12638 } 12639 function registerDocument23(targetDocument) { 12640 const runtime = getRuntime23(); 12641 runtime.documents.set( 12642 targetDocument, 12643 (runtime.documents.get(targetDocument) ?? 0) + 1 12644 ); 12645 for (const [hash, css] of runtime.styles) { 12646 injectStyle23(targetDocument, hash, css); 12647 } 12648 return () => { 12649 const count = runtime.documents.get(targetDocument); 12650 if (count === void 0) { 12651 return; 12652 } 12653 if (count <= 1) { 12654 runtime.documents.delete(targetDocument); 12655 return; 12656 } 12657 runtime.documents.set(targetDocument, count - 1); 12658 }; 12659 } 12660 function registerStyle23(hash, css) { 12661 const runtime = getRuntime23(); 12662 runtime.styles.set(hash, css); 12663 for (const targetDocument of runtime.documents.keys()) { 12664 injectStyle23(targetDocument, hash, css); 12665 } 12666 } 12667 if (typeof process === "undefined" || true) { 12668 registerStyle23("e57e872b6c", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._173ad03087dbb509__notice{--icon-height:var(--wpds-dimension-size-sm,24px);--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-background-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;isolation:isolate;padding:var(--wpds-dimension-padding-md,12px)}._86733bd626c7e048__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._6688caffadaf5a66__description{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._48b3142dec93ee87__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._173ad03087dbb509__notice:has(._6688caffadaf5a66__description) ._48b3142dec93ee87__actions,._173ad03087dbb509__notice:has(._6d6c0651ee903d00__title) ._48b3142dec93ee87__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}.adcfc74c7c481a8b__action-button{flex-shrink:0}.b0ce2ddf3e16f445__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._234d6ae581e5eb29__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._4e822398b0e00dd5__is-info{--wp-ui-notice-background-color:var(--wpds-color-background-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#adc6e2);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-info-weak,#006bd7)}._1ef9a1d966bd5220__is-warning{--wp-ui-notice-background-color:var(--wpds-color-background-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#e1bd7c);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-warning-weak,#936300)}.e98dc9c1e2c0bf3b__is-success{--wp-ui-notice-background-color:var(--wpds-color-background-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#92d39d);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-success-weak,#008030)}._673065a55bda7056__is-error{--wp-ui-notice-background-color:var(--wpds-color-background-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#e0afa7);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-error-weak,#cc1818)}@container (max-width: 320px){._173ad03087dbb509__notice:has(._6d6c0651ee903d00__title) ._48b3142dec93ee87__actions,._173ad03087dbb509__notice:has(._6d6c0651ee903d00__title) ._6688caffadaf5a66__description{grid-column:1/3}}}@layer compositions{._6d6c0651ee903d00__title{--_gcd-heading-color:var(--wp-ui-notice-text-color);color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}.b0ce2ddf3e16f445__action-link{margin-block:auto}._234d6ae581e5eb29__close-icon,.adcfc74c7c481a8b__action-button,.b0ce2ddf3e16f445__action-link{mix-blend-mode:luminosity;@media (forced-colors:active){mix-blend-mode:normal}}}}"); 12669 } 12670 var style_default19 = { "notice": "_173ad03087dbb509__notice", "icon": "_86733bd626c7e048__icon", "description": "_6688caffadaf5a66__description", "actions": "_48b3142dec93ee87__actions", "title": "_6d6c0651ee903d00__title", "action-button": "adcfc74c7c481a8b__action-button", "action-link": "b0ce2ddf3e16f445__action-link", "close-icon": "_234d6ae581e5eb29__close-icon", "is-info": "_4e822398b0e00dd5__is-info", "is-warning": "_1ef9a1d966bd5220__is-warning", "is-success": "e98dc9c1e2c0bf3b__is-success", "is-error": "_673065a55bda7056__is-error" }; 12671 var CloseIconButton = (0, import_element42.forwardRef)(function NoticeCloseIconButton({ className, icon = close_small_default, label = (0, import_i18n5.__)("Dismiss"), ...props }, ref) { 12672 return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)( 12673 IconButton, 12674 { 12675 ...props, 12676 ref, 12677 className: clsx_default(style_default19["close-icon"], className), 12678 variant: "minimal", 12679 size: "small", 12680 tone: "neutral", 12681 icon, 12682 label 12683 } 12684 ); 12685 }); 12686 12687 // packages/ui/build-module/notice/action-button.mjs 12688 var import_element43 = __toESM(require_element(), 1); 12689 var import_jsx_runtime49 = __toESM(require_jsx_runtime(), 1); 12690 var STYLE_HASH_ATTRIBUTE24 = "data-wp-hash"; 12691 function getRuntime24() { 12692 const globalScope = globalThis; 12693 if (globalScope.__wpStyleRuntime) { 12694 return globalScope.__wpStyleRuntime; 12695 } 12696 globalScope.__wpStyleRuntime = { 12697 documents: /* @__PURE__ */ new Map(), 12698 styles: /* @__PURE__ */ new Map(), 12699 injectedStyles: /* @__PURE__ */ new WeakMap() 12700 }; 12701 if (typeof document !== "undefined") { 12702 registerDocument24(document); 12703 } 12704 return globalScope.__wpStyleRuntime; 12705 } 12706 function documentContainsStyleHash24(targetDocument, hash) { 12707 if (!targetDocument.head) { 12708 return false; 12709 } 12710 for (const style of targetDocument.head.querySelectorAll( 12711 `style[$STYLE_HASH_ATTRIBUTE24}]` 12712 )) { 12713 if (style.getAttribute(STYLE_HASH_ATTRIBUTE24) === hash) { 12714 return true; 12715 } 12716 } 12717 return false; 12718 } 12719 function injectStyle24(targetDocument, hash, css) { 12720 if (!targetDocument.head) { 12721 return; 12722 } 12723 const runtime = getRuntime24(); 12724 let injectedStyles = runtime.injectedStyles.get(targetDocument); 12725 if (!injectedStyles) { 12726 injectedStyles = /* @__PURE__ */ new Set(); 12727 runtime.injectedStyles.set(targetDocument, injectedStyles); 12728 } 12729 if (injectedStyles.has(hash)) { 12730 return; 12731 } 12732 if (documentContainsStyleHash24(targetDocument, hash)) { 12733 injectedStyles.add(hash); 12734 return; 12735 } 12736 const style = targetDocument.createElement("style"); 12737 style.setAttribute(STYLE_HASH_ATTRIBUTE24, hash); 12738 style.appendChild(targetDocument.createTextNode(css)); 12739 targetDocument.head.appendChild(style); 12740 injectedStyles.add(hash); 12741 } 12742 function registerDocument24(targetDocument) { 12743 const runtime = getRuntime24(); 12744 runtime.documents.set( 12745 targetDocument, 12746 (runtime.documents.get(targetDocument) ?? 0) + 1 12747 ); 12748 for (const [hash, css] of runtime.styles) { 12749 injectStyle24(targetDocument, hash, css); 12750 } 12751 return () => { 12752 const count = runtime.documents.get(targetDocument); 12753 if (count === void 0) { 12754 return; 12755 } 12756 if (count <= 1) { 12757 runtime.documents.delete(targetDocument); 12758 return; 12759 } 12760 runtime.documents.set(targetDocument, count - 1); 12761 }; 12762 } 12763 function registerStyle24(hash, css) { 12764 const runtime = getRuntime24(); 12765 runtime.styles.set(hash, css); 12766 for (const targetDocument of runtime.documents.keys()) { 12767 injectStyle24(targetDocument, hash, css); 12768 } 12769 } 12770 if (typeof process === "undefined" || true) { 12771 registerStyle24("e57e872b6c", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._173ad03087dbb509__notice{--icon-height:var(--wpds-dimension-size-sm,24px);--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-background-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;isolation:isolate;padding:var(--wpds-dimension-padding-md,12px)}._86733bd626c7e048__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._6688caffadaf5a66__description{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._48b3142dec93ee87__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._173ad03087dbb509__notice:has(._6688caffadaf5a66__description) ._48b3142dec93ee87__actions,._173ad03087dbb509__notice:has(._6d6c0651ee903d00__title) ._48b3142dec93ee87__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}.adcfc74c7c481a8b__action-button{flex-shrink:0}.b0ce2ddf3e16f445__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._234d6ae581e5eb29__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._4e822398b0e00dd5__is-info{--wp-ui-notice-background-color:var(--wpds-color-background-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#adc6e2);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-info-weak,#006bd7)}._1ef9a1d966bd5220__is-warning{--wp-ui-notice-background-color:var(--wpds-color-background-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#e1bd7c);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-warning-weak,#936300)}.e98dc9c1e2c0bf3b__is-success{--wp-ui-notice-background-color:var(--wpds-color-background-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#92d39d);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-success-weak,#008030)}._673065a55bda7056__is-error{--wp-ui-notice-background-color:var(--wpds-color-background-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#e0afa7);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-error-weak,#cc1818)}@container (max-width: 320px){._173ad03087dbb509__notice:has(._6d6c0651ee903d00__title) ._48b3142dec93ee87__actions,._173ad03087dbb509__notice:has(._6d6c0651ee903d00__title) ._6688caffadaf5a66__description{grid-column:1/3}}}@layer compositions{._6d6c0651ee903d00__title{--_gcd-heading-color:var(--wp-ui-notice-text-color);color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}.b0ce2ddf3e16f445__action-link{margin-block:auto}._234d6ae581e5eb29__close-icon,.adcfc74c7c481a8b__action-button,.b0ce2ddf3e16f445__action-link{mix-blend-mode:luminosity;@media (forced-colors:active){mix-blend-mode:normal}}}}"); 12772 } 12773 var style_default20 = { "notice": "_173ad03087dbb509__notice", "icon": "_86733bd626c7e048__icon", "description": "_6688caffadaf5a66__description", "actions": "_48b3142dec93ee87__actions", "title": "_6d6c0651ee903d00__title", "action-button": "adcfc74c7c481a8b__action-button", "action-link": "b0ce2ddf3e16f445__action-link", "close-icon": "_234d6ae581e5eb29__close-icon", "is-info": "_4e822398b0e00dd5__is-info", "is-warning": "_1ef9a1d966bd5220__is-warning", "is-success": "e98dc9c1e2c0bf3b__is-success", "is-error": "_673065a55bda7056__is-error" }; 12774 var ActionButton = (0, import_element43.forwardRef)( 12775 function NoticeActionButton({ className, loading, loadingAnnouncement, variant, ...props }, ref) { 12776 const loadingProps = loading !== void 0 ? { loading, loadingAnnouncement: loadingAnnouncement ?? "" } : {}; 12777 return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( 12778 Button4, 12779 { 12780 ...props, 12781 ...loadingProps, 12782 ref, 12783 size: "compact", 12784 tone: "neutral", 12785 variant, 12786 className: clsx_default( 12787 style_default20["action-button"], 12788 style_default20[`is-action-button-$variant}`], 12789 className 12790 ) 12791 } 12792 ); 12793 } 12794 ); 12795 12796 // packages/ui/build-module/notice/action-link.mjs 12797 var import_element44 = __toESM(require_element(), 1); 12798 var import_jsx_runtime50 = __toESM(require_jsx_runtime(), 1); 12799 var STYLE_HASH_ATTRIBUTE25 = "data-wp-hash"; 12800 function getRuntime25() { 12801 const globalScope = globalThis; 12802 if (globalScope.__wpStyleRuntime) { 12803 return globalScope.__wpStyleRuntime; 12804 } 12805 globalScope.__wpStyleRuntime = { 12806 documents: /* @__PURE__ */ new Map(), 12807 styles: /* @__PURE__ */ new Map(), 12808 injectedStyles: /* @__PURE__ */ new WeakMap() 12809 }; 12810 if (typeof document !== "undefined") { 12811 registerDocument25(document); 12812 } 12813 return globalScope.__wpStyleRuntime; 12814 } 12815 function documentContainsStyleHash25(targetDocument, hash) { 12816 if (!targetDocument.head) { 12817 return false; 12818 } 12819 for (const style of targetDocument.head.querySelectorAll( 12820 `style[$STYLE_HASH_ATTRIBUTE25}]` 12821 )) { 12822 if (style.getAttribute(STYLE_HASH_ATTRIBUTE25) === hash) { 12823 return true; 12824 } 12825 } 12826 return false; 12827 } 12828 function injectStyle25(targetDocument, hash, css) { 12829 if (!targetDocument.head) { 12830 return; 12831 } 12832 const runtime = getRuntime25(); 12833 let injectedStyles = runtime.injectedStyles.get(targetDocument); 12834 if (!injectedStyles) { 12835 injectedStyles = /* @__PURE__ */ new Set(); 12836 runtime.injectedStyles.set(targetDocument, injectedStyles); 12837 } 12838 if (injectedStyles.has(hash)) { 12839 return; 12840 } 12841 if (documentContainsStyleHash25(targetDocument, hash)) { 12842 injectedStyles.add(hash); 12843 return; 12844 } 12845 const style = targetDocument.createElement("style"); 12846 style.setAttribute(STYLE_HASH_ATTRIBUTE25, hash); 12847 style.appendChild(targetDocument.createTextNode(css)); 12848 targetDocument.head.appendChild(style); 12849 injectedStyles.add(hash); 12850 } 12851 function registerDocument25(targetDocument) { 12852 const runtime = getRuntime25(); 12853 runtime.documents.set( 12854 targetDocument, 12855 (runtime.documents.get(targetDocument) ?? 0) + 1 12856 ); 12857 for (const [hash, css] of runtime.styles) { 12858 injectStyle25(targetDocument, hash, css); 12859 } 12860 return () => { 12861 const count = runtime.documents.get(targetDocument); 12862 if (count === void 0) { 12863 return; 12864 } 12865 if (count <= 1) { 12866 runtime.documents.delete(targetDocument); 12867 return; 12868 } 12869 runtime.documents.set(targetDocument, count - 1); 12870 }; 12871 } 12872 function registerStyle25(hash, css) { 12873 const runtime = getRuntime25(); 12874 runtime.styles.set(hash, css); 12875 for (const targetDocument of runtime.documents.keys()) { 12876 injectStyle25(targetDocument, hash, css); 12877 } 12878 } 12879 if (typeof process === "undefined" || true) { 12880 registerStyle25("e57e872b6c", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._173ad03087dbb509__notice{--icon-height:var(--wpds-dimension-size-sm,24px);--text-vertical-padding:calc((var(--icon-height) - var(--wpds-typography-line-height-sm, 20px))/2);--wp-ui-notice-background-color:var(--wpds-color-background-surface-neutral-weak,#f4f4f4);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-neutral,#dbdbdb);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-neutral,#1e1e1e);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-neutral,#1e1e1e);align-items:start;background-color:var(--wp-ui-notice-background-color);border:1px solid var(--wp-ui-notice-border-color);border-radius:var(--wpds-border-radius-lg,8px);container-type:inline-size;display:grid;grid-template-columns:auto 1fr auto;isolation:isolate;padding:var(--wpds-dimension-padding-md,12px)}._86733bd626c7e048__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._6688caffadaf5a66__description{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._48b3142dec93ee87__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._173ad03087dbb509__notice:has(._6688caffadaf5a66__description) ._48b3142dec93ee87__actions,._173ad03087dbb509__notice:has(._6d6c0651ee903d00__title) ._48b3142dec93ee87__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}.adcfc74c7c481a8b__action-button{flex-shrink:0}.b0ce2ddf3e16f445__action-link{flex-shrink:0;&:not(:first-child){margin-inline-start:var(--wpds-dimension-gap-xs,4px)}&:not(:last-child){margin-inline-end:var(--wpds-dimension-gap-xs,4px)}}._234d6ae581e5eb29__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._4e822398b0e00dd5__is-info{--wp-ui-notice-background-color:var(--wpds-color-background-surface-info-weak,#f3f9ff);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-info,#adc6e2);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-info,#001b4f);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-info-weak,#006bd7)}._1ef9a1d966bd5220__is-warning{--wp-ui-notice-background-color:var(--wpds-color-background-surface-warning-weak,#fff7e1);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-warning,#e1bd7c);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-warning,#2e1900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-warning-weak,#936300)}.e98dc9c1e2c0bf3b__is-success{--wp-ui-notice-background-color:var(--wpds-color-background-surface-success-weak,#ebffed);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-success,#92d39d);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-success,#002900);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-success-weak,#008030)}._673065a55bda7056__is-error{--wp-ui-notice-background-color:var(--wpds-color-background-surface-error-weak,#fff6f5);--wp-ui-notice-border-color:var(--wpds-color-stroke-surface-error,#e0afa7);--wp-ui-notice-text-color:var(--wpds-color-foreground-content-error,#470000);--wp-ui-notice-decorative-icon-color:var(--wpds-color-foreground-content-error-weak,#cc1818)}@container (max-width: 320px){._173ad03087dbb509__notice:has(._6d6c0651ee903d00__title) ._48b3142dec93ee87__actions,._173ad03087dbb509__notice:has(._6d6c0651ee903d00__title) ._6688caffadaf5a66__description{grid-column:1/3}}}@layer compositions{._6d6c0651ee903d00__title{--_gcd-heading-color:var(--wp-ui-notice-text-color);color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}.b0ce2ddf3e16f445__action-link{margin-block:auto}._234d6ae581e5eb29__close-icon,.adcfc74c7c481a8b__action-button,.b0ce2ddf3e16f445__action-link{mix-blend-mode:luminosity;@media (forced-colors:active){mix-blend-mode:normal}}}}"); 12881 } 12882 var style_default21 = { "notice": "_173ad03087dbb509__notice", "icon": "_86733bd626c7e048__icon", "description": "_6688caffadaf5a66__description", "actions": "_48b3142dec93ee87__actions", "title": "_6d6c0651ee903d00__title", "action-button": "adcfc74c7c481a8b__action-button", "action-link": "b0ce2ddf3e16f445__action-link", "close-icon": "_234d6ae581e5eb29__close-icon", "is-info": "_4e822398b0e00dd5__is-info", "is-warning": "_1ef9a1d966bd5220__is-warning", "is-success": "e98dc9c1e2c0bf3b__is-success", "is-error": "_673065a55bda7056__is-error" }; 12883 var ActionLink = (0, import_element44.forwardRef)( 12884 function NoticeActionLink({ className, render, ...props }, ref) { 12885 return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)( 12886 Text, 12887 { 12888 ref, 12889 className: clsx_default(style_default21["action-link"], className), 12890 ...props, 12891 variant: "body-md", 12892 render: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Link, { tone: "neutral", variant: "default", render }) 12893 } 12894 ); 12895 } 12896 ); 12897 12898 // packages/ui/build-module/utils/use-enable-wp-compat-overlay-slot.mjs 12899 function useEnableWpCompatOverlaySlot() { 12900 if (typeof window === "undefined") { 12901 return; 12902 } 12903 const internalWindow = window; 12904 if (internalWindow.__wpUiCompatOverlaySlotEnabled !== true) { 12905 internalWindow.__wpUiCompatOverlaySlotEnabled = true; 12906 } 12907 } 12908 12909 // packages/admin-ui/build-module/admin-theme-colors/index.mjs 12910 var DEFAULT_THEME_COLORS = { 12911 primary: "#3858e9", 12912 background: "#222524" 12913 }; 12914 var ADMIN_THEME_COLORS = /* @__PURE__ */ new Map([ 12915 ["modern", DEFAULT_THEME_COLORS], 12916 ["fresh", { primary: "#007cba", background: "#25292b" }], 12917 ["midnight", { primary: "#cf4339", background: "#3d4042" }], 12918 ["coffee", { primary: "#916745", background: "#5b534d" }], 12919 ["ocean", { primary: "#567958", background: "#5f787f" }], 12920 ["blue", { primary: "#437aa8", background: "#3876a8" }], 12921 ["ectoplasm", { primary: "#646c3e", background: "#4f386e" }], 12922 ["sunrise", { primary: "#ad631e", background: "#cc4541" }], 12923 ["light", { primary: "#007cba", background: "#eaeeed" }] 12924 ]); 12925 function getAdminThemeColors() { 12926 const scheme = document.body.className.match(/admin-color-([\w-]+)/)?.[1] ?? "modern"; 12927 return ADMIN_THEME_COLORS.get(scheme) ?? DEFAULT_THEME_COLORS; 12928 } 12929 12930 // packages/customize-widgets/build-module/components/customize-widgets/index.mjs 12931 var import_element60 = __toESM(require_element(), 1); 12932 var import_components7 = __toESM(require_components(), 1); 12933 var import_theme = __toESM(require_theme(), 1); 12934 12935 // packages/customize-widgets/build-module/components/error-boundary/index.mjs 12936 var import_element45 = __toESM(require_element(), 1); 12937 var import_a11y2 = __toESM(require_a11y(), 1); 12938 var import_i18n6 = __toESM(require_i18n(), 1); 12939 var import_compose2 = __toESM(require_compose(), 1); 12940 var import_hooks = __toESM(require_hooks(), 1); 12941 var import_jsx_runtime51 = __toESM(require_jsx_runtime(), 1); 12942 function getErrorNotice() { 12943 return { 12944 title: (0, import_i18n6.__)("The editor has crashed"), 12945 description: (0, import_i18n6.__)( 12946 "An unknown error occurred. Reload your browser to try again, or copy the error to report the problem or search." 12947 ) 12948 }; 12949 } 12950 function getErrorName(error2) { 12951 return error2 instanceof Error && error2.name || "Error"; 12952 } 12953 function getErrorMessage(error2) { 12954 if (typeof error2 === "string" && error2) { 12955 return error2; 12956 } 12957 if (typeof error2?.message === "string" && error2.message) { 12958 return error2.message; 12959 } 12960 return "An unknown error occurred."; 12961 } 12962 function getErrorSections(error2, componentStack) { 12963 const sections = [ 12964 { label: getErrorName(error2), content: getErrorMessage(error2) } 12965 ]; 12966 if (error2?.stack) { 12967 sections.push({ 12968 label: "Stack", 12969 content: error2.stack.trim(), 12970 preformatted: true 12971 }); 12972 } 12973 if (componentStack) { 12974 sections.push({ 12975 label: "Component stack", 12976 content: componentStack.trim(), 12977 preformatted: true 12978 }); 12979 } 12980 sections.push({ 12981 label: "Environment", 12982 content: `User agent: $window.navigator.userAgent}`, 12983 preformatted: true 12984 }); 12985 return sections; 12986 } 12987 function getErrorReport(error2, componentStack) { 12988 const sections = getErrorSections(error2, componentStack).map( 12989 ({ label, content, preformatted }) => `**$label}** 12990 12991 $preformatted ? `\`\`\` 12992 $content} 12993 \`\`\`` : content}` 12994 ); 12995 return ["### Error report", ...sections].join("\n\n"); 12996 } 12997 function CopyButton({ text, children, variant = "outline" }) { 12998 const ref = (0, import_compose2.useCopyToClipboard)(text); 12999 return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(notice_exports.ActionButton, { variant, ref, children }); 13000 } 13001 function ErrorReport({ error: error2, componentStack }) { 13002 return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( 13003 Stack, 13004 { 13005 className: "customize-widgets-error-boundary__report", 13006 direction: "column", 13007 gap: "md", 13008 children: getErrorSections(error2, componentStack).map( 13009 ({ label, content }) => /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(Stack, { direction: "column", gap: "xs", children: [ 13010 /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Text, { variant: "heading-md", children: label }), 13011 /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("pre", { className: "customize-widgets-error-boundary__report-section", children: content }) 13012 ] }, label) 13013 ) 13014 } 13015 ); 13016 } 13017 function ErrorDetails({ error: error2, componentStack }) { 13018 return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(collapsible_card_exports.Root, { className: "customize-widgets-error-boundary__details", children: [ 13019 /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(collapsible_card_exports.Header, { children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(card_exports.Title, { children: (0, import_i18n6.__)("Error details") }) }), 13020 /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(collapsible_card_exports.Content, { children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( 13021 ErrorReport, 13022 { 13023 error: error2, 13024 componentStack 13025 } 13026 ) }) 13027 ] }); 13028 } 13029 var ErrorBoundary = class extends import_element45.Component { 13030 constructor() { 13031 super(...arguments); 13032 this.state = { 13033 error: null, 13034 componentStack: null 13035 }; 13036 } 13037 componentDidCatch(error2, errorInfo) { 13038 const { title, description } = getErrorNotice(); 13039 (0, import_a11y2.speak)(`$title}. $description}`, "assertive"); 13040 this.setState({ componentStack: errorInfo?.componentStack }); 13041 (0, import_hooks.doAction)("editor.ErrorBoundary.errorLogged", error2, errorInfo); 13042 } 13043 static getDerivedStateFromError(error2) { 13044 return { error: error2 }; 13045 } 13046 render() { 13047 const { error: error2, componentStack } = this.state; 13048 if (!error2) { 13049 return this.props.children; 13050 } 13051 const { title, description } = getErrorNotice(); 13052 return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)( 13053 Stack, 13054 { 13055 className: "customize-widgets-error-boundary", 13056 direction: "column", 13057 gap: "lg", 13058 children: [ 13059 /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(notice_exports.Root, { intent: "error", children: [ 13060 /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(notice_exports.Title, { children: title }), 13061 /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(notice_exports.Description, { children: description }), 13062 /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(notice_exports.Actions, { children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( 13063 CopyButton, 13064 { 13065 variant: "solid", 13066 text: () => getErrorReport(error2, componentStack), 13067 children: (0, import_i18n6._x)("Copy error", "button label") 13068 } 13069 ) }) 13070 ] }), 13071 true ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( 13072 ErrorDetails, 13073 { 13074 error: error2, 13075 componentStack 13076 } 13077 ) : null 13078 ] 13079 } 13080 ); 13081 } 13082 }; 13083 13084 // packages/customize-widgets/build-module/components/sidebar-block-editor/index.mjs 13085 var import_compose4 = __toESM(require_compose(), 1); 13086 var import_core_data = __toESM(require_core_data(), 1); 13087 var import_data13 = __toESM(require_data(), 1); 13088 var import_element57 = __toESM(require_element(), 1); 13089 var import_block_editor8 = __toESM(require_block_editor(), 1); 13090 var import_media_utils = __toESM(require_media_utils(), 1); 13091 var import_preferences3 = __toESM(require_preferences(), 1); 13092 13093 // packages/customize-widgets/build-module/components/block-inspector-button/index.mjs 13094 var import_element46 = __toESM(require_element(), 1); 13095 var import_i18n7 = __toESM(require_i18n(), 1); 13096 var import_components = __toESM(require_components(), 1); 13097 var import_data = __toESM(require_data(), 1); 13098 var import_block_editor = __toESM(require_block_editor(), 1); 13099 var import_jsx_runtime52 = __toESM(require_jsx_runtime(), 1); 13100 function BlockInspectorButton({ inspector, closeMenu, ...props }) { 13101 const selectedBlockClientId = (0, import_data.useSelect)( 13102 (select) => select(import_block_editor.store).getSelectedBlockClientId(), 13103 [] 13104 ); 13105 const selectedBlock = (0, import_element46.useMemo)( 13106 () => document.getElementById(`block-$selectedBlockClientId}`), 13107 [selectedBlockClientId] 13108 ); 13109 return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)( 13110 import_components.MenuItem, 13111 { 13112 onClick: () => { 13113 inspector.open({ 13114 returnFocusWhenClose: selectedBlock 13115 }); 13116 closeMenu(); 13117 }, 13118 ...props, 13119 children: (0, import_i18n7.__)("Show more settings") 13120 } 13121 ); 13122 } 13123 var block_inspector_button_default = BlockInspectorButton; 13124 13125 // packages/customize-widgets/build-module/components/header/index.mjs 13126 var import_components5 = __toESM(require_components(), 1); 13127 var import_block_editor3 = __toESM(require_block_editor(), 1); 13128 var import_element50 = __toESM(require_element(), 1); 13129 var import_keycodes3 = __toESM(require_keycodes(), 1); 13130 var import_i18n12 = __toESM(require_i18n(), 1); 13131 13132 // packages/customize-widgets/build-module/components/inserter/index.mjs 13133 var import_i18n8 = __toESM(require_i18n(), 1); 13134 var import_block_editor2 = __toESM(require_block_editor(), 1); 13135 var import_components2 = __toESM(require_components(), 1); 13136 var import_compose3 = __toESM(require_compose(), 1); 13137 var import_data4 = __toESM(require_data(), 1); 13138 13139 // packages/customize-widgets/build-module/store/index.mjs 13140 var import_data3 = __toESM(require_data(), 1); 13141 13142 // packages/customize-widgets/build-module/store/reducer.mjs 13143 var import_data2 = __toESM(require_data(), 1); 13144 function blockInserterPanel(state = false, action) { 13145 switch (action.type) { 13146 case "SET_IS_INSERTER_OPENED": 13147 return action.value; 13148 } 13149 return state; 13150 } 13151 var reducer_default = (0, import_data2.combineReducers)({ 13152 blockInserterPanel 13153 }); 13154 13155 // packages/customize-widgets/build-module/store/selectors.mjs 13156 var selectors_exports = {}; 13157 __export(selectors_exports, { 13158 __experimentalGetInsertionPoint: () => __experimentalGetInsertionPoint, 13159 isInserterOpened: () => isInserterOpened 13160 }); 13161 var EMPTY_INSERTION_POINT = { 13162 rootClientId: void 0, 13163 insertionIndex: void 0 13164 }; 13165 function isInserterOpened(state) { 13166 return !!state.blockInserterPanel; 13167 } 13168 function __experimentalGetInsertionPoint(state) { 13169 if (typeof state.blockInserterPanel === "boolean") { 13170 return EMPTY_INSERTION_POINT; 13171 } 13172 return state.blockInserterPanel; 13173 } 13174 13175 // packages/customize-widgets/build-module/store/actions.mjs 13176 var actions_exports = {}; 13177 __export(actions_exports, { 13178 setIsInserterOpened: () => setIsInserterOpened 13179 }); 13180 function setIsInserterOpened(value) { 13181 return { 13182 type: "SET_IS_INSERTER_OPENED", 13183 value 13184 }; 13185 } 13186 13187 // packages/customize-widgets/build-module/store/constants.mjs 13188 var STORE_NAME = "core/customize-widgets"; 13189 13190 // packages/customize-widgets/build-module/store/index.mjs 13191 var storeConfig = { 13192 reducer: reducer_default, 13193 selectors: selectors_exports, 13194 actions: actions_exports 13195 }; 13196 var store = (0, import_data3.createReduxStore)(STORE_NAME, storeConfig); 13197 (0, import_data3.register)(store); 13198 13199 // packages/customize-widgets/build-module/components/inserter/index.mjs 13200 var import_jsx_runtime53 = __toESM(require_jsx_runtime(), 1); 13201 function Inserter({ setIsOpened }) { 13202 const inserterTitleId = (0, import_compose3.useInstanceId)( 13203 Inserter, 13204 "customize-widget-layout__inserter-panel-title" 13205 ); 13206 const insertionPoint = (0, import_data4.useSelect)( 13207 (select) => select(store).__experimentalGetInsertionPoint(), 13208 [] 13209 ); 13210 return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)( 13211 "div", 13212 { 13213 className: "customize-widgets-layout__inserter-panel", 13214 "aria-labelledby": inserterTitleId, 13215 children: [ 13216 /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "customize-widgets-layout__inserter-panel-header", children: [ 13217 /* @__PURE__ */ (0, import_jsx_runtime53.jsx)( 13218 "h2", 13219 { 13220 id: inserterTitleId, 13221 className: "customize-widgets-layout__inserter-panel-header-title", 13222 children: (0, import_i18n8.__)("Add a block") 13223 } 13224 ), 13225 /* @__PURE__ */ (0, import_jsx_runtime53.jsx)( 13226 import_components2.Button, 13227 { 13228 size: "small", 13229 icon: close_small_default, 13230 onClick: () => setIsOpened(false), 13231 "aria-label": (0, import_i18n8.__)("Close inserter") 13232 } 13233 ) 13234 ] }), 13235 /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "customize-widgets-layout__inserter-panel-content", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)( 13236 import_block_editor2.__experimentalLibrary, 13237 { 13238 rootClientId: insertionPoint.rootClientId, 13239 __experimentalInsertionIndex: insertionPoint.insertionIndex, 13240 showInserterHelpPanel: true, 13241 onSelect: () => setIsOpened(false) 13242 } 13243 ) }) 13244 ] 13245 } 13246 ); 13247 } 13248 var inserter_default = Inserter; 13249 13250 // packages/customize-widgets/build-module/components/more-menu/index.mjs 13251 var import_components4 = __toESM(require_components(), 1); 13252 var import_data7 = __toESM(require_data(), 1); 13253 var import_element49 = __toESM(require_element(), 1); 13254 var import_i18n11 = __toESM(require_i18n(), 1); 13255 var import_keycodes2 = __toESM(require_keycodes(), 1); 13256 var import_keyboard_shortcuts3 = __toESM(require_keyboard_shortcuts(), 1); 13257 var import_preferences = __toESM(require_preferences(), 1); 13258 13259 // packages/customize-widgets/build-module/components/keyboard-shortcut-help-modal/index.mjs 13260 var import_components3 = __toESM(require_components(), 1); 13261 var import_i18n10 = __toESM(require_i18n(), 1); 13262 var import_keyboard_shortcuts2 = __toESM(require_keyboard_shortcuts(), 1); 13263 var import_data6 = __toESM(require_data(), 1); 13264 var import_element48 = __toESM(require_element(), 1); 13265 13266 // packages/customize-widgets/build-module/components/keyboard-shortcut-help-modal/config.mjs 13267 var import_i18n9 = __toESM(require_i18n(), 1); 13268 var textFormattingShortcuts = [ 13269 { 13270 keyCombination: { modifier: "primary", character: "b" }, 13271 description: (0, import_i18n9.__)("Make the selected text bold.") 13272 }, 13273 { 13274 keyCombination: { modifier: "primary", character: "i" }, 13275 description: (0, import_i18n9.__)("Make the selected text italic.") 13276 }, 13277 { 13278 keyCombination: { modifier: "primary", character: "k" }, 13279 description: (0, import_i18n9.__)("Convert the selected text into a link.") 13280 }, 13281 { 13282 keyCombination: { modifier: "primaryShift", character: "k" }, 13283 description: (0, import_i18n9.__)("Remove a link.") 13284 }, 13285 { 13286 keyCombination: { character: "[[" }, 13287 description: (0, import_i18n9.__)("Insert a link to a post or page.") 13288 }, 13289 { 13290 keyCombination: { modifier: "primary", character: "u" }, 13291 description: (0, import_i18n9.__)("Underline the selected text.") 13292 }, 13293 { 13294 keyCombination: { modifier: "access", character: "d" }, 13295 description: (0, import_i18n9.__)("Strikethrough the selected text.") 13296 }, 13297 { 13298 keyCombination: { modifier: "access", character: "x" }, 13299 description: (0, import_i18n9.__)("Make the selected text inline code.") 13300 }, 13301 { 13302 keyCombination: { 13303 modifier: "access", 13304 character: "0" 13305 }, 13306 aliases: [ 13307 { 13308 modifier: "access", 13309 character: "7" 13310 } 13311 ], 13312 description: (0, import_i18n9.__)("Convert the current heading to a paragraph.") 13313 }, 13314 { 13315 keyCombination: { modifier: "access", character: "1-6" }, 13316 description: (0, import_i18n9.__)( 13317 "Convert the current paragraph or heading to a heading of level 1 to 6." 13318 ) 13319 }, 13320 { 13321 keyCombination: { modifier: "primaryShift", character: "SPACE" }, 13322 description: (0, import_i18n9.__)("Add non breaking space.") 13323 } 13324 ]; 13325 13326 // packages/customize-widgets/build-module/components/keyboard-shortcut-help-modal/shortcut.mjs 13327 var import_element47 = __toESM(require_element(), 1); 13328 var import_keycodes = __toESM(require_keycodes(), 1); 13329 var import_jsx_runtime54 = __toESM(require_jsx_runtime(), 1); 13330 function KeyCombination({ keyCombination, forceAriaLabel }) { 13331 const shortcut = keyCombination.modifier ? import_keycodes.displayShortcutList[keyCombination.modifier]( 13332 keyCombination.character 13333 ) : keyCombination.character; 13334 const ariaLabel = keyCombination.modifier ? import_keycodes.shortcutAriaLabel[keyCombination.modifier]( 13335 keyCombination.character 13336 ) : keyCombination.character; 13337 return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( 13338 "kbd", 13339 { 13340 className: "customize-widgets-keyboard-shortcut-help-modal__shortcut-key-combination", 13341 "aria-label": forceAriaLabel || ariaLabel, 13342 children: (Array.isArray(shortcut) ? shortcut : [shortcut]).map( 13343 (character, index2) => { 13344 if (character === "+") { 13345 return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_element47.Fragment, { children: character }, index2); 13346 } 13347 return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( 13348 "kbd", 13349 { 13350 className: "customize-widgets-keyboard-shortcut-help-modal__shortcut-key", 13351 children: character 13352 }, 13353 index2 13354 ); 13355 } 13356 ) 13357 } 13358 ); 13359 } 13360 function Shortcut({ description, keyCombination, aliases = [], ariaLabel }) { 13361 return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_jsx_runtime54.Fragment, { children: [ 13362 /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "customize-widgets-keyboard-shortcut-help-modal__shortcut-description", children: description }), 13363 /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "customize-widgets-keyboard-shortcut-help-modal__shortcut-term", children: [ 13364 /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( 13365 KeyCombination, 13366 { 13367 keyCombination, 13368 forceAriaLabel: ariaLabel 13369 } 13370 ), 13371 aliases.map((alias, index2) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( 13372 KeyCombination, 13373 { 13374 keyCombination: alias, 13375 forceAriaLabel: ariaLabel 13376 }, 13377 index2 13378 )) 13379 ] }) 13380 ] }); 13381 } 13382 var shortcut_default = Shortcut; 13383 13384 // packages/customize-widgets/build-module/components/keyboard-shortcut-help-modal/dynamic-shortcut.mjs 13385 var import_data5 = __toESM(require_data(), 1); 13386 var import_keyboard_shortcuts = __toESM(require_keyboard_shortcuts(), 1); 13387 var import_jsx_runtime55 = __toESM(require_jsx_runtime(), 1); 13388 function DynamicShortcut({ name }) { 13389 const { keyCombination, description, aliases } = (0, import_data5.useSelect)( 13390 (select) => { 13391 const { 13392 getShortcutKeyCombination, 13393 getShortcutDescription, 13394 getShortcutAliases 13395 } = select(import_keyboard_shortcuts.store); 13396 return { 13397 keyCombination: getShortcutKeyCombination(name), 13398 aliases: getShortcutAliases(name), 13399 description: getShortcutDescription(name) 13400 }; 13401 }, 13402 [name] 13403 ); 13404 if (!keyCombination) { 13405 return null; 13406 } 13407 return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)( 13408 shortcut_default, 13409 { 13410 keyCombination, 13411 description, 13412 aliases 13413 } 13414 ); 13415 } 13416 var dynamic_shortcut_default = DynamicShortcut; 13417 13418 // packages/customize-widgets/build-module/components/keyboard-shortcut-help-modal/index.mjs 13419 var import_jsx_runtime56 = __toESM(require_jsx_runtime(), 1); 13420 var ShortcutList = ({ shortcuts }) => ( 13421 /* 13422 * Disable reason: The `list` ARIA role is redundant but 13423 * Safari+VoiceOver won't announce the list otherwise. 13424 */ 13425 /* eslint-disable jsx-a11y/no-redundant-roles */ 13426 /* @__PURE__ */ (0, import_jsx_runtime56.jsx)( 13427 "ul", 13428 { 13429 className: "customize-widgets-keyboard-shortcut-help-modal__shortcut-list", 13430 role: "list", 13431 children: shortcuts.map((shortcut, index2) => /* @__PURE__ */ (0, import_jsx_runtime56.jsx)( 13432 "li", 13433 { 13434 className: "customize-widgets-keyboard-shortcut-help-modal__shortcut", 13435 children: typeof shortcut === "string" ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(dynamic_shortcut_default, { name: shortcut }) : /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(shortcut_default, { ...shortcut }) 13436 }, 13437 index2 13438 )) 13439 } 13440 ) 13441 ); 13442 var ShortcutSection = ({ title, shortcuts, className }) => /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)( 13443 "section", 13444 { 13445 className: clsx_default( 13446 "customize-widgets-keyboard-shortcut-help-modal__section", 13447 className 13448 ), 13449 children: [ 13450 !!title && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("h2", { className: "customize-widgets-keyboard-shortcut-help-modal__section-title", children: title }), 13451 /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(ShortcutList, { shortcuts }) 13452 ] 13453 } 13454 ); 13455 var ShortcutCategorySection = ({ 13456 title, 13457 categoryName, 13458 additionalShortcuts = [] 13459 }) => { 13460 const categoryShortcuts = (0, import_data6.useSelect)( 13461 (select) => { 13462 return select(import_keyboard_shortcuts2.store).getCategoryShortcuts( 13463 categoryName 13464 ); 13465 }, 13466 [categoryName] 13467 ); 13468 return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)( 13469 ShortcutSection, 13470 { 13471 title, 13472 shortcuts: categoryShortcuts.concat(additionalShortcuts) 13473 } 13474 ); 13475 }; 13476 function KeyboardShortcutHelpModal({ 13477 isModalActive, 13478 toggleModal 13479 }) { 13480 const { registerShortcut } = (0, import_data6.useDispatch)(import_keyboard_shortcuts2.store); 13481 (0, import_element48.useEffect)(() => { 13482 registerShortcut({ 13483 name: "core/customize-widgets/keyboard-shortcuts", 13484 category: "main", 13485 description: (0, import_i18n10.__)("Display these keyboard shortcuts."), 13486 keyCombination: { 13487 modifier: "access", 13488 character: "h" 13489 } 13490 }); 13491 }, [registerShortcut]); 13492 (0, import_keyboard_shortcuts2.useShortcut)("core/customize-widgets/keyboard-shortcuts", toggleModal); 13493 if (!isModalActive) { 13494 return null; 13495 } 13496 return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)( 13497 import_components3.Modal, 13498 { 13499 className: "customize-widgets-keyboard-shortcut-help-modal", 13500 title: (0, import_i18n10.__)("Keyboard shortcuts"), 13501 onRequestClose: toggleModal, 13502 children: [ 13503 /* @__PURE__ */ (0, import_jsx_runtime56.jsx)( 13504 ShortcutSection, 13505 { 13506 className: "customize-widgets-keyboard-shortcut-help-modal__main-shortcuts", 13507 shortcuts: ["core/customize-widgets/keyboard-shortcuts"] 13508 } 13509 ), 13510 /* @__PURE__ */ (0, import_jsx_runtime56.jsx)( 13511 ShortcutCategorySection, 13512 { 13513 title: (0, import_i18n10.__)("Global shortcuts"), 13514 categoryName: "global" 13515 } 13516 ), 13517 /* @__PURE__ */ (0, import_jsx_runtime56.jsx)( 13518 ShortcutCategorySection, 13519 { 13520 title: (0, import_i18n10.__)("Selection shortcuts"), 13521 categoryName: "selection" 13522 } 13523 ), 13524 /* @__PURE__ */ (0, import_jsx_runtime56.jsx)( 13525 ShortcutCategorySection, 13526 { 13527 title: (0, import_i18n10.__)("Block shortcuts"), 13528 categoryName: "block", 13529 additionalShortcuts: [ 13530 { 13531 keyCombination: { character: "/" }, 13532 description: (0, import_i18n10.__)( 13533 "Change the block type after adding a new paragraph." 13534 ), 13535 /* translators: The forward-slash character. e.g. '/'. */ 13536 ariaLabel: (0, import_i18n10.__)("Forward-slash") 13537 } 13538 ] 13539 } 13540 ), 13541 /* @__PURE__ */ (0, import_jsx_runtime56.jsx)( 13542 ShortcutSection, 13543 { 13544 title: (0, import_i18n10.__)("Text formatting"), 13545 shortcuts: textFormattingShortcuts 13546 } 13547 ) 13548 ] 13549 } 13550 ); 13551 } 13552 13553 // packages/customize-widgets/build-module/components/more-menu/index.mjs 13554 var import_jsx_runtime57 = __toESM(require_jsx_runtime(), 1); 13555 function MoreMenu() { 13556 const [ 13557 isKeyboardShortcutsModalActive, 13558 setIsKeyboardShortcutsModalVisible 13559 ] = (0, import_element49.useState)(false); 13560 const toggleKeyboardShortcutsModal = () => setIsKeyboardShortcutsModalVisible(!isKeyboardShortcutsModalActive); 13561 (0, import_keyboard_shortcuts3.useShortcut)( 13562 "core/customize-widgets/keyboard-shortcuts", 13563 toggleKeyboardShortcutsModal 13564 ); 13565 const { toggle } = (0, import_data7.useDispatch)(import_preferences.store); 13566 return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_jsx_runtime57.Fragment, { children: [ 13567 /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( 13568 import_components4.ToolbarDropdownMenu, 13569 { 13570 icon: more_vertical_default, 13571 label: (0, import_i18n11.__)("Options"), 13572 popoverProps: { 13573 placement: "bottom-end", 13574 className: "more-menu-dropdown__content" 13575 }, 13576 toggleProps: { 13577 tooltipPosition: "bottom", 13578 size: "compact" 13579 }, 13580 children: () => /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_jsx_runtime57.Fragment, { children: [ 13581 /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_components4.MenuGroup, { label: (0, import_i18n11._x)("View", "noun"), children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( 13582 import_preferences.PreferenceToggleMenuItem, 13583 { 13584 scope: "core/customize-widgets", 13585 name: "fixedToolbar", 13586 label: (0, import_i18n11.__)("Top toolbar"), 13587 info: (0, import_i18n11.__)( 13588 "Access all block and document tools in a single place" 13589 ), 13590 messageActivated: (0, import_i18n11.__)( 13591 "Top toolbar activated" 13592 ), 13593 messageDeactivated: (0, import_i18n11.__)( 13594 "Top toolbar deactivated" 13595 ) 13596 } 13597 ) }), 13598 /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_components4.MenuGroup, { label: (0, import_i18n11.__)("Tools"), children: [ 13599 /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( 13600 import_components4.MenuItem, 13601 { 13602 onClick: () => { 13603 setIsKeyboardShortcutsModalVisible(true); 13604 }, 13605 shortcut: import_keycodes2.displayShortcut.access("h"), 13606 children: (0, import_i18n11.__)("Keyboard shortcuts") 13607 } 13608 ), 13609 /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( 13610 import_components4.MenuItem, 13611 { 13612 onClick: () => toggle( 13613 "core/customize-widgets", 13614 "welcomeGuide" 13615 ), 13616 children: (0, import_i18n11.__)("Welcome Guide") 13617 } 13618 ), 13619 /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)( 13620 import_components4.MenuItem, 13621 { 13622 role: "menuitem", 13623 icon: external_default, 13624 href: (0, import_i18n11.__)( 13625 "https://wordpress.org/documentation/article/block-based-widgets-editor/" 13626 ), 13627 target: "_blank", 13628 rel: "noopener", 13629 children: [ 13630 (0, import_i18n11.__)("Help"), 13631 /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(VisuallyHidden, { 13632 render: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", {}), 13633 /* translators: accessibility text */ 13634 children: (0, import_i18n11.__)("(opens in a new tab)") 13635 }) 13636 ] 13637 } 13638 ) 13639 ] }), 13640 /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_components4.MenuGroup, { label: (0, import_i18n11.__)("Preferences"), children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( 13641 import_preferences.PreferenceToggleMenuItem, 13642 { 13643 scope: "core/customize-widgets", 13644 name: "keepCaretInsideBlock", 13645 label: (0, import_i18n11.__)( 13646 "Contain text cursor inside block" 13647 ), 13648 info: (0, import_i18n11.__)( 13649 "Aids screen readers by stopping text caret from leaving blocks." 13650 ), 13651 messageActivated: (0, import_i18n11.__)( 13652 "Contain text cursor inside block activated" 13653 ), 13654 messageDeactivated: (0, import_i18n11.__)( 13655 "Contain text cursor inside block deactivated" 13656 ) 13657 } 13658 ) }) 13659 ] }) 13660 } 13661 ), 13662 /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( 13663 KeyboardShortcutHelpModal, 13664 { 13665 isModalActive: isKeyboardShortcutsModalActive, 13666 toggleModal: toggleKeyboardShortcutsModal 13667 } 13668 ) 13669 ] }); 13670 } 13671 13672 // packages/customize-widgets/build-module/components/header/index.mjs 13673 var import_jsx_runtime58 = __toESM(require_jsx_runtime(), 1); 13674 function Header3({ 13675 sidebar, 13676 inserter, 13677 isInserterOpened: isInserterOpened2, 13678 setIsInserterOpened: setIsInserterOpened2, 13679 isFixedToolbarActive 13680 }) { 13681 const [[hasUndo, hasRedo], setUndoRedo] = (0, import_element50.useState)([ 13682 sidebar.hasUndo(), 13683 sidebar.hasRedo() 13684 ]); 13685 const shortcut = (0, import_keycodes3.isAppleOS)() ? import_keycodes3.displayShortcut.primaryShift("z") : import_keycodes3.displayShortcut.primary("y"); 13686 (0, import_element50.useEffect)(() => { 13687 return sidebar.subscribeHistory(() => { 13688 setUndoRedo([sidebar.hasUndo(), sidebar.hasRedo()]); 13689 }); 13690 }, [sidebar]); 13691 return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(import_jsx_runtime58.Fragment, { children: [ 13692 /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( 13693 "div", 13694 { 13695 className: clsx_default("customize-widgets-header", { 13696 "is-fixed-toolbar-active": isFixedToolbarActive 13697 }), 13698 children: /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)( 13699 import_block_editor3.NavigableToolbar, 13700 { 13701 className: "customize-widgets-header-toolbar", 13702 "aria-label": (0, import_i18n12.__)("Document tools"), 13703 children: [ 13704 /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( 13705 import_components5.ToolbarItem, 13706 { 13707 as: import_components5.Button, 13708 icon: !(0, import_i18n12.isRTL)() ? undo_default : redo_default, 13709 label: (0, import_i18n12.__)("Undo"), 13710 shortcut: import_keycodes3.displayShortcut.primary("z"), 13711 "aria-disabled": !hasUndo, 13712 onClick: hasUndo ? sidebar.undo : void 0, 13713 size: "compact", 13714 className: "customize-widgets-editor-history-button undo-button" 13715 } 13716 ), 13717 /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( 13718 import_components5.ToolbarItem, 13719 { 13720 as: import_components5.Button, 13721 icon: !(0, import_i18n12.isRTL)() ? redo_default : undo_default, 13722 label: (0, import_i18n12.__)("Redo"), 13723 shortcut, 13724 "aria-disabled": !hasRedo, 13725 onClick: hasRedo ? sidebar.redo : void 0, 13726 size: "compact", 13727 className: "customize-widgets-editor-history-button redo-button" 13728 } 13729 ), 13730 /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( 13731 import_components5.ToolbarItem, 13732 { 13733 as: import_components5.Button, 13734 className: "customize-widgets-header-toolbar__inserter-toggle", 13735 isPressed: isInserterOpened2, 13736 variant: "primary", 13737 icon: plus_default, 13738 label: (0, import_i18n12._x)( 13739 "Add block", 13740 "Generic label for block inserter button" 13741 ), 13742 onClick: () => { 13743 setIsInserterOpened2((isOpen) => !isOpen); 13744 }, 13745 size: "compact" 13746 } 13747 ), 13748 /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(MoreMenu, {}) 13749 ] 13750 } 13751 ) 13752 } 13753 ), 13754 (0, import_element50.createPortal)( 13755 /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(inserter_default, { setIsOpened: setIsInserterOpened2 }), 13756 inserter.contentContainer[0] 13757 ) 13758 ] }); 13759 } 13760 var header_default = Header3; 13761 13762 // packages/customize-widgets/build-module/components/inserter/use-inserter.mjs 13763 var import_element51 = __toESM(require_element(), 1); 13764 var import_data8 = __toESM(require_data(), 1); 13765 function useInserter(inserter) { 13766 const isInserterOpened2 = (0, import_data8.useSelect)( 13767 (select) => select(store).isInserterOpened(), 13768 [] 13769 ); 13770 const { setIsInserterOpened: setIsInserterOpened2 } = (0, import_data8.useDispatch)(store); 13771 (0, import_element51.useEffect)(() => { 13772 if (isInserterOpened2) { 13773 inserter.open(); 13774 } else { 13775 inserter.close(); 13776 } 13777 }, [inserter, isInserterOpened2]); 13778 return [ 13779 isInserterOpened2, 13780 (0, import_element51.useCallback)( 13781 (updater) => { 13782 let isOpen = updater; 13783 if (typeof updater === "function") { 13784 isOpen = updater( 13785 (0, import_data8.select)(store).isInserterOpened() 13786 ); 13787 } 13788 setIsInserterOpened2(isOpen); 13789 }, 13790 [setIsInserterOpened2] 13791 ) 13792 ]; 13793 } 13794 13795 // packages/customize-widgets/build-module/components/sidebar-block-editor/sidebar-editor-provider.mjs 13796 var import_block_editor5 = __toESM(require_block_editor(), 1); 13797 13798 // packages/customize-widgets/build-module/components/sidebar-block-editor/use-sidebar-block-editor.mjs 13799 var import_es6 = __toESM(require_es6(), 1); 13800 var import_element52 = __toESM(require_element(), 1); 13801 var import_is_shallow_equal = __toESM(require_is_shallow_equal(), 1); 13802 var import_widgets2 = __toESM(require_widgets(), 1); 13803 13804 // packages/customize-widgets/build-module/utils.mjs 13805 var import_blocks = __toESM(require_blocks(), 1); 13806 var import_widgets = __toESM(require_widgets(), 1); 13807 function settingIdToWidgetId(settingId) { 13808 const matches = settingId.match(/^widget_(.+)(?:\[(\d+)\])$/); 13809 if (matches) { 13810 const idBase = matches[1]; 13811 const number = parseInt(matches[2], 10); 13812 return `$idBase}-$number}`; 13813 } 13814 return settingId; 13815 } 13816 function blockToWidget(block, existingWidget = null) { 13817 let widget; 13818 const isValidLegacyWidgetBlock = block.name === "core/legacy-widget" && (block.attributes.id || block.attributes.instance); 13819 if (isValidLegacyWidgetBlock) { 13820 if (block.attributes.id) { 13821 widget = { 13822 id: block.attributes.id 13823 }; 13824 } else { 13825 const { encoded, hash, raw, ...rest } = block.attributes.instance; 13826 widget = { 13827 idBase: block.attributes.idBase, 13828 instance: { 13829 ...existingWidget?.instance, 13830 // Required only for the customizer. 13831 is_widget_customizer_js_value: true, 13832 encoded_serialized_instance: encoded, 13833 instance_hash_key: hash, 13834 raw_instance: raw, 13835 ...rest 13836 } 13837 }; 13838 } 13839 } else { 13840 const instance = { 13841 content: (0, import_blocks.serialize)(block) 13842 }; 13843 widget = { 13844 idBase: "block", 13845 widgetClass: "WP_Widget_Block", 13846 instance: { 13847 raw_instance: instance 13848 } 13849 }; 13850 } 13851 const { form, rendered, ...restExistingWidget } = existingWidget || {}; 13852 return { 13853 ...restExistingWidget, 13854 ...widget 13855 }; 13856 } 13857 function widgetToBlock({ id, idBase, number, instance }) { 13858 let block; 13859 const { 13860 encoded_serialized_instance: encoded, 13861 instance_hash_key: hash, 13862 raw_instance: raw, 13863 ...rest 13864 } = instance; 13865 if (idBase === "block") { 13866 const parsedBlocks = (0, import_blocks.parse)(raw.content ?? "", { 13867 __unstableSkipAutop: true 13868 }); 13869 block = parsedBlocks.length ? parsedBlocks[0] : (0, import_blocks.createBlock)("core/paragraph", {}); 13870 } else if (number) { 13871 block = (0, import_blocks.createBlock)("core/legacy-widget", { 13872 idBase, 13873 instance: { 13874 encoded, 13875 hash, 13876 raw, 13877 ...rest 13878 } 13879 }); 13880 } else { 13881 block = (0, import_blocks.createBlock)("core/legacy-widget", { 13882 id 13883 }); 13884 } 13885 return (0, import_widgets.addWidgetIdToBlock)(block, id); 13886 } 13887 13888 // packages/customize-widgets/build-module/components/sidebar-block-editor/use-sidebar-block-editor.mjs 13889 function widgetsToBlocks(widgets) { 13890 return widgets.map((widget) => widgetToBlock(widget)); 13891 } 13892 function useSidebarBlockEditor(sidebar) { 13893 const [blocks, setBlocks] = (0, import_element52.useState)( 13894 () => widgetsToBlocks(sidebar.getWidgets()) 13895 ); 13896 (0, import_element52.useEffect)(() => { 13897 return sidebar.subscribe((prevWidgets, nextWidgets) => { 13898 setBlocks((prevBlocks) => { 13899 const prevWidgetsMap = new Map( 13900 prevWidgets.map((widget) => [widget.id, widget]) 13901 ); 13902 const prevBlocksMap = new Map( 13903 prevBlocks.map((block) => [ 13904 (0, import_widgets2.getWidgetIdFromBlock)(block), 13905 block 13906 ]) 13907 ); 13908 const nextBlocks = nextWidgets.map((nextWidget) => { 13909 const prevWidget = prevWidgetsMap.get(nextWidget.id); 13910 if (prevWidget && prevWidget === nextWidget) { 13911 return prevBlocksMap.get(nextWidget.id); 13912 } 13913 return widgetToBlock(nextWidget); 13914 }); 13915 if ((0, import_is_shallow_equal.isShallowEqual)(prevBlocks, nextBlocks)) { 13916 return prevBlocks; 13917 } 13918 return nextBlocks; 13919 }); 13920 }); 13921 }, [sidebar]); 13922 const onChangeBlocks = (0, import_element52.useCallback)( 13923 (nextBlocks) => { 13924 setBlocks((prevBlocks) => { 13925 if ((0, import_is_shallow_equal.isShallowEqual)(prevBlocks, nextBlocks)) { 13926 return prevBlocks; 13927 } 13928 const prevBlocksMap = new Map( 13929 prevBlocks.map((block) => [ 13930 (0, import_widgets2.getWidgetIdFromBlock)(block), 13931 block 13932 ]) 13933 ); 13934 const nextWidgets = nextBlocks.map((nextBlock) => { 13935 const widgetId = (0, import_widgets2.getWidgetIdFromBlock)(nextBlock); 13936 if (widgetId && prevBlocksMap.has(widgetId)) { 13937 const prevBlock = prevBlocksMap.get(widgetId); 13938 const prevWidget = sidebar.getWidget(widgetId); 13939 if ((0, import_es6.default)(nextBlock, prevBlock) && prevWidget) { 13940 return prevWidget; 13941 } 13942 return blockToWidget(nextBlock, prevWidget); 13943 } 13944 return blockToWidget(nextBlock); 13945 }); 13946 if ((0, import_is_shallow_equal.isShallowEqual)(sidebar.getWidgets(), nextWidgets)) { 13947 return prevBlocks; 13948 } 13949 const addedWidgetIds = sidebar.setWidgets(nextWidgets); 13950 return nextBlocks.reduce( 13951 (updatedNextBlocks, nextBlock, index2) => { 13952 const addedWidgetId = addedWidgetIds[index2]; 13953 if (addedWidgetId !== null) { 13954 if (updatedNextBlocks === nextBlocks) { 13955 updatedNextBlocks = nextBlocks.slice(); 13956 } 13957 updatedNextBlocks[index2] = (0, import_widgets2.addWidgetIdToBlock)( 13958 nextBlock, 13959 addedWidgetId 13960 ); 13961 } 13962 return updatedNextBlocks; 13963 }, 13964 nextBlocks 13965 ); 13966 }); 13967 }, 13968 [sidebar] 13969 ); 13970 return [blocks, onChangeBlocks, onChangeBlocks]; 13971 } 13972 13973 // packages/customize-widgets/build-module/components/focus-control/use-blocks-focus-control.mjs 13974 var import_element54 = __toESM(require_element(), 1); 13975 var import_data9 = __toESM(require_data(), 1); 13976 var import_block_editor4 = __toESM(require_block_editor(), 1); 13977 var import_widgets3 = __toESM(require_widgets(), 1); 13978 13979 // packages/customize-widgets/build-module/components/focus-control/index.mjs 13980 var import_element53 = __toESM(require_element(), 1); 13981 var import_jsx_runtime59 = __toESM(require_jsx_runtime(), 1); 13982 var FocusControlContext = (0, import_element53.createContext)(); 13983 FocusControlContext.displayName = "FocusControlContext"; 13984 function FocusControl({ api, sidebarControls, children }) { 13985 const [focusedWidgetIdRef, setFocusedWidgetIdRef] = (0, import_element53.useState)({ 13986 current: null 13987 }); 13988 const focusWidget = (0, import_element53.useCallback)( 13989 (widgetId) => { 13990 for (const sidebarControl of sidebarControls) { 13991 const widgets = sidebarControl.setting.get(); 13992 if (widgets.includes(widgetId)) { 13993 sidebarControl.sectionInstance.expand({ 13994 // Schedule it after the complete callback so that 13995 // it won't be overridden by the "Back" button focus. 13996 completeCallback() { 13997 setFocusedWidgetIdRef({ current: widgetId }); 13998 } 13999 }); 14000 break; 14001 } 14002 } 14003 }, 14004 [sidebarControls] 14005 ); 14006 (0, import_element53.useEffect)(() => { 14007 function handleFocus(settingId) { 14008 const widgetId = settingIdToWidgetId(settingId); 14009 focusWidget(widgetId); 14010 } 14011 let previewBound = false; 14012 function handleReady() { 14013 api.previewer.preview.bind( 14014 "focus-control-for-setting", 14015 handleFocus 14016 ); 14017 previewBound = true; 14018 } 14019 api.previewer.bind("ready", handleReady); 14020 return () => { 14021 api.previewer.unbind("ready", handleReady); 14022 if (previewBound) { 14023 api.previewer.preview.unbind( 14024 "focus-control-for-setting", 14025 handleFocus 14026 ); 14027 } 14028 }; 14029 }, [api, focusWidget]); 14030 const context = (0, import_element53.useMemo)( 14031 () => [focusedWidgetIdRef, focusWidget], 14032 [focusedWidgetIdRef, focusWidget] 14033 ); 14034 return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(FocusControlContext.Provider, { value: context, children }); 14035 } 14036 var useFocusControl = () => (0, import_element53.useContext)(FocusControlContext); 14037 14038 // packages/customize-widgets/build-module/components/focus-control/use-blocks-focus-control.mjs 14039 function useBlocksFocusControl(blocks) { 14040 const { selectBlock } = (0, import_data9.useDispatch)(import_block_editor4.store); 14041 const [focusedWidgetIdRef] = useFocusControl(); 14042 const blocksRef = (0, import_element54.useRef)(blocks); 14043 (0, import_element54.useEffect)(() => { 14044 blocksRef.current = blocks; 14045 }, [blocks]); 14046 (0, import_element54.useEffect)(() => { 14047 if (focusedWidgetIdRef.current) { 14048 const focusedBlock = blocksRef.current.find( 14049 (block) => (0, import_widgets3.getWidgetIdFromBlock)(block) === focusedWidgetIdRef.current 14050 ); 14051 if (focusedBlock) { 14052 selectBlock(focusedBlock.clientId); 14053 const blockNode = document.querySelector( 14054 `[data-block="$focusedBlock.clientId}"]` 14055 ); 14056 blockNode?.focus(); 14057 } 14058 } 14059 }, [focusedWidgetIdRef, selectBlock]); 14060 } 14061 14062 // packages/customize-widgets/build-module/lock-unlock.mjs 14063 var import_private_apis2 = __toESM(require_private_apis(), 1); 14064 var { lock: lock2, unlock: unlock2 } = (0, import_private_apis2.__dangerousOptInToUnstableAPIsOnlyForCoreModules)( 14065 "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.", 14066 "@wordpress/customize-widgets" 14067 ); 14068 14069 // packages/customize-widgets/build-module/components/sidebar-block-editor/sidebar-editor-provider.mjs 14070 var import_jsx_runtime60 = __toESM(require_jsx_runtime(), 1); 14071 var { ExperimentalBlockEditorProvider } = unlock2(import_block_editor5.privateApis); 14072 function SidebarEditorProvider({ 14073 sidebar, 14074 settings, 14075 children 14076 }) { 14077 const [blocks, onInput, onChange] = useSidebarBlockEditor(sidebar); 14078 useBlocksFocusControl(blocks); 14079 return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)( 14080 ExperimentalBlockEditorProvider, 14081 { 14082 value: blocks, 14083 onInput, 14084 onChange, 14085 settings, 14086 useSubRegistry: false, 14087 children 14088 } 14089 ); 14090 } 14091 14092 // packages/customize-widgets/build-module/components/welcome-guide/index.mjs 14093 var import_i18n13 = __toESM(require_i18n(), 1); 14094 var import_components6 = __toESM(require_components(), 1); 14095 var import_data10 = __toESM(require_data(), 1); 14096 var import_preferences2 = __toESM(require_preferences(), 1); 14097 var import_jsx_runtime61 = __toESM(require_jsx_runtime(), 1); 14098 function WelcomeGuide({ sidebar }) { 14099 const { toggle } = (0, import_data10.useDispatch)(import_preferences2.store); 14100 const isEntirelyBlockWidgets = sidebar.getWidgets().every((widget) => widget.id.startsWith("block-")); 14101 return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { className: "customize-widgets-welcome-guide", children: [ 14102 /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { className: "customize-widgets-welcome-guide__image__wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("picture", { children: [ 14103 /* @__PURE__ */ (0, import_jsx_runtime61.jsx)( 14104 "source", 14105 { 14106 srcSet: "https://s.w.org/images/block-editor/welcome-editor.svg", 14107 media: "(prefers-reduced-motion: reduce)" 14108 } 14109 ), 14110 /* @__PURE__ */ (0, import_jsx_runtime61.jsx)( 14111 "img", 14112 { 14113 className: "customize-widgets-welcome-guide__image", 14114 src: "https://s.w.org/images/block-editor/welcome-editor.gif", 14115 width: "312", 14116 height: "240", 14117 alt: "" 14118 } 14119 ) 14120 ] }) }), 14121 /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("h1", { className: "customize-widgets-welcome-guide__heading", children: (0, import_i18n13.__)("Welcome to block Widgets") }), 14122 /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("p", { className: "customize-widgets-welcome-guide__text", children: isEntirelyBlockWidgets ? (0, import_i18n13.__)( 14123 "Your theme provides different \u201Cblock\u201D areas for you to add and edit content.\xA0Try adding a search bar, social icons, or other types of blocks here and see how they\u2019ll look on your site." 14124 ) : (0, import_i18n13.__)( 14125 "You can now add any block to your site\u2019s widget areas. Don\u2019t worry, all of your favorite widgets still work flawlessly." 14126 ) }), 14127 /* @__PURE__ */ (0, import_jsx_runtime61.jsx)( 14128 import_components6.Button, 14129 { 14130 size: "compact", 14131 variant: "primary", 14132 onClick: () => toggle("core/customize-widgets", "welcomeGuide"), 14133 children: (0, import_i18n13.__)("Got it") 14134 } 14135 ), 14136 /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("hr", { className: "customize-widgets-welcome-guide__separator" }), 14137 !isEntirelyBlockWidgets && /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("p", { className: "customize-widgets-welcome-guide__more-info", children: [ 14138 (0, import_i18n13.__)("Want to stick with the old widgets?"), 14139 /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("br", {}), 14140 /* @__PURE__ */ (0, import_jsx_runtime61.jsx)( 14141 import_components6.ExternalLink, 14142 { 14143 href: (0, import_i18n13.__)( 14144 "https://wordpress.org/plugins/classic-widgets/" 14145 ), 14146 children: (0, import_i18n13.__)("Get the Classic Widgets plugin.") 14147 } 14148 ) 14149 ] }), 14150 /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("p", { className: "customize-widgets-welcome-guide__more-info", children: [ 14151 (0, import_i18n13.__)("New to the block editor?"), 14152 /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("br", {}), 14153 /* @__PURE__ */ (0, import_jsx_runtime61.jsx)( 14154 import_components6.ExternalLink, 14155 { 14156 href: (0, import_i18n13.__)( 14157 "https://wordpress.org/documentation/article/wordpress-block-editor/" 14158 ), 14159 children: (0, import_i18n13.__)("Here's a detailed guide.") 14160 } 14161 ) 14162 ] }) 14163 ] }); 14164 } 14165 14166 // packages/customize-widgets/build-module/components/keyboard-shortcuts/index.mjs 14167 var import_element55 = __toESM(require_element(), 1); 14168 var import_keyboard_shortcuts4 = __toESM(require_keyboard_shortcuts(), 1); 14169 var import_keycodes4 = __toESM(require_keycodes(), 1); 14170 var import_data11 = __toESM(require_data(), 1); 14171 var import_i18n14 = __toESM(require_i18n(), 1); 14172 var import_block_editor6 = __toESM(require_block_editor(), 1); 14173 var { usesNativeUndo } = unlock2(import_block_editor6.privateApis); 14174 function KeyboardShortcuts({ undo, redo, save }) { 14175 (0, import_keyboard_shortcuts4.useShortcut)("core/customize-widgets/undo", (event) => { 14176 if (usesNativeUndo(event)) { 14177 return; 14178 } 14179 undo(); 14180 event.preventDefault(); 14181 }); 14182 (0, import_keyboard_shortcuts4.useShortcut)("core/customize-widgets/redo", (event) => { 14183 if (usesNativeUndo(event)) { 14184 return; 14185 } 14186 redo(); 14187 event.preventDefault(); 14188 }); 14189 (0, import_keyboard_shortcuts4.useShortcut)("core/customize-widgets/save", (event) => { 14190 event.preventDefault(); 14191 save(); 14192 }); 14193 return null; 14194 } 14195 function KeyboardShortcutsRegister() { 14196 const { registerShortcut, unregisterShortcut } = (0, import_data11.useDispatch)( 14197 import_keyboard_shortcuts4.store 14198 ); 14199 (0, import_element55.useEffect)(() => { 14200 registerShortcut({ 14201 name: "core/customize-widgets/undo", 14202 category: "global", 14203 description: (0, import_i18n14.__)("Undo your last changes."), 14204 keyCombination: { 14205 modifier: "primary", 14206 character: "z" 14207 } 14208 }); 14209 registerShortcut({ 14210 name: "core/customize-widgets/redo", 14211 category: "global", 14212 description: (0, import_i18n14.__)("Redo your last undo."), 14213 keyCombination: { 14214 modifier: "primaryShift", 14215 character: "z" 14216 }, 14217 // Disable on Apple OS because it conflicts with the browser's 14218 // history shortcut. It's a fine alias for both Windows and Linux. 14219 // Since there's no conflict for Ctrl+Shift+Z on both Windows and 14220 // Linux, we keep it as the default for consistency. 14221 aliases: (0, import_keycodes4.isAppleOS)() ? [] : [ 14222 { 14223 modifier: "primary", 14224 character: "y" 14225 } 14226 ] 14227 }); 14228 registerShortcut({ 14229 name: "core/customize-widgets/save", 14230 category: "global", 14231 description: (0, import_i18n14.__)("Save your changes."), 14232 keyCombination: { 14233 modifier: "primary", 14234 character: "s" 14235 } 14236 }); 14237 return () => { 14238 unregisterShortcut("core/customize-widgets/undo"); 14239 unregisterShortcut("core/customize-widgets/redo"); 14240 unregisterShortcut("core/customize-widgets/save"); 14241 }; 14242 }, [registerShortcut]); 14243 return null; 14244 } 14245 KeyboardShortcuts.Register = KeyboardShortcutsRegister; 14246 var keyboard_shortcuts_default = KeyboardShortcuts; 14247 14248 // packages/customize-widgets/build-module/components/block-appender/index.mjs 14249 var import_element56 = __toESM(require_element(), 1); 14250 var import_block_editor7 = __toESM(require_block_editor(), 1); 14251 var import_data12 = __toESM(require_data(), 1); 14252 var import_jsx_runtime62 = __toESM(require_jsx_runtime(), 1); 14253 function BlockAppender(props) { 14254 const ref = (0, import_element56.useRef)(); 14255 const isBlocksListEmpty = (0, import_data12.useSelect)( 14256 (select) => select(import_block_editor7.store).getBlockCount() === 0 14257 ); 14258 (0, import_element56.useEffect)(() => { 14259 if (isBlocksListEmpty && ref.current) { 14260 const { ownerDocument: ownerDocument2 } = ref.current; 14261 if (!ownerDocument2.activeElement || ownerDocument2.activeElement === ownerDocument2.body) { 14262 ref.current.focus(); 14263 } 14264 } 14265 }, [isBlocksListEmpty]); 14266 return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_block_editor7.ButtonBlockAppender, { ...props, ref }); 14267 } 14268 14269 // packages/customize-widgets/build-module/components/sidebar-block-editor/index.mjs 14270 var import_jsx_runtime63 = __toESM(require_jsx_runtime(), 1); 14271 var { ExperimentalBlockCanvas: BlockCanvas } = unlock2( 14272 import_block_editor8.privateApis 14273 ); 14274 function SidebarBlockEditor({ 14275 blockEditorSettings, 14276 sidebar, 14277 inserter, 14278 inspector 14279 }) { 14280 const [isInserterOpened2, setIsInserterOpened2] = useInserter(inserter); 14281 const isMediumViewport = (0, import_compose4.useViewportMatch)("small"); 14282 const { 14283 hasUploadPermissions, 14284 isFixedToolbarActive, 14285 keepCaretInsideBlock, 14286 isWelcomeGuideActive 14287 } = (0, import_data13.useSelect)((select) => { 14288 const { get } = select(import_preferences3.store); 14289 return { 14290 hasUploadPermissions: select(import_core_data.store).canUser("create", { 14291 kind: "postType", 14292 name: "attachment" 14293 }) ?? true, 14294 isFixedToolbarActive: !!get( 14295 "core/customize-widgets", 14296 "fixedToolbar" 14297 ), 14298 keepCaretInsideBlock: !!get( 14299 "core/customize-widgets", 14300 "keepCaretInsideBlock" 14301 ), 14302 isWelcomeGuideActive: !!get( 14303 "core/customize-widgets", 14304 "welcomeGuide" 14305 ) 14306 }; 14307 }, []); 14308 const settings = (0, import_element57.useMemo)(() => { 14309 let mediaUploadBlockEditor; 14310 if (hasUploadPermissions) { 14311 mediaUploadBlockEditor = ({ onError, ...argumentsObject }) => { 14312 (0, import_media_utils.uploadMedia)({ 14313 wpAllowedMimeTypes: blockEditorSettings.allowedMimeTypes, 14314 onError: ({ message }) => onError(message), 14315 ...argumentsObject 14316 }); 14317 }; 14318 } 14319 return { 14320 ...blockEditorSettings, 14321 __experimentalSetIsInserterOpened: setIsInserterOpened2, 14322 mediaUpload: mediaUploadBlockEditor, 14323 hasFixedToolbar: isFixedToolbarActive || !isMediumViewport, 14324 keepCaretInsideBlock, 14325 __unstableHasCustomAppender: true 14326 }; 14327 }, [ 14328 hasUploadPermissions, 14329 blockEditorSettings, 14330 isFixedToolbarActive, 14331 isMediumViewport, 14332 keepCaretInsideBlock, 14333 setIsInserterOpened2 14334 ]); 14335 if (isWelcomeGuideActive) { 14336 return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(WelcomeGuide, { sidebar }); 14337 } 14338 return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_jsx_runtime63.Fragment, { children: [ 14339 /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(keyboard_shortcuts_default.Register, {}), 14340 /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(SidebarEditorProvider, { sidebar, settings, children: [ 14341 /* @__PURE__ */ (0, import_jsx_runtime63.jsx)( 14342 keyboard_shortcuts_default, 14343 { 14344 undo: sidebar.undo, 14345 redo: sidebar.redo, 14346 save: sidebar.save 14347 } 14348 ), 14349 /* @__PURE__ */ (0, import_jsx_runtime63.jsx)( 14350 header_default, 14351 { 14352 sidebar, 14353 inserter, 14354 isInserterOpened: isInserterOpened2, 14355 setIsInserterOpened: setIsInserterOpened2, 14356 isFixedToolbarActive: isFixedToolbarActive || !isMediumViewport 14357 } 14358 ), 14359 (isFixedToolbarActive || !isMediumViewport) && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_block_editor8.BlockToolbar, { hideDragHandle: true }), 14360 /* @__PURE__ */ (0, import_jsx_runtime63.jsx)( 14361 BlockCanvas, 14362 { 14363 shouldIframe: false, 14364 styles: settings.defaultEditorStyles, 14365 height: "100%", 14366 children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_block_editor8.BlockList, { renderAppender: BlockAppender }) 14367 } 14368 ), 14369 (0, import_element57.createPortal)( 14370 // This is a temporary hack to prevent button component inside <BlockInspector> 14371 // from submitting form when type="button" is not specified. 14372 /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("form", { onSubmit: (event) => event.preventDefault(), children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_block_editor8.BlockInspector, {}) }), 14373 inspector.contentContainer[0] 14374 ) 14375 ] }), 14376 /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_block_editor8.__unstableBlockSettingsMenuFirstItem, { children: ({ onClose }) => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)( 14377 block_inspector_button_default, 14378 { 14379 inspector, 14380 closeMenu: onClose 14381 } 14382 ) }) 14383 ] }); 14384 } 14385 14386 // packages/customize-widgets/build-module/components/sidebar-controls/index.mjs 14387 var import_element58 = __toESM(require_element(), 1); 14388 var import_jsx_runtime64 = __toESM(require_jsx_runtime(), 1); 14389 var SidebarControlsContext = (0, import_element58.createContext)(); 14390 SidebarControlsContext.displayName = "SidebarControlsContext"; 14391 function SidebarControls({ 14392 sidebarControls, 14393 activeSidebarControl, 14394 children 14395 }) { 14396 const context = (0, import_element58.useMemo)( 14397 () => ({ 14398 sidebarControls, 14399 activeSidebarControl 14400 }), 14401 [sidebarControls, activeSidebarControl] 14402 ); 14403 return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(SidebarControlsContext.Provider, { value: context, children }); 14404 } 14405 function useSidebarControls() { 14406 const { sidebarControls } = (0, import_element58.useContext)(SidebarControlsContext); 14407 return sidebarControls; 14408 } 14409 function useActiveSidebarControl() { 14410 const { activeSidebarControl } = (0, import_element58.useContext)(SidebarControlsContext); 14411 return activeSidebarControl; 14412 } 14413 14414 // packages/customize-widgets/build-module/components/customize-widgets/use-clear-selected-block.mjs 14415 var import_element59 = __toESM(require_element(), 1); 14416 var import_data14 = __toESM(require_data(), 1); 14417 var import_block_editor9 = __toESM(require_block_editor(), 1); 14418 function useClearSelectedBlock(sidebarControl, popoverRef) { 14419 const { hasSelectedBlock, hasMultiSelection } = (0, import_data14.useSelect)(import_block_editor9.store); 14420 const { clearSelectedBlock } = (0, import_data14.useDispatch)(import_block_editor9.store); 14421 (0, import_element59.useEffect)(() => { 14422 if (popoverRef.current && sidebarControl) { 14423 let handleClearSelectedBlock = function(element) { 14424 if ( 14425 // 1. Make sure there are blocks being selected. 14426 (hasSelectedBlock() || hasMultiSelection()) && // 2. The element should exist in the DOM (not deleted). 14427 element && ownerDocument2.contains(element) && // 3. It should also not exist in the container, the popover, nor the dialog. 14428 !container.contains(element) && !popoverRef.current.contains(element) && !element.closest("[data-wp-compat-overlay-slot]") && !element.closest('[role="dialog"]') && // 4. The inspector should not be opened. 14429 !inspector.expanded() 14430 ) { 14431 clearSelectedBlock(); 14432 } 14433 }, handleMouseDown = function(event) { 14434 handleClearSelectedBlock(event.target); 14435 }, handleBlur = function() { 14436 handleClearSelectedBlock(ownerDocument2.activeElement); 14437 }; 14438 const inspector = sidebarControl.inspector; 14439 const container = sidebarControl.container[0]; 14440 const ownerDocument2 = container.ownerDocument; 14441 const ownerWindow = ownerDocument2.defaultView; 14442 ownerDocument2.addEventListener("mousedown", handleMouseDown); 14443 ownerWindow.addEventListener("blur", handleBlur); 14444 return () => { 14445 ownerDocument2.removeEventListener( 14446 "mousedown", 14447 handleMouseDown 14448 ); 14449 ownerWindow.removeEventListener("blur", handleBlur); 14450 }; 14451 } 14452 }, [ 14453 popoverRef, 14454 sidebarControl, 14455 hasSelectedBlock, 14456 hasMultiSelection, 14457 clearSelectedBlock 14458 ]); 14459 } 14460 14461 // packages/customize-widgets/build-module/components/customize-widgets/index.mjs 14462 var import_jsx_runtime65 = __toESM(require_jsx_runtime(), 1); 14463 function CustomizeWidgets({ 14464 api, 14465 sidebarControls, 14466 blockEditorSettings 14467 }) { 14468 const [activeSidebarControl, setActiveSidebarControl] = (0, import_element60.useState)(null); 14469 const parentContainer = document.getElementById( 14470 "customize-theme-controls" 14471 ); 14472 const popoverRef = (0, import_element60.useRef)(); 14473 const adminPrimary = (0, import_element60.useMemo)(() => getAdminThemeColors().primary, []); 14474 useEnableWpCompatOverlaySlot(); 14475 useClearSelectedBlock(activeSidebarControl, popoverRef); 14476 (0, import_element60.useEffect)(() => { 14477 const unsubscribers = sidebarControls.map( 14478 (sidebarControl) => sidebarControl.subscribe((expanded) => { 14479 if (expanded) { 14480 setActiveSidebarControl(sidebarControl); 14481 } 14482 }) 14483 ); 14484 return () => { 14485 unsubscribers.forEach((unsubscriber) => unsubscriber()); 14486 }; 14487 }, [sidebarControls]); 14488 const activeSidebar = activeSidebarControl && (0, import_element60.createPortal)( 14489 /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(ErrorBoundary, { children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)( 14490 SidebarBlockEditor, 14491 { 14492 blockEditorSettings, 14493 sidebar: activeSidebarControl.sidebarAdapter, 14494 inserter: activeSidebarControl.inserter, 14495 inspector: activeSidebarControl.inspector 14496 }, 14497 activeSidebarControl.id 14498 ) }), 14499 activeSidebarControl.container[0] 14500 ); 14501 const popover = parentContainer && (0, import_element60.createPortal)( 14502 /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "customize-widgets-popover", ref: popoverRef, children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_components7.Popover.Slot, {}) }), 14503 parentContainer 14504 ); 14505 return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_components7.SlotFillProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_theme.ThemeProvider, { isRoot: true, color: { primary: adminPrimary }, children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)( 14506 SidebarControls, 14507 { 14508 sidebarControls, 14509 activeSidebarControl, 14510 children: /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)( 14511 FocusControl, 14512 { 14513 api, 14514 sidebarControls, 14515 children: [ 14516 activeSidebar, 14517 popover 14518 ] 14519 } 14520 ) 14521 } 14522 ) }) }); 14523 } 14524 14525 // packages/customize-widgets/build-module/controls/sidebar-section.mjs 14526 var import_i18n15 = __toESM(require_i18n(), 1); 14527 14528 // packages/customize-widgets/build-module/controls/inspector-section.mjs 14529 function getInspectorSection() { 14530 const { 14531 wp: { customize } 14532 } = window; 14533 return class InspectorSection extends customize.Section { 14534 constructor(id, options) { 14535 super(id, options); 14536 this.parentSection = options.parentSection; 14537 this.returnFocusWhenClose = null; 14538 this._isOpen = false; 14539 } 14540 get isOpen() { 14541 return this._isOpen; 14542 } 14543 set isOpen(value) { 14544 this._isOpen = value; 14545 this.triggerActiveCallbacks(); 14546 } 14547 ready() { 14548 this.contentContainer[0].classList.add( 14549 "customize-widgets-layout__inspector" 14550 ); 14551 } 14552 isContextuallyActive() { 14553 return this.isOpen; 14554 } 14555 onChangeExpanded(expanded, args) { 14556 super.onChangeExpanded(expanded, args); 14557 if (this.parentSection && !args.unchanged) { 14558 if (expanded) { 14559 this.parentSection.collapse({ 14560 manualTransition: true 14561 }); 14562 } else { 14563 this.parentSection.expand({ 14564 manualTransition: true, 14565 completeCallback: () => { 14566 if (this.returnFocusWhenClose && !this.contentContainer[0].contains( 14567 this.returnFocusWhenClose 14568 )) { 14569 this.returnFocusWhenClose.focus(); 14570 } 14571 } 14572 }); 14573 } 14574 } 14575 } 14576 open({ returnFocusWhenClose } = {}) { 14577 this.isOpen = true; 14578 this.returnFocusWhenClose = returnFocusWhenClose; 14579 this.expand({ 14580 allowMultiple: true 14581 }); 14582 } 14583 close() { 14584 this.collapse({ 14585 allowMultiple: true 14586 }); 14587 } 14588 collapse(options) { 14589 this.isOpen = false; 14590 super.collapse(options); 14591 } 14592 triggerActiveCallbacks() { 14593 this.active.callbacks.fireWith(this.active, [false, true]); 14594 } 14595 }; 14596 } 14597 14598 // packages/customize-widgets/build-module/controls/sidebar-section.mjs 14599 var getInspectorSectionId = (sidebarId) => `widgets-inspector-$sidebarId}`; 14600 function getSidebarSection() { 14601 const { 14602 wp: { customize } 14603 } = window; 14604 const reduceMotionMediaQuery = window.matchMedia( 14605 "(prefers-reduced-motion: reduce)" 14606 ); 14607 let isReducedMotion = reduceMotionMediaQuery.matches; 14608 reduceMotionMediaQuery.addEventListener("change", (event) => { 14609 isReducedMotion = event.matches; 14610 }); 14611 return class SidebarSection extends customize.Section { 14612 ready() { 14613 const InspectorSection = getInspectorSection(); 14614 this.inspector = new InspectorSection( 14615 getInspectorSectionId(this.id), 14616 { 14617 title: (0, import_i18n15.__)("Block Settings"), 14618 parentSection: this, 14619 customizeAction: [ 14620 (0, import_i18n15.__)("Customizing"), 14621 (0, import_i18n15.__)("Widgets"), 14622 this.params.title 14623 ].join(" \u25B8 ") 14624 } 14625 ); 14626 customize.section.add(this.inspector); 14627 this.contentContainer[0].classList.add( 14628 "customize-widgets__sidebar-section" 14629 ); 14630 } 14631 hasSubSectionOpened() { 14632 return this.inspector.expanded(); 14633 } 14634 onChangeExpanded(expanded, _args) { 14635 const controls = this.controls(); 14636 const args = { 14637 ..._args, 14638 completeCallback() { 14639 controls.forEach((control) => { 14640 control.onChangeSectionExpanded?.(expanded, args); 14641 }); 14642 _args.completeCallback?.(); 14643 } 14644 }; 14645 if (args.manualTransition) { 14646 if (expanded) { 14647 this.contentContainer.addClass(["busy", "open"]); 14648 this.contentContainer.removeClass("is-sub-section-open"); 14649 this.contentContainer.closest(".wp-full-overlay").addClass("section-open"); 14650 } else { 14651 this.contentContainer.addClass([ 14652 "busy", 14653 "is-sub-section-open" 14654 ]); 14655 this.contentContainer.closest(".wp-full-overlay").addClass("section-open"); 14656 this.contentContainer.removeClass("open"); 14657 } 14658 const handleTransitionEnd = () => { 14659 this.contentContainer.removeClass("busy"); 14660 args.completeCallback(); 14661 }; 14662 if (isReducedMotion) { 14663 handleTransitionEnd(); 14664 } else { 14665 this.contentContainer.one( 14666 "transitionend", 14667 handleTransitionEnd 14668 ); 14669 } 14670 } else { 14671 super.onChangeExpanded(expanded, args); 14672 } 14673 } 14674 }; 14675 } 14676 14677 // packages/customize-widgets/build-module/controls/sidebar-control.mjs 14678 var import_data16 = __toESM(require_data(), 1); 14679 14680 // packages/customize-widgets/build-module/components/sidebar-block-editor/sidebar-adapter.mjs 14681 var { wp } = window; 14682 function parseWidgetId(widgetId) { 14683 const matches = widgetId.match(/^(.+)-(\d+)$/); 14684 if (matches) { 14685 return { 14686 idBase: matches[1], 14687 number: parseInt(matches[2], 10) 14688 }; 14689 } 14690 return { idBase: widgetId }; 14691 } 14692 function widgetIdToSettingId(widgetId) { 14693 const { idBase, number } = parseWidgetId(widgetId); 14694 if (number) { 14695 return `widget_$idBase}[$number}]`; 14696 } 14697 return `widget_$idBase}`; 14698 } 14699 function debounce(leading, callback, timeout) { 14700 let isLeading = false; 14701 let timerID; 14702 function debounced(...args) { 14703 const result = (isLeading ? callback : leading).apply(this, args); 14704 isLeading = true; 14705 clearTimeout(timerID); 14706 timerID = setTimeout(() => { 14707 isLeading = false; 14708 }, timeout); 14709 return result; 14710 } 14711 debounced.cancel = () => { 14712 isLeading = false; 14713 clearTimeout(timerID); 14714 }; 14715 return debounced; 14716 } 14717 var SidebarAdapter = class { 14718 constructor(setting, api) { 14719 this.setting = setting; 14720 this.api = api; 14721 this.locked = false; 14722 this.widgetsCache = /* @__PURE__ */ new WeakMap(); 14723 this.subscribers = /* @__PURE__ */ new Set(); 14724 this.history = [ 14725 this._getWidgetIds().map( 14726 (widgetId) => this.getWidget(widgetId) 14727 ) 14728 ]; 14729 this.historyIndex = 0; 14730 this.historySubscribers = /* @__PURE__ */ new Set(); 14731 this._debounceSetHistory = debounce( 14732 this._pushHistory, 14733 this._replaceHistory, 14734 1e3 14735 ); 14736 this.setting.bind(this._handleSettingChange.bind(this)); 14737 this.api.bind("change", this._handleAllSettingsChange.bind(this)); 14738 this.undo = this.undo.bind(this); 14739 this.redo = this.redo.bind(this); 14740 this.save = this.save.bind(this); 14741 } 14742 subscribe(callback) { 14743 this.subscribers.add(callback); 14744 return () => { 14745 this.subscribers.delete(callback); 14746 }; 14747 } 14748 getWidgets() { 14749 return this.history[this.historyIndex]; 14750 } 14751 _emit(...args) { 14752 for (const callback of this.subscribers) { 14753 callback(...args); 14754 } 14755 } 14756 _getWidgetIds() { 14757 return this.setting.get(); 14758 } 14759 _pushHistory() { 14760 this.history = [ 14761 ...this.history.slice(0, this.historyIndex + 1), 14762 this._getWidgetIds().map( 14763 (widgetId) => this.getWidget(widgetId) 14764 ) 14765 ]; 14766 this.historyIndex += 1; 14767 this.historySubscribers.forEach((listener) => listener()); 14768 } 14769 _replaceHistory() { 14770 this.history[this.historyIndex] = this._getWidgetIds().map( 14771 (widgetId) => this.getWidget(widgetId) 14772 ); 14773 } 14774 _handleSettingChange() { 14775 if (this.locked) { 14776 return; 14777 } 14778 const prevWidgets = this.getWidgets(); 14779 this._pushHistory(); 14780 this._emit(prevWidgets, this.getWidgets()); 14781 } 14782 _handleAllSettingsChange(setting) { 14783 if (this.locked) { 14784 return; 14785 } 14786 if (!setting.id.startsWith("widget_")) { 14787 return; 14788 } 14789 const widgetId = settingIdToWidgetId(setting.id); 14790 if (!this.setting.get().includes(widgetId)) { 14791 return; 14792 } 14793 const prevWidgets = this.getWidgets(); 14794 this._pushHistory(); 14795 this._emit(prevWidgets, this.getWidgets()); 14796 } 14797 _createWidget(widget) { 14798 const widgetModel = wp.customize.Widgets.availableWidgets.findWhere({ 14799 id_base: widget.idBase 14800 }); 14801 let number = widget.number; 14802 if (widgetModel.get("is_multi") && !number) { 14803 widgetModel.set( 14804 "multi_number", 14805 widgetModel.get("multi_number") + 1 14806 ); 14807 number = widgetModel.get("multi_number"); 14808 } 14809 const settingId = number ? `widget_$widget.idBase}[$number}]` : `widget_$widget.idBase}`; 14810 const settingArgs = { 14811 transport: wp.customize.Widgets.data.selectiveRefreshableWidgets[widgetModel.get("id_base")] ? "postMessage" : "refresh", 14812 previewer: this.setting.previewer 14813 }; 14814 const setting = this.api.create( 14815 settingId, 14816 settingId, 14817 "", 14818 settingArgs 14819 ); 14820 setting.set(widget.instance); 14821 const widgetId = settingIdToWidgetId(settingId); 14822 return widgetId; 14823 } 14824 _removeWidget(widget) { 14825 const settingId = widgetIdToSettingId(widget.id); 14826 const setting = this.api(settingId); 14827 if (setting) { 14828 const instance = setting.get(); 14829 this.widgetsCache.delete(instance); 14830 } 14831 this.api.remove(settingId); 14832 } 14833 _updateWidget(widget) { 14834 const prevWidget = this.getWidget(widget.id); 14835 if (prevWidget === widget) { 14836 return widget.id; 14837 } 14838 if (prevWidget.idBase && widget.idBase && prevWidget.idBase === widget.idBase) { 14839 const settingId = widgetIdToSettingId(widget.id); 14840 this.api(settingId).set(widget.instance); 14841 return widget.id; 14842 } 14843 this._removeWidget(widget); 14844 return this._createWidget(widget); 14845 } 14846 getWidget(widgetId) { 14847 if (!widgetId) { 14848 return null; 14849 } 14850 const { idBase, number } = parseWidgetId(widgetId); 14851 const settingId = widgetIdToSettingId(widgetId); 14852 const setting = this.api(settingId); 14853 if (!setting) { 14854 return null; 14855 } 14856 const instance = setting.get(); 14857 if (this.widgetsCache.has(instance)) { 14858 return this.widgetsCache.get(instance); 14859 } 14860 const widget = { 14861 id: widgetId, 14862 idBase, 14863 number, 14864 instance 14865 }; 14866 this.widgetsCache.set(instance, widget); 14867 return widget; 14868 } 14869 _updateWidgets(nextWidgets) { 14870 this.locked = true; 14871 const addedWidgetIds = []; 14872 const nextWidgetIds = nextWidgets.map((nextWidget) => { 14873 if (nextWidget.id && this.getWidget(nextWidget.id)) { 14874 addedWidgetIds.push(null); 14875 return this._updateWidget(nextWidget); 14876 } 14877 const widgetId = this._createWidget(nextWidget); 14878 addedWidgetIds.push(widgetId); 14879 return widgetId; 14880 }); 14881 const deletedWidgets = this.getWidgets().filter( 14882 (widget) => !nextWidgetIds.includes(widget.id) 14883 ); 14884 deletedWidgets.forEach((widget) => this._removeWidget(widget)); 14885 this.setting.set(nextWidgetIds); 14886 this.locked = false; 14887 return addedWidgetIds; 14888 } 14889 setWidgets(nextWidgets) { 14890 const addedWidgetIds = this._updateWidgets(nextWidgets); 14891 this._debounceSetHistory(); 14892 return addedWidgetIds; 14893 } 14894 /** 14895 * Undo/Redo related features 14896 */ 14897 hasUndo() { 14898 return this.historyIndex > 0; 14899 } 14900 hasRedo() { 14901 return this.historyIndex < this.history.length - 1; 14902 } 14903 _seek(historyIndex) { 14904 const currentWidgets = this.getWidgets(); 14905 this.historyIndex = historyIndex; 14906 const widgets = this.history[this.historyIndex]; 14907 this._updateWidgets(widgets); 14908 this._emit(currentWidgets, this.getWidgets()); 14909 this.historySubscribers.forEach((listener) => listener()); 14910 this._debounceSetHistory.cancel(); 14911 } 14912 undo() { 14913 if (!this.hasUndo()) { 14914 return; 14915 } 14916 this._seek(this.historyIndex - 1); 14917 } 14918 redo() { 14919 if (!this.hasRedo()) { 14920 return; 14921 } 14922 this._seek(this.historyIndex + 1); 14923 } 14924 subscribeHistory(listener) { 14925 this.historySubscribers.add(listener); 14926 return () => { 14927 this.historySubscribers.delete(listener); 14928 }; 14929 } 14930 save() { 14931 this.api.previewer.save(); 14932 } 14933 }; 14934 14935 // packages/customize-widgets/build-module/controls/inserter-outer-section.mjs 14936 var import_keycodes5 = __toESM(require_keycodes(), 1); 14937 var import_dom21 = __toESM(require_dom(), 1); 14938 var import_data15 = __toESM(require_data(), 1); 14939 function getInserterOuterSection() { 14940 const { 14941 wp: { customize } 14942 } = window; 14943 const OuterSection = customize.OuterSection; 14944 customize.OuterSection = class extends OuterSection { 14945 onChangeExpanded(expanded, args) { 14946 if (expanded) { 14947 customize.section.each((section) => { 14948 if (section.params.type === "outer" && section.id !== this.id) { 14949 if (section.expanded()) { 14950 section.collapse(); 14951 } 14952 } 14953 }); 14954 } 14955 return super.onChangeExpanded(expanded, args); 14956 } 14957 }; 14958 customize.sectionConstructor.outer = customize.OuterSection; 14959 return class InserterOuterSection extends customize.OuterSection { 14960 constructor(...args) { 14961 super(...args); 14962 this.params.type = "outer"; 14963 this.activeElementBeforeExpanded = null; 14964 const ownerWindow = this.contentContainer[0].ownerDocument.defaultView; 14965 ownerWindow.addEventListener( 14966 "keydown", 14967 (event) => { 14968 if (this.expanded() && (event.keyCode === import_keycodes5.ESCAPE || event.code === "Escape") && !event.defaultPrevented) { 14969 event.preventDefault(); 14970 event.stopPropagation(); 14971 (0, import_data15.dispatch)(store).setIsInserterOpened( 14972 false 14973 ); 14974 } 14975 }, 14976 // Use capture mode to make this run before other event listeners. 14977 true 14978 ); 14979 this.contentContainer.addClass("widgets-inserter"); 14980 this.isFromInternalAction = false; 14981 this.expanded.bind(() => { 14982 if (!this.isFromInternalAction) { 14983 (0, import_data15.dispatch)(store).setIsInserterOpened( 14984 this.expanded() 14985 ); 14986 } 14987 this.isFromInternalAction = false; 14988 }); 14989 } 14990 open() { 14991 if (!this.expanded()) { 14992 const contentContainer = this.contentContainer[0]; 14993 this.activeElementBeforeExpanded = contentContainer.ownerDocument.activeElement; 14994 this.isFromInternalAction = true; 14995 this.expand({ 14996 completeCallback() { 14997 const searchBox = import_dom21.focus.tabbable.find(contentContainer)[1]; 14998 if (searchBox) { 14999 searchBox.focus(); 15000 } 15001 } 15002 }); 15003 } 15004 } 15005 close() { 15006 if (this.expanded()) { 15007 const contentContainer = this.contentContainer[0]; 15008 const activeElement2 = contentContainer.ownerDocument.activeElement; 15009 this.isFromInternalAction = true; 15010 this.collapse({ 15011 completeCallback() { 15012 if (contentContainer.contains(activeElement2)) { 15013 if (this.activeElementBeforeExpanded) { 15014 this.activeElementBeforeExpanded.focus(); 15015 } 15016 } 15017 } 15018 }); 15019 } 15020 } 15021 }; 15022 } 15023 15024 // packages/customize-widgets/build-module/controls/sidebar-control.mjs 15025 var getInserterId = (controlId) => `widgets-inserter-$controlId}`; 15026 function getSidebarControl() { 15027 const { 15028 wp: { customize } 15029 } = window; 15030 return class SidebarControl extends customize.Control { 15031 constructor(...args) { 15032 super(...args); 15033 this.subscribers = /* @__PURE__ */ new Set(); 15034 } 15035 ready() { 15036 const InserterOuterSection = getInserterOuterSection(); 15037 this.inserter = new InserterOuterSection( 15038 getInserterId(this.id), 15039 {} 15040 ); 15041 customize.section.add(this.inserter); 15042 this.sectionInstance = customize.section(this.section()); 15043 this.inspector = this.sectionInstance.inspector; 15044 this.sidebarAdapter = new SidebarAdapter(this.setting, customize); 15045 } 15046 subscribe(callback) { 15047 this.subscribers.add(callback); 15048 return () => { 15049 this.subscribers.delete(callback); 15050 }; 15051 } 15052 onChangeSectionExpanded(expanded, args) { 15053 if (!args.unchanged) { 15054 if (!expanded) { 15055 (0, import_data16.dispatch)(store).setIsInserterOpened( 15056 false 15057 ); 15058 } 15059 this.subscribers.forEach( 15060 (subscriber) => subscriber(expanded, args) 15061 ); 15062 } 15063 } 15064 }; 15065 } 15066 15067 // packages/customize-widgets/build-module/filters/move-to-sidebar.mjs 15068 var import_block_editor10 = __toESM(require_block_editor(), 1); 15069 var import_compose5 = __toESM(require_compose(), 1); 15070 var import_data17 = __toESM(require_data(), 1); 15071 var import_hooks2 = __toESM(require_hooks(), 1); 15072 var import_widgets4 = __toESM(require_widgets(), 1); 15073 var import_jsx_runtime66 = __toESM(require_jsx_runtime(), 1); 15074 var withMoveToSidebarToolbarItem = (0, import_compose5.createHigherOrderComponent)( 15075 (BlockEdit) => (props) => { 15076 let widgetId = (0, import_widgets4.getWidgetIdFromBlock)(props); 15077 const sidebarControls = useSidebarControls(); 15078 const activeSidebarControl = useActiveSidebarControl(); 15079 const hasMultipleSidebars = sidebarControls?.length > 1; 15080 const blockName = props.name; 15081 const clientId = props.clientId; 15082 const canInsertBlockInSidebar = (0, import_data17.useSelect)( 15083 (select) => { 15084 return select(import_block_editor10.store).canInsertBlockType( 15085 blockName, 15086 "" 15087 ); 15088 }, 15089 [blockName] 15090 ); 15091 const block = (0, import_data17.useSelect)( 15092 (select) => select(import_block_editor10.store).getBlock(clientId), 15093 [clientId] 15094 ); 15095 const { removeBlock } = (0, import_data17.useDispatch)(import_block_editor10.store); 15096 const [, focusWidget] = useFocusControl(); 15097 function moveToSidebar(sidebarControlId) { 15098 const newSidebarControl = sidebarControls.find( 15099 (sidebarControl) => sidebarControl.id === sidebarControlId 15100 ); 15101 if (widgetId) { 15102 const oldSetting = activeSidebarControl.setting; 15103 const newSetting = newSidebarControl.setting; 15104 oldSetting(oldSetting().filter((id) => id !== widgetId)); 15105 newSetting([...newSetting(), widgetId]); 15106 } else { 15107 const sidebarAdapter = newSidebarControl.sidebarAdapter; 15108 removeBlock(clientId); 15109 const addedWidgetIds = sidebarAdapter.setWidgets([ 15110 ...sidebarAdapter.getWidgets(), 15111 blockToWidget(block) 15112 ]); 15113 widgetId = addedWidgetIds.reverse().find((id) => !!id); 15114 } 15115 focusWidget(widgetId); 15116 } 15117 return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(import_jsx_runtime66.Fragment, { children: [ 15118 /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(BlockEdit, { ...props }, "edit"), 15119 hasMultipleSidebars && canInsertBlockInSidebar && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_block_editor10.BlockControls, { children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)( 15120 import_widgets4.MoveToWidgetArea, 15121 { 15122 widgetAreas: sidebarControls.map( 15123 (sidebarControl) => ({ 15124 id: sidebarControl.id, 15125 name: sidebarControl.params.label, 15126 description: sidebarControl.params.description 15127 }) 15128 ), 15129 currentWidgetAreaId: activeSidebarControl?.id, 15130 onSelect: moveToSidebar 15131 } 15132 ) }) 15133 ] }); 15134 }, 15135 "withMoveToSidebarToolbarItem" 15136 ); 15137 (0, import_hooks2.addFilter)( 15138 "editor.BlockEdit", 15139 "core/customize-widgets/block-edit", 15140 withMoveToSidebarToolbarItem 15141 ); 15142 15143 // packages/customize-widgets/build-module/filters/replace-media-upload.mjs 15144 var import_hooks3 = __toESM(require_hooks(), 1); 15145 var import_media_utils2 = __toESM(require_media_utils(), 1); 15146 var replaceMediaUpload = () => import_media_utils2.MediaUpload; 15147 (0, import_hooks3.addFilter)( 15148 "editor.MediaUpload", 15149 "core/edit-widgets/replace-media-upload", 15150 replaceMediaUpload 15151 ); 15152 15153 // packages/customize-widgets/build-module/filters/wide-widget-display.mjs 15154 var import_compose6 = __toESM(require_compose(), 1); 15155 var import_hooks4 = __toESM(require_hooks(), 1); 15156 var import_jsx_runtime67 = __toESM(require_jsx_runtime(), 1); 15157 var { wp: wp2 } = window; 15158 var withWideWidgetDisplay = (0, import_compose6.createHigherOrderComponent)( 15159 (BlockEdit) => (props) => { 15160 const { idBase } = props.attributes; 15161 const isWide = wp2.customize.Widgets.data.availableWidgets.find( 15162 (widget) => widget.id_base === idBase 15163 )?.is_wide ?? false; 15164 return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(BlockEdit, { ...props, isWide }, "edit"); 15165 }, 15166 "withWideWidgetDisplay" 15167 ); 15168 (0, import_hooks4.addFilter)( 15169 "editor.BlockEdit", 15170 "core/customize-widgets/wide-widget-display", 15171 withWideWidgetDisplay 15172 ); 15173 15174 // packages/customize-widgets/build-module/index.mjs 15175 var import_jsx_runtime68 = __toESM(require_jsx_runtime(), 1); 15176 var { wp: wp3 } = window; 15177 var DISABLED_BLOCKS = [ 15178 "core/more", 15179 "core/block", 15180 "core/freeform", 15181 "core/template-part" 15182 ]; 15183 function initialize(editorName, blockEditorSettings) { 15184 (0, import_data18.dispatch)(import_preferences4.store).setDefaults("core/customize-widgets", { 15185 fixedToolbar: false, 15186 welcomeGuide: true 15187 }); 15188 (0, import_data18.dispatch)(import_blocks2.store).reapplyBlockTypeFilters(); 15189 const coreBlocks = (0, import_block_library.__experimentalGetCoreBlocks)().filter((block) => { 15190 return !(DISABLED_BLOCKS.includes(block.name) || block.name.startsWith("core/post") || block.name.startsWith("core/query") || block.name.startsWith("core/site") || block.name.startsWith("core/navigation") || block.name.startsWith("core/term")); 15191 }); 15192 (0, import_block_library.registerCoreBlocks)(coreBlocks); 15193 (0, import_widgets5.registerLegacyWidgetBlock)(); 15194 if (false) { 15195 (0, import_block_library.__experimentalRegisterExperimentalCoreBlocks)({ 15196 enableFSEBlocks: ENABLE_EXPERIMENTAL_FSE_BLOCKS 15197 }); 15198 } 15199 (0, import_widgets5.registerLegacyWidgetVariations)(blockEditorSettings); 15200 (0, import_widgets5.registerWidgetGroupBlock)(); 15201 (0, import_blocks2.setFreeformContentHandlerName)("core/html"); 15202 const SidebarControl = getSidebarControl(blockEditorSettings); 15203 wp3.customize.sectionConstructor.sidebar = getSidebarSection(); 15204 wp3.customize.controlConstructor.sidebar_block_editor = SidebarControl; 15205 const container = document.createElement("div"); 15206 document.body.appendChild(container); 15207 wp3.customize.bind("ready", () => { 15208 const sidebarControls = []; 15209 wp3.customize.control.each((control) => { 15210 if (control instanceof SidebarControl) { 15211 sidebarControls.push(control); 15212 } 15213 }); 15214 (0, import_element61.createRoot)(container).render( 15215 /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_element61.StrictMode, { children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)( 15216 CustomizeWidgets, 15217 { 15218 api: wp3.customize, 15219 sidebarControls, 15220 blockEditorSettings 15221 } 15222 ) }) 15223 ); 15224 }); 15225 } 15226 return __toCommonJS(index_exports); 15227 })(); 15228 /*! Bundled license information: 15229 15230 use-sync-external-store/cjs/use-sync-external-store-shim.development.js: 15231 (** 15232 * @license React 15233 * use-sync-external-store-shim.development.js 15234 * 15235 * Copyright (c) Meta Platforms, Inc. and affiliates. 15236 * 15237 * This source code is licensed under the MIT license found in the 15238 * LICENSE file in the root directory of this source tree. 15239 *) 15240 15241 use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js: 15242 (** 15243 * @license React 15244 * use-sync-external-store-shim/with-selector.development.js 15245 * 15246 * Copyright (c) Meta Platforms, Inc. and affiliates. 15247 * 15248 * This source code is licensed under the MIT license found in the 15249 * LICENSE file in the root directory of this source tree. 15250 *) 15251 */ 15252 (window.wp ||= {}).customizeWidgets = wp.customizeWidgets; 15253 })();
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated : Wed Nov 11 08:20:02 2026 | Cross-referenced by PHPXref |