| [ 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("3167e7d116", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._83ed8a8da5dd50ea__text{text-wrap:pretty;margin:0}._14437cfb77831647__heading-2xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-emphasis,600);--_gcd-p-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-p-line-height:var(--wpds-typography-line-height-2xl,40px);font-size:var(--wpds-typography-font-size-2xl,32px);line-height:var(--wpds-typography-line-height-2xl,40px)}._14437cfb77831647__heading-2xl,._3c78b7fa9b4072dd__heading-xl{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-emphasis,600)}._3c78b7fa9b4072dd__heading-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-emphasis,600);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-md,24px)}.aa58f227716bcde2__heading-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-emphasis,600);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-lg,15px)}.aa58f227716bcde2__heading-lg,.fc4da56d8dfe52c4__heading-md{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-emphasis,600);line-height:var(--wpds-typography-line-height-sm,20px)}.fc4da56d8dfe52c4__heading-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-emphasis,600);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px)}.a9b78c7c82e8dff7__heading-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-emphasis,600);--_gcd-p-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);line-height:var(--wpds-typography-line-height-xs,16px);text-transform:uppercase}._305ff559e52180d5__body-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-default,400);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-xl,32px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-xl,32px)}._305ff559e52180d5__body-xl,.ca1aa3fc2029e958__body-lg{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-default,400)}.ca1aa3fc2029e958__body-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-default,400);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-lg,15px);line-height:var(--wpds-typography-line-height-md,24px)}._131101940be12424__body-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-default,400);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}._0e8d87a42c1f75fa__body-sm,._131101940be12424__body-md{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-default,400)}._0e8d87a42c1f75fa__body-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-default,400);--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}}'); 9766 } 9767 var style_default = { "text": "_83ed8a8da5dd50ea__text", "heading-2xl": "_14437cfb77831647__heading-2xl", "heading-xl": "_3c78b7fa9b4072dd__heading-xl", "heading-lg": "aa58f227716bcde2__heading-lg", "heading-md": "fc4da56d8dfe52c4__heading-md", "heading-sm": "a9b78c7c82e8dff7__heading-sm", "body-xl": "_305ff559e52180d5__body-xl", "body-lg": "ca1aa3fc2029e958__body-lg", "body-md": "_131101940be12424__body-md", "body-sm": "_0e8d87a42c1f75fa__body-sm" }; 9768 if (typeof process === "undefined" || true) { 9769 registerStyle("abb19c3171", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}[role=treeitem] span._400bf7ee0c6061a9__span[aria-hidden]{display:var(--_gcd-span-display,inline);font-family:var(--_gcd-span-font-family,inherit);font-size:var(--_gcd-span-font-size,inherit);line-height:var(--_gcd-span-line-height,1);pointer-events:var(--_gcd-span-pointer-events,auto);position:var(--_gcd-span-position,static)}"); 9770 } 9771 var global_css_defense_default = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li", "span": "_400bf7ee0c6061a9__span" }; 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("bc09fb824f", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.ab4d64c07c0ba587__spinner{background-color:transparent;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:inline-block;height:var(--wpds-dimension-size-2xs,16px);opacity:1;overflow:visible;position:relative;width:var(--wpds-dimension-size-2xs,16px)}.a7654e10245bb7d2__indicator{fill:transparent;stroke:currentColor;stroke-width:var(--wpds-border-width-sm,2px);stroke-linecap:round;transform-origin:50% 50%;@media (forced-colors:active){stroke:CanvasText}animation:_02322d973909703c__spinner-spin 1.4s linear infinite both}@keyframes _02322d973909703c__spinner-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}}}"); 9882 } 9883 var style_default2 = { "spinner": "ab4d64c07c0ba587__spinner", "indicator": "a7654e10245bb7d2__indicator", "spinner-spin": "_02322d973909703c__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 100 100", 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 50 0 a 50 50 0 0 1 0 100", 9902 vectorEffect: "non-scaling-stroke" 9903 } 9904 ) 9905 } 9906 ); 9907 } 9908 ); 9909 9910 // packages/ui/build-module/button/button.mjs 9911 var import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1); 9912 var STYLE_HASH_ATTRIBUTE3 = "data-wp-hash"; 9913 function getRuntime3() { 9914 const globalScope = globalThis; 9915 if (globalScope.__wpStyleRuntime) { 9916 return globalScope.__wpStyleRuntime; 9917 } 9918 globalScope.__wpStyleRuntime = { 9919 documents: /* @__PURE__ */ new Map(), 9920 styles: /* @__PURE__ */ new Map(), 9921 injectedStyles: /* @__PURE__ */ new WeakMap() 9922 }; 9923 if (typeof document !== "undefined") { 9924 registerDocument3(document); 9925 } 9926 return globalScope.__wpStyleRuntime; 9927 } 9928 function documentContainsStyleHash3(targetDocument, hash) { 9929 if (!targetDocument.head) { 9930 return false; 9931 } 9932 for (const style of targetDocument.head.querySelectorAll( 9933 `style[$STYLE_HASH_ATTRIBUTE3}]` 9934 )) { 9935 if (style.getAttribute(STYLE_HASH_ATTRIBUTE3) === hash) { 9936 return true; 9937 } 9938 } 9939 return false; 9940 } 9941 function injectStyle3(targetDocument, hash, css) { 9942 if (!targetDocument.head) { 9943 return; 9944 } 9945 const runtime = getRuntime3(); 9946 let injectedStyles = runtime.injectedStyles.get(targetDocument); 9947 if (!injectedStyles) { 9948 injectedStyles = /* @__PURE__ */ new Set(); 9949 runtime.injectedStyles.set(targetDocument, injectedStyles); 9950 } 9951 if (injectedStyles.has(hash)) { 9952 return; 9953 } 9954 if (documentContainsStyleHash3(targetDocument, hash)) { 9955 injectedStyles.add(hash); 9956 return; 9957 } 9958 const style = targetDocument.createElement("style"); 9959 style.setAttribute(STYLE_HASH_ATTRIBUTE3, hash); 9960 style.appendChild(targetDocument.createTextNode(css)); 9961 targetDocument.head.appendChild(style); 9962 injectedStyles.add(hash); 9963 } 9964 function registerDocument3(targetDocument) { 9965 const runtime = getRuntime3(); 9966 runtime.documents.set( 9967 targetDocument, 9968 (runtime.documents.get(targetDocument) ?? 0) + 1 9969 ); 9970 for (const [hash, css] of runtime.styles) { 9971 injectStyle3(targetDocument, hash, css); 9972 } 9973 return () => { 9974 const count = runtime.documents.get(targetDocument); 9975 if (count === void 0) { 9976 return; 9977 } 9978 if (count <= 1) { 9979 runtime.documents.delete(targetDocument); 9980 return; 9981 } 9982 runtime.documents.set(targetDocument, count - 1); 9983 }; 9984 } 9985 function registerStyle3(hash, css) { 9986 const runtime = getRuntime3(); 9987 runtime.styles.set(hash, css); 9988 for (const targetDocument of runtime.documents.keys()) { 9989 injectStyle3(targetDocument, hash, css); 9990 } 9991 } 9992 if (typeof process === "undefined" || true) { 9993 registerStyle3("7d9151d891", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._97b0fc33c028be1a__button,.abbb272e2ce49bd6__is-unstyled{appearance:none;padding:0}._97b0fc33c028be1a__button{--wp-ui-button-font-weight:var(--wpds-typography-font-weight-emphasis,600);--wp-ui-button-background-color:var(--wpds-color-background-interactive-brand-strong,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-brand-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-brand-strong,#fff);--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-brand-strong-disabled,#8d8d8d);--wp-ui-button-padding-block:var(--wpds-dimension-padding-xs,4px);--wp-ui-button-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-button-height:var(--wpds-dimension-size-lg,40px);--wp-ui-button-aspect-ratio:auto;--wp-ui-button-font-size:var(--wpds-typography-font-size-md,13px);--wp-ui-button-min-width:calc(4ch + var(--wp-ui-button-padding-inline)*2);--wp-ui-button-icon-margin:calc((var(--wpds-dimension-size-2xs, 16px) - var(--wpds-dimension-size-sm, 24px))/2);--wp-ui-button-border-color:var(--wp-ui-button-background-color);--wp-ui-button-border-color-active:var(--wp-ui-button-background-color-active);--wp-ui-button-border-color-disabled:var(--wp-ui-button-background-color-disabled);--_gcd-button-font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);--_gcd-button-font-size:var(--wp-ui-button-font-size);--_gcd-button-font-weight:var(--wp-ui-button-font-weight);align-items:center;aspect-ratio:var(--wp-ui-button-aspect-ratio);background-clip:border-box;background-color:var(--wp-ui-button-background-color);border-color:var(--wp-ui-button-border-color);border-radius:var(--wpds-border-radius-sm,2px);border-style:solid;border-width:1px;color:var(--wp-ui-button-foreground-color);display:inline-flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wp-ui-button-font-size);font-weight:var(--wp-ui-button-font-weight);gap:var(--wpds-dimension-gap-sm,8px);justify-content:center;line-height:var(--wpds-typography-line-height-sm,20px);max-width:100%;min-height:var(--wp-ui-button-height);min-width:var(--wp-ui-button-min-width);overflow-wrap:anywhere;padding-block:var(--wp-ui-button-padding-block);padding-inline:var(--wp-ui-button-padding-inline);position:relative;text-align:center;text-decoration:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}@media not (prefers-reduced-motion){transition:color .1s ease-out;*{transition:opacity .1s ease-out}}&[href]{cursor:pointer}[href]{color:inherit;text-decoration:inherit}&:not([data-disabled]):is(:hover,:active,:focus){background-color:var(--wp-ui-button-background-color-active);border-color:var(--wp-ui-button-border-color-active);color:var(--wp-ui-button-foreground-color-active)}&[data-disabled]:not(._914b42f315c0e580__is-loading){background-color:var(--wp-ui-button-background-color-disabled);border-color:var(--wp-ui-button-border-color-disabled);color:var(--wp-ui-button-foreground-color-disabled);@media (forced-colors:active){border-bottom-color:GrayText;border-left-color:GrayText;border-right-color:GrayText;border-top-color:GrayText;color:GrayText}}}._908205475f9f2a92__is-small{--wp-ui-button-padding-block:0px;--wp-ui-button-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-button-height:var(--wpds-dimension-size-sm,24px)}._9f6fc6553aeb36fe__icon{margin:var(--wp-ui-button-icon-margin)}.dd460c965226cc77__is-brand{&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 52%,#000));--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-brand-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-background-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 85%,#000));--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-brand-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-background-color:var(--wpds-color-background-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-brand-weak-disabled,#0000)}}.e722a8f96726aa99__is-neutral{&.ad0619a3217c6a5b__is-minimal[aria-pressed=true],&.b50b3358c5fb4d0b__is-solid{--wp-ui-button-background-color:var(--wpds-color-background-interactive-neutral-strong,#2d2d2d);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-neutral-strong-active,#1e1e1e);--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-neutral-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-neutral-strong,#f0f0f0);--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-neutral-strong-active,#f0f0f0);--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-neutral-strong-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal:not([aria-pressed=true]){--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-neutral-active,#1e1e1e);--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-background-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d);--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-neutral-active,#6e6e6e);--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal:not([aria-pressed=true]){--wp-ui-button-background-color:var(--wpds-color-background-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000)}}.abbb272e2ce49bd6__is-unstyled{background:none;border:none;min-width:unset}.cf59cf1b69629838__is-compact{--wp-ui-button-height:var(--wpds-dimension-size-md,32px)}._914b42f315c0e580__is-loading:not(.abbb272e2ce49bd6__is-unstyled){color:transparent;&:not([data-disabled]):is(:hover,:active,:focus){color:transparent}@media (forced-colors:active){color:ButtonFace}>:not(._1322fe375ff021a3__spinner){opacity:0}}}@layer compositions{._1322fe375ff021a3__spinner{color:var(--wp-ui-button-foreground-color);height:var(--wp-ui-button-font-size);inset:0;margin:auto;pointer-events:none;position:absolute;width:var(--wp-ui-button-font-size);@media (prefers-reduced-motion){>*{animation:none}}@media (forced-colors:active){>*{stroke:ButtonText}}}}}'); 9994 } 9995 var style_default3 = { "button": "_97b0fc33c028be1a__button", "is-unstyled": "abbb272e2ce49bd6__is-unstyled", "is-loading": "_914b42f315c0e580__is-loading", "is-small": "_908205475f9f2a92__is-small", "icon": "_9f6fc6553aeb36fe__icon", "is-brand": "dd460c965226cc77__is-brand", "is-outline": "_62d5a778b7b258ee__is-outline", "is-minimal": "ad0619a3217c6a5b__is-minimal", "is-neutral": "e722a8f96726aa99__is-neutral", "is-solid": "b50b3358c5fb4d0b__is-solid", "is-compact": "cf59cf1b69629838__is-compact", "spinner": "_1322fe375ff021a3__spinner" }; 9996 if (typeof process === "undefined" || true) { 9997 registerStyle3("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 9998 } 9999 var resets_default = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; 10000 if (typeof process === "undefined" || true) { 10001 registerStyle3("7c3267f794", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{.af79fb116edb0dd7__outset-ring--focus:focus,.dfcfdc28396e5d98__outset-ring--focus-visible:focus-visible,.e5cd9ee879f6403a__outset-ring--focus-within:focus-within{--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}._3c9f5ee9fc9c136d__outset-ring--focus-within-except-active:focus-within,.abc777e9713fa711__outset-ring--focus-except-active:focus{outline:none}._3c9f5ee9fc9c136d__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.abc777e9713fa711__outset-ring--focus-except-active:focus:not(:active){--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}}}"); 10002 } 10003 var focus_module_default = { "outset-ring--focus": "af79fb116edb0dd7__outset-ring--focus", "outset-ring--focus-visible": "dfcfdc28396e5d98__outset-ring--focus-visible", "outset-ring--focus-within": "e5cd9ee879f6403a__outset-ring--focus-within", "outset-ring--focus-except-active": "abc777e9713fa711__outset-ring--focus-except-active", "outset-ring--focus-within-except-active": "_3c9f5ee9fc9c136d__outset-ring--focus-within-except-active" }; 10004 if (typeof process === "undefined" || true) { 10005 registerStyle3("abb19c3171", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}[role=treeitem] span._400bf7ee0c6061a9__span[aria-hidden]{display:var(--_gcd-span-display,inline);font-family:var(--_gcd-span-font-family,inherit);font-size:var(--_gcd-span-font-size,inherit);line-height:var(--_gcd-span-line-height,1);pointer-events:var(--_gcd-span-pointer-events,auto);position:var(--_gcd-span-position,static)}"); 10006 } 10007 var global_css_defense_default2 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li", "span": "_400bf7ee0c6061a9__span" }; 10008 var Button3 = (0, import_element13.forwardRef)( 10009 function UnforwardedButton({ 10010 tone = "brand", 10011 variant = "solid", 10012 size: size4 = "default", 10013 className, 10014 focusableWhenDisabled = true, 10015 disabled: disabled2, 10016 loading, 10017 loadingAnnouncement = (0, import_i18n.__)("Loading"), 10018 children, 10019 ...props 10020 }, ref) { 10021 const mergedClassName = clsx_default( 10022 global_css_defense_default2.button, 10023 resets_default["box-sizing"], 10024 focus_module_default["outset-ring--focus-except-active"], 10025 variant !== "unstyled" && style_default3.button, 10026 style_default3[`is-$tone}`], 10027 style_default3[`is-$variant}`], 10028 style_default3[`is-$size4}`], 10029 loading && style_default3["is-loading"], 10030 className 10031 ); 10032 (0, import_element13.useEffect)(() => { 10033 if (loading && loadingAnnouncement) { 10034 (0, import_a11y.speak)(loadingAnnouncement); 10035 } 10036 }, [loading, loadingAnnouncement]); 10037 return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)( 10038 Button, 10039 { 10040 ref, 10041 className: mergedClassName, 10042 focusableWhenDisabled, 10043 disabled: disabled2 ?? loading, 10044 ...props, 10045 children: [ 10046 children, 10047 loading && variant !== "unstyled" && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Spinner, { className: style_default3.spinner }) 10048 ] 10049 } 10050 ); 10051 } 10052 ); 10053 10054 // packages/ui/build-module/button/icon.mjs 10055 var import_element14 = __toESM(require_element(), 1); 10056 var import_jsx_runtime16 = __toESM(require_jsx_runtime(), 1); 10057 var STYLE_HASH_ATTRIBUTE4 = "data-wp-hash"; 10058 function getRuntime4() { 10059 const globalScope = globalThis; 10060 if (globalScope.__wpStyleRuntime) { 10061 return globalScope.__wpStyleRuntime; 10062 } 10063 globalScope.__wpStyleRuntime = { 10064 documents: /* @__PURE__ */ new Map(), 10065 styles: /* @__PURE__ */ new Map(), 10066 injectedStyles: /* @__PURE__ */ new WeakMap() 10067 }; 10068 if (typeof document !== "undefined") { 10069 registerDocument4(document); 10070 } 10071 return globalScope.__wpStyleRuntime; 10072 } 10073 function documentContainsStyleHash4(targetDocument, hash) { 10074 if (!targetDocument.head) { 10075 return false; 10076 } 10077 for (const style of targetDocument.head.querySelectorAll( 10078 `style[$STYLE_HASH_ATTRIBUTE4}]` 10079 )) { 10080 if (style.getAttribute(STYLE_HASH_ATTRIBUTE4) === hash) { 10081 return true; 10082 } 10083 } 10084 return false; 10085 } 10086 function injectStyle4(targetDocument, hash, css) { 10087 if (!targetDocument.head) { 10088 return; 10089 } 10090 const runtime = getRuntime4(); 10091 let injectedStyles = runtime.injectedStyles.get(targetDocument); 10092 if (!injectedStyles) { 10093 injectedStyles = /* @__PURE__ */ new Set(); 10094 runtime.injectedStyles.set(targetDocument, injectedStyles); 10095 } 10096 if (injectedStyles.has(hash)) { 10097 return; 10098 } 10099 if (documentContainsStyleHash4(targetDocument, hash)) { 10100 injectedStyles.add(hash); 10101 return; 10102 } 10103 const style = targetDocument.createElement("style"); 10104 style.setAttribute(STYLE_HASH_ATTRIBUTE4, hash); 10105 style.appendChild(targetDocument.createTextNode(css)); 10106 targetDocument.head.appendChild(style); 10107 injectedStyles.add(hash); 10108 } 10109 function registerDocument4(targetDocument) { 10110 const runtime = getRuntime4(); 10111 runtime.documents.set( 10112 targetDocument, 10113 (runtime.documents.get(targetDocument) ?? 0) + 1 10114 ); 10115 for (const [hash, css] of runtime.styles) { 10116 injectStyle4(targetDocument, hash, css); 10117 } 10118 return () => { 10119 const count = runtime.documents.get(targetDocument); 10120 if (count === void 0) { 10121 return; 10122 } 10123 if (count <= 1) { 10124 runtime.documents.delete(targetDocument); 10125 return; 10126 } 10127 runtime.documents.set(targetDocument, count - 1); 10128 }; 10129 } 10130 function registerStyle4(hash, css) { 10131 const runtime = getRuntime4(); 10132 runtime.styles.set(hash, css); 10133 for (const targetDocument of runtime.documents.keys()) { 10134 injectStyle4(targetDocument, hash, css); 10135 } 10136 } 10137 if (typeof process === "undefined" || true) { 10138 registerStyle4("7d9151d891", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._97b0fc33c028be1a__button,.abbb272e2ce49bd6__is-unstyled{appearance:none;padding:0}._97b0fc33c028be1a__button{--wp-ui-button-font-weight:var(--wpds-typography-font-weight-emphasis,600);--wp-ui-button-background-color:var(--wpds-color-background-interactive-brand-strong,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-brand-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-brand-strong,#fff);--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-brand-strong-disabled,#8d8d8d);--wp-ui-button-padding-block:var(--wpds-dimension-padding-xs,4px);--wp-ui-button-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-button-height:var(--wpds-dimension-size-lg,40px);--wp-ui-button-aspect-ratio:auto;--wp-ui-button-font-size:var(--wpds-typography-font-size-md,13px);--wp-ui-button-min-width:calc(4ch + var(--wp-ui-button-padding-inline)*2);--wp-ui-button-icon-margin:calc((var(--wpds-dimension-size-2xs, 16px) - var(--wpds-dimension-size-sm, 24px))/2);--wp-ui-button-border-color:var(--wp-ui-button-background-color);--wp-ui-button-border-color-active:var(--wp-ui-button-background-color-active);--wp-ui-button-border-color-disabled:var(--wp-ui-button-background-color-disabled);--_gcd-button-font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);--_gcd-button-font-size:var(--wp-ui-button-font-size);--_gcd-button-font-weight:var(--wp-ui-button-font-weight);align-items:center;aspect-ratio:var(--wp-ui-button-aspect-ratio);background-clip:border-box;background-color:var(--wp-ui-button-background-color);border-color:var(--wp-ui-button-border-color);border-radius:var(--wpds-border-radius-sm,2px);border-style:solid;border-width:1px;color:var(--wp-ui-button-foreground-color);display:inline-flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wp-ui-button-font-size);font-weight:var(--wp-ui-button-font-weight);gap:var(--wpds-dimension-gap-sm,8px);justify-content:center;line-height:var(--wpds-typography-line-height-sm,20px);max-width:100%;min-height:var(--wp-ui-button-height);min-width:var(--wp-ui-button-min-width);overflow-wrap:anywhere;padding-block:var(--wp-ui-button-padding-block);padding-inline:var(--wp-ui-button-padding-inline);position:relative;text-align:center;text-decoration:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}@media not (prefers-reduced-motion){transition:color .1s ease-out;*{transition:opacity .1s ease-out}}&[href]{cursor:pointer}[href]{color:inherit;text-decoration:inherit}&:not([data-disabled]):is(:hover,:active,:focus){background-color:var(--wp-ui-button-background-color-active);border-color:var(--wp-ui-button-border-color-active);color:var(--wp-ui-button-foreground-color-active)}&[data-disabled]:not(._914b42f315c0e580__is-loading){background-color:var(--wp-ui-button-background-color-disabled);border-color:var(--wp-ui-button-border-color-disabled);color:var(--wp-ui-button-foreground-color-disabled);@media (forced-colors:active){border-bottom-color:GrayText;border-left-color:GrayText;border-right-color:GrayText;border-top-color:GrayText;color:GrayText}}}._908205475f9f2a92__is-small{--wp-ui-button-padding-block:0px;--wp-ui-button-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-button-height:var(--wpds-dimension-size-sm,24px)}._9f6fc6553aeb36fe__icon{margin:var(--wp-ui-button-icon-margin)}.dd460c965226cc77__is-brand{&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 52%,#000));--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-brand-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-background-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 85%,#000));--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-brand-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-background-color:var(--wpds-color-background-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-brand-weak-disabled,#0000)}}.e722a8f96726aa99__is-neutral{&.ad0619a3217c6a5b__is-minimal[aria-pressed=true],&.b50b3358c5fb4d0b__is-solid{--wp-ui-button-background-color:var(--wpds-color-background-interactive-neutral-strong,#2d2d2d);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-neutral-strong-active,#1e1e1e);--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-neutral-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-neutral-strong,#f0f0f0);--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-neutral-strong-active,#f0f0f0);--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-neutral-strong-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal:not([aria-pressed=true]){--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-neutral-active,#1e1e1e);--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-background-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d);--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-neutral-active,#6e6e6e);--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal:not([aria-pressed=true]){--wp-ui-button-background-color:var(--wpds-color-background-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000)}}.abbb272e2ce49bd6__is-unstyled{background:none;border:none;min-width:unset}.cf59cf1b69629838__is-compact{--wp-ui-button-height:var(--wpds-dimension-size-md,32px)}._914b42f315c0e580__is-loading:not(.abbb272e2ce49bd6__is-unstyled){color:transparent;&:not([data-disabled]):is(:hover,:active,:focus){color:transparent}@media (forced-colors:active){color:ButtonFace}>:not(._1322fe375ff021a3__spinner){opacity:0}}}@layer compositions{._1322fe375ff021a3__spinner{color:var(--wp-ui-button-foreground-color);height:var(--wp-ui-button-font-size);inset:0;margin:auto;pointer-events:none;position:absolute;width:var(--wp-ui-button-font-size);@media (prefers-reduced-motion){>*{animation:none}}@media (forced-colors:active){>*{stroke:ButtonText}}}}}'); 10139 } 10140 var style_default4 = { "button": "_97b0fc33c028be1a__button", "is-unstyled": "abbb272e2ce49bd6__is-unstyled", "is-loading": "_914b42f315c0e580__is-loading", "is-small": "_908205475f9f2a92__is-small", "icon": "_9f6fc6553aeb36fe__icon", "is-brand": "dd460c965226cc77__is-brand", "is-outline": "_62d5a778b7b258ee__is-outline", "is-minimal": "ad0619a3217c6a5b__is-minimal", "is-neutral": "e722a8f96726aa99__is-neutral", "is-solid": "b50b3358c5fb4d0b__is-solid", "is-compact": "cf59cf1b69629838__is-compact", "spinner": "_1322fe375ff021a3__spinner" }; 10141 var ButtonIcon = (0, import_element14.forwardRef)( 10142 function UnforwardedButtonIcon({ className, icon, ...props }, ref) { 10143 return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)( 10144 Icon, 10145 { 10146 ref, 10147 icon, 10148 className: clsx_default(style_default4.icon, className), 10149 size: 24, 10150 ...props 10151 } 10152 ); 10153 } 10154 ); 10155 10156 // packages/ui/build-module/button/index.mjs 10157 ButtonIcon.displayName = "Button.Icon"; 10158 var Button4 = Object.assign(Button3, { 10159 /** 10160 * An icon component specifically designed to work well when rendered inside 10161 * a `Button` component. 10162 */ 10163 Icon: ButtonIcon 10164 }); 10165 10166 // packages/icons/build-module/library/caution.mjs 10167 var import_primitives2 = __toESM(require_primitives(), 1); 10168 var import_jsx_runtime17 = __toESM(require_jsx_runtime(), 1); 10169 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" }) }); 10170 10171 // packages/icons/build-module/library/chevron-down.mjs 10172 var import_primitives3 = __toESM(require_primitives(), 1); 10173 var import_jsx_runtime18 = __toESM(require_jsx_runtime(), 1); 10174 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" }) }); 10175 10176 // packages/icons/build-module/library/close-small.mjs 10177 var import_primitives4 = __toESM(require_primitives(), 1); 10178 var import_jsx_runtime19 = __toESM(require_jsx_runtime(), 1); 10179 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" }) }); 10180 10181 // packages/icons/build-module/library/error.mjs 10182 var import_primitives5 = __toESM(require_primitives(), 1); 10183 var import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1); 10184 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" }) }); 10185 10186 // packages/icons/build-module/library/external.mjs 10187 var import_primitives6 = __toESM(require_primitives(), 1); 10188 var import_jsx_runtime21 = __toESM(require_jsx_runtime(), 1); 10189 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" }) }); 10190 10191 // packages/icons/build-module/library/info.mjs 10192 var import_primitives7 = __toESM(require_primitives(), 1); 10193 var import_jsx_runtime22 = __toESM(require_jsx_runtime(), 1); 10194 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" }) }); 10195 10196 // packages/icons/build-module/library/more-vertical.mjs 10197 var import_primitives8 = __toESM(require_primitives(), 1); 10198 var import_jsx_runtime23 = __toESM(require_jsx_runtime(), 1); 10199 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: [ 10200 /* @__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" }), 10201 /* @__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" }), 10202 /* @__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" }), 10203 /* @__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" }), 10204 /* @__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" }), 10205 /* @__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" }) 10206 ] }); 10207 10208 // packages/icons/build-module/library/plus.mjs 10209 var import_primitives9 = __toESM(require_primitives(), 1); 10210 var import_jsx_runtime24 = __toESM(require_jsx_runtime(), 1); 10211 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" }) }); 10212 10213 // packages/icons/build-module/library/published.mjs 10214 var import_primitives10 = __toESM(require_primitives(), 1); 10215 var import_jsx_runtime25 = __toESM(require_jsx_runtime(), 1); 10216 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: [ 10217 /* @__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" }), 10218 /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_primitives10.Path, { d: "M9 12L11 14L15 10" }) 10219 ] }); 10220 10221 // packages/icons/build-module/library/redo.mjs 10222 var import_primitives11 = __toESM(require_primitives(), 1); 10223 var import_jsx_runtime26 = __toESM(require_jsx_runtime(), 1); 10224 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" }) }); 10225 10226 // packages/icons/build-module/library/undo.mjs 10227 var import_primitives12 = __toESM(require_primitives(), 1); 10228 var import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1); 10229 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" }) }); 10230 10231 // packages/ui/build-module/utils/keyboard-shortcut.mjs 10232 var import_element16 = __toESM(require_element(), 1); 10233 var import_i18n2 = __toESM(require_i18n(), 1); 10234 10235 // packages/ui/build-module/visually-hidden/visually-hidden.mjs 10236 var import_element15 = __toESM(require_element(), 1); 10237 var STYLE_HASH_ATTRIBUTE5 = "data-wp-hash"; 10238 function getRuntime5() { 10239 const globalScope = globalThis; 10240 if (globalScope.__wpStyleRuntime) { 10241 return globalScope.__wpStyleRuntime; 10242 } 10243 globalScope.__wpStyleRuntime = { 10244 documents: /* @__PURE__ */ new Map(), 10245 styles: /* @__PURE__ */ new Map(), 10246 injectedStyles: /* @__PURE__ */ new WeakMap() 10247 }; 10248 if (typeof document !== "undefined") { 10249 registerDocument5(document); 10250 } 10251 return globalScope.__wpStyleRuntime; 10252 } 10253 function documentContainsStyleHash5(targetDocument, hash) { 10254 if (!targetDocument.head) { 10255 return false; 10256 } 10257 for (const style of targetDocument.head.querySelectorAll( 10258 `style[$STYLE_HASH_ATTRIBUTE5}]` 10259 )) { 10260 if (style.getAttribute(STYLE_HASH_ATTRIBUTE5) === hash) { 10261 return true; 10262 } 10263 } 10264 return false; 10265 } 10266 function injectStyle5(targetDocument, hash, css) { 10267 if (!targetDocument.head) { 10268 return; 10269 } 10270 const runtime = getRuntime5(); 10271 let injectedStyles = runtime.injectedStyles.get(targetDocument); 10272 if (!injectedStyles) { 10273 injectedStyles = /* @__PURE__ */ new Set(); 10274 runtime.injectedStyles.set(targetDocument, injectedStyles); 10275 } 10276 if (injectedStyles.has(hash)) { 10277 return; 10278 } 10279 if (documentContainsStyleHash5(targetDocument, hash)) { 10280 injectedStyles.add(hash); 10281 return; 10282 } 10283 const style = targetDocument.createElement("style"); 10284 style.setAttribute(STYLE_HASH_ATTRIBUTE5, hash); 10285 style.appendChild(targetDocument.createTextNode(css)); 10286 targetDocument.head.appendChild(style); 10287 injectedStyles.add(hash); 10288 } 10289 function registerDocument5(targetDocument) { 10290 const runtime = getRuntime5(); 10291 runtime.documents.set( 10292 targetDocument, 10293 (runtime.documents.get(targetDocument) ?? 0) + 1 10294 ); 10295 for (const [hash, css] of runtime.styles) { 10296 injectStyle5(targetDocument, hash, css); 10297 } 10298 return () => { 10299 const count = runtime.documents.get(targetDocument); 10300 if (count === void 0) { 10301 return; 10302 } 10303 if (count <= 1) { 10304 runtime.documents.delete(targetDocument); 10305 return; 10306 } 10307 runtime.documents.set(targetDocument, count - 1); 10308 }; 10309 } 10310 function registerStyle5(hash, css) { 10311 const runtime = getRuntime5(); 10312 runtime.styles.set(hash, css); 10313 for (const targetDocument of runtime.documents.keys()) { 10314 injectStyle5(targetDocument, hash, css); 10315 } 10316 } 10317 if (typeof process === "undefined" || true) { 10318 registerStyle5("15abcab4d0", ".f37b9e2e191ebd66__visually-hidden{border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;overflow-wrap:normal;padding:0;position:absolute;width:1px;word-break:normal}"); 10319 } 10320 var style_default5 = { "visually-hidden": "f37b9e2e191ebd66__visually-hidden" }; 10321 var VisuallyHidden = (0, import_element15.forwardRef)( 10322 function UnforwardedVisuallyHidden({ render, ...restProps }, ref) { 10323 const element = useRender({ 10324 render, 10325 ref, 10326 props: mergeProps( 10327 { className: style_default5["visually-hidden"] }, 10328 restProps, 10329 { 10330 // @ts-expect-error Arbitrary data-* attributes aren't indexable on the typed div props. Kept hardcoded so consumers can't change or remove it. 10331 "data-visually-hidden": "" 10332 } 10333 ) 10334 }); 10335 return element; 10336 } 10337 ); 10338 10339 // packages/ui/build-module/utils/keyboard-shortcut.mjs 10340 var import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1); 10341 function useKeyboardShortcutProps({ 10342 "aria-describedby": ariaDescribedBy, 10343 "aria-keyshortcuts": ariaKeyShortcuts, 10344 shortcut 10345 }) { 10346 const generatedDescriptionId = (0, import_element16.useId)(); 10347 const descriptionId = shortcut ? generatedDescriptionId : void 0; 10348 const describedBy = [ariaDescribedBy, descriptionId].filter(Boolean).join(" "); 10349 return { 10350 descriptionId, 10351 targetProps: { 10352 "aria-describedby": describedBy || void 0, 10353 "aria-keyshortcuts": shortcut?.ariaKeyShortcut ?? ariaKeyShortcuts 10354 } 10355 }; 10356 } 10357 var KeyboardShortcutDescription = (0, import_element16.forwardRef)(function UnforwardedKeyboardShortcutDescription({ descriptionId, shortcut }, ref) { 10358 return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)( 10359 VisuallyHidden, 10360 { 10361 id: descriptionId, 10362 "aria-hidden": "true", 10363 render: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { ref }), 10364 children: (0, import_i18n2.sprintf)( 10365 /* translators: %s: keyboard shortcut. */ 10366 (0, import_i18n2.__)("Keyboard shortcut: %s"), 10367 shortcut.label ?? shortcut.ariaKeyShortcut 10368 ) 10369 } 10370 ); 10371 }); 10372 var KeyboardShortcutDisplay = (0, import_element16.forwardRef)(function UnforwardedKeyboardShortcutDisplay({ className, shortcut }, ref) { 10373 return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { ref, "aria-hidden": "true", className, dir: "ltr", children: shortcut.displayShortcut }); 10374 }); 10375 10376 // packages/ui/build-module/utils/render-slot-with-children.mjs 10377 var import_element17 = __toESM(require_element(), 1); 10378 function renderSlotWithChildren(slot, defaultSlot, children) { 10379 return (0, import_element17.cloneElement)( 10380 slot ?? defaultSlot, 10381 { children } 10382 ); 10383 } 10384 10385 // packages/ui/build-module/utils/wp-compat-overlay-slot.mjs 10386 var STYLE_HASH_ATTRIBUTE6 = "data-wp-hash"; 10387 function getRuntime6() { 10388 const globalScope = globalThis; 10389 if (globalScope.__wpStyleRuntime) { 10390 return globalScope.__wpStyleRuntime; 10391 } 10392 globalScope.__wpStyleRuntime = { 10393 documents: /* @__PURE__ */ new Map(), 10394 styles: /* @__PURE__ */ new Map(), 10395 injectedStyles: /* @__PURE__ */ new WeakMap() 10396 }; 10397 if (typeof document !== "undefined") { 10398 registerDocument6(document); 10399 } 10400 return globalScope.__wpStyleRuntime; 10401 } 10402 function documentContainsStyleHash6(targetDocument, hash) { 10403 if (!targetDocument.head) { 10404 return false; 10405 } 10406 for (const style of targetDocument.head.querySelectorAll( 10407 `style[$STYLE_HASH_ATTRIBUTE6}]` 10408 )) { 10409 if (style.getAttribute(STYLE_HASH_ATTRIBUTE6) === hash) { 10410 return true; 10411 } 10412 } 10413 return false; 10414 } 10415 function injectStyle6(targetDocument, hash, css) { 10416 if (!targetDocument.head) { 10417 return; 10418 } 10419 const runtime = getRuntime6(); 10420 let injectedStyles = runtime.injectedStyles.get(targetDocument); 10421 if (!injectedStyles) { 10422 injectedStyles = /* @__PURE__ */ new Set(); 10423 runtime.injectedStyles.set(targetDocument, injectedStyles); 10424 } 10425 if (injectedStyles.has(hash)) { 10426 return; 10427 } 10428 if (documentContainsStyleHash6(targetDocument, hash)) { 10429 injectedStyles.add(hash); 10430 return; 10431 } 10432 const style = targetDocument.createElement("style"); 10433 style.setAttribute(STYLE_HASH_ATTRIBUTE6, hash); 10434 style.appendChild(targetDocument.createTextNode(css)); 10435 targetDocument.head.appendChild(style); 10436 injectedStyles.add(hash); 10437 } 10438 function registerDocument6(targetDocument) { 10439 const runtime = getRuntime6(); 10440 runtime.documents.set( 10441 targetDocument, 10442 (runtime.documents.get(targetDocument) ?? 0) + 1 10443 ); 10444 for (const [hash, css] of runtime.styles) { 10445 injectStyle6(targetDocument, hash, css); 10446 } 10447 return () => { 10448 const count = runtime.documents.get(targetDocument); 10449 if (count === void 0) { 10450 return; 10451 } 10452 if (count <= 1) { 10453 runtime.documents.delete(targetDocument); 10454 return; 10455 } 10456 runtime.documents.set(targetDocument, count - 1); 10457 }; 10458 } 10459 function registerStyle6(hash, css) { 10460 const runtime = getRuntime6(); 10461 runtime.styles.set(hash, css); 10462 for (const targetDocument of runtime.documents.keys()) { 10463 injectStyle6(targetDocument, hash, css); 10464 } 10465 } 10466 if (typeof process === "undefined" || true) { 10467 registerStyle6("be37f31c1e", "._11fc52b637ff8a7e__slot{inset:0;isolation:isolate;pointer-events:none;position:fixed;z-index:1000000003}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._11fc52b637ff8a7e__slot>*{pointer-events:auto}}}"); 10468 } 10469 var wp_compat_overlay_slot_default = { "slot": "_11fc52b637ff8a7e__slot" }; 10470 var WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE = "data-wp-compat-overlay-slot"; 10471 function resolveOwnerDocument() { 10472 return typeof document === "undefined" ? null : document; 10473 } 10474 function isInWordPressEnvironment() { 10475 let topWp; 10476 try { 10477 topWp = window.top?.wp; 10478 } catch { 10479 } 10480 const wp4 = topWp ?? window.wp; 10481 return typeof wp4?.components === "object" && wp4.components !== null; 10482 } 10483 var cachedSlot = null; 10484 function ensureSlotIsAccessible(element) { 10485 element.setAttribute("aria-hidden", "false"); 10486 return element; 10487 } 10488 function createSlot(ownerDocument2) { 10489 const element = ownerDocument2.createElement("div"); 10490 element.setAttribute(WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE, ""); 10491 if (wp_compat_overlay_slot_default.slot) { 10492 element.classList.add(wp_compat_overlay_slot_default.slot); 10493 } 10494 ownerDocument2.body.appendChild(element); 10495 return element; 10496 } 10497 function getWpCompatOverlaySlot() { 10498 if (typeof window === "undefined") { 10499 return void 0; 10500 } 10501 if (!isInWordPressEnvironment() && window.__wpUiCompatOverlaySlotEnabled !== true) { 10502 return void 0; 10503 } 10504 const ownerDocument2 = resolveOwnerDocument(); 10505 if (!ownerDocument2 || !ownerDocument2.body) { 10506 return void 0; 10507 } 10508 if (cachedSlot && cachedSlot.ownerDocument === ownerDocument2 && cachedSlot.isConnected) { 10509 return ensureSlotIsAccessible(cachedSlot); 10510 } 10511 const existing = ownerDocument2.querySelector( 10512 `[$WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE}]` 10513 ); 10514 if (existing instanceof HTMLDivElement) { 10515 cachedSlot = ensureSlotIsAccessible(existing); 10516 return cachedSlot; 10517 } 10518 if (cachedSlot?.isConnected) { 10519 cachedSlot.remove(); 10520 } 10521 cachedSlot = ensureSlotIsAccessible(createSlot(ownerDocument2)); 10522 return cachedSlot; 10523 } 10524 10525 // packages/ui/build-module/utils/direction-provider.mjs 10526 var import_i18n3 = __toESM(require_i18n(), 1); 10527 var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1); 10528 function DirectionProvider3({ children }) { 10529 return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(DirectionProvider, { direction: (0, import_i18n3.isRTL)() ? "rtl" : "ltr", children }); 10530 } 10531 10532 // packages/ui/build-module/tooltip/popup.mjs 10533 var import_element20 = __toESM(require_element(), 1); 10534 10535 // packages/ui/build-module/tooltip/portal.mjs 10536 var import_element18 = __toESM(require_element(), 1); 10537 var import_jsx_runtime30 = __toESM(require_jsx_runtime(), 1); 10538 var Portal = (0, import_element18.forwardRef)( 10539 function TooltipPortal3({ container, ...restProps }, ref) { 10540 return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)( 10541 index_parts_exports2.Portal, 10542 { 10543 container: container === void 0 ? getWpCompatOverlaySlot() : container, 10544 ...restProps, 10545 ref 10546 } 10547 ); 10548 } 10549 ); 10550 10551 // packages/ui/build-module/tooltip/positioner.mjs 10552 var import_element19 = __toESM(require_element(), 1); 10553 var import_jsx_runtime31 = __toESM(require_jsx_runtime(), 1); 10554 var STYLE_HASH_ATTRIBUTE7 = "data-wp-hash"; 10555 function getRuntime7() { 10556 const globalScope = globalThis; 10557 if (globalScope.__wpStyleRuntime) { 10558 return globalScope.__wpStyleRuntime; 10559 } 10560 globalScope.__wpStyleRuntime = { 10561 documents: /* @__PURE__ */ new Map(), 10562 styles: /* @__PURE__ */ new Map(), 10563 injectedStyles: /* @__PURE__ */ new WeakMap() 10564 }; 10565 if (typeof document !== "undefined") { 10566 registerDocument7(document); 10567 } 10568 return globalScope.__wpStyleRuntime; 10569 } 10570 function documentContainsStyleHash7(targetDocument, hash) { 10571 if (!targetDocument.head) { 10572 return false; 10573 } 10574 for (const style of targetDocument.head.querySelectorAll( 10575 `style[$STYLE_HASH_ATTRIBUTE7}]` 10576 )) { 10577 if (style.getAttribute(STYLE_HASH_ATTRIBUTE7) === hash) { 10578 return true; 10579 } 10580 } 10581 return false; 10582 } 10583 function injectStyle7(targetDocument, hash, css) { 10584 if (!targetDocument.head) { 10585 return; 10586 } 10587 const runtime = getRuntime7(); 10588 let injectedStyles = runtime.injectedStyles.get(targetDocument); 10589 if (!injectedStyles) { 10590 injectedStyles = /* @__PURE__ */ new Set(); 10591 runtime.injectedStyles.set(targetDocument, injectedStyles); 10592 } 10593 if (injectedStyles.has(hash)) { 10594 return; 10595 } 10596 if (documentContainsStyleHash7(targetDocument, hash)) { 10597 injectedStyles.add(hash); 10598 return; 10599 } 10600 const style = targetDocument.createElement("style"); 10601 style.setAttribute(STYLE_HASH_ATTRIBUTE7, hash); 10602 style.appendChild(targetDocument.createTextNode(css)); 10603 targetDocument.head.appendChild(style); 10604 injectedStyles.add(hash); 10605 } 10606 function registerDocument7(targetDocument) { 10607 const runtime = getRuntime7(); 10608 runtime.documents.set( 10609 targetDocument, 10610 (runtime.documents.get(targetDocument) ?? 0) + 1 10611 ); 10612 for (const [hash, css] of runtime.styles) { 10613 injectStyle7(targetDocument, hash, css); 10614 } 10615 return () => { 10616 const count = runtime.documents.get(targetDocument); 10617 if (count === void 0) { 10618 return; 10619 } 10620 if (count <= 1) { 10621 runtime.documents.delete(targetDocument); 10622 return; 10623 } 10624 runtime.documents.set(targetDocument, count - 1); 10625 }; 10626 } 10627 function registerStyle7(hash, css) { 10628 const runtime = getRuntime7(); 10629 runtime.styles.set(hash, css); 10630 for (const targetDocument of runtime.documents.keys()) { 10631 injectStyle7(targetDocument, hash, css); 10632 } 10633 } 10634 if (typeof process === "undefined" || true) { 10635 registerStyle7("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 10636 } 10637 var resets_default2 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; 10638 if (typeof process === "undefined" || true) { 10639 registerStyle7("19fcc06039", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._480b748dd3510e64__positioner{z-index:var(--wp-ui-tooltip-z-index,initial)}._50096b232db7709d__popup{--_wp-ui-elevation-sm:0 1px 2px rgba(0,0,0,.05),0 2px 3px rgba(0,0,0,.04),0 6px 6px rgba(0,0,0,.03),0 8px 8px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-sm);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:1.4;padding:var(--wpds-dimension-padding-xs,4px) var(--wpds-dimension-padding-sm,8px);@media (forced-colors:active){border-bottom-color:CanvasText;border-bottom-style:solid;border-bottom-width:1px;border-left-color:CanvasText;border-left-style:solid;border-left-width:1px;border-right-color:CanvasText;border-right-style:solid;border-right-width:1px;border-top-color:CanvasText;border-top-style:solid;border-top-width:1px}}}}'); 10640 } 10641 var style_default6 = { "positioner": "_480b748dd3510e64__positioner", "popup": "_50096b232db7709d__popup" }; 10642 var Positioner = (0, import_element19.forwardRef)( 10643 function TooltipPositioner3({ align = "center", className, side = "top", sideOffset = 4, ...props }, ref) { 10644 return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( 10645 index_parts_exports2.Positioner, 10646 { 10647 ref, 10648 align, 10649 side, 10650 sideOffset, 10651 ...props, 10652 className: clsx_default( 10653 resets_default2["box-sizing"], 10654 style_default6.positioner, 10655 className 10656 ) 10657 } 10658 ); 10659 } 10660 ); 10661 10662 // packages/ui/build-module/utils/theme-provider.mjs 10663 var theme = __toESM(require_theme(), 1); 10664 10665 // packages/ui/build-module/lock-unlock.mjs 10666 var import_private_apis = __toESM(require_private_apis(), 1); 10667 var { lock, unlock } = (0, import_private_apis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)( 10668 "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.", 10669 "@wordpress/ui" 10670 ); 10671 10672 // packages/ui/build-module/utils/theme-provider.mjs 10673 function getThemeProvider() { 10674 const themePackage = theme; 10675 if (themePackage.ThemeProvider) { 10676 return themePackage.ThemeProvider; 10677 } 10678 if (!themePackage.privateApis) { 10679 throw new Error( 10680 "@wordpress/ui: @wordpress/theme must expose `ThemeProvider` or `privateApis.ThemeProvider`." 10681 ); 10682 } 10683 return unlock( 10684 themePackage.privateApis 10685 ).ThemeProvider; 10686 } 10687 var ThemeProvider = getThemeProvider(); 10688 10689 // packages/ui/build-module/tooltip/popup.mjs 10690 var import_jsx_runtime32 = __toESM(require_jsx_runtime(), 1); 10691 var STYLE_HASH_ATTRIBUTE8 = "data-wp-hash"; 10692 function getRuntime8() { 10693 const globalScope = globalThis; 10694 if (globalScope.__wpStyleRuntime) { 10695 return globalScope.__wpStyleRuntime; 10696 } 10697 globalScope.__wpStyleRuntime = { 10698 documents: /* @__PURE__ */ new Map(), 10699 styles: /* @__PURE__ */ new Map(), 10700 injectedStyles: /* @__PURE__ */ new WeakMap() 10701 }; 10702 if (typeof document !== "undefined") { 10703 registerDocument8(document); 10704 } 10705 return globalScope.__wpStyleRuntime; 10706 } 10707 function documentContainsStyleHash8(targetDocument, hash) { 10708 if (!targetDocument.head) { 10709 return false; 10710 } 10711 for (const style of targetDocument.head.querySelectorAll( 10712 `style[$STYLE_HASH_ATTRIBUTE8}]` 10713 )) { 10714 if (style.getAttribute(STYLE_HASH_ATTRIBUTE8) === hash) { 10715 return true; 10716 } 10717 } 10718 return false; 10719 } 10720 function injectStyle8(targetDocument, hash, css) { 10721 if (!targetDocument.head) { 10722 return; 10723 } 10724 const runtime = getRuntime8(); 10725 let injectedStyles = runtime.injectedStyles.get(targetDocument); 10726 if (!injectedStyles) { 10727 injectedStyles = /* @__PURE__ */ new Set(); 10728 runtime.injectedStyles.set(targetDocument, injectedStyles); 10729 } 10730 if (injectedStyles.has(hash)) { 10731 return; 10732 } 10733 if (documentContainsStyleHash8(targetDocument, hash)) { 10734 injectedStyles.add(hash); 10735 return; 10736 } 10737 const style = targetDocument.createElement("style"); 10738 style.setAttribute(STYLE_HASH_ATTRIBUTE8, hash); 10739 style.appendChild(targetDocument.createTextNode(css)); 10740 targetDocument.head.appendChild(style); 10741 injectedStyles.add(hash); 10742 } 10743 function registerDocument8(targetDocument) { 10744 const runtime = getRuntime8(); 10745 runtime.documents.set( 10746 targetDocument, 10747 (runtime.documents.get(targetDocument) ?? 0) + 1 10748 ); 10749 for (const [hash, css] of runtime.styles) { 10750 injectStyle8(targetDocument, hash, css); 10751 } 10752 return () => { 10753 const count = runtime.documents.get(targetDocument); 10754 if (count === void 0) { 10755 return; 10756 } 10757 if (count <= 1) { 10758 runtime.documents.delete(targetDocument); 10759 return; 10760 } 10761 runtime.documents.set(targetDocument, count - 1); 10762 }; 10763 } 10764 function registerStyle8(hash, css) { 10765 const runtime = getRuntime8(); 10766 runtime.styles.set(hash, css); 10767 for (const targetDocument of runtime.documents.keys()) { 10768 injectStyle8(targetDocument, hash, css); 10769 } 10770 } 10771 if (typeof process === "undefined" || true) { 10772 registerStyle8("19fcc06039", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._480b748dd3510e64__positioner{z-index:var(--wp-ui-tooltip-z-index,initial)}._50096b232db7709d__popup{--_wp-ui-elevation-sm:0 1px 2px rgba(0,0,0,.05),0 2px 3px rgba(0,0,0,.04),0 6px 6px rgba(0,0,0,.03),0 8px 8px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-sm);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:1.4;padding:var(--wpds-dimension-padding-xs,4px) var(--wpds-dimension-padding-sm,8px);@media (forced-colors:active){border-bottom-color:CanvasText;border-bottom-style:solid;border-bottom-width:1px;border-left-color:CanvasText;border-left-style:solid;border-left-width:1px;border-right-color:CanvasText;border-right-style:solid;border-right-width:1px;border-top-color:CanvasText;border-top-style:solid;border-top-width:1px}}}}'); 10773 } 10774 var style_default7 = { "positioner": "_480b748dd3510e64__positioner", "popup": "_50096b232db7709d__popup" }; 10775 var POPUP_COLOR = { background: "#1e1e1e" }; 10776 var Popup = (0, import_element20.forwardRef)(function TooltipPopup3({ portal, positioner, children, className, ...props }, ref) { 10777 const popupContent = /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(ThemeProvider, { color: POPUP_COLOR, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)( 10778 index_parts_exports2.Popup, 10779 { 10780 ref, 10781 className: clsx_default(style_default7.popup, className), 10782 ...props, 10783 children 10784 } 10785 ) }); 10786 const positionedPopup = renderSlotWithChildren( 10787 positioner, 10788 /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Positioner, {}), 10789 popupContent 10790 ); 10791 return renderSlotWithChildren(portal, /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Portal, {}), positionedPopup); 10792 }); 10793 10794 // packages/ui/build-module/tooltip/trigger.mjs 10795 var import_element21 = __toESM(require_element(), 1); 10796 var import_jsx_runtime33 = __toESM(require_jsx_runtime(), 1); 10797 var Trigger = (0, import_element21.forwardRef)( 10798 function TooltipTrigger3(props, ref) { 10799 return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(index_parts_exports2.Trigger, { ref, ...props }); 10800 } 10801 ); 10802 10803 // packages/ui/build-module/tooltip/root.mjs 10804 var import_jsx_runtime34 = __toESM(require_jsx_runtime(), 1); 10805 function Root(props) { 10806 return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(DirectionProvider3, { children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(index_parts_exports2.Root, { ...props }) }); 10807 } 10808 10809 // packages/ui/build-module/link/link.mjs 10810 var import_element22 = __toESM(require_element(), 1); 10811 var import_i18n4 = __toESM(require_i18n(), 1); 10812 var import_jsx_runtime35 = __toESM(require_jsx_runtime(), 1); 10813 var STYLE_HASH_ATTRIBUTE9 = "data-wp-hash"; 10814 function getRuntime9() { 10815 const globalScope = globalThis; 10816 if (globalScope.__wpStyleRuntime) { 10817 return globalScope.__wpStyleRuntime; 10818 } 10819 globalScope.__wpStyleRuntime = { 10820 documents: /* @__PURE__ */ new Map(), 10821 styles: /* @__PURE__ */ new Map(), 10822 injectedStyles: /* @__PURE__ */ new WeakMap() 10823 }; 10824 if (typeof document !== "undefined") { 10825 registerDocument9(document); 10826 } 10827 return globalScope.__wpStyleRuntime; 10828 } 10829 function documentContainsStyleHash9(targetDocument, hash) { 10830 if (!targetDocument.head) { 10831 return false; 10832 } 10833 for (const style of targetDocument.head.querySelectorAll( 10834 `style[$STYLE_HASH_ATTRIBUTE9}]` 10835 )) { 10836 if (style.getAttribute(STYLE_HASH_ATTRIBUTE9) === hash) { 10837 return true; 10838 } 10839 } 10840 return false; 10841 } 10842 function injectStyle9(targetDocument, hash, css) { 10843 if (!targetDocument.head) { 10844 return; 10845 } 10846 const runtime = getRuntime9(); 10847 let injectedStyles = runtime.injectedStyles.get(targetDocument); 10848 if (!injectedStyles) { 10849 injectedStyles = /* @__PURE__ */ new Set(); 10850 runtime.injectedStyles.set(targetDocument, injectedStyles); 10851 } 10852 if (injectedStyles.has(hash)) { 10853 return; 10854 } 10855 if (documentContainsStyleHash9(targetDocument, hash)) { 10856 injectedStyles.add(hash); 10857 return; 10858 } 10859 const style = targetDocument.createElement("style"); 10860 style.setAttribute(STYLE_HASH_ATTRIBUTE9, hash); 10861 style.appendChild(targetDocument.createTextNode(css)); 10862 targetDocument.head.appendChild(style); 10863 injectedStyles.add(hash); 10864 } 10865 function registerDocument9(targetDocument) { 10866 const runtime = getRuntime9(); 10867 runtime.documents.set( 10868 targetDocument, 10869 (runtime.documents.get(targetDocument) ?? 0) + 1 10870 ); 10871 for (const [hash, css] of runtime.styles) { 10872 injectStyle9(targetDocument, hash, css); 10873 } 10874 return () => { 10875 const count = runtime.documents.get(targetDocument); 10876 if (count === void 0) { 10877 return; 10878 } 10879 if (count <= 1) { 10880 runtime.documents.delete(targetDocument); 10881 return; 10882 } 10883 runtime.documents.set(targetDocument, count - 1); 10884 }; 10885 } 10886 function registerStyle9(hash, css) { 10887 const runtime = getRuntime9(); 10888 runtime.styles.set(hash, css); 10889 for (const targetDocument of runtime.documents.keys()) { 10890 injectStyle9(targetDocument, hash, css); 10891 } 10892 } 10893 if (typeof process === "undefined" || true) { 10894 registerStyle9("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 10895 } 10896 var resets_default3 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; 10897 if (typeof process === "undefined" || true) { 10898 registerStyle9("7c3267f794", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{.af79fb116edb0dd7__outset-ring--focus:focus,.dfcfdc28396e5d98__outset-ring--focus-visible:focus-visible,.e5cd9ee879f6403a__outset-ring--focus-within:focus-within{--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}._3c9f5ee9fc9c136d__outset-ring--focus-within-except-active:focus-within,.abc777e9713fa711__outset-ring--focus-except-active:focus{outline:none}._3c9f5ee9fc9c136d__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.abc777e9713fa711__outset-ring--focus-except-active:focus:not(:active){--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}}}"); 10899 } 10900 var focus_module_default2 = { "outset-ring--focus": "af79fb116edb0dd7__outset-ring--focus", "outset-ring--focus-visible": "dfcfdc28396e5d98__outset-ring--focus-visible", "outset-ring--focus-within": "e5cd9ee879f6403a__outset-ring--focus-within", "outset-ring--focus-except-active": "abc777e9713fa711__outset-ring--focus-except-active", "outset-ring--focus-within-except-active": "_3c9f5ee9fc9c136d__outset-ring--focus-within-except-active" }; 10901 if (typeof process === "undefined" || true) { 10902 registerStyle9("888e86d20a", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d4250949359b05ce__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}.f037c632480d4e11__link-with-icon{text-decoration-line:none}._8dc7567f9ff415bf__link-contents{text-decoration:inherit;text-decoration-line:underline}.c6055659b8e2cd2c__is-brand,.c6055659b8e2cd2c__is-brand:visited{--_gcd-a-color:var(--wpds-color-foreground-interactive-brand,var(--wp-admin-theme-color,#3858e9));color:var(--wpds-color-foreground-interactive-brand,var(--wp-admin-theme-color,#3858e9))}.c6055659b8e2cd2c__is-brand:active,.c6055659b8e2cd2c__is-brand:hover{--_gcd-a-color:var(--wpds-color-foreground-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 52%,#000));color:var(--wpds-color-foreground-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 52%,#000))}._92e0dfcaeee15b88__is-neutral,._92e0dfcaeee15b88__is-neutral:visited{--_gcd-a-color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);text-decoration-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d)}._92e0dfcaeee15b88__is-neutral:active,._92e0dfcaeee15b88__is-neutral:hover{--_gcd-a-color:var(--wpds-color-foreground-interactive-neutral-active,#1e1e1e);color:var(--wpds-color-foreground-interactive-neutral-active,#1e1e1e)}.cf122a9bf1035d42__is-unstyled{--_gcd-a-border-radius:0;--_gcd-a-color:inherit;color:inherit;text-decoration:none}._0cb411afac4c86c7__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}._0cb411afac4c86c7__link-icon:after{content:"\\2060\\2197"}._0cb411afac4c86c7__link-icon:dir(rtl):after{content:"\\2060\\2196"}}}'); 10903 } 10904 var style_default8 = { "link": "d4250949359b05ce__link", "link-with-icon": "f037c632480d4e11__link-with-icon", "link-contents": "_8dc7567f9ff415bf__link-contents", "is-brand": "c6055659b8e2cd2c__is-brand", "is-neutral": "_92e0dfcaeee15b88__is-neutral", "is-unstyled": "cf122a9bf1035d42__is-unstyled", "link-icon": "_0cb411afac4c86c7__link-icon" }; 10905 if (typeof process === "undefined" || true) { 10906 registerStyle9("abb19c3171", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}[role=treeitem] span._400bf7ee0c6061a9__span[aria-hidden]{display:var(--_gcd-span-display,inline);font-family:var(--_gcd-span-font-family,inherit);font-size:var(--_gcd-span-font-size,inherit);line-height:var(--_gcd-span-line-height,1);pointer-events:var(--_gcd-span-pointer-events,auto);position:var(--_gcd-span-position,static)}"); 10907 } 10908 var global_css_defense_default3 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li", "span": "_400bf7ee0c6061a9__span" }; 10909 var Link = (0, import_element22.forwardRef)( 10910 function UnforwardedLink({ 10911 children, 10912 variant = "default", 10913 tone = "brand", 10914 openInNewTab = false, 10915 target, 10916 render, 10917 className, 10918 ...props 10919 }, ref) { 10920 const shouldShowNewTabIndicator = openInNewTab || /^_blank$/i.test(target ?? ""); 10921 const element = useRender({ 10922 render, 10923 defaultTagName: "a", 10924 ref, 10925 props: mergeProps(props, { 10926 className: clsx_default( 10927 global_css_defense_default3.a, 10928 resets_default3["box-sizing"], 10929 focus_module_default2["outset-ring--focus-except-active"], 10930 variant !== "unstyled" && style_default8.link, 10931 variant !== "unstyled" && shouldShowNewTabIndicator && style_default8["link-with-icon"], 10932 variant !== "unstyled" && style_default8[`is-$tone}`], 10933 variant === "unstyled" && style_default8["is-unstyled"], 10934 className 10935 ), 10936 target: target ?? (openInNewTab ? "_blank" : void 0), 10937 children: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_jsx_runtime35.Fragment, { children: [ 10938 shouldShowNewTabIndicator && variant !== "unstyled" ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: style_default8["link-contents"], children }) : children, 10939 shouldShowNewTabIndicator && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( 10940 "span", 10941 { 10942 className: style_default8["link-icon"], 10943 role: "img", 10944 "aria-label": ( 10945 /* translators: accessibility text appended to link text */ 10946 (0, import_i18n4.__)("(opens in a new tab)") 10947 ) 10948 } 10949 ) 10950 ] }) 10951 }) 10952 }); 10953 return element; 10954 } 10955 ); 10956 10957 // packages/ui/build-module/icon-button/icon-button.mjs 10958 var import_element23 = __toESM(require_element(), 1); 10959 var import_jsx_runtime36 = __toESM(require_jsx_runtime(), 1); 10960 var STYLE_HASH_ATTRIBUTE10 = "data-wp-hash"; 10961 function getRuntime10() { 10962 const globalScope = globalThis; 10963 if (globalScope.__wpStyleRuntime) { 10964 return globalScope.__wpStyleRuntime; 10965 } 10966 globalScope.__wpStyleRuntime = { 10967 documents: /* @__PURE__ */ new Map(), 10968 styles: /* @__PURE__ */ new Map(), 10969 injectedStyles: /* @__PURE__ */ new WeakMap() 10970 }; 10971 if (typeof document !== "undefined") { 10972 registerDocument10(document); 10973 } 10974 return globalScope.__wpStyleRuntime; 10975 } 10976 function documentContainsStyleHash10(targetDocument, hash) { 10977 if (!targetDocument.head) { 10978 return false; 10979 } 10980 for (const style of targetDocument.head.querySelectorAll( 10981 `style[$STYLE_HASH_ATTRIBUTE10}]` 10982 )) { 10983 if (style.getAttribute(STYLE_HASH_ATTRIBUTE10) === hash) { 10984 return true; 10985 } 10986 } 10987 return false; 10988 } 10989 function injectStyle10(targetDocument, hash, css) { 10990 if (!targetDocument.head) { 10991 return; 10992 } 10993 const runtime = getRuntime10(); 10994 let injectedStyles = runtime.injectedStyles.get(targetDocument); 10995 if (!injectedStyles) { 10996 injectedStyles = /* @__PURE__ */ new Set(); 10997 runtime.injectedStyles.set(targetDocument, injectedStyles); 10998 } 10999 if (injectedStyles.has(hash)) { 11000 return; 11001 } 11002 if (documentContainsStyleHash10(targetDocument, hash)) { 11003 injectedStyles.add(hash); 11004 return; 11005 } 11006 const style = targetDocument.createElement("style"); 11007 style.setAttribute(STYLE_HASH_ATTRIBUTE10, hash); 11008 style.appendChild(targetDocument.createTextNode(css)); 11009 targetDocument.head.appendChild(style); 11010 injectedStyles.add(hash); 11011 } 11012 function registerDocument10(targetDocument) { 11013 const runtime = getRuntime10(); 11014 runtime.documents.set( 11015 targetDocument, 11016 (runtime.documents.get(targetDocument) ?? 0) + 1 11017 ); 11018 for (const [hash, css] of runtime.styles) { 11019 injectStyle10(targetDocument, hash, css); 11020 } 11021 return () => { 11022 const count = runtime.documents.get(targetDocument); 11023 if (count === void 0) { 11024 return; 11025 } 11026 if (count <= 1) { 11027 runtime.documents.delete(targetDocument); 11028 return; 11029 } 11030 runtime.documents.set(targetDocument, count - 1); 11031 }; 11032 } 11033 function registerStyle10(hash, css) { 11034 const runtime = getRuntime10(); 11035 runtime.styles.set(hash, css); 11036 for (const targetDocument of runtime.documents.keys()) { 11037 injectStyle10(targetDocument, hash, css); 11038 } 11039 } 11040 if (typeof process === "undefined" || true) { 11041 registerStyle10("c5cdafb1bc", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer compositions{._28cfdc260e755391__icon-button{--wp-ui-button-aspect-ratio:1;--wp-ui-button-padding-inline:0px;--wp-ui-button-min-width:unset}.f1c70d719989a85a__icon{margin:-1px}}}"); 11042 } 11043 var style_default9 = { "icon-button": "_28cfdc260e755391__icon-button", "icon": "f1c70d719989a85a__icon" }; 11044 var IconButton = (0, import_element23.forwardRef)( 11045 function UnforwardedIconButton({ 11046 label, 11047 className, 11048 // Prevent accidental forwarding of `children` 11049 children: _children, 11050 disabled: disabled2, 11051 focusableWhenDisabled = true, 11052 icon, 11053 size: size4, 11054 shortcut, 11055 positioner, 11056 "aria-describedby": ariaDescribedBy, 11057 "aria-keyshortcuts": ariaKeyShortcuts, 11058 ...restProps 11059 }, ref) { 11060 const classes = clsx_default(style_default9["icon-button"], className); 11061 const { descriptionId, targetProps } = useKeyboardShortcutProps({ 11062 "aria-describedby": ariaDescribedBy, 11063 "aria-keyshortcuts": ariaKeyShortcuts, 11064 shortcut 11065 }); 11066 return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(Root, { children: [ 11067 /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)( 11068 Trigger, 11069 { 11070 ref, 11071 ...targetProps, 11072 disabled: disabled2 && !focusableWhenDisabled, 11073 render: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( 11074 Button4, 11075 { 11076 ...restProps, 11077 size: size4, 11078 "aria-label": label, 11079 disabled: disabled2, 11080 focusableWhenDisabled 11081 } 11082 ), 11083 className: classes, 11084 children: [ 11085 /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Icon, { icon, size: 24, className: style_default9.icon }), 11086 shortcut && descriptionId && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( 11087 KeyboardShortcutDescription, 11088 { 11089 descriptionId, 11090 shortcut 11091 } 11092 ) 11093 ] 11094 } 11095 ), 11096 /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(Popup, { positioner, children: [ 11097 label, 11098 shortcut && /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_jsx_runtime36.Fragment, { children: [ 11099 " ", 11100 /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(KeyboardShortcutDisplay, { shortcut }) 11101 ] }) 11102 ] }) 11103 ] }); 11104 } 11105 ); 11106 11107 // packages/ui/build-module/card/index.mjs 11108 var card_exports = {}; 11109 __export(card_exports, { 11110 Content: () => Content, 11111 FullBleed: () => FullBleed, 11112 Header: () => Header, 11113 Root: () => Root2, 11114 Title: () => Title 11115 }); 11116 11117 // packages/ui/build-module/card/root.mjs 11118 var import_element24 = __toESM(require_element(), 1); 11119 var STYLE_HASH_ATTRIBUTE11 = "data-wp-hash"; 11120 function getRuntime11() { 11121 const globalScope = globalThis; 11122 if (globalScope.__wpStyleRuntime) { 11123 return globalScope.__wpStyleRuntime; 11124 } 11125 globalScope.__wpStyleRuntime = { 11126 documents: /* @__PURE__ */ new Map(), 11127 styles: /* @__PURE__ */ new Map(), 11128 injectedStyles: /* @__PURE__ */ new WeakMap() 11129 }; 11130 if (typeof document !== "undefined") { 11131 registerDocument11(document); 11132 } 11133 return globalScope.__wpStyleRuntime; 11134 } 11135 function documentContainsStyleHash11(targetDocument, hash) { 11136 if (!targetDocument.head) { 11137 return false; 11138 } 11139 for (const style of targetDocument.head.querySelectorAll( 11140 `style[$STYLE_HASH_ATTRIBUTE11}]` 11141 )) { 11142 if (style.getAttribute(STYLE_HASH_ATTRIBUTE11) === hash) { 11143 return true; 11144 } 11145 } 11146 return false; 11147 } 11148 function injectStyle11(targetDocument, hash, css) { 11149 if (!targetDocument.head) { 11150 return; 11151 } 11152 const runtime = getRuntime11(); 11153 let injectedStyles = runtime.injectedStyles.get(targetDocument); 11154 if (!injectedStyles) { 11155 injectedStyles = /* @__PURE__ */ new Set(); 11156 runtime.injectedStyles.set(targetDocument, injectedStyles); 11157 } 11158 if (injectedStyles.has(hash)) { 11159 return; 11160 } 11161 if (documentContainsStyleHash11(targetDocument, hash)) { 11162 injectedStyles.add(hash); 11163 return; 11164 } 11165 const style = targetDocument.createElement("style"); 11166 style.setAttribute(STYLE_HASH_ATTRIBUTE11, hash); 11167 style.appendChild(targetDocument.createTextNode(css)); 11168 targetDocument.head.appendChild(style); 11169 injectedStyles.add(hash); 11170 } 11171 function registerDocument11(targetDocument) { 11172 const runtime = getRuntime11(); 11173 runtime.documents.set( 11174 targetDocument, 11175 (runtime.documents.get(targetDocument) ?? 0) + 1 11176 ); 11177 for (const [hash, css] of runtime.styles) { 11178 injectStyle11(targetDocument, hash, css); 11179 } 11180 return () => { 11181 const count = runtime.documents.get(targetDocument); 11182 if (count === void 0) { 11183 return; 11184 } 11185 if (count <= 1) { 11186 runtime.documents.delete(targetDocument); 11187 return; 11188 } 11189 runtime.documents.set(targetDocument, count - 1); 11190 }; 11191 } 11192 function registerStyle11(hash, css) { 11193 const runtime = getRuntime11(); 11194 runtime.styles.set(hash, css); 11195 for (const targetDocument of runtime.documents.keys()) { 11196 injectStyle11(targetDocument, hash, css); 11197 } 11198 } 11199 if (typeof process === "undefined" || true) { 11200 registerStyle11("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 11201 } 11202 var resets_default4 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; 11203 if (typeof process === "undefined" || true) { 11204 registerStyle11("cb866dcef6", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._02872bf298eadc43__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}._5dffdaf2a6e669ac__content,.bbccc92e6ba5662d__header{padding:var(--wp-ui-card-padding);&:not(:first-child):not(:last-child){padding-block-end:0}}.bbccc92e6ba5662d__header+._5dffdaf2a6e669ac__content{margin-block-start:var(--wp-ui-card-header-content-margin);padding-block-start:0}.c1fa192587e1b4a6__fullbleed{margin-inline:calc(var(--wp-ui-card-padding)*-1);width:calc(100% + var(--wp-ui-card-padding)*2)}._02872bf298eadc43__root>:is(.bbccc92e6ba5662d__header,._5dffdaf2a6e669ac__content):first-child>.c1fa192587e1b4a6__fullbleed:first-child{margin-block-start:calc(var(--wp-ui-card-padding)*-1)}:is(.bbccc92e6ba5662d__header,._5dffdaf2a6e669ac__content):last-child>.c1fa192587e1b4a6__fullbleed:last-child{margin-block-end:calc(var(--wp-ui-card-padding)*-1)}}}"); 11205 } 11206 var style_default10 = { "root": "_02872bf298eadc43__root", "header": "bbccc92e6ba5662d__header", "content": "_5dffdaf2a6e669ac__content", "fullbleed": "c1fa192587e1b4a6__fullbleed" }; 11207 var Root2 = (0, import_element24.forwardRef)(function Card({ render, ...restProps }, ref) { 11208 const mergedClassName = clsx_default(style_default10.root, resets_default4["box-sizing"]); 11209 const element = useRender({ 11210 defaultTagName: "div", 11211 render, 11212 ref, 11213 props: mergeProps({ className: mergedClassName }, restProps) 11214 }); 11215 return element; 11216 }); 11217 11218 // packages/ui/build-module/card/header.mjs 11219 var import_element25 = __toESM(require_element(), 1); 11220 var STYLE_HASH_ATTRIBUTE12 = "data-wp-hash"; 11221 function getRuntime12() { 11222 const globalScope = globalThis; 11223 if (globalScope.__wpStyleRuntime) { 11224 return globalScope.__wpStyleRuntime; 11225 } 11226 globalScope.__wpStyleRuntime = { 11227 documents: /* @__PURE__ */ new Map(), 11228 styles: /* @__PURE__ */ new Map(), 11229 injectedStyles: /* @__PURE__ */ new WeakMap() 11230 }; 11231 if (typeof document !== "undefined") { 11232 registerDocument12(document); 11233 } 11234 return globalScope.__wpStyleRuntime; 11235 } 11236 function documentContainsStyleHash12(targetDocument, hash) { 11237 if (!targetDocument.head) { 11238 return false; 11239 } 11240 for (const style of targetDocument.head.querySelectorAll( 11241 `style[$STYLE_HASH_ATTRIBUTE12}]` 11242 )) { 11243 if (style.getAttribute(STYLE_HASH_ATTRIBUTE12) === hash) { 11244 return true; 11245 } 11246 } 11247 return false; 11248 } 11249 function injectStyle12(targetDocument, hash, css) { 11250 if (!targetDocument.head) { 11251 return; 11252 } 11253 const runtime = getRuntime12(); 11254 let injectedStyles = runtime.injectedStyles.get(targetDocument); 11255 if (!injectedStyles) { 11256 injectedStyles = /* @__PURE__ */ new Set(); 11257 runtime.injectedStyles.set(targetDocument, injectedStyles); 11258 } 11259 if (injectedStyles.has(hash)) { 11260 return; 11261 } 11262 if (documentContainsStyleHash12(targetDocument, hash)) { 11263 injectedStyles.add(hash); 11264 return; 11265 } 11266 const style = targetDocument.createElement("style"); 11267 style.setAttribute(STYLE_HASH_ATTRIBUTE12, hash); 11268 style.appendChild(targetDocument.createTextNode(css)); 11269 targetDocument.head.appendChild(style); 11270 injectedStyles.add(hash); 11271 } 11272 function registerDocument12(targetDocument) { 11273 const runtime = getRuntime12(); 11274 runtime.documents.set( 11275 targetDocument, 11276 (runtime.documents.get(targetDocument) ?? 0) + 1 11277 ); 11278 for (const [hash, css] of runtime.styles) { 11279 injectStyle12(targetDocument, hash, css); 11280 } 11281 return () => { 11282 const count = runtime.documents.get(targetDocument); 11283 if (count === void 0) { 11284 return; 11285 } 11286 if (count <= 1) { 11287 runtime.documents.delete(targetDocument); 11288 return; 11289 } 11290 runtime.documents.set(targetDocument, count - 1); 11291 }; 11292 } 11293 function registerStyle12(hash, css) { 11294 const runtime = getRuntime12(); 11295 runtime.styles.set(hash, css); 11296 for (const targetDocument of runtime.documents.keys()) { 11297 injectStyle12(targetDocument, hash, css); 11298 } 11299 } 11300 if (typeof process === "undefined" || true) { 11301 registerStyle12("cb866dcef6", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._02872bf298eadc43__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}._5dffdaf2a6e669ac__content,.bbccc92e6ba5662d__header{padding:var(--wp-ui-card-padding);&:not(:first-child):not(:last-child){padding-block-end:0}}.bbccc92e6ba5662d__header+._5dffdaf2a6e669ac__content{margin-block-start:var(--wp-ui-card-header-content-margin);padding-block-start:0}.c1fa192587e1b4a6__fullbleed{margin-inline:calc(var(--wp-ui-card-padding)*-1);width:calc(100% + var(--wp-ui-card-padding)*2)}._02872bf298eadc43__root>:is(.bbccc92e6ba5662d__header,._5dffdaf2a6e669ac__content):first-child>.c1fa192587e1b4a6__fullbleed:first-child{margin-block-start:calc(var(--wp-ui-card-padding)*-1)}:is(.bbccc92e6ba5662d__header,._5dffdaf2a6e669ac__content):last-child>.c1fa192587e1b4a6__fullbleed:last-child{margin-block-end:calc(var(--wp-ui-card-padding)*-1)}}}"); 11302 } 11303 var style_default11 = { "root": "_02872bf298eadc43__root", "header": "bbccc92e6ba5662d__header", "content": "_5dffdaf2a6e669ac__content", "fullbleed": "c1fa192587e1b4a6__fullbleed" }; 11304 var Header = (0, import_element25.forwardRef)( 11305 function CardHeader({ render, ...props }, ref) { 11306 const element = useRender({ 11307 defaultTagName: "div", 11308 render, 11309 ref, 11310 props: mergeProps({ className: style_default11.header }, props) 11311 }); 11312 return element; 11313 } 11314 ); 11315 11316 // packages/ui/build-module/card/content.mjs 11317 var import_element26 = __toESM(require_element(), 1); 11318 var STYLE_HASH_ATTRIBUTE13 = "data-wp-hash"; 11319 function getRuntime13() { 11320 const globalScope = globalThis; 11321 if (globalScope.__wpStyleRuntime) { 11322 return globalScope.__wpStyleRuntime; 11323 } 11324 globalScope.__wpStyleRuntime = { 11325 documents: /* @__PURE__ */ new Map(), 11326 styles: /* @__PURE__ */ new Map(), 11327 injectedStyles: /* @__PURE__ */ new WeakMap() 11328 }; 11329 if (typeof document !== "undefined") { 11330 registerDocument13(document); 11331 } 11332 return globalScope.__wpStyleRuntime; 11333 } 11334 function documentContainsStyleHash13(targetDocument, hash) { 11335 if (!targetDocument.head) { 11336 return false; 11337 } 11338 for (const style of targetDocument.head.querySelectorAll( 11339 `style[$STYLE_HASH_ATTRIBUTE13}]` 11340 )) { 11341 if (style.getAttribute(STYLE_HASH_ATTRIBUTE13) === hash) { 11342 return true; 11343 } 11344 } 11345 return false; 11346 } 11347 function injectStyle13(targetDocument, hash, css) { 11348 if (!targetDocument.head) { 11349 return; 11350 } 11351 const runtime = getRuntime13(); 11352 let injectedStyles = runtime.injectedStyles.get(targetDocument); 11353 if (!injectedStyles) { 11354 injectedStyles = /* @__PURE__ */ new Set(); 11355 runtime.injectedStyles.set(targetDocument, injectedStyles); 11356 } 11357 if (injectedStyles.has(hash)) { 11358 return; 11359 } 11360 if (documentContainsStyleHash13(targetDocument, hash)) { 11361 injectedStyles.add(hash); 11362 return; 11363 } 11364 const style = targetDocument.createElement("style"); 11365 style.setAttribute(STYLE_HASH_ATTRIBUTE13, hash); 11366 style.appendChild(targetDocument.createTextNode(css)); 11367 targetDocument.head.appendChild(style); 11368 injectedStyles.add(hash); 11369 } 11370 function registerDocument13(targetDocument) { 11371 const runtime = getRuntime13(); 11372 runtime.documents.set( 11373 targetDocument, 11374 (runtime.documents.get(targetDocument) ?? 0) + 1 11375 ); 11376 for (const [hash, css] of runtime.styles) { 11377 injectStyle13(targetDocument, hash, css); 11378 } 11379 return () => { 11380 const count = runtime.documents.get(targetDocument); 11381 if (count === void 0) { 11382 return; 11383 } 11384 if (count <= 1) { 11385 runtime.documents.delete(targetDocument); 11386 return; 11387 } 11388 runtime.documents.set(targetDocument, count - 1); 11389 }; 11390 } 11391 function registerStyle13(hash, css) { 11392 const runtime = getRuntime13(); 11393 runtime.styles.set(hash, css); 11394 for (const targetDocument of runtime.documents.keys()) { 11395 injectStyle13(targetDocument, hash, css); 11396 } 11397 } 11398 if (typeof process === "undefined" || true) { 11399 registerStyle13("cb866dcef6", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._02872bf298eadc43__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}._5dffdaf2a6e669ac__content,.bbccc92e6ba5662d__header{padding:var(--wp-ui-card-padding);&:not(:first-child):not(:last-child){padding-block-end:0}}.bbccc92e6ba5662d__header+._5dffdaf2a6e669ac__content{margin-block-start:var(--wp-ui-card-header-content-margin);padding-block-start:0}.c1fa192587e1b4a6__fullbleed{margin-inline:calc(var(--wp-ui-card-padding)*-1);width:calc(100% + var(--wp-ui-card-padding)*2)}._02872bf298eadc43__root>:is(.bbccc92e6ba5662d__header,._5dffdaf2a6e669ac__content):first-child>.c1fa192587e1b4a6__fullbleed:first-child{margin-block-start:calc(var(--wp-ui-card-padding)*-1)}:is(.bbccc92e6ba5662d__header,._5dffdaf2a6e669ac__content):last-child>.c1fa192587e1b4a6__fullbleed:last-child{margin-block-end:calc(var(--wp-ui-card-padding)*-1)}}}"); 11400 } 11401 var style_default12 = { "root": "_02872bf298eadc43__root", "header": "bbccc92e6ba5662d__header", "content": "_5dffdaf2a6e669ac__content", "fullbleed": "c1fa192587e1b4a6__fullbleed" }; 11402 var Content = (0, import_element26.forwardRef)( 11403 function CardContent({ render, ...props }, ref) { 11404 const element = useRender({ 11405 defaultTagName: "div", 11406 render, 11407 ref, 11408 props: mergeProps({ className: style_default12.content }, props) 11409 }); 11410 return element; 11411 } 11412 ); 11413 11414 // packages/ui/build-module/card/full-bleed.mjs 11415 var import_element27 = __toESM(require_element(), 1); 11416 var STYLE_HASH_ATTRIBUTE14 = "data-wp-hash"; 11417 function getRuntime14() { 11418 const globalScope = globalThis; 11419 if (globalScope.__wpStyleRuntime) { 11420 return globalScope.__wpStyleRuntime; 11421 } 11422 globalScope.__wpStyleRuntime = { 11423 documents: /* @__PURE__ */ new Map(), 11424 styles: /* @__PURE__ */ new Map(), 11425 injectedStyles: /* @__PURE__ */ new WeakMap() 11426 }; 11427 if (typeof document !== "undefined") { 11428 registerDocument14(document); 11429 } 11430 return globalScope.__wpStyleRuntime; 11431 } 11432 function documentContainsStyleHash14(targetDocument, hash) { 11433 if (!targetDocument.head) { 11434 return false; 11435 } 11436 for (const style of targetDocument.head.querySelectorAll( 11437 `style[$STYLE_HASH_ATTRIBUTE14}]` 11438 )) { 11439 if (style.getAttribute(STYLE_HASH_ATTRIBUTE14) === hash) { 11440 return true; 11441 } 11442 } 11443 return false; 11444 } 11445 function injectStyle14(targetDocument, hash, css) { 11446 if (!targetDocument.head) { 11447 return; 11448 } 11449 const runtime = getRuntime14(); 11450 let injectedStyles = runtime.injectedStyles.get(targetDocument); 11451 if (!injectedStyles) { 11452 injectedStyles = /* @__PURE__ */ new Set(); 11453 runtime.injectedStyles.set(targetDocument, injectedStyles); 11454 } 11455 if (injectedStyles.has(hash)) { 11456 return; 11457 } 11458 if (documentContainsStyleHash14(targetDocument, hash)) { 11459 injectedStyles.add(hash); 11460 return; 11461 } 11462 const style = targetDocument.createElement("style"); 11463 style.setAttribute(STYLE_HASH_ATTRIBUTE14, hash); 11464 style.appendChild(targetDocument.createTextNode(css)); 11465 targetDocument.head.appendChild(style); 11466 injectedStyles.add(hash); 11467 } 11468 function registerDocument14(targetDocument) { 11469 const runtime = getRuntime14(); 11470 runtime.documents.set( 11471 targetDocument, 11472 (runtime.documents.get(targetDocument) ?? 0) + 1 11473 ); 11474 for (const [hash, css] of runtime.styles) { 11475 injectStyle14(targetDocument, hash, css); 11476 } 11477 return () => { 11478 const count = runtime.documents.get(targetDocument); 11479 if (count === void 0) { 11480 return; 11481 } 11482 if (count <= 1) { 11483 runtime.documents.delete(targetDocument); 11484 return; 11485 } 11486 runtime.documents.set(targetDocument, count - 1); 11487 }; 11488 } 11489 function registerStyle14(hash, css) { 11490 const runtime = getRuntime14(); 11491 runtime.styles.set(hash, css); 11492 for (const targetDocument of runtime.documents.keys()) { 11493 injectStyle14(targetDocument, hash, css); 11494 } 11495 } 11496 if (typeof process === "undefined" || true) { 11497 registerStyle14("cb866dcef6", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._02872bf298eadc43__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}._5dffdaf2a6e669ac__content,.bbccc92e6ba5662d__header{padding:var(--wp-ui-card-padding);&:not(:first-child):not(:last-child){padding-block-end:0}}.bbccc92e6ba5662d__header+._5dffdaf2a6e669ac__content{margin-block-start:var(--wp-ui-card-header-content-margin);padding-block-start:0}.c1fa192587e1b4a6__fullbleed{margin-inline:calc(var(--wp-ui-card-padding)*-1);width:calc(100% + var(--wp-ui-card-padding)*2)}._02872bf298eadc43__root>:is(.bbccc92e6ba5662d__header,._5dffdaf2a6e669ac__content):first-child>.c1fa192587e1b4a6__fullbleed:first-child{margin-block-start:calc(var(--wp-ui-card-padding)*-1)}:is(.bbccc92e6ba5662d__header,._5dffdaf2a6e669ac__content):last-child>.c1fa192587e1b4a6__fullbleed:last-child{margin-block-end:calc(var(--wp-ui-card-padding)*-1)}}}"); 11498 } 11499 var style_default13 = { "root": "_02872bf298eadc43__root", "header": "bbccc92e6ba5662d__header", "content": "_5dffdaf2a6e669ac__content", "fullbleed": "c1fa192587e1b4a6__fullbleed" }; 11500 var FullBleed = (0, import_element27.forwardRef)( 11501 function CardFullBleed({ render, ...props }, ref) { 11502 const element = useRender({ 11503 defaultTagName: "div", 11504 render, 11505 ref, 11506 props: mergeProps( 11507 { className: style_default13.fullbleed }, 11508 props 11509 ) 11510 }); 11511 return element; 11512 } 11513 ); 11514 11515 // packages/ui/build-module/card/title.mjs 11516 var import_element28 = __toESM(require_element(), 1); 11517 var import_jsx_runtime37 = __toESM(require_jsx_runtime(), 1); 11518 var DEFAULT_TAG = /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", {}); 11519 var Title = (0, import_element28.forwardRef)( 11520 function CardTitle({ render = DEFAULT_TAG, children, ...props }, ref) { 11521 return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( 11522 Text, 11523 { 11524 ref, 11525 variant: "heading-lg", 11526 render, 11527 ...props, 11528 children 11529 } 11530 ); 11531 } 11532 ); 11533 11534 // packages/ui/build-module/collapsible/panel.mjs 11535 var import_element29 = __toESM(require_element(), 1); 11536 var import_jsx_runtime38 = __toESM(require_jsx_runtime(), 1); 11537 var Panel = (0, import_element29.forwardRef)( 11538 function CollapsiblePanel3(props, forwardedRef) { 11539 return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(index_parts_exports.Panel, { ref: forwardedRef, ...props }); 11540 } 11541 ); 11542 11543 // packages/ui/build-module/collapsible/root.mjs 11544 var import_element30 = __toESM(require_element(), 1); 11545 var import_jsx_runtime39 = __toESM(require_jsx_runtime(), 1); 11546 var Root3 = (0, import_element30.forwardRef)( 11547 function CollapsibleRoot3(props, forwardedRef) { 11548 return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(index_parts_exports.Root, { ref: forwardedRef, ...props }); 11549 } 11550 ); 11551 11552 // packages/ui/build-module/collapsible/trigger.mjs 11553 var import_element31 = __toESM(require_element(), 1); 11554 var import_jsx_runtime40 = __toESM(require_jsx_runtime(), 1); 11555 var Trigger2 = (0, import_element31.forwardRef)( 11556 function CollapsibleTrigger3(props, forwardedRef) { 11557 return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(index_parts_exports.Trigger, { ref: forwardedRef, ...props }); 11558 } 11559 ); 11560 11561 // packages/ui/build-module/collapsible-card/index.mjs 11562 var collapsible_card_exports = {}; 11563 __export(collapsible_card_exports, { 11564 Content: () => Content2, 11565 Header: () => Header2, 11566 HeaderDescription: () => HeaderDescription, 11567 Root: () => Root32 11568 }); 11569 11570 // packages/ui/build-module/collapsible-card/root.mjs 11571 var import_element32 = __toESM(require_element(), 1); 11572 var import_jsx_runtime41 = __toESM(require_jsx_runtime(), 1); 11573 var Root32 = (0, import_element32.forwardRef)( 11574 function CollapsibleCardRoot({ render, ...restProps }, ref) { 11575 return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( 11576 Root3, 11577 { 11578 ref, 11579 render: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Root2, { render }), 11580 ...restProps 11581 } 11582 ); 11583 } 11584 ); 11585 11586 // packages/ui/build-module/collapsible-card/header.mjs 11587 var import_compose = __toESM(require_compose(), 1); 11588 var import_element34 = __toESM(require_element(), 1); 11589 11590 // packages/ui/build-module/collapsible-card/context.mjs 11591 var import_element33 = __toESM(require_element(), 1); 11592 var HeaderDescriptionIdContext = (0, import_element33.createContext)(null); 11593 11594 // packages/ui/build-module/collapsible-card/header.mjs 11595 var import_jsx_runtime42 = __toESM(require_jsx_runtime(), 1); 11596 var STYLE_HASH_ATTRIBUTE15 = "data-wp-hash"; 11597 function getRuntime15() { 11598 const globalScope = globalThis; 11599 if (globalScope.__wpStyleRuntime) { 11600 return globalScope.__wpStyleRuntime; 11601 } 11602 globalScope.__wpStyleRuntime = { 11603 documents: /* @__PURE__ */ new Map(), 11604 styles: /* @__PURE__ */ new Map(), 11605 injectedStyles: /* @__PURE__ */ new WeakMap() 11606 }; 11607 if (typeof document !== "undefined") { 11608 registerDocument15(document); 11609 } 11610 return globalScope.__wpStyleRuntime; 11611 } 11612 function documentContainsStyleHash15(targetDocument, hash) { 11613 if (!targetDocument.head) { 11614 return false; 11615 } 11616 for (const style of targetDocument.head.querySelectorAll( 11617 `style[$STYLE_HASH_ATTRIBUTE15}]` 11618 )) { 11619 if (style.getAttribute(STYLE_HASH_ATTRIBUTE15) === hash) { 11620 return true; 11621 } 11622 } 11623 return false; 11624 } 11625 function injectStyle15(targetDocument, hash, css) { 11626 if (!targetDocument.head) { 11627 return; 11628 } 11629 const runtime = getRuntime15(); 11630 let injectedStyles = runtime.injectedStyles.get(targetDocument); 11631 if (!injectedStyles) { 11632 injectedStyles = /* @__PURE__ */ new Set(); 11633 runtime.injectedStyles.set(targetDocument, injectedStyles); 11634 } 11635 if (injectedStyles.has(hash)) { 11636 return; 11637 } 11638 if (documentContainsStyleHash15(targetDocument, hash)) { 11639 injectedStyles.add(hash); 11640 return; 11641 } 11642 const style = targetDocument.createElement("style"); 11643 style.setAttribute(STYLE_HASH_ATTRIBUTE15, hash); 11644 style.appendChild(targetDocument.createTextNode(css)); 11645 targetDocument.head.appendChild(style); 11646 injectedStyles.add(hash); 11647 } 11648 function registerDocument15(targetDocument) { 11649 const runtime = getRuntime15(); 11650 runtime.documents.set( 11651 targetDocument, 11652 (runtime.documents.get(targetDocument) ?? 0) + 1 11653 ); 11654 for (const [hash, css] of runtime.styles) { 11655 injectStyle15(targetDocument, hash, css); 11656 } 11657 return () => { 11658 const count = runtime.documents.get(targetDocument); 11659 if (count === void 0) { 11660 return; 11661 } 11662 if (count <= 1) { 11663 runtime.documents.delete(targetDocument); 11664 return; 11665 } 11666 runtime.documents.set(targetDocument, count - 1); 11667 }; 11668 } 11669 function registerStyle15(hash, css) { 11670 const runtime = getRuntime15(); 11671 runtime.styles.set(hash, css); 11672 for (const targetDocument of runtime.documents.keys()) { 11673 injectStyle15(targetDocument, hash, css); 11674 } 11675 } 11676 if (typeof process === "undefined" || true) { 11677 registerStyle15("66b8e83c76", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._572e7c546522c522__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}._7ea7cf191a8d26b8__header-content{flex:1;min-width:0}._8f14576749c57845__header-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._48cdf1e0d42fc13e__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}._77d30921d8288eaf__header-trigger-wrapper{border-radius:var(--wpds-border-radius-sm,2px);display:flex;translate:0 -50%}.c11e44555738d97f__header:focus-visible ._77d30921d8288eaf__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){._22a30cbbb7b656f4__header-trigger{transition:rotate .15s ease-out}}.c11e44555738d97f__header[data-panel-open] ._22a30cbbb7b656f4__header-trigger{rotate:180deg}.c11e44555738d97f__header[data-disabled] ._22a30cbbb7b656f4__header-trigger{color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d)}._90333ddfaa28d232__content{height:var(--collapsible-panel-height);margin-block-start:var(--wp-ui-card-header-content-margin);overflow:hidden}._90333ddfaa28d232__content._20c2575829a8af9b__overflow-visible{overflow:visible}._90333ddfaa28d232__content[hidden]:not([hidden=until-found]){display:none}._90333ddfaa28d232__content[data-ending-style],._90333ddfaa28d232__content[data-starting-style]{height:0}@media not (prefers-reduced-motion){._90333ddfaa28d232__content{transition:all .15s ease-out}}}@layer compositions{.c269ffa2b76fe947__content-inner{padding-block-start:0}.c11e44555738d97f__header{align-items:stretch;display:flex;flex-direction:row;gap:var(--wpds-dimension-gap-sm,8px);outline:none}.c11e44555738d97f__header:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}}}"); 11678 } 11679 var style_module_default = { "heading-wrapper": "_572e7c546522c522__heading-wrapper", "header-content": "_7ea7cf191a8d26b8__header-content", "header-description": "_8f14576749c57845__header-description", "header-trigger-positioner": "_48cdf1e0d42fc13e__header-trigger-positioner", "header-trigger-wrapper": "_77d30921d8288eaf__header-trigger-wrapper", "header": "c11e44555738d97f__header", "header-trigger": "_22a30cbbb7b656f4__header-trigger", "content": "_90333ddfaa28d232__content", "overflow-visible": "_20c2575829a8af9b__overflow-visible", "content-inner": "c269ffa2b76fe947__content-inner" }; 11680 if (typeof process === "undefined" || true) { 11681 registerStyle15("abb19c3171", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}[role=treeitem] span._400bf7ee0c6061a9__span[aria-hidden]{display:var(--_gcd-span-display,inline);font-family:var(--_gcd-span-font-family,inherit);font-size:var(--_gcd-span-font-size,inherit);line-height:var(--_gcd-span-line-height,1);pointer-events:var(--_gcd-span-pointer-events,auto);position:var(--_gcd-span-position,static)}"); 11682 } 11683 var global_css_defense_default4 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li", "span": "_400bf7ee0c6061a9__span" }; 11684 var Header2 = (0, import_element34.forwardRef)( 11685 function CollapsibleCardHeader({ 11686 children, 11687 className, 11688 render, 11689 "aria-describedby": ariaDescribedByProp, 11690 ...restProps 11691 }, ref) { 11692 const [descriptionIds, setDescriptionIds] = (0, import_element34.useState)( 11693 [] 11694 ); 11695 const [orderedDescriptionIds, setOrderedDescriptionIds] = (0, import_element34.useState)([]); 11696 const headerContentRef = (0, import_element34.useRef)(null); 11697 const registerDescriptionId = (0, import_element34.useCallback)((id) => { 11698 setDescriptionIds((currentDescriptionIds) => { 11699 if (currentDescriptionIds.includes(id)) { 11700 return currentDescriptionIds; 11701 } 11702 return [...currentDescriptionIds, id]; 11703 }); 11704 return () => { 11705 setDescriptionIds( 11706 (currentDescriptionIds) => currentDescriptionIds.filter( 11707 (descriptionId) => descriptionId !== id 11708 ) 11709 ); 11710 }; 11711 }, []); 11712 const contextValue = (0, import_element34.useMemo)( 11713 () => ({ registerDescriptionId }), 11714 [registerDescriptionId] 11715 ); 11716 (0, import_compose.useIsomorphicLayoutEffect)(() => { 11717 const registeredDescriptionIds = new Set(descriptionIds); 11718 const nextDescriptionIds = Array.from( 11719 headerContentRef.current?.querySelectorAll("[id]") ?? [] 11720 ).map((element) => element.id).filter((id) => registeredDescriptionIds.has(id)); 11721 setOrderedDescriptionIds((currentDescriptionIds) => { 11722 if (currentDescriptionIds.length === nextDescriptionIds.length && currentDescriptionIds.every( 11723 (id, index2) => id === nextDescriptionIds[index2] 11724 )) { 11725 return currentDescriptionIds; 11726 } 11727 return nextDescriptionIds; 11728 }); 11729 }); 11730 const ariaDescribedBy = Array.from( 11731 /* @__PURE__ */ new Set([ 11732 ...ariaDescribedByProp?.split(/\s+/).filter(Boolean) ?? [], 11733 ...orderedDescriptionIds 11734 ]) 11735 ).join(" ") || void 0; 11736 return useRender({ 11737 defaultTagName: "div", 11738 render, 11739 ref, 11740 props: mergeProps(restProps, { 11741 className: clsx_default( 11742 global_css_defense_default4.heading, 11743 style_module_default["heading-wrapper"], 11744 className 11745 ), 11746 children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(HeaderDescriptionIdContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)( 11747 Trigger2, 11748 { 11749 className: style_module_default.header, 11750 render: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Header, {}), 11751 nativeButton: false, 11752 "aria-describedby": ariaDescribedBy, 11753 children: [ 11754 /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( 11755 "div", 11756 { 11757 ref: headerContentRef, 11758 className: style_module_default["header-content"], 11759 children 11760 } 11761 ), 11762 /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( 11763 "div", 11764 { 11765 className: clsx_default( 11766 style_module_default["header-trigger-positioner"] 11767 ), 11768 children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( 11769 "div", 11770 { 11771 className: clsx_default( 11772 style_module_default["header-trigger-wrapper"], 11773 global_css_defense_default4.div 11774 ), 11775 children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( 11776 Icon, 11777 { 11778 icon: chevron_down_default, 11779 className: style_module_default["header-trigger"] 11780 } 11781 ) 11782 } 11783 ) 11784 } 11785 ) 11786 ] 11787 } 11788 ) }) 11789 }) 11790 }); 11791 } 11792 ); 11793 11794 // packages/ui/build-module/collapsible-card/header-description.mjs 11795 var import_element35 = __toESM(require_element(), 1); 11796 var import_jsx_runtime43 = __toESM(require_jsx_runtime(), 1); 11797 var STYLE_HASH_ATTRIBUTE16 = "data-wp-hash"; 11798 function getRuntime16() { 11799 const globalScope = globalThis; 11800 if (globalScope.__wpStyleRuntime) { 11801 return globalScope.__wpStyleRuntime; 11802 } 11803 globalScope.__wpStyleRuntime = { 11804 documents: /* @__PURE__ */ new Map(), 11805 styles: /* @__PURE__ */ new Map(), 11806 injectedStyles: /* @__PURE__ */ new WeakMap() 11807 }; 11808 if (typeof document !== "undefined") { 11809 registerDocument16(document); 11810 } 11811 return globalScope.__wpStyleRuntime; 11812 } 11813 function documentContainsStyleHash16(targetDocument, hash) { 11814 if (!targetDocument.head) { 11815 return false; 11816 } 11817 for (const style of targetDocument.head.querySelectorAll( 11818 `style[$STYLE_HASH_ATTRIBUTE16}]` 11819 )) { 11820 if (style.getAttribute(STYLE_HASH_ATTRIBUTE16) === hash) { 11821 return true; 11822 } 11823 } 11824 return false; 11825 } 11826 function injectStyle16(targetDocument, hash, css) { 11827 if (!targetDocument.head) { 11828 return; 11829 } 11830 const runtime = getRuntime16(); 11831 let injectedStyles = runtime.injectedStyles.get(targetDocument); 11832 if (!injectedStyles) { 11833 injectedStyles = /* @__PURE__ */ new Set(); 11834 runtime.injectedStyles.set(targetDocument, injectedStyles); 11835 } 11836 if (injectedStyles.has(hash)) { 11837 return; 11838 } 11839 if (documentContainsStyleHash16(targetDocument, hash)) { 11840 injectedStyles.add(hash); 11841 return; 11842 } 11843 const style = targetDocument.createElement("style"); 11844 style.setAttribute(STYLE_HASH_ATTRIBUTE16, hash); 11845 style.appendChild(targetDocument.createTextNode(css)); 11846 targetDocument.head.appendChild(style); 11847 injectedStyles.add(hash); 11848 } 11849 function registerDocument16(targetDocument) { 11850 const runtime = getRuntime16(); 11851 runtime.documents.set( 11852 targetDocument, 11853 (runtime.documents.get(targetDocument) ?? 0) + 1 11854 ); 11855 for (const [hash, css] of runtime.styles) { 11856 injectStyle16(targetDocument, hash, css); 11857 } 11858 return () => { 11859 const count = runtime.documents.get(targetDocument); 11860 if (count === void 0) { 11861 return; 11862 } 11863 if (count <= 1) { 11864 runtime.documents.delete(targetDocument); 11865 return; 11866 } 11867 runtime.documents.set(targetDocument, count - 1); 11868 }; 11869 } 11870 function registerStyle16(hash, css) { 11871 const runtime = getRuntime16(); 11872 runtime.styles.set(hash, css); 11873 for (const targetDocument of runtime.documents.keys()) { 11874 injectStyle16(targetDocument, hash, css); 11875 } 11876 } 11877 if (typeof process === "undefined" || true) { 11878 registerStyle16("66b8e83c76", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._572e7c546522c522__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}._7ea7cf191a8d26b8__header-content{flex:1;min-width:0}._8f14576749c57845__header-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._48cdf1e0d42fc13e__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}._77d30921d8288eaf__header-trigger-wrapper{border-radius:var(--wpds-border-radius-sm,2px);display:flex;translate:0 -50%}.c11e44555738d97f__header:focus-visible ._77d30921d8288eaf__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){._22a30cbbb7b656f4__header-trigger{transition:rotate .15s ease-out}}.c11e44555738d97f__header[data-panel-open] ._22a30cbbb7b656f4__header-trigger{rotate:180deg}.c11e44555738d97f__header[data-disabled] ._22a30cbbb7b656f4__header-trigger{color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d)}._90333ddfaa28d232__content{height:var(--collapsible-panel-height);margin-block-start:var(--wp-ui-card-header-content-margin);overflow:hidden}._90333ddfaa28d232__content._20c2575829a8af9b__overflow-visible{overflow:visible}._90333ddfaa28d232__content[hidden]:not([hidden=until-found]){display:none}._90333ddfaa28d232__content[data-ending-style],._90333ddfaa28d232__content[data-starting-style]{height:0}@media not (prefers-reduced-motion){._90333ddfaa28d232__content{transition:all .15s ease-out}}}@layer compositions{.c269ffa2b76fe947__content-inner{padding-block-start:0}.c11e44555738d97f__header{align-items:stretch;display:flex;flex-direction:row;gap:var(--wpds-dimension-gap-sm,8px);outline:none}.c11e44555738d97f__header:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}}}"); 11879 } 11880 var style_module_default2 = { "heading-wrapper": "_572e7c546522c522__heading-wrapper", "header-content": "_7ea7cf191a8d26b8__header-content", "header-description": "_8f14576749c57845__header-description", "header-trigger-positioner": "_48cdf1e0d42fc13e__header-trigger-positioner", "header-trigger-wrapper": "_77d30921d8288eaf__header-trigger-wrapper", "header": "c11e44555738d97f__header", "header-trigger": "_22a30cbbb7b656f4__header-trigger", "content": "_90333ddfaa28d232__content", "overflow-visible": "_20c2575829a8af9b__overflow-visible", "content-inner": "c269ffa2b76fe947__content-inner" }; 11881 var DEFAULT_TAG2 = /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", {}); 11882 var HeaderDescription = (0, import_element35.forwardRef)(function CollapsibleCardHeaderDescription({ children, className, id: idProp, render = DEFAULT_TAG2, ...restProps }, ref) { 11883 const generatedId = (0, import_element35.useId)(); 11884 const descriptionId = idProp ?? generatedId; 11885 const context = (0, import_element35.useContext)(HeaderDescriptionIdContext); 11886 if (!context) { 11887 throw new Error( 11888 "CollapsibleCard.HeaderDescription: Missing parent <CollapsibleCard.Header>. Render <CollapsibleCard.HeaderDescription> inside <CollapsibleCard.Header>." 11889 ); 11890 } 11891 (0, import_element35.useEffect)(() => { 11892 return context?.registerDescriptionId(descriptionId); 11893 }, [context, descriptionId]); 11894 return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( 11895 Text, 11896 { 11897 ref, 11898 variant: "body-md", 11899 render, 11900 id: descriptionId, 11901 "aria-hidden": "true", 11902 className: clsx_default(style_module_default2["header-description"], className), 11903 ...restProps, 11904 children 11905 } 11906 ); 11907 }); 11908 11909 // packages/ui/build-module/collapsible-card/content.mjs 11910 var import_element36 = __toESM(require_element(), 1); 11911 var import_jsx_runtime44 = __toESM(require_jsx_runtime(), 1); 11912 var STYLE_HASH_ATTRIBUTE17 = "data-wp-hash"; 11913 function getRuntime17() { 11914 const globalScope = globalThis; 11915 if (globalScope.__wpStyleRuntime) { 11916 return globalScope.__wpStyleRuntime; 11917 } 11918 globalScope.__wpStyleRuntime = { 11919 documents: /* @__PURE__ */ new Map(), 11920 styles: /* @__PURE__ */ new Map(), 11921 injectedStyles: /* @__PURE__ */ new WeakMap() 11922 }; 11923 if (typeof document !== "undefined") { 11924 registerDocument17(document); 11925 } 11926 return globalScope.__wpStyleRuntime; 11927 } 11928 function documentContainsStyleHash17(targetDocument, hash) { 11929 if (!targetDocument.head) { 11930 return false; 11931 } 11932 for (const style of targetDocument.head.querySelectorAll( 11933 `style[$STYLE_HASH_ATTRIBUTE17}]` 11934 )) { 11935 if (style.getAttribute(STYLE_HASH_ATTRIBUTE17) === hash) { 11936 return true; 11937 } 11938 } 11939 return false; 11940 } 11941 function injectStyle17(targetDocument, hash, css) { 11942 if (!targetDocument.head) { 11943 return; 11944 } 11945 const runtime = getRuntime17(); 11946 let injectedStyles = runtime.injectedStyles.get(targetDocument); 11947 if (!injectedStyles) { 11948 injectedStyles = /* @__PURE__ */ new Set(); 11949 runtime.injectedStyles.set(targetDocument, injectedStyles); 11950 } 11951 if (injectedStyles.has(hash)) { 11952 return; 11953 } 11954 if (documentContainsStyleHash17(targetDocument, hash)) { 11955 injectedStyles.add(hash); 11956 return; 11957 } 11958 const style = targetDocument.createElement("style"); 11959 style.setAttribute(STYLE_HASH_ATTRIBUTE17, hash); 11960 style.appendChild(targetDocument.createTextNode(css)); 11961 targetDocument.head.appendChild(style); 11962 injectedStyles.add(hash); 11963 } 11964 function registerDocument17(targetDocument) { 11965 const runtime = getRuntime17(); 11966 runtime.documents.set( 11967 targetDocument, 11968 (runtime.documents.get(targetDocument) ?? 0) + 1 11969 ); 11970 for (const [hash, css] of runtime.styles) { 11971 injectStyle17(targetDocument, hash, css); 11972 } 11973 return () => { 11974 const count = runtime.documents.get(targetDocument); 11975 if (count === void 0) { 11976 return; 11977 } 11978 if (count <= 1) { 11979 runtime.documents.delete(targetDocument); 11980 return; 11981 } 11982 runtime.documents.set(targetDocument, count - 1); 11983 }; 11984 } 11985 function registerStyle17(hash, css) { 11986 const runtime = getRuntime17(); 11987 runtime.styles.set(hash, css); 11988 for (const targetDocument of runtime.documents.keys()) { 11989 injectStyle17(targetDocument, hash, css); 11990 } 11991 } 11992 if (typeof process === "undefined" || true) { 11993 registerStyle17("66b8e83c76", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._572e7c546522c522__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}._7ea7cf191a8d26b8__header-content{flex:1;min-width:0}._8f14576749c57845__header-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._48cdf1e0d42fc13e__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}._77d30921d8288eaf__header-trigger-wrapper{border-radius:var(--wpds-border-radius-sm,2px);display:flex;translate:0 -50%}.c11e44555738d97f__header:focus-visible ._77d30921d8288eaf__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){._22a30cbbb7b656f4__header-trigger{transition:rotate .15s ease-out}}.c11e44555738d97f__header[data-panel-open] ._22a30cbbb7b656f4__header-trigger{rotate:180deg}.c11e44555738d97f__header[data-disabled] ._22a30cbbb7b656f4__header-trigger{color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d)}._90333ddfaa28d232__content{height:var(--collapsible-panel-height);margin-block-start:var(--wp-ui-card-header-content-margin);overflow:hidden}._90333ddfaa28d232__content._20c2575829a8af9b__overflow-visible{overflow:visible}._90333ddfaa28d232__content[hidden]:not([hidden=until-found]){display:none}._90333ddfaa28d232__content[data-ending-style],._90333ddfaa28d232__content[data-starting-style]{height:0}@media not (prefers-reduced-motion){._90333ddfaa28d232__content{transition:all .15s ease-out}}}@layer compositions{.c269ffa2b76fe947__content-inner{padding-block-start:0}.c11e44555738d97f__header{align-items:stretch;display:flex;flex-direction:row;gap:var(--wpds-dimension-gap-sm,8px);outline:none}.c11e44555738d97f__header:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}}}"); 11994 } 11995 var style_module_default3 = { "heading-wrapper": "_572e7c546522c522__heading-wrapper", "header-content": "_7ea7cf191a8d26b8__header-content", "header-description": "_8f14576749c57845__header-description", "header-trigger-positioner": "_48cdf1e0d42fc13e__header-trigger-positioner", "header-trigger-wrapper": "_77d30921d8288eaf__header-trigger-wrapper", "header": "c11e44555738d97f__header", "header-trigger": "_22a30cbbb7b656f4__header-trigger", "content": "_90333ddfaa28d232__content", "overflow-visible": "_20c2575829a8af9b__overflow-visible", "content-inner": "c269ffa2b76fe947__content-inner" }; 11996 var Content2 = (0, import_element36.forwardRef)( 11997 function CollapsibleCardContent({ className, render, children, hiddenUntilFound = true, ...restProps }, ref) { 11998 return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)( 11999 Panel, 12000 { 12001 ref, 12002 className: (state) => clsx_default( 12003 style_module_default3.content, 12004 state.open && state.transitionStatus === "idle" && style_module_default3["overflow-visible"], 12005 className 12006 ), 12007 hiddenUntilFound, 12008 ...restProps, 12009 children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)( 12010 Content, 12011 { 12012 className: style_module_default3["content-inner"], 12013 render, 12014 children 12015 } 12016 ) 12017 } 12018 ); 12019 } 12020 ); 12021 12022 // packages/ui/build-module/stack/stack.mjs 12023 var import_element37 = __toESM(require_element(), 1); 12024 var STYLE_HASH_ATTRIBUTE18 = "data-wp-hash"; 12025 function getRuntime18() { 12026 const globalScope = globalThis; 12027 if (globalScope.__wpStyleRuntime) { 12028 return globalScope.__wpStyleRuntime; 12029 } 12030 globalScope.__wpStyleRuntime = { 12031 documents: /* @__PURE__ */ new Map(), 12032 styles: /* @__PURE__ */ new Map(), 12033 injectedStyles: /* @__PURE__ */ new WeakMap() 12034 }; 12035 if (typeof document !== "undefined") { 12036 registerDocument18(document); 12037 } 12038 return globalScope.__wpStyleRuntime; 12039 } 12040 function documentContainsStyleHash18(targetDocument, hash) { 12041 if (!targetDocument.head) { 12042 return false; 12043 } 12044 for (const style of targetDocument.head.querySelectorAll( 12045 `style[$STYLE_HASH_ATTRIBUTE18}]` 12046 )) { 12047 if (style.getAttribute(STYLE_HASH_ATTRIBUTE18) === hash) { 12048 return true; 12049 } 12050 } 12051 return false; 12052 } 12053 function injectStyle18(targetDocument, hash, css) { 12054 if (!targetDocument.head) { 12055 return; 12056 } 12057 const runtime = getRuntime18(); 12058 let injectedStyles = runtime.injectedStyles.get(targetDocument); 12059 if (!injectedStyles) { 12060 injectedStyles = /* @__PURE__ */ new Set(); 12061 runtime.injectedStyles.set(targetDocument, injectedStyles); 12062 } 12063 if (injectedStyles.has(hash)) { 12064 return; 12065 } 12066 if (documentContainsStyleHash18(targetDocument, hash)) { 12067 injectedStyles.add(hash); 12068 return; 12069 } 12070 const style = targetDocument.createElement("style"); 12071 style.setAttribute(STYLE_HASH_ATTRIBUTE18, hash); 12072 style.appendChild(targetDocument.createTextNode(css)); 12073 targetDocument.head.appendChild(style); 12074 injectedStyles.add(hash); 12075 } 12076 function registerDocument18(targetDocument) { 12077 const runtime = getRuntime18(); 12078 runtime.documents.set( 12079 targetDocument, 12080 (runtime.documents.get(targetDocument) ?? 0) + 1 12081 ); 12082 for (const [hash, css] of runtime.styles) { 12083 injectStyle18(targetDocument, hash, css); 12084 } 12085 return () => { 12086 const count = runtime.documents.get(targetDocument); 12087 if (count === void 0) { 12088 return; 12089 } 12090 if (count <= 1) { 12091 runtime.documents.delete(targetDocument); 12092 return; 12093 } 12094 runtime.documents.set(targetDocument, count - 1); 12095 }; 12096 } 12097 function registerStyle18(hash, css) { 12098 const runtime = getRuntime18(); 12099 runtime.styles.set(hash, css); 12100 for (const targetDocument of runtime.documents.keys()) { 12101 injectStyle18(targetDocument, hash, css); 12102 } 12103 } 12104 if (typeof process === "undefined" || true) { 12105 registerStyle18("32aba35fe1", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._19ce0419607e1896__stack{display:flex}}}"); 12106 } 12107 var style_default14 = { "stack": "_19ce0419607e1896__stack" }; 12108 var gapTokens = { 12109 xs: "var(--wpds-dimension-gap-xs, 4px)", 12110 sm: "var(--wpds-dimension-gap-sm, 8px)", 12111 md: "var(--wpds-dimension-gap-md, 12px)", 12112 lg: "var(--wpds-dimension-gap-lg, 16px)", 12113 xl: "var(--wpds-dimension-gap-xl, 24px)", 12114 "2xl": "var(--wpds-dimension-gap-2xl, 32px)", 12115 "3xl": "var(--wpds-dimension-gap-3xl, 40px)" 12116 }; 12117 var Stack = (0, import_element37.forwardRef)( 12118 function UnforwardedStack({ direction, gap, align, justify, wrap, render, ...props }, ref) { 12119 const style = { 12120 gap: gap && gapTokens[gap], 12121 alignItems: align, 12122 justifyContent: justify, 12123 flexDirection: direction, 12124 flexWrap: wrap 12125 }; 12126 const element = useRender({ 12127 render, 12128 ref, 12129 props: mergeProps(props, { 12130 style, 12131 className: style_default14.stack 12132 }) 12133 }); 12134 return element; 12135 } 12136 ); 12137 12138 // packages/ui/build-module/notice/index.mjs 12139 var notice_exports = {}; 12140 __export(notice_exports, { 12141 ActionButton: () => ActionButton, 12142 ActionLink: () => ActionLink, 12143 Actions: () => Actions, 12144 CloseIconButton: () => CloseIconButton, 12145 Description: () => Description, 12146 Root: () => Root4, 12147 Title: () => Title2 12148 }); 12149 12150 // packages/ui/build-module/notice/root.mjs 12151 var import_element38 = __toESM(require_element(), 1); 12152 var import_jsx_runtime45 = __toESM(require_jsx_runtime(), 1); 12153 var STYLE_HASH_ATTRIBUTE19 = "data-wp-hash"; 12154 function getRuntime19() { 12155 const globalScope = globalThis; 12156 if (globalScope.__wpStyleRuntime) { 12157 return globalScope.__wpStyleRuntime; 12158 } 12159 globalScope.__wpStyleRuntime = { 12160 documents: /* @__PURE__ */ new Map(), 12161 styles: /* @__PURE__ */ new Map(), 12162 injectedStyles: /* @__PURE__ */ new WeakMap() 12163 }; 12164 if (typeof document !== "undefined") { 12165 registerDocument19(document); 12166 } 12167 return globalScope.__wpStyleRuntime; 12168 } 12169 function documentContainsStyleHash19(targetDocument, hash) { 12170 if (!targetDocument.head) { 12171 return false; 12172 } 12173 for (const style of targetDocument.head.querySelectorAll( 12174 `style[$STYLE_HASH_ATTRIBUTE19}]` 12175 )) { 12176 if (style.getAttribute(STYLE_HASH_ATTRIBUTE19) === hash) { 12177 return true; 12178 } 12179 } 12180 return false; 12181 } 12182 function injectStyle19(targetDocument, hash, css) { 12183 if (!targetDocument.head) { 12184 return; 12185 } 12186 const runtime = getRuntime19(); 12187 let injectedStyles = runtime.injectedStyles.get(targetDocument); 12188 if (!injectedStyles) { 12189 injectedStyles = /* @__PURE__ */ new Set(); 12190 runtime.injectedStyles.set(targetDocument, injectedStyles); 12191 } 12192 if (injectedStyles.has(hash)) { 12193 return; 12194 } 12195 if (documentContainsStyleHash19(targetDocument, hash)) { 12196 injectedStyles.add(hash); 12197 return; 12198 } 12199 const style = targetDocument.createElement("style"); 12200 style.setAttribute(STYLE_HASH_ATTRIBUTE19, hash); 12201 style.appendChild(targetDocument.createTextNode(css)); 12202 targetDocument.head.appendChild(style); 12203 injectedStyles.add(hash); 12204 } 12205 function registerDocument19(targetDocument) { 12206 const runtime = getRuntime19(); 12207 runtime.documents.set( 12208 targetDocument, 12209 (runtime.documents.get(targetDocument) ?? 0) + 1 12210 ); 12211 for (const [hash, css] of runtime.styles) { 12212 injectStyle19(targetDocument, hash, css); 12213 } 12214 return () => { 12215 const count = runtime.documents.get(targetDocument); 12216 if (count === void 0) { 12217 return; 12218 } 12219 if (count <= 1) { 12220 runtime.documents.delete(targetDocument); 12221 return; 12222 } 12223 runtime.documents.set(targetDocument, count - 1); 12224 }; 12225 } 12226 function registerStyle19(hash, css) { 12227 const runtime = getRuntime19(); 12228 runtime.styles.set(hash, css); 12229 for (const targetDocument of runtime.documents.keys()) { 12230 injectStyle19(targetDocument, hash, css); 12231 } 12232 } 12233 if (typeof process === "undefined" || true) { 12234 registerStyle19("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 12235 } 12236 var resets_default5 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; 12237 if (typeof process === "undefined" || true) { 12238 registerStyle19("30e8b36272", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._4145abab73d17514__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)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__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)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__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)}.ae2e1004697cce95__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)}._2e614a76af494837__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)}.af00331ae17a0065__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){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer compositions{.b5397fb9d05389e3__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)}.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button,.d329e7416d368d31__action-link{mix-blend-mode:luminosity;@media (forced-colors:active){mix-blend-mode:normal}}}}"); 12239 } 12240 var style_default15 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "title": "b5397fb9d05389e3__title", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error" }; 12241 var icons = { 12242 neutral: null, 12243 info: info_default, 12244 warning: caution_default, 12245 success: published_default, 12246 error: error_default 12247 }; 12248 var Root4 = (0, import_element38.forwardRef)(function Notice({ intent = "neutral", children, icon, render, ...restProps }, ref) { 12249 const iconElement = icon === null ? null : icon ?? icons[intent]; 12250 const mergedClassName = clsx_default( 12251 style_default15.notice, 12252 style_default15[`is-$intent}`], 12253 resets_default5["box-sizing"] 12254 ); 12255 const element = useRender({ 12256 defaultTagName: "div", 12257 render, 12258 ref, 12259 props: mergeProps( 12260 { 12261 className: mergedClassName, 12262 children: /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(import_jsx_runtime45.Fragment, { children: [ 12263 children, 12264 iconElement && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)( 12265 Icon, 12266 { 12267 className: style_default15.icon, 12268 icon: iconElement 12269 } 12270 ) 12271 ] }) 12272 }, 12273 restProps 12274 ) 12275 }); 12276 return element; 12277 }); 12278 12279 // packages/ui/build-module/notice/title.mjs 12280 var import_element39 = __toESM(require_element(), 1); 12281 var import_jsx_runtime46 = __toESM(require_jsx_runtime(), 1); 12282 var STYLE_HASH_ATTRIBUTE20 = "data-wp-hash"; 12283 function getRuntime20() { 12284 const globalScope = globalThis; 12285 if (globalScope.__wpStyleRuntime) { 12286 return globalScope.__wpStyleRuntime; 12287 } 12288 globalScope.__wpStyleRuntime = { 12289 documents: /* @__PURE__ */ new Map(), 12290 styles: /* @__PURE__ */ new Map(), 12291 injectedStyles: /* @__PURE__ */ new WeakMap() 12292 }; 12293 if (typeof document !== "undefined") { 12294 registerDocument20(document); 12295 } 12296 return globalScope.__wpStyleRuntime; 12297 } 12298 function documentContainsStyleHash20(targetDocument, hash) { 12299 if (!targetDocument.head) { 12300 return false; 12301 } 12302 for (const style of targetDocument.head.querySelectorAll( 12303 `style[$STYLE_HASH_ATTRIBUTE20}]` 12304 )) { 12305 if (style.getAttribute(STYLE_HASH_ATTRIBUTE20) === hash) { 12306 return true; 12307 } 12308 } 12309 return false; 12310 } 12311 function injectStyle20(targetDocument, hash, css) { 12312 if (!targetDocument.head) { 12313 return; 12314 } 12315 const runtime = getRuntime20(); 12316 let injectedStyles = runtime.injectedStyles.get(targetDocument); 12317 if (!injectedStyles) { 12318 injectedStyles = /* @__PURE__ */ new Set(); 12319 runtime.injectedStyles.set(targetDocument, injectedStyles); 12320 } 12321 if (injectedStyles.has(hash)) { 12322 return; 12323 } 12324 if (documentContainsStyleHash20(targetDocument, hash)) { 12325 injectedStyles.add(hash); 12326 return; 12327 } 12328 const style = targetDocument.createElement("style"); 12329 style.setAttribute(STYLE_HASH_ATTRIBUTE20, hash); 12330 style.appendChild(targetDocument.createTextNode(css)); 12331 targetDocument.head.appendChild(style); 12332 injectedStyles.add(hash); 12333 } 12334 function registerDocument20(targetDocument) { 12335 const runtime = getRuntime20(); 12336 runtime.documents.set( 12337 targetDocument, 12338 (runtime.documents.get(targetDocument) ?? 0) + 1 12339 ); 12340 for (const [hash, css] of runtime.styles) { 12341 injectStyle20(targetDocument, hash, css); 12342 } 12343 return () => { 12344 const count = runtime.documents.get(targetDocument); 12345 if (count === void 0) { 12346 return; 12347 } 12348 if (count <= 1) { 12349 runtime.documents.delete(targetDocument); 12350 return; 12351 } 12352 runtime.documents.set(targetDocument, count - 1); 12353 }; 12354 } 12355 function registerStyle20(hash, css) { 12356 const runtime = getRuntime20(); 12357 runtime.styles.set(hash, css); 12358 for (const targetDocument of runtime.documents.keys()) { 12359 injectStyle20(targetDocument, hash, css); 12360 } 12361 } 12362 if (typeof process === "undefined" || true) { 12363 registerStyle20("30e8b36272", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._4145abab73d17514__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)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__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)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__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)}.ae2e1004697cce95__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)}._2e614a76af494837__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)}.af00331ae17a0065__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){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer compositions{.b5397fb9d05389e3__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)}.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button,.d329e7416d368d31__action-link{mix-blend-mode:luminosity;@media (forced-colors:active){mix-blend-mode:normal}}}}"); 12364 } 12365 var style_default16 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "title": "b5397fb9d05389e3__title", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error" }; 12366 var Title2 = (0, import_element39.forwardRef)( 12367 function NoticeTitle({ className, ...props }, ref) { 12368 return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)( 12369 Text, 12370 { 12371 ref, 12372 variant: "heading-md", 12373 className: clsx_default(style_default16.title, className), 12374 ...props 12375 } 12376 ); 12377 } 12378 ); 12379 12380 // packages/ui/build-module/notice/description.mjs 12381 var import_element40 = __toESM(require_element(), 1); 12382 var import_jsx_runtime47 = __toESM(require_jsx_runtime(), 1); 12383 var STYLE_HASH_ATTRIBUTE21 = "data-wp-hash"; 12384 function getRuntime21() { 12385 const globalScope = globalThis; 12386 if (globalScope.__wpStyleRuntime) { 12387 return globalScope.__wpStyleRuntime; 12388 } 12389 globalScope.__wpStyleRuntime = { 12390 documents: /* @__PURE__ */ new Map(), 12391 styles: /* @__PURE__ */ new Map(), 12392 injectedStyles: /* @__PURE__ */ new WeakMap() 12393 }; 12394 if (typeof document !== "undefined") { 12395 registerDocument21(document); 12396 } 12397 return globalScope.__wpStyleRuntime; 12398 } 12399 function documentContainsStyleHash21(targetDocument, hash) { 12400 if (!targetDocument.head) { 12401 return false; 12402 } 12403 for (const style of targetDocument.head.querySelectorAll( 12404 `style[$STYLE_HASH_ATTRIBUTE21}]` 12405 )) { 12406 if (style.getAttribute(STYLE_HASH_ATTRIBUTE21) === hash) { 12407 return true; 12408 } 12409 } 12410 return false; 12411 } 12412 function injectStyle21(targetDocument, hash, css) { 12413 if (!targetDocument.head) { 12414 return; 12415 } 12416 const runtime = getRuntime21(); 12417 let injectedStyles = runtime.injectedStyles.get(targetDocument); 12418 if (!injectedStyles) { 12419 injectedStyles = /* @__PURE__ */ new Set(); 12420 runtime.injectedStyles.set(targetDocument, injectedStyles); 12421 } 12422 if (injectedStyles.has(hash)) { 12423 return; 12424 } 12425 if (documentContainsStyleHash21(targetDocument, hash)) { 12426 injectedStyles.add(hash); 12427 return; 12428 } 12429 const style = targetDocument.createElement("style"); 12430 style.setAttribute(STYLE_HASH_ATTRIBUTE21, hash); 12431 style.appendChild(targetDocument.createTextNode(css)); 12432 targetDocument.head.appendChild(style); 12433 injectedStyles.add(hash); 12434 } 12435 function registerDocument21(targetDocument) { 12436 const runtime = getRuntime21(); 12437 runtime.documents.set( 12438 targetDocument, 12439 (runtime.documents.get(targetDocument) ?? 0) + 1 12440 ); 12441 for (const [hash, css] of runtime.styles) { 12442 injectStyle21(targetDocument, hash, css); 12443 } 12444 return () => { 12445 const count = runtime.documents.get(targetDocument); 12446 if (count === void 0) { 12447 return; 12448 } 12449 if (count <= 1) { 12450 runtime.documents.delete(targetDocument); 12451 return; 12452 } 12453 runtime.documents.set(targetDocument, count - 1); 12454 }; 12455 } 12456 function registerStyle21(hash, css) { 12457 const runtime = getRuntime21(); 12458 runtime.styles.set(hash, css); 12459 for (const targetDocument of runtime.documents.keys()) { 12460 injectStyle21(targetDocument, hash, css); 12461 } 12462 } 12463 if (typeof process === "undefined" || true) { 12464 registerStyle21("30e8b36272", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._4145abab73d17514__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)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__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)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__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)}.ae2e1004697cce95__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)}._2e614a76af494837__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)}.af00331ae17a0065__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){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer compositions{.b5397fb9d05389e3__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)}.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button,.d329e7416d368d31__action-link{mix-blend-mode:luminosity;@media (forced-colors:active){mix-blend-mode:normal}}}}"); 12465 } 12466 var style_default17 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "title": "b5397fb9d05389e3__title", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error" }; 12467 var Description = (0, import_element40.forwardRef)( 12468 function NoticeDescription({ className, ...props }, ref) { 12469 return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( 12470 Text, 12471 { 12472 ref, 12473 variant: "body-md", 12474 className: clsx_default(style_default17.description, className), 12475 ...props 12476 } 12477 ); 12478 } 12479 ); 12480 12481 // packages/ui/build-module/notice/actions.mjs 12482 var import_element41 = __toESM(require_element(), 1); 12483 var STYLE_HASH_ATTRIBUTE22 = "data-wp-hash"; 12484 function getRuntime22() { 12485 const globalScope = globalThis; 12486 if (globalScope.__wpStyleRuntime) { 12487 return globalScope.__wpStyleRuntime; 12488 } 12489 globalScope.__wpStyleRuntime = { 12490 documents: /* @__PURE__ */ new Map(), 12491 styles: /* @__PURE__ */ new Map(), 12492 injectedStyles: /* @__PURE__ */ new WeakMap() 12493 }; 12494 if (typeof document !== "undefined") { 12495 registerDocument22(document); 12496 } 12497 return globalScope.__wpStyleRuntime; 12498 } 12499 function documentContainsStyleHash22(targetDocument, hash) { 12500 if (!targetDocument.head) { 12501 return false; 12502 } 12503 for (const style of targetDocument.head.querySelectorAll( 12504 `style[$STYLE_HASH_ATTRIBUTE22}]` 12505 )) { 12506 if (style.getAttribute(STYLE_HASH_ATTRIBUTE22) === hash) { 12507 return true; 12508 } 12509 } 12510 return false; 12511 } 12512 function injectStyle22(targetDocument, hash, css) { 12513 if (!targetDocument.head) { 12514 return; 12515 } 12516 const runtime = getRuntime22(); 12517 let injectedStyles = runtime.injectedStyles.get(targetDocument); 12518 if (!injectedStyles) { 12519 injectedStyles = /* @__PURE__ */ new Set(); 12520 runtime.injectedStyles.set(targetDocument, injectedStyles); 12521 } 12522 if (injectedStyles.has(hash)) { 12523 return; 12524 } 12525 if (documentContainsStyleHash22(targetDocument, hash)) { 12526 injectedStyles.add(hash); 12527 return; 12528 } 12529 const style = targetDocument.createElement("style"); 12530 style.setAttribute(STYLE_HASH_ATTRIBUTE22, hash); 12531 style.appendChild(targetDocument.createTextNode(css)); 12532 targetDocument.head.appendChild(style); 12533 injectedStyles.add(hash); 12534 } 12535 function registerDocument22(targetDocument) { 12536 const runtime = getRuntime22(); 12537 runtime.documents.set( 12538 targetDocument, 12539 (runtime.documents.get(targetDocument) ?? 0) + 1 12540 ); 12541 for (const [hash, css] of runtime.styles) { 12542 injectStyle22(targetDocument, hash, css); 12543 } 12544 return () => { 12545 const count = runtime.documents.get(targetDocument); 12546 if (count === void 0) { 12547 return; 12548 } 12549 if (count <= 1) { 12550 runtime.documents.delete(targetDocument); 12551 return; 12552 } 12553 runtime.documents.set(targetDocument, count - 1); 12554 }; 12555 } 12556 function registerStyle22(hash, css) { 12557 const runtime = getRuntime22(); 12558 runtime.styles.set(hash, css); 12559 for (const targetDocument of runtime.documents.keys()) { 12560 injectStyle22(targetDocument, hash, css); 12561 } 12562 } 12563 if (typeof process === "undefined" || true) { 12564 registerStyle22("30e8b36272", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._4145abab73d17514__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)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__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)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__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)}.ae2e1004697cce95__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)}._2e614a76af494837__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)}.af00331ae17a0065__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){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer compositions{.b5397fb9d05389e3__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)}.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button,.d329e7416d368d31__action-link{mix-blend-mode:luminosity;@media (forced-colors:active){mix-blend-mode:normal}}}}"); 12565 } 12566 var style_default18 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "title": "b5397fb9d05389e3__title", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error" }; 12567 var Actions = (0, import_element41.forwardRef)( 12568 function NoticeActions({ render, ...props }, ref) { 12569 const element = useRender({ 12570 defaultTagName: "div", 12571 render, 12572 ref, 12573 props: mergeProps( 12574 { 12575 className: style_default18.actions 12576 }, 12577 props 12578 ) 12579 }); 12580 return element; 12581 } 12582 ); 12583 12584 // packages/ui/build-module/notice/close-icon-button.mjs 12585 var import_element42 = __toESM(require_element(), 1); 12586 var import_i18n5 = __toESM(require_i18n(), 1); 12587 var import_jsx_runtime48 = __toESM(require_jsx_runtime(), 1); 12588 var STYLE_HASH_ATTRIBUTE23 = "data-wp-hash"; 12589 function getRuntime23() { 12590 const globalScope = globalThis; 12591 if (globalScope.__wpStyleRuntime) { 12592 return globalScope.__wpStyleRuntime; 12593 } 12594 globalScope.__wpStyleRuntime = { 12595 documents: /* @__PURE__ */ new Map(), 12596 styles: /* @__PURE__ */ new Map(), 12597 injectedStyles: /* @__PURE__ */ new WeakMap() 12598 }; 12599 if (typeof document !== "undefined") { 12600 registerDocument23(document); 12601 } 12602 return globalScope.__wpStyleRuntime; 12603 } 12604 function documentContainsStyleHash23(targetDocument, hash) { 12605 if (!targetDocument.head) { 12606 return false; 12607 } 12608 for (const style of targetDocument.head.querySelectorAll( 12609 `style[$STYLE_HASH_ATTRIBUTE23}]` 12610 )) { 12611 if (style.getAttribute(STYLE_HASH_ATTRIBUTE23) === hash) { 12612 return true; 12613 } 12614 } 12615 return false; 12616 } 12617 function injectStyle23(targetDocument, hash, css) { 12618 if (!targetDocument.head) { 12619 return; 12620 } 12621 const runtime = getRuntime23(); 12622 let injectedStyles = runtime.injectedStyles.get(targetDocument); 12623 if (!injectedStyles) { 12624 injectedStyles = /* @__PURE__ */ new Set(); 12625 runtime.injectedStyles.set(targetDocument, injectedStyles); 12626 } 12627 if (injectedStyles.has(hash)) { 12628 return; 12629 } 12630 if (documentContainsStyleHash23(targetDocument, hash)) { 12631 injectedStyles.add(hash); 12632 return; 12633 } 12634 const style = targetDocument.createElement("style"); 12635 style.setAttribute(STYLE_HASH_ATTRIBUTE23, hash); 12636 style.appendChild(targetDocument.createTextNode(css)); 12637 targetDocument.head.appendChild(style); 12638 injectedStyles.add(hash); 12639 } 12640 function registerDocument23(targetDocument) { 12641 const runtime = getRuntime23(); 12642 runtime.documents.set( 12643 targetDocument, 12644 (runtime.documents.get(targetDocument) ?? 0) + 1 12645 ); 12646 for (const [hash, css] of runtime.styles) { 12647 injectStyle23(targetDocument, hash, css); 12648 } 12649 return () => { 12650 const count = runtime.documents.get(targetDocument); 12651 if (count === void 0) { 12652 return; 12653 } 12654 if (count <= 1) { 12655 runtime.documents.delete(targetDocument); 12656 return; 12657 } 12658 runtime.documents.set(targetDocument, count - 1); 12659 }; 12660 } 12661 function registerStyle23(hash, css) { 12662 const runtime = getRuntime23(); 12663 runtime.styles.set(hash, css); 12664 for (const targetDocument of runtime.documents.keys()) { 12665 injectStyle23(targetDocument, hash, css); 12666 } 12667 } 12668 if (typeof process === "undefined" || true) { 12669 registerStyle23("30e8b36272", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._4145abab73d17514__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)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__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)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__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)}.ae2e1004697cce95__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)}._2e614a76af494837__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)}.af00331ae17a0065__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){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer compositions{.b5397fb9d05389e3__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)}.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button,.d329e7416d368d31__action-link{mix-blend-mode:luminosity;@media (forced-colors:active){mix-blend-mode:normal}}}}"); 12670 } 12671 var style_default19 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "title": "b5397fb9d05389e3__title", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error" }; 12672 var CloseIconButton = (0, import_element42.forwardRef)(function NoticeCloseIconButton({ className, icon = close_small_default, label = (0, import_i18n5.__)("Dismiss"), ...props }, ref) { 12673 return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)( 12674 IconButton, 12675 { 12676 ...props, 12677 ref, 12678 className: clsx_default(style_default19["close-icon"], className), 12679 variant: "minimal", 12680 size: "small", 12681 tone: "neutral", 12682 icon, 12683 label 12684 } 12685 ); 12686 }); 12687 12688 // packages/ui/build-module/notice/action-button.mjs 12689 var import_element43 = __toESM(require_element(), 1); 12690 var import_jsx_runtime49 = __toESM(require_jsx_runtime(), 1); 12691 var STYLE_HASH_ATTRIBUTE24 = "data-wp-hash"; 12692 function getRuntime24() { 12693 const globalScope = globalThis; 12694 if (globalScope.__wpStyleRuntime) { 12695 return globalScope.__wpStyleRuntime; 12696 } 12697 globalScope.__wpStyleRuntime = { 12698 documents: /* @__PURE__ */ new Map(), 12699 styles: /* @__PURE__ */ new Map(), 12700 injectedStyles: /* @__PURE__ */ new WeakMap() 12701 }; 12702 if (typeof document !== "undefined") { 12703 registerDocument24(document); 12704 } 12705 return globalScope.__wpStyleRuntime; 12706 } 12707 function documentContainsStyleHash24(targetDocument, hash) { 12708 if (!targetDocument.head) { 12709 return false; 12710 } 12711 for (const style of targetDocument.head.querySelectorAll( 12712 `style[$STYLE_HASH_ATTRIBUTE24}]` 12713 )) { 12714 if (style.getAttribute(STYLE_HASH_ATTRIBUTE24) === hash) { 12715 return true; 12716 } 12717 } 12718 return false; 12719 } 12720 function injectStyle24(targetDocument, hash, css) { 12721 if (!targetDocument.head) { 12722 return; 12723 } 12724 const runtime = getRuntime24(); 12725 let injectedStyles = runtime.injectedStyles.get(targetDocument); 12726 if (!injectedStyles) { 12727 injectedStyles = /* @__PURE__ */ new Set(); 12728 runtime.injectedStyles.set(targetDocument, injectedStyles); 12729 } 12730 if (injectedStyles.has(hash)) { 12731 return; 12732 } 12733 if (documentContainsStyleHash24(targetDocument, hash)) { 12734 injectedStyles.add(hash); 12735 return; 12736 } 12737 const style = targetDocument.createElement("style"); 12738 style.setAttribute(STYLE_HASH_ATTRIBUTE24, hash); 12739 style.appendChild(targetDocument.createTextNode(css)); 12740 targetDocument.head.appendChild(style); 12741 injectedStyles.add(hash); 12742 } 12743 function registerDocument24(targetDocument) { 12744 const runtime = getRuntime24(); 12745 runtime.documents.set( 12746 targetDocument, 12747 (runtime.documents.get(targetDocument) ?? 0) + 1 12748 ); 12749 for (const [hash, css] of runtime.styles) { 12750 injectStyle24(targetDocument, hash, css); 12751 } 12752 return () => { 12753 const count = runtime.documents.get(targetDocument); 12754 if (count === void 0) { 12755 return; 12756 } 12757 if (count <= 1) { 12758 runtime.documents.delete(targetDocument); 12759 return; 12760 } 12761 runtime.documents.set(targetDocument, count - 1); 12762 }; 12763 } 12764 function registerStyle24(hash, css) { 12765 const runtime = getRuntime24(); 12766 runtime.styles.set(hash, css); 12767 for (const targetDocument of runtime.documents.keys()) { 12768 injectStyle24(targetDocument, hash, css); 12769 } 12770 } 12771 if (typeof process === "undefined" || true) { 12772 registerStyle24("30e8b36272", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._4145abab73d17514__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)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__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)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__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)}.ae2e1004697cce95__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)}._2e614a76af494837__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)}.af00331ae17a0065__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){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer compositions{.b5397fb9d05389e3__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)}.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button,.d329e7416d368d31__action-link{mix-blend-mode:luminosity;@media (forced-colors:active){mix-blend-mode:normal}}}}"); 12773 } 12774 var style_default20 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "title": "b5397fb9d05389e3__title", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error" }; 12775 var ActionButton = (0, import_element43.forwardRef)( 12776 function NoticeActionButton({ className, loading, loadingAnnouncement, variant, ...props }, ref) { 12777 const loadingProps = loading !== void 0 ? { loading, loadingAnnouncement: loadingAnnouncement ?? "" } : {}; 12778 return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( 12779 Button4, 12780 { 12781 ...props, 12782 ...loadingProps, 12783 ref, 12784 size: "compact", 12785 tone: "neutral", 12786 variant, 12787 className: clsx_default( 12788 style_default20["action-button"], 12789 style_default20[`is-action-button-$variant}`], 12790 className 12791 ) 12792 } 12793 ); 12794 } 12795 ); 12796 12797 // packages/ui/build-module/notice/action-link.mjs 12798 var import_element44 = __toESM(require_element(), 1); 12799 var import_jsx_runtime50 = __toESM(require_jsx_runtime(), 1); 12800 var STYLE_HASH_ATTRIBUTE25 = "data-wp-hash"; 12801 function getRuntime25() { 12802 const globalScope = globalThis; 12803 if (globalScope.__wpStyleRuntime) { 12804 return globalScope.__wpStyleRuntime; 12805 } 12806 globalScope.__wpStyleRuntime = { 12807 documents: /* @__PURE__ */ new Map(), 12808 styles: /* @__PURE__ */ new Map(), 12809 injectedStyles: /* @__PURE__ */ new WeakMap() 12810 }; 12811 if (typeof document !== "undefined") { 12812 registerDocument25(document); 12813 } 12814 return globalScope.__wpStyleRuntime; 12815 } 12816 function documentContainsStyleHash25(targetDocument, hash) { 12817 if (!targetDocument.head) { 12818 return false; 12819 } 12820 for (const style of targetDocument.head.querySelectorAll( 12821 `style[$STYLE_HASH_ATTRIBUTE25}]` 12822 )) { 12823 if (style.getAttribute(STYLE_HASH_ATTRIBUTE25) === hash) { 12824 return true; 12825 } 12826 } 12827 return false; 12828 } 12829 function injectStyle25(targetDocument, hash, css) { 12830 if (!targetDocument.head) { 12831 return; 12832 } 12833 const runtime = getRuntime25(); 12834 let injectedStyles = runtime.injectedStyles.get(targetDocument); 12835 if (!injectedStyles) { 12836 injectedStyles = /* @__PURE__ */ new Set(); 12837 runtime.injectedStyles.set(targetDocument, injectedStyles); 12838 } 12839 if (injectedStyles.has(hash)) { 12840 return; 12841 } 12842 if (documentContainsStyleHash25(targetDocument, hash)) { 12843 injectedStyles.add(hash); 12844 return; 12845 } 12846 const style = targetDocument.createElement("style"); 12847 style.setAttribute(STYLE_HASH_ATTRIBUTE25, hash); 12848 style.appendChild(targetDocument.createTextNode(css)); 12849 targetDocument.head.appendChild(style); 12850 injectedStyles.add(hash); 12851 } 12852 function registerDocument25(targetDocument) { 12853 const runtime = getRuntime25(); 12854 runtime.documents.set( 12855 targetDocument, 12856 (runtime.documents.get(targetDocument) ?? 0) + 1 12857 ); 12858 for (const [hash, css] of runtime.styles) { 12859 injectStyle25(targetDocument, hash, css); 12860 } 12861 return () => { 12862 const count = runtime.documents.get(targetDocument); 12863 if (count === void 0) { 12864 return; 12865 } 12866 if (count <= 1) { 12867 runtime.documents.delete(targetDocument); 12868 return; 12869 } 12870 runtime.documents.set(targetDocument, count - 1); 12871 }; 12872 } 12873 function registerStyle25(hash, css) { 12874 const runtime = getRuntime25(); 12875 runtime.styles.set(hash, css); 12876 for (const targetDocument of runtime.documents.keys()) { 12877 injectStyle25(targetDocument, hash, css); 12878 } 12879 } 12880 if (typeof process === "undefined" || true) { 12881 registerStyle25("30e8b36272", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._4145abab73d17514__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)}.d0a25570cb528528__icon{color:var(--wp-ui-notice-decorative-icon-color);grid-column:1;grid-row:1;margin-inline-end:var(--wpds-dimension-gap-xs,4px)}._1904b570a89bb815__description{color:var(--wp-ui-notice-text-color);grid-column:2;padding-block:var(--text-vertical-padding)}._0a1270dcdd79c031__actions{display:flex;flex-wrap:wrap;gap:var(--wpds-dimension-gap-md,12px);grid-column:2}._4145abab73d17514__notice:has(._1904b570a89bb815__description) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions{margin-block-start:var(--wpds-dimension-gap-sm,8px)}._983740ab855c4e09__action-button{flex-shrink:0}.d329e7416d368d31__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)}}._487e6a5c1375f7dc__close-icon{grid-column:3;grid-row:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px)}._531c140826094795__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)}.ae2e1004697cce95__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)}._2e614a76af494837__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)}.af00331ae17a0065__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){._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._0a1270dcdd79c031__actions,._4145abab73d17514__notice:has(.b5397fb9d05389e3__title) ._1904b570a89bb815__description{grid-column:1/3}}}@layer compositions{.b5397fb9d05389e3__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)}.d329e7416d368d31__action-link{margin-block:auto}._487e6a5c1375f7dc__close-icon,._983740ab855c4e09__action-button,.d329e7416d368d31__action-link{mix-blend-mode:luminosity;@media (forced-colors:active){mix-blend-mode:normal}}}}"); 12882 } 12883 var style_default21 = { "notice": "_4145abab73d17514__notice", "icon": "d0a25570cb528528__icon", "description": "_1904b570a89bb815__description", "actions": "_0a1270dcdd79c031__actions", "title": "b5397fb9d05389e3__title", "action-button": "_983740ab855c4e09__action-button", "action-link": "d329e7416d368d31__action-link", "close-icon": "_487e6a5c1375f7dc__close-icon", "is-info": "_531c140826094795__is-info", "is-warning": "ae2e1004697cce95__is-warning", "is-success": "_2e614a76af494837__is-success", "is-error": "af00331ae17a0065__is-error" }; 12884 var ActionLink = (0, import_element44.forwardRef)( 12885 function NoticeActionLink({ className, render, ...props }, ref) { 12886 return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)( 12887 Text, 12888 { 12889 ref, 12890 className: clsx_default(style_default21["action-link"], className), 12891 ...props, 12892 variant: "body-md", 12893 render: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Link, { tone: "neutral", variant: "default", render }) 12894 } 12895 ); 12896 } 12897 ); 12898 12899 // packages/ui/build-module/utils/use-enable-wp-compat-overlay-slot.mjs 12900 function useEnableWpCompatOverlaySlot() { 12901 if (typeof window === "undefined") { 12902 return; 12903 } 12904 const internalWindow = window; 12905 if (internalWindow.__wpUiCompatOverlaySlotEnabled !== true) { 12906 internalWindow.__wpUiCompatOverlaySlotEnabled = true; 12907 } 12908 } 12909 12910 // packages/admin-ui/build-module/admin-theme-colors/index.mjs 12911 var DEFAULT_THEME_COLORS = { 12912 primary: "#3858e9", 12913 background: "#222524" 12914 }; 12915 var ADMIN_THEME_COLORS = /* @__PURE__ */ new Map([ 12916 ["modern", DEFAULT_THEME_COLORS], 12917 ["fresh", { primary: "#007cba", background: "#25292b" }], 12918 ["midnight", { primary: "#cf4339", background: "#3d4042" }], 12919 ["coffee", { primary: "#916745", background: "#5b534d" }], 12920 ["ocean", { primary: "#567958", background: "#5f787f" }], 12921 ["blue", { primary: "#437aa8", background: "#3876a8" }], 12922 ["ectoplasm", { primary: "#646c3e", background: "#4f386e" }], 12923 ["sunrise", { primary: "#ad631e", background: "#cc4541" }], 12924 ["light", { primary: "#007cba", background: "#eaeeed" }] 12925 ]); 12926 function getAdminThemeColors() { 12927 const scheme = document.body.className.match(/admin-color-([\w-]+)/)?.[1] ?? "modern"; 12928 return ADMIN_THEME_COLORS.get(scheme) ?? DEFAULT_THEME_COLORS; 12929 } 12930 12931 // packages/customize-widgets/build-module/components/customize-widgets/index.mjs 12932 var import_element60 = __toESM(require_element(), 1); 12933 var import_components7 = __toESM(require_components(), 1); 12934 var import_theme = __toESM(require_theme(), 1); 12935 12936 // packages/customize-widgets/build-module/components/error-boundary/index.mjs 12937 var import_element45 = __toESM(require_element(), 1); 12938 var import_a11y2 = __toESM(require_a11y(), 1); 12939 var import_i18n6 = __toESM(require_i18n(), 1); 12940 var import_compose2 = __toESM(require_compose(), 1); 12941 var import_hooks = __toESM(require_hooks(), 1); 12942 var import_jsx_runtime51 = __toESM(require_jsx_runtime(), 1); 12943 function getErrorNotice() { 12944 return { 12945 title: (0, import_i18n6.__)("The editor has crashed"), 12946 description: (0, import_i18n6.__)( 12947 "An unknown error occurred. Reload your browser to try again, or copy the error to report the problem or search." 12948 ) 12949 }; 12950 } 12951 function getErrorName(error2) { 12952 return error2 instanceof Error && error2.name || "Error"; 12953 } 12954 function getErrorMessage(error2) { 12955 if (typeof error2 === "string" && error2) { 12956 return error2; 12957 } 12958 if (typeof error2?.message === "string" && error2.message) { 12959 return error2.message; 12960 } 12961 return "An unknown error occurred."; 12962 } 12963 function getErrorSections(error2, componentStack) { 12964 const sections = [ 12965 { label: getErrorName(error2), content: getErrorMessage(error2) } 12966 ]; 12967 if (error2?.stack) { 12968 sections.push({ 12969 label: "Stack", 12970 content: error2.stack.trim(), 12971 preformatted: true 12972 }); 12973 } 12974 if (componentStack) { 12975 sections.push({ 12976 label: "Component stack", 12977 content: componentStack.trim(), 12978 preformatted: true 12979 }); 12980 } 12981 sections.push({ 12982 label: "Environment", 12983 content: `User agent: $window.navigator.userAgent}`, 12984 preformatted: true 12985 }); 12986 return sections; 12987 } 12988 function getErrorReport(error2, componentStack) { 12989 const sections = getErrorSections(error2, componentStack).map( 12990 ({ label, content, preformatted }) => `**$label}** 12991 12992 $preformatted ? `\`\`\` 12993 $content} 12994 \`\`\`` : content}` 12995 ); 12996 return ["### Error report", ...sections].join("\n\n"); 12997 } 12998 function CopyButton({ text, children, variant = "outline" }) { 12999 const ref = (0, import_compose2.useCopyToClipboard)(text); 13000 return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(notice_exports.ActionButton, { variant, ref, children }); 13001 } 13002 function ErrorReport({ error: error2, componentStack }) { 13003 return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( 13004 Stack, 13005 { 13006 className: "customize-widgets-error-boundary__report", 13007 direction: "column", 13008 gap: "md", 13009 children: getErrorSections(error2, componentStack).map( 13010 ({ label, content }) => /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(Stack, { direction: "column", gap: "xs", children: [ 13011 /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Text, { variant: "heading-md", children: label }), 13012 /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("pre", { className: "customize-widgets-error-boundary__report-section", children: content }) 13013 ] }, label) 13014 ) 13015 } 13016 ); 13017 } 13018 function ErrorDetails({ error: error2, componentStack }) { 13019 return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(collapsible_card_exports.Root, { className: "customize-widgets-error-boundary__details", children: [ 13020 /* @__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") }) }), 13021 /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(collapsible_card_exports.Content, { children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( 13022 ErrorReport, 13023 { 13024 error: error2, 13025 componentStack 13026 } 13027 ) }) 13028 ] }); 13029 } 13030 var ErrorBoundary = class extends import_element45.Component { 13031 constructor() { 13032 super(...arguments); 13033 this.state = { 13034 error: null, 13035 componentStack: null 13036 }; 13037 } 13038 componentDidCatch(error2, errorInfo) { 13039 const { title, description } = getErrorNotice(); 13040 (0, import_a11y2.speak)(`$title}. $description}`, "assertive"); 13041 this.setState({ componentStack: errorInfo?.componentStack }); 13042 (0, import_hooks.doAction)("editor.ErrorBoundary.errorLogged", error2, errorInfo); 13043 } 13044 static getDerivedStateFromError(error2) { 13045 return { error: error2 }; 13046 } 13047 render() { 13048 const { error: error2, componentStack } = this.state; 13049 if (!error2) { 13050 return this.props.children; 13051 } 13052 const { title, description } = getErrorNotice(); 13053 return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)( 13054 Stack, 13055 { 13056 className: "customize-widgets-error-boundary", 13057 direction: "column", 13058 gap: "lg", 13059 children: [ 13060 /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(notice_exports.Root, { intent: "error", children: [ 13061 /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(notice_exports.Title, { children: title }), 13062 /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(notice_exports.Description, { children: description }), 13063 /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(notice_exports.Actions, { children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( 13064 CopyButton, 13065 { 13066 variant: "solid", 13067 text: () => getErrorReport(error2, componentStack), 13068 children: (0, import_i18n6.__)("Copy error") 13069 } 13070 ) }) 13071 ] }), 13072 true ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( 13073 ErrorDetails, 13074 { 13075 error: error2, 13076 componentStack 13077 } 13078 ) : null 13079 ] 13080 } 13081 ); 13082 } 13083 }; 13084 13085 // packages/customize-widgets/build-module/components/sidebar-block-editor/index.mjs 13086 var import_compose4 = __toESM(require_compose(), 1); 13087 var import_core_data = __toESM(require_core_data(), 1); 13088 var import_data13 = __toESM(require_data(), 1); 13089 var import_element57 = __toESM(require_element(), 1); 13090 var import_block_editor8 = __toESM(require_block_editor(), 1); 13091 var import_media_utils = __toESM(require_media_utils(), 1); 13092 var import_preferences3 = __toESM(require_preferences(), 1); 13093 13094 // packages/customize-widgets/build-module/components/block-inspector-button/index.mjs 13095 var import_element46 = __toESM(require_element(), 1); 13096 var import_i18n7 = __toESM(require_i18n(), 1); 13097 var import_components = __toESM(require_components(), 1); 13098 var import_data = __toESM(require_data(), 1); 13099 var import_block_editor = __toESM(require_block_editor(), 1); 13100 var import_jsx_runtime52 = __toESM(require_jsx_runtime(), 1); 13101 function BlockInspectorButton({ inspector, closeMenu, ...props }) { 13102 const selectedBlockClientId = (0, import_data.useSelect)( 13103 (select) => select(import_block_editor.store).getSelectedBlockClientId(), 13104 [] 13105 ); 13106 const selectedBlock = (0, import_element46.useMemo)( 13107 () => document.getElementById(`block-$selectedBlockClientId}`), 13108 [selectedBlockClientId] 13109 ); 13110 return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)( 13111 import_components.MenuItem, 13112 { 13113 onClick: () => { 13114 inspector.open({ 13115 returnFocusWhenClose: selectedBlock 13116 }); 13117 closeMenu(); 13118 }, 13119 ...props, 13120 children: (0, import_i18n7.__)("Show more settings") 13121 } 13122 ); 13123 } 13124 var block_inspector_button_default = BlockInspectorButton; 13125 13126 // packages/customize-widgets/build-module/components/header/index.mjs 13127 var import_components5 = __toESM(require_components(), 1); 13128 var import_block_editor3 = __toESM(require_block_editor(), 1); 13129 var import_element50 = __toESM(require_element(), 1); 13130 var import_keycodes3 = __toESM(require_keycodes(), 1); 13131 var import_i18n12 = __toESM(require_i18n(), 1); 13132 13133 // packages/customize-widgets/build-module/components/inserter/index.mjs 13134 var import_i18n8 = __toESM(require_i18n(), 1); 13135 var import_block_editor2 = __toESM(require_block_editor(), 1); 13136 var import_components2 = __toESM(require_components(), 1); 13137 var import_compose3 = __toESM(require_compose(), 1); 13138 var import_data4 = __toESM(require_data(), 1); 13139 13140 // packages/customize-widgets/build-module/store/index.mjs 13141 var import_data3 = __toESM(require_data(), 1); 13142 13143 // packages/customize-widgets/build-module/store/reducer.mjs 13144 var import_data2 = __toESM(require_data(), 1); 13145 function blockInserterPanel(state = false, action) { 13146 switch (action.type) { 13147 case "SET_IS_INSERTER_OPENED": 13148 return action.value; 13149 } 13150 return state; 13151 } 13152 var reducer_default = (0, import_data2.combineReducers)({ 13153 blockInserterPanel 13154 }); 13155 13156 // packages/customize-widgets/build-module/store/selectors.mjs 13157 var selectors_exports = {}; 13158 __export(selectors_exports, { 13159 __experimentalGetInsertionPoint: () => __experimentalGetInsertionPoint, 13160 isInserterOpened: () => isInserterOpened 13161 }); 13162 var EMPTY_INSERTION_POINT = { 13163 rootClientId: void 0, 13164 insertionIndex: void 0 13165 }; 13166 function isInserterOpened(state) { 13167 return !!state.blockInserterPanel; 13168 } 13169 function __experimentalGetInsertionPoint(state) { 13170 if (typeof state.blockInserterPanel === "boolean") { 13171 return EMPTY_INSERTION_POINT; 13172 } 13173 return state.blockInserterPanel; 13174 } 13175 13176 // packages/customize-widgets/build-module/store/actions.mjs 13177 var actions_exports = {}; 13178 __export(actions_exports, { 13179 setIsInserterOpened: () => setIsInserterOpened 13180 }); 13181 function setIsInserterOpened(value) { 13182 return { 13183 type: "SET_IS_INSERTER_OPENED", 13184 value 13185 }; 13186 } 13187 13188 // packages/customize-widgets/build-module/store/constants.mjs 13189 var STORE_NAME = "core/customize-widgets"; 13190 13191 // packages/customize-widgets/build-module/store/index.mjs 13192 var storeConfig = { 13193 reducer: reducer_default, 13194 selectors: selectors_exports, 13195 actions: actions_exports 13196 }; 13197 var store = (0, import_data3.createReduxStore)(STORE_NAME, storeConfig); 13198 (0, import_data3.register)(store); 13199 13200 // packages/customize-widgets/build-module/components/inserter/index.mjs 13201 var import_jsx_runtime53 = __toESM(require_jsx_runtime(), 1); 13202 function Inserter({ setIsOpened }) { 13203 const inserterTitleId = (0, import_compose3.useInstanceId)( 13204 Inserter, 13205 "customize-widget-layout__inserter-panel-title" 13206 ); 13207 const insertionPoint = (0, import_data4.useSelect)( 13208 (select) => select(store).__experimentalGetInsertionPoint(), 13209 [] 13210 ); 13211 return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)( 13212 "div", 13213 { 13214 className: "customize-widgets-layout__inserter-panel", 13215 "aria-labelledby": inserterTitleId, 13216 children: [ 13217 /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "customize-widgets-layout__inserter-panel-header", children: [ 13218 /* @__PURE__ */ (0, import_jsx_runtime53.jsx)( 13219 "h2", 13220 { 13221 id: inserterTitleId, 13222 className: "customize-widgets-layout__inserter-panel-header-title", 13223 children: (0, import_i18n8.__)("Add a block") 13224 } 13225 ), 13226 /* @__PURE__ */ (0, import_jsx_runtime53.jsx)( 13227 import_components2.Button, 13228 { 13229 size: "small", 13230 icon: close_small_default, 13231 onClick: () => setIsOpened(false), 13232 "aria-label": (0, import_i18n8.__)("Close inserter") 13233 } 13234 ) 13235 ] }), 13236 /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: "customize-widgets-layout__inserter-panel-content", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)( 13237 import_block_editor2.__experimentalLibrary, 13238 { 13239 rootClientId: insertionPoint.rootClientId, 13240 __experimentalInsertionIndex: insertionPoint.insertionIndex, 13241 showInserterHelpPanel: true, 13242 onSelect: () => setIsOpened(false) 13243 } 13244 ) }) 13245 ] 13246 } 13247 ); 13248 } 13249 var inserter_default = Inserter; 13250 13251 // packages/customize-widgets/build-module/components/more-menu/index.mjs 13252 var import_components4 = __toESM(require_components(), 1); 13253 var import_data7 = __toESM(require_data(), 1); 13254 var import_element49 = __toESM(require_element(), 1); 13255 var import_i18n11 = __toESM(require_i18n(), 1); 13256 var import_keycodes2 = __toESM(require_keycodes(), 1); 13257 var import_keyboard_shortcuts3 = __toESM(require_keyboard_shortcuts(), 1); 13258 var import_preferences = __toESM(require_preferences(), 1); 13259 13260 // packages/customize-widgets/build-module/components/keyboard-shortcut-help-modal/index.mjs 13261 var import_components3 = __toESM(require_components(), 1); 13262 var import_i18n10 = __toESM(require_i18n(), 1); 13263 var import_keyboard_shortcuts2 = __toESM(require_keyboard_shortcuts(), 1); 13264 var import_data6 = __toESM(require_data(), 1); 13265 var import_element48 = __toESM(require_element(), 1); 13266 13267 // packages/customize-widgets/build-module/components/keyboard-shortcut-help-modal/config.mjs 13268 var import_i18n9 = __toESM(require_i18n(), 1); 13269 var textFormattingShortcuts = [ 13270 { 13271 keyCombination: { modifier: "primary", character: "b" }, 13272 description: (0, import_i18n9.__)("Make the selected text bold.") 13273 }, 13274 { 13275 keyCombination: { modifier: "primary", character: "i" }, 13276 description: (0, import_i18n9.__)("Make the selected text italic.") 13277 }, 13278 { 13279 keyCombination: { modifier: "primary", character: "k" }, 13280 description: (0, import_i18n9.__)("Convert the selected text into a link.") 13281 }, 13282 { 13283 keyCombination: { modifier: "primaryShift", character: "k" }, 13284 description: (0, import_i18n9.__)("Remove a link.") 13285 }, 13286 { 13287 keyCombination: { character: "[[" }, 13288 description: (0, import_i18n9.__)("Insert a link to a post or page.") 13289 }, 13290 { 13291 keyCombination: { modifier: "primary", character: "u" }, 13292 description: (0, import_i18n9.__)("Underline the selected text.") 13293 }, 13294 { 13295 keyCombination: { modifier: "access", character: "d" }, 13296 description: (0, import_i18n9.__)("Strikethrough the selected text.") 13297 }, 13298 { 13299 keyCombination: { modifier: "access", character: "x" }, 13300 description: (0, import_i18n9.__)("Make the selected text inline code.") 13301 }, 13302 { 13303 keyCombination: { 13304 modifier: "access", 13305 character: "0" 13306 }, 13307 aliases: [ 13308 { 13309 modifier: "access", 13310 character: "7" 13311 } 13312 ], 13313 description: (0, import_i18n9.__)("Convert the current heading to a paragraph.") 13314 }, 13315 { 13316 keyCombination: { modifier: "access", character: "1-6" }, 13317 description: (0, import_i18n9.__)( 13318 "Convert the current paragraph or heading to a heading of level 1 to 6." 13319 ) 13320 }, 13321 { 13322 keyCombination: { modifier: "primaryShift", character: "SPACE" }, 13323 description: (0, import_i18n9.__)("Add non breaking space.") 13324 } 13325 ]; 13326 13327 // packages/customize-widgets/build-module/components/keyboard-shortcut-help-modal/shortcut.mjs 13328 var import_element47 = __toESM(require_element(), 1); 13329 var import_keycodes = __toESM(require_keycodes(), 1); 13330 var import_jsx_runtime54 = __toESM(require_jsx_runtime(), 1); 13331 function KeyCombination({ keyCombination, forceAriaLabel }) { 13332 const shortcut = keyCombination.modifier ? import_keycodes.displayShortcutList[keyCombination.modifier]( 13333 keyCombination.character 13334 ) : keyCombination.character; 13335 const ariaLabel = keyCombination.modifier ? import_keycodes.shortcutAriaLabel[keyCombination.modifier]( 13336 keyCombination.character 13337 ) : keyCombination.character; 13338 return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( 13339 "kbd", 13340 { 13341 className: "customize-widgets-keyboard-shortcut-help-modal__shortcut-key-combination", 13342 "aria-label": forceAriaLabel || ariaLabel, 13343 children: (Array.isArray(shortcut) ? shortcut : [shortcut]).map( 13344 (character, index2) => { 13345 if (character === "+") { 13346 return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_element47.Fragment, { children: character }, index2); 13347 } 13348 return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( 13349 "kbd", 13350 { 13351 className: "customize-widgets-keyboard-shortcut-help-modal__shortcut-key", 13352 children: character 13353 }, 13354 index2 13355 ); 13356 } 13357 ) 13358 } 13359 ); 13360 } 13361 function Shortcut({ description, keyCombination, aliases = [], ariaLabel }) { 13362 return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_jsx_runtime54.Fragment, { children: [ 13363 /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "customize-widgets-keyboard-shortcut-help-modal__shortcut-description", children: description }), 13364 /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "customize-widgets-keyboard-shortcut-help-modal__shortcut-term", children: [ 13365 /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( 13366 KeyCombination, 13367 { 13368 keyCombination, 13369 forceAriaLabel: ariaLabel 13370 } 13371 ), 13372 aliases.map((alias, index2) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( 13373 KeyCombination, 13374 { 13375 keyCombination: alias, 13376 forceAriaLabel: ariaLabel 13377 }, 13378 index2 13379 )) 13380 ] }) 13381 ] }); 13382 } 13383 var shortcut_default = Shortcut; 13384 13385 // packages/customize-widgets/build-module/components/keyboard-shortcut-help-modal/dynamic-shortcut.mjs 13386 var import_data5 = __toESM(require_data(), 1); 13387 var import_keyboard_shortcuts = __toESM(require_keyboard_shortcuts(), 1); 13388 var import_jsx_runtime55 = __toESM(require_jsx_runtime(), 1); 13389 function DynamicShortcut({ name }) { 13390 const { keyCombination, description, aliases } = (0, import_data5.useSelect)( 13391 (select) => { 13392 const { 13393 getShortcutKeyCombination, 13394 getShortcutDescription, 13395 getShortcutAliases 13396 } = select(import_keyboard_shortcuts.store); 13397 return { 13398 keyCombination: getShortcutKeyCombination(name), 13399 aliases: getShortcutAliases(name), 13400 description: getShortcutDescription(name) 13401 }; 13402 }, 13403 [name] 13404 ); 13405 if (!keyCombination) { 13406 return null; 13407 } 13408 return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)( 13409 shortcut_default, 13410 { 13411 keyCombination, 13412 description, 13413 aliases 13414 } 13415 ); 13416 } 13417 var dynamic_shortcut_default = DynamicShortcut; 13418 13419 // packages/customize-widgets/build-module/components/keyboard-shortcut-help-modal/index.mjs 13420 var import_jsx_runtime56 = __toESM(require_jsx_runtime(), 1); 13421 var ShortcutList = ({ shortcuts }) => ( 13422 /* 13423 * Disable reason: The `list` ARIA role is redundant but 13424 * Safari+VoiceOver won't announce the list otherwise. 13425 */ 13426 /* eslint-disable jsx-a11y/no-redundant-roles */ 13427 /* @__PURE__ */ (0, import_jsx_runtime56.jsx)( 13428 "ul", 13429 { 13430 className: "customize-widgets-keyboard-shortcut-help-modal__shortcut-list", 13431 role: "list", 13432 children: shortcuts.map((shortcut, index2) => /* @__PURE__ */ (0, import_jsx_runtime56.jsx)( 13433 "li", 13434 { 13435 className: "customize-widgets-keyboard-shortcut-help-modal__shortcut", 13436 children: typeof shortcut === "string" ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(dynamic_shortcut_default, { name: shortcut }) : /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(shortcut_default, { ...shortcut }) 13437 }, 13438 index2 13439 )) 13440 } 13441 ) 13442 ); 13443 var ShortcutSection = ({ title, shortcuts, className }) => /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)( 13444 "section", 13445 { 13446 className: clsx_default( 13447 "customize-widgets-keyboard-shortcut-help-modal__section", 13448 className 13449 ), 13450 children: [ 13451 !!title && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("h2", { className: "customize-widgets-keyboard-shortcut-help-modal__section-title", children: title }), 13452 /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(ShortcutList, { shortcuts }) 13453 ] 13454 } 13455 ); 13456 var ShortcutCategorySection = ({ 13457 title, 13458 categoryName, 13459 additionalShortcuts = [] 13460 }) => { 13461 const categoryShortcuts = (0, import_data6.useSelect)( 13462 (select) => { 13463 return select(import_keyboard_shortcuts2.store).getCategoryShortcuts( 13464 categoryName 13465 ); 13466 }, 13467 [categoryName] 13468 ); 13469 return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)( 13470 ShortcutSection, 13471 { 13472 title, 13473 shortcuts: categoryShortcuts.concat(additionalShortcuts) 13474 } 13475 ); 13476 }; 13477 function KeyboardShortcutHelpModal({ 13478 isModalActive, 13479 toggleModal 13480 }) { 13481 const { registerShortcut } = (0, import_data6.useDispatch)(import_keyboard_shortcuts2.store); 13482 (0, import_element48.useEffect)(() => { 13483 registerShortcut({ 13484 name: "core/customize-widgets/keyboard-shortcuts", 13485 category: "main", 13486 description: (0, import_i18n10.__)("Display these keyboard shortcuts."), 13487 keyCombination: { 13488 modifier: "access", 13489 character: "h" 13490 } 13491 }); 13492 }, [registerShortcut]); 13493 (0, import_keyboard_shortcuts2.useShortcut)("core/customize-widgets/keyboard-shortcuts", toggleModal); 13494 if (!isModalActive) { 13495 return null; 13496 } 13497 return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)( 13498 import_components3.Modal, 13499 { 13500 className: "customize-widgets-keyboard-shortcut-help-modal", 13501 title: (0, import_i18n10.__)("Keyboard shortcuts"), 13502 onRequestClose: toggleModal, 13503 children: [ 13504 /* @__PURE__ */ (0, import_jsx_runtime56.jsx)( 13505 ShortcutSection, 13506 { 13507 className: "customize-widgets-keyboard-shortcut-help-modal__main-shortcuts", 13508 shortcuts: ["core/customize-widgets/keyboard-shortcuts"] 13509 } 13510 ), 13511 /* @__PURE__ */ (0, import_jsx_runtime56.jsx)( 13512 ShortcutCategorySection, 13513 { 13514 title: (0, import_i18n10.__)("Global shortcuts"), 13515 categoryName: "global" 13516 } 13517 ), 13518 /* @__PURE__ */ (0, import_jsx_runtime56.jsx)( 13519 ShortcutCategorySection, 13520 { 13521 title: (0, import_i18n10.__)("Selection shortcuts"), 13522 categoryName: "selection" 13523 } 13524 ), 13525 /* @__PURE__ */ (0, import_jsx_runtime56.jsx)( 13526 ShortcutCategorySection, 13527 { 13528 title: (0, import_i18n10.__)("Block shortcuts"), 13529 categoryName: "block", 13530 additionalShortcuts: [ 13531 { 13532 keyCombination: { character: "/" }, 13533 description: (0, import_i18n10.__)( 13534 "Change the block type after adding a new paragraph." 13535 ), 13536 /* translators: The forward-slash character. e.g. '/'. */ 13537 ariaLabel: (0, import_i18n10.__)("Forward-slash") 13538 } 13539 ] 13540 } 13541 ), 13542 /* @__PURE__ */ (0, import_jsx_runtime56.jsx)( 13543 ShortcutSection, 13544 { 13545 title: (0, import_i18n10.__)("Text formatting"), 13546 shortcuts: textFormattingShortcuts 13547 } 13548 ) 13549 ] 13550 } 13551 ); 13552 } 13553 13554 // packages/customize-widgets/build-module/components/more-menu/index.mjs 13555 var import_jsx_runtime57 = __toESM(require_jsx_runtime(), 1); 13556 function MoreMenu() { 13557 const [ 13558 isKeyboardShortcutsModalActive, 13559 setIsKeyboardShortcutsModalVisible 13560 ] = (0, import_element49.useState)(false); 13561 const toggleKeyboardShortcutsModal = () => setIsKeyboardShortcutsModalVisible(!isKeyboardShortcutsModalActive); 13562 (0, import_keyboard_shortcuts3.useShortcut)( 13563 "core/customize-widgets/keyboard-shortcuts", 13564 toggleKeyboardShortcutsModal 13565 ); 13566 const { toggle } = (0, import_data7.useDispatch)(import_preferences.store); 13567 return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_jsx_runtime57.Fragment, { children: [ 13568 /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( 13569 import_components4.ToolbarDropdownMenu, 13570 { 13571 icon: more_vertical_default, 13572 label: (0, import_i18n11.__)("Options"), 13573 popoverProps: { 13574 placement: "bottom-end", 13575 className: "more-menu-dropdown__content" 13576 }, 13577 toggleProps: { 13578 tooltipPosition: "bottom", 13579 size: "compact" 13580 }, 13581 children: () => /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_jsx_runtime57.Fragment, { children: [ 13582 /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_components4.MenuGroup, { label: (0, import_i18n11._x)("View", "noun"), children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( 13583 import_preferences.PreferenceToggleMenuItem, 13584 { 13585 scope: "core/customize-widgets", 13586 name: "fixedToolbar", 13587 label: (0, import_i18n11.__)("Top toolbar"), 13588 info: (0, import_i18n11.__)( 13589 "Access all block and document tools in a single place" 13590 ), 13591 messageActivated: (0, import_i18n11.__)( 13592 "Top toolbar activated" 13593 ), 13594 messageDeactivated: (0, import_i18n11.__)( 13595 "Top toolbar deactivated" 13596 ) 13597 } 13598 ) }), 13599 /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_components4.MenuGroup, { label: (0, import_i18n11.__)("Tools"), children: [ 13600 /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( 13601 import_components4.MenuItem, 13602 { 13603 onClick: () => { 13604 setIsKeyboardShortcutsModalVisible(true); 13605 }, 13606 shortcut: import_keycodes2.displayShortcut.access("h"), 13607 children: (0, import_i18n11.__)("Keyboard shortcuts") 13608 } 13609 ), 13610 /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( 13611 import_components4.MenuItem, 13612 { 13613 onClick: () => toggle( 13614 "core/customize-widgets", 13615 "welcomeGuide" 13616 ), 13617 children: (0, import_i18n11.__)("Welcome Guide") 13618 } 13619 ), 13620 /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)( 13621 import_components4.MenuItem, 13622 { 13623 role: "menuitem", 13624 icon: external_default, 13625 href: (0, import_i18n11.__)( 13626 "https://wordpress.org/documentation/article/block-based-widgets-editor/" 13627 ), 13628 target: "_blank", 13629 rel: "noopener", 13630 children: [ 13631 (0, import_i18n11.__)("Help"), 13632 /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(VisuallyHidden, { 13633 render: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", {}), 13634 /* translators: accessibility text */ 13635 children: (0, import_i18n11.__)("(opens in a new tab)") 13636 }) 13637 ] 13638 } 13639 ) 13640 ] }), 13641 /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_components4.MenuGroup, { label: (0, import_i18n11.__)("Preferences"), children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( 13642 import_preferences.PreferenceToggleMenuItem, 13643 { 13644 scope: "core/customize-widgets", 13645 name: "keepCaretInsideBlock", 13646 label: (0, import_i18n11.__)( 13647 "Contain text cursor inside block" 13648 ), 13649 info: (0, import_i18n11.__)( 13650 "Aids screen readers by stopping text caret from leaving blocks." 13651 ), 13652 messageActivated: (0, import_i18n11.__)( 13653 "Contain text cursor inside block activated" 13654 ), 13655 messageDeactivated: (0, import_i18n11.__)( 13656 "Contain text cursor inside block deactivated" 13657 ) 13658 } 13659 ) }) 13660 ] }) 13661 } 13662 ), 13663 /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( 13664 KeyboardShortcutHelpModal, 13665 { 13666 isModalActive: isKeyboardShortcutsModalActive, 13667 toggleModal: toggleKeyboardShortcutsModal 13668 } 13669 ) 13670 ] }); 13671 } 13672 13673 // packages/customize-widgets/build-module/components/header/index.mjs 13674 var import_jsx_runtime58 = __toESM(require_jsx_runtime(), 1); 13675 function Header3({ 13676 sidebar, 13677 inserter, 13678 isInserterOpened: isInserterOpened2, 13679 setIsInserterOpened: setIsInserterOpened2, 13680 isFixedToolbarActive 13681 }) { 13682 const [[hasUndo, hasRedo], setUndoRedo] = (0, import_element50.useState)([ 13683 sidebar.hasUndo(), 13684 sidebar.hasRedo() 13685 ]); 13686 const shortcut = (0, import_keycodes3.isAppleOS)() ? import_keycodes3.displayShortcut.primaryShift("z") : import_keycodes3.displayShortcut.primary("y"); 13687 (0, import_element50.useEffect)(() => { 13688 return sidebar.subscribeHistory(() => { 13689 setUndoRedo([sidebar.hasUndo(), sidebar.hasRedo()]); 13690 }); 13691 }, [sidebar]); 13692 return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(import_jsx_runtime58.Fragment, { children: [ 13693 /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( 13694 "div", 13695 { 13696 className: clsx_default("customize-widgets-header", { 13697 "is-fixed-toolbar-active": isFixedToolbarActive 13698 }), 13699 children: /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)( 13700 import_block_editor3.NavigableToolbar, 13701 { 13702 className: "customize-widgets-header-toolbar", 13703 "aria-label": (0, import_i18n12.__)("Document tools"), 13704 children: [ 13705 /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( 13706 import_components5.ToolbarItem, 13707 { 13708 as: import_components5.Button, 13709 icon: !(0, import_i18n12.isRTL)() ? undo_default : redo_default, 13710 label: (0, import_i18n12.__)("Undo"), 13711 shortcut: import_keycodes3.displayShortcut.primary("z"), 13712 "aria-disabled": !hasUndo, 13713 onClick: hasUndo ? sidebar.undo : void 0, 13714 size: "compact", 13715 className: "customize-widgets-editor-history-button undo-button" 13716 } 13717 ), 13718 /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( 13719 import_components5.ToolbarItem, 13720 { 13721 as: import_components5.Button, 13722 icon: !(0, import_i18n12.isRTL)() ? redo_default : undo_default, 13723 label: (0, import_i18n12.__)("Redo"), 13724 shortcut, 13725 "aria-disabled": !hasRedo, 13726 onClick: hasRedo ? sidebar.redo : void 0, 13727 size: "compact", 13728 className: "customize-widgets-editor-history-button redo-button" 13729 } 13730 ), 13731 /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( 13732 import_components5.ToolbarItem, 13733 { 13734 as: import_components5.Button, 13735 className: "customize-widgets-header-toolbar__inserter-toggle", 13736 isPressed: isInserterOpened2, 13737 variant: "primary", 13738 icon: plus_default, 13739 label: (0, import_i18n12._x)( 13740 "Add block", 13741 "Generic label for block inserter button" 13742 ), 13743 onClick: () => { 13744 setIsInserterOpened2((isOpen) => !isOpen); 13745 }, 13746 size: "compact" 13747 } 13748 ), 13749 /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(MoreMenu, {}) 13750 ] 13751 } 13752 ) 13753 } 13754 ), 13755 (0, import_element50.createPortal)( 13756 /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(inserter_default, { setIsOpened: setIsInserterOpened2 }), 13757 inserter.contentContainer[0] 13758 ) 13759 ] }); 13760 } 13761 var header_default = Header3; 13762 13763 // packages/customize-widgets/build-module/components/inserter/use-inserter.mjs 13764 var import_element51 = __toESM(require_element(), 1); 13765 var import_data8 = __toESM(require_data(), 1); 13766 function useInserter(inserter) { 13767 const isInserterOpened2 = (0, import_data8.useSelect)( 13768 (select) => select(store).isInserterOpened(), 13769 [] 13770 ); 13771 const { setIsInserterOpened: setIsInserterOpened2 } = (0, import_data8.useDispatch)(store); 13772 (0, import_element51.useEffect)(() => { 13773 if (isInserterOpened2) { 13774 inserter.open(); 13775 } else { 13776 inserter.close(); 13777 } 13778 }, [inserter, isInserterOpened2]); 13779 return [ 13780 isInserterOpened2, 13781 (0, import_element51.useCallback)( 13782 (updater) => { 13783 let isOpen = updater; 13784 if (typeof updater === "function") { 13785 isOpen = updater( 13786 (0, import_data8.select)(store).isInserterOpened() 13787 ); 13788 } 13789 setIsInserterOpened2(isOpen); 13790 }, 13791 [setIsInserterOpened2] 13792 ) 13793 ]; 13794 } 13795 13796 // packages/customize-widgets/build-module/components/sidebar-block-editor/sidebar-editor-provider.mjs 13797 var import_block_editor5 = __toESM(require_block_editor(), 1); 13798 13799 // packages/customize-widgets/build-module/components/sidebar-block-editor/use-sidebar-block-editor.mjs 13800 var import_es6 = __toESM(require_es6(), 1); 13801 var import_element52 = __toESM(require_element(), 1); 13802 var import_is_shallow_equal = __toESM(require_is_shallow_equal(), 1); 13803 var import_widgets2 = __toESM(require_widgets(), 1); 13804 13805 // packages/customize-widgets/build-module/utils.mjs 13806 var import_blocks = __toESM(require_blocks(), 1); 13807 var import_widgets = __toESM(require_widgets(), 1); 13808 function settingIdToWidgetId(settingId) { 13809 const matches = settingId.match(/^widget_(.+)(?:\[(\d+)\])$/); 13810 if (matches) { 13811 const idBase = matches[1]; 13812 const number = parseInt(matches[2], 10); 13813 return `$idBase}-$number}`; 13814 } 13815 return settingId; 13816 } 13817 function blockToWidget(block, existingWidget = null) { 13818 let widget; 13819 const isValidLegacyWidgetBlock = block.name === "core/legacy-widget" && (block.attributes.id || block.attributes.instance); 13820 if (isValidLegacyWidgetBlock) { 13821 if (block.attributes.id) { 13822 widget = { 13823 id: block.attributes.id 13824 }; 13825 } else { 13826 const { encoded, hash, raw, ...rest } = block.attributes.instance; 13827 widget = { 13828 idBase: block.attributes.idBase, 13829 instance: { 13830 ...existingWidget?.instance, 13831 // Required only for the customizer. 13832 is_widget_customizer_js_value: true, 13833 encoded_serialized_instance: encoded, 13834 instance_hash_key: hash, 13835 raw_instance: raw, 13836 ...rest 13837 } 13838 }; 13839 } 13840 } else { 13841 const instance = { 13842 content: (0, import_blocks.serialize)(block) 13843 }; 13844 widget = { 13845 idBase: "block", 13846 widgetClass: "WP_Widget_Block", 13847 instance: { 13848 raw_instance: instance 13849 } 13850 }; 13851 } 13852 const { form, rendered, ...restExistingWidget } = existingWidget || {}; 13853 return { 13854 ...restExistingWidget, 13855 ...widget 13856 }; 13857 } 13858 function widgetToBlock({ id, idBase, number, instance }) { 13859 let block; 13860 const { 13861 encoded_serialized_instance: encoded, 13862 instance_hash_key: hash, 13863 raw_instance: raw, 13864 ...rest 13865 } = instance; 13866 if (idBase === "block") { 13867 const parsedBlocks = (0, import_blocks.parse)(raw.content ?? "", { 13868 __unstableSkipAutop: true 13869 }); 13870 block = parsedBlocks.length ? parsedBlocks[0] : (0, import_blocks.createBlock)("core/paragraph", {}); 13871 } else if (number) { 13872 block = (0, import_blocks.createBlock)("core/legacy-widget", { 13873 idBase, 13874 instance: { 13875 encoded, 13876 hash, 13877 raw, 13878 ...rest 13879 } 13880 }); 13881 } else { 13882 block = (0, import_blocks.createBlock)("core/legacy-widget", { 13883 id 13884 }); 13885 } 13886 return (0, import_widgets.addWidgetIdToBlock)(block, id); 13887 } 13888 13889 // packages/customize-widgets/build-module/components/sidebar-block-editor/use-sidebar-block-editor.mjs 13890 function widgetsToBlocks(widgets) { 13891 return widgets.map((widget) => widgetToBlock(widget)); 13892 } 13893 function useSidebarBlockEditor(sidebar) { 13894 const [blocks, setBlocks] = (0, import_element52.useState)( 13895 () => widgetsToBlocks(sidebar.getWidgets()) 13896 ); 13897 (0, import_element52.useEffect)(() => { 13898 return sidebar.subscribe((prevWidgets, nextWidgets) => { 13899 setBlocks((prevBlocks) => { 13900 const prevWidgetsMap = new Map( 13901 prevWidgets.map((widget) => [widget.id, widget]) 13902 ); 13903 const prevBlocksMap = new Map( 13904 prevBlocks.map((block) => [ 13905 (0, import_widgets2.getWidgetIdFromBlock)(block), 13906 block 13907 ]) 13908 ); 13909 const nextBlocks = nextWidgets.map((nextWidget) => { 13910 const prevWidget = prevWidgetsMap.get(nextWidget.id); 13911 if (prevWidget && prevWidget === nextWidget) { 13912 return prevBlocksMap.get(nextWidget.id); 13913 } 13914 return widgetToBlock(nextWidget); 13915 }); 13916 if ((0, import_is_shallow_equal.isShallowEqual)(prevBlocks, nextBlocks)) { 13917 return prevBlocks; 13918 } 13919 return nextBlocks; 13920 }); 13921 }); 13922 }, [sidebar]); 13923 const onChangeBlocks = (0, import_element52.useCallback)( 13924 (nextBlocks) => { 13925 setBlocks((prevBlocks) => { 13926 if ((0, import_is_shallow_equal.isShallowEqual)(prevBlocks, nextBlocks)) { 13927 return prevBlocks; 13928 } 13929 const prevBlocksMap = new Map( 13930 prevBlocks.map((block) => [ 13931 (0, import_widgets2.getWidgetIdFromBlock)(block), 13932 block 13933 ]) 13934 ); 13935 const nextWidgets = nextBlocks.map((nextBlock) => { 13936 const widgetId = (0, import_widgets2.getWidgetIdFromBlock)(nextBlock); 13937 if (widgetId && prevBlocksMap.has(widgetId)) { 13938 const prevBlock = prevBlocksMap.get(widgetId); 13939 const prevWidget = sidebar.getWidget(widgetId); 13940 if ((0, import_es6.default)(nextBlock, prevBlock) && prevWidget) { 13941 return prevWidget; 13942 } 13943 return blockToWidget(nextBlock, prevWidget); 13944 } 13945 return blockToWidget(nextBlock); 13946 }); 13947 if ((0, import_is_shallow_equal.isShallowEqual)(sidebar.getWidgets(), nextWidgets)) { 13948 return prevBlocks; 13949 } 13950 const addedWidgetIds = sidebar.setWidgets(nextWidgets); 13951 return nextBlocks.reduce( 13952 (updatedNextBlocks, nextBlock, index2) => { 13953 const addedWidgetId = addedWidgetIds[index2]; 13954 if (addedWidgetId !== null) { 13955 if (updatedNextBlocks === nextBlocks) { 13956 updatedNextBlocks = nextBlocks.slice(); 13957 } 13958 updatedNextBlocks[index2] = (0, import_widgets2.addWidgetIdToBlock)( 13959 nextBlock, 13960 addedWidgetId 13961 ); 13962 } 13963 return updatedNextBlocks; 13964 }, 13965 nextBlocks 13966 ); 13967 }); 13968 }, 13969 [sidebar] 13970 ); 13971 return [blocks, onChangeBlocks, onChangeBlocks]; 13972 } 13973 13974 // packages/customize-widgets/build-module/components/focus-control/use-blocks-focus-control.mjs 13975 var import_element54 = __toESM(require_element(), 1); 13976 var import_data9 = __toESM(require_data(), 1); 13977 var import_block_editor4 = __toESM(require_block_editor(), 1); 13978 var import_widgets3 = __toESM(require_widgets(), 1); 13979 13980 // packages/customize-widgets/build-module/components/focus-control/index.mjs 13981 var import_element53 = __toESM(require_element(), 1); 13982 var import_jsx_runtime59 = __toESM(require_jsx_runtime(), 1); 13983 var FocusControlContext = (0, import_element53.createContext)(); 13984 FocusControlContext.displayName = "FocusControlContext"; 13985 function FocusControl({ api, sidebarControls, children }) { 13986 const [focusedWidgetIdRef, setFocusedWidgetIdRef] = (0, import_element53.useState)({ 13987 current: null 13988 }); 13989 const focusWidget = (0, import_element53.useCallback)( 13990 (widgetId) => { 13991 for (const sidebarControl of sidebarControls) { 13992 const widgets = sidebarControl.setting.get(); 13993 if (widgets.includes(widgetId)) { 13994 sidebarControl.sectionInstance.expand({ 13995 // Schedule it after the complete callback so that 13996 // it won't be overridden by the "Back" button focus. 13997 completeCallback() { 13998 setFocusedWidgetIdRef({ current: widgetId }); 13999 } 14000 }); 14001 break; 14002 } 14003 } 14004 }, 14005 [sidebarControls] 14006 ); 14007 (0, import_element53.useEffect)(() => { 14008 function handleFocus(settingId) { 14009 const widgetId = settingIdToWidgetId(settingId); 14010 focusWidget(widgetId); 14011 } 14012 let previewBound = false; 14013 function handleReady() { 14014 api.previewer.preview.bind( 14015 "focus-control-for-setting", 14016 handleFocus 14017 ); 14018 previewBound = true; 14019 } 14020 api.previewer.bind("ready", handleReady); 14021 return () => { 14022 api.previewer.unbind("ready", handleReady); 14023 if (previewBound) { 14024 api.previewer.preview.unbind( 14025 "focus-control-for-setting", 14026 handleFocus 14027 ); 14028 } 14029 }; 14030 }, [api, focusWidget]); 14031 const context = (0, import_element53.useMemo)( 14032 () => [focusedWidgetIdRef, focusWidget], 14033 [focusedWidgetIdRef, focusWidget] 14034 ); 14035 return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(FocusControlContext.Provider, { value: context, children }); 14036 } 14037 var useFocusControl = () => (0, import_element53.useContext)(FocusControlContext); 14038 14039 // packages/customize-widgets/build-module/components/focus-control/use-blocks-focus-control.mjs 14040 function useBlocksFocusControl(blocks) { 14041 const { selectBlock } = (0, import_data9.useDispatch)(import_block_editor4.store); 14042 const [focusedWidgetIdRef] = useFocusControl(); 14043 const blocksRef = (0, import_element54.useRef)(blocks); 14044 (0, import_element54.useEffect)(() => { 14045 blocksRef.current = blocks; 14046 }, [blocks]); 14047 (0, import_element54.useEffect)(() => { 14048 if (focusedWidgetIdRef.current) { 14049 const focusedBlock = blocksRef.current.find( 14050 (block) => (0, import_widgets3.getWidgetIdFromBlock)(block) === focusedWidgetIdRef.current 14051 ); 14052 if (focusedBlock) { 14053 selectBlock(focusedBlock.clientId); 14054 const blockNode = document.querySelector( 14055 `[data-block="$focusedBlock.clientId}"]` 14056 ); 14057 blockNode?.focus(); 14058 } 14059 } 14060 }, [focusedWidgetIdRef, selectBlock]); 14061 } 14062 14063 // packages/customize-widgets/build-module/lock-unlock.mjs 14064 var import_private_apis2 = __toESM(require_private_apis(), 1); 14065 var { lock: lock2, unlock: unlock2 } = (0, import_private_apis2.__dangerousOptInToUnstableAPIsOnlyForCoreModules)( 14066 "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.", 14067 "@wordpress/customize-widgets" 14068 ); 14069 14070 // packages/customize-widgets/build-module/components/sidebar-block-editor/sidebar-editor-provider.mjs 14071 var import_jsx_runtime60 = __toESM(require_jsx_runtime(), 1); 14072 var { ExperimentalBlockEditorProvider } = unlock2(import_block_editor5.privateApis); 14073 function SidebarEditorProvider({ 14074 sidebar, 14075 settings, 14076 children 14077 }) { 14078 const [blocks, onInput, onChange] = useSidebarBlockEditor(sidebar); 14079 useBlocksFocusControl(blocks); 14080 return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)( 14081 ExperimentalBlockEditorProvider, 14082 { 14083 value: blocks, 14084 onInput, 14085 onChange, 14086 settings, 14087 useSubRegistry: false, 14088 children 14089 } 14090 ); 14091 } 14092 14093 // packages/customize-widgets/build-module/components/welcome-guide/index.mjs 14094 var import_i18n13 = __toESM(require_i18n(), 1); 14095 var import_components6 = __toESM(require_components(), 1); 14096 var import_data10 = __toESM(require_data(), 1); 14097 var import_preferences2 = __toESM(require_preferences(), 1); 14098 var import_jsx_runtime61 = __toESM(require_jsx_runtime(), 1); 14099 function WelcomeGuide({ sidebar }) { 14100 const { toggle } = (0, import_data10.useDispatch)(import_preferences2.store); 14101 const isEntirelyBlockWidgets = sidebar.getWidgets().every((widget) => widget.id.startsWith("block-")); 14102 return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { className: "customize-widgets-welcome-guide", children: [ 14103 /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { className: "customize-widgets-welcome-guide__image__wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("picture", { children: [ 14104 /* @__PURE__ */ (0, import_jsx_runtime61.jsx)( 14105 "source", 14106 { 14107 srcSet: "https://s.w.org/images/block-editor/welcome-editor.svg", 14108 media: "(prefers-reduced-motion: reduce)" 14109 } 14110 ), 14111 /* @__PURE__ */ (0, import_jsx_runtime61.jsx)( 14112 "img", 14113 { 14114 className: "customize-widgets-welcome-guide__image", 14115 src: "https://s.w.org/images/block-editor/welcome-editor.gif", 14116 width: "312", 14117 height: "240", 14118 alt: "" 14119 } 14120 ) 14121 ] }) }), 14122 /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("h1", { className: "customize-widgets-welcome-guide__heading", children: (0, import_i18n13.__)("Welcome to block Widgets") }), 14123 /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("p", { className: "customize-widgets-welcome-guide__text", children: isEntirelyBlockWidgets ? (0, import_i18n13.__)( 14124 "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." 14125 ) : (0, import_i18n13.__)( 14126 "You can now add any block to your site\u2019s widget areas. Don\u2019t worry, all of your favorite widgets still work flawlessly." 14127 ) }), 14128 /* @__PURE__ */ (0, import_jsx_runtime61.jsx)( 14129 import_components6.Button, 14130 { 14131 size: "compact", 14132 variant: "primary", 14133 onClick: () => toggle("core/customize-widgets", "welcomeGuide"), 14134 children: (0, import_i18n13.__)("Got it") 14135 } 14136 ), 14137 /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("hr", { className: "customize-widgets-welcome-guide__separator" }), 14138 !isEntirelyBlockWidgets && /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("p", { className: "customize-widgets-welcome-guide__more-info", children: [ 14139 (0, import_i18n13.__)("Want to stick with the old widgets?"), 14140 /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("br", {}), 14141 /* @__PURE__ */ (0, import_jsx_runtime61.jsx)( 14142 import_components6.ExternalLink, 14143 { 14144 href: (0, import_i18n13.__)( 14145 "https://wordpress.org/plugins/classic-widgets/" 14146 ), 14147 children: (0, import_i18n13.__)("Get the Classic Widgets plugin.") 14148 } 14149 ) 14150 ] }), 14151 /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("p", { className: "customize-widgets-welcome-guide__more-info", children: [ 14152 (0, import_i18n13.__)("New to the block editor?"), 14153 /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("br", {}), 14154 /* @__PURE__ */ (0, import_jsx_runtime61.jsx)( 14155 import_components6.ExternalLink, 14156 { 14157 href: (0, import_i18n13.__)( 14158 "https://wordpress.org/documentation/article/wordpress-block-editor/" 14159 ), 14160 children: (0, import_i18n13.__)("Here's a detailed guide.") 14161 } 14162 ) 14163 ] }) 14164 ] }); 14165 } 14166 14167 // packages/customize-widgets/build-module/components/keyboard-shortcuts/index.mjs 14168 var import_element55 = __toESM(require_element(), 1); 14169 var import_keyboard_shortcuts4 = __toESM(require_keyboard_shortcuts(), 1); 14170 var import_keycodes4 = __toESM(require_keycodes(), 1); 14171 var import_data11 = __toESM(require_data(), 1); 14172 var import_i18n14 = __toESM(require_i18n(), 1); 14173 var import_block_editor6 = __toESM(require_block_editor(), 1); 14174 var { usesNativeUndo } = unlock2(import_block_editor6.privateApis); 14175 function KeyboardShortcuts({ undo, redo, save }) { 14176 (0, import_keyboard_shortcuts4.useShortcut)("core/customize-widgets/undo", (event) => { 14177 if (usesNativeUndo(event)) { 14178 return; 14179 } 14180 undo(); 14181 event.preventDefault(); 14182 }); 14183 (0, import_keyboard_shortcuts4.useShortcut)("core/customize-widgets/redo", (event) => { 14184 if (usesNativeUndo(event)) { 14185 return; 14186 } 14187 redo(); 14188 event.preventDefault(); 14189 }); 14190 (0, import_keyboard_shortcuts4.useShortcut)("core/customize-widgets/save", (event) => { 14191 event.preventDefault(); 14192 save(); 14193 }); 14194 return null; 14195 } 14196 function KeyboardShortcutsRegister() { 14197 const { registerShortcut, unregisterShortcut } = (0, import_data11.useDispatch)( 14198 import_keyboard_shortcuts4.store 14199 ); 14200 (0, import_element55.useEffect)(() => { 14201 registerShortcut({ 14202 name: "core/customize-widgets/undo", 14203 category: "global", 14204 description: (0, import_i18n14.__)("Undo your last changes."), 14205 keyCombination: { 14206 modifier: "primary", 14207 character: "z" 14208 } 14209 }); 14210 registerShortcut({ 14211 name: "core/customize-widgets/redo", 14212 category: "global", 14213 description: (0, import_i18n14.__)("Redo your last undo."), 14214 keyCombination: { 14215 modifier: "primaryShift", 14216 character: "z" 14217 }, 14218 // Disable on Apple OS because it conflicts with the browser's 14219 // history shortcut. It's a fine alias for both Windows and Linux. 14220 // Since there's no conflict for Ctrl+Shift+Z on both Windows and 14221 // Linux, we keep it as the default for consistency. 14222 aliases: (0, import_keycodes4.isAppleOS)() ? [] : [ 14223 { 14224 modifier: "primary", 14225 character: "y" 14226 } 14227 ] 14228 }); 14229 registerShortcut({ 14230 name: "core/customize-widgets/save", 14231 category: "global", 14232 description: (0, import_i18n14.__)("Save your changes."), 14233 keyCombination: { 14234 modifier: "primary", 14235 character: "s" 14236 } 14237 }); 14238 return () => { 14239 unregisterShortcut("core/customize-widgets/undo"); 14240 unregisterShortcut("core/customize-widgets/redo"); 14241 unregisterShortcut("core/customize-widgets/save"); 14242 }; 14243 }, [registerShortcut]); 14244 return null; 14245 } 14246 KeyboardShortcuts.Register = KeyboardShortcutsRegister; 14247 var keyboard_shortcuts_default = KeyboardShortcuts; 14248 14249 // packages/customize-widgets/build-module/components/block-appender/index.mjs 14250 var import_element56 = __toESM(require_element(), 1); 14251 var import_block_editor7 = __toESM(require_block_editor(), 1); 14252 var import_data12 = __toESM(require_data(), 1); 14253 var import_jsx_runtime62 = __toESM(require_jsx_runtime(), 1); 14254 function BlockAppender(props) { 14255 const ref = (0, import_element56.useRef)(); 14256 const isBlocksListEmpty = (0, import_data12.useSelect)( 14257 (select) => select(import_block_editor7.store).getBlockCount() === 0 14258 ); 14259 (0, import_element56.useEffect)(() => { 14260 if (isBlocksListEmpty && ref.current) { 14261 const { ownerDocument: ownerDocument2 } = ref.current; 14262 if (!ownerDocument2.activeElement || ownerDocument2.activeElement === ownerDocument2.body) { 14263 ref.current.focus(); 14264 } 14265 } 14266 }, [isBlocksListEmpty]); 14267 return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_block_editor7.ButtonBlockAppender, { ...props, ref }); 14268 } 14269 14270 // packages/customize-widgets/build-module/components/sidebar-block-editor/index.mjs 14271 var import_jsx_runtime63 = __toESM(require_jsx_runtime(), 1); 14272 var { ExperimentalBlockCanvas: BlockCanvas } = unlock2( 14273 import_block_editor8.privateApis 14274 ); 14275 function SidebarBlockEditor({ 14276 blockEditorSettings, 14277 sidebar, 14278 inserter, 14279 inspector 14280 }) { 14281 const [isInserterOpened2, setIsInserterOpened2] = useInserter(inserter); 14282 const isMediumViewport = (0, import_compose4.useViewportMatch)("small"); 14283 const { 14284 hasUploadPermissions, 14285 isFixedToolbarActive, 14286 keepCaretInsideBlock, 14287 isWelcomeGuideActive 14288 } = (0, import_data13.useSelect)((select) => { 14289 const { get } = select(import_preferences3.store); 14290 return { 14291 hasUploadPermissions: select(import_core_data.store).canUser("create", { 14292 kind: "postType", 14293 name: "attachment" 14294 }) ?? true, 14295 isFixedToolbarActive: !!get( 14296 "core/customize-widgets", 14297 "fixedToolbar" 14298 ), 14299 keepCaretInsideBlock: !!get( 14300 "core/customize-widgets", 14301 "keepCaretInsideBlock" 14302 ), 14303 isWelcomeGuideActive: !!get( 14304 "core/customize-widgets", 14305 "welcomeGuide" 14306 ) 14307 }; 14308 }, []); 14309 const settings = (0, import_element57.useMemo)(() => { 14310 let mediaUploadBlockEditor; 14311 if (hasUploadPermissions) { 14312 mediaUploadBlockEditor = ({ onError, ...argumentsObject }) => { 14313 (0, import_media_utils.uploadMedia)({ 14314 wpAllowedMimeTypes: blockEditorSettings.allowedMimeTypes, 14315 onError: ({ message }) => onError(message), 14316 ...argumentsObject 14317 }); 14318 }; 14319 } 14320 return { 14321 ...blockEditorSettings, 14322 __experimentalSetIsInserterOpened: setIsInserterOpened2, 14323 mediaUpload: mediaUploadBlockEditor, 14324 hasFixedToolbar: isFixedToolbarActive || !isMediumViewport, 14325 keepCaretInsideBlock, 14326 __unstableHasCustomAppender: true 14327 }; 14328 }, [ 14329 hasUploadPermissions, 14330 blockEditorSettings, 14331 isFixedToolbarActive, 14332 isMediumViewport, 14333 keepCaretInsideBlock, 14334 setIsInserterOpened2 14335 ]); 14336 if (isWelcomeGuideActive) { 14337 return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(WelcomeGuide, { sidebar }); 14338 } 14339 return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_jsx_runtime63.Fragment, { children: [ 14340 /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(keyboard_shortcuts_default.Register, {}), 14341 /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(SidebarEditorProvider, { sidebar, settings, children: [ 14342 /* @__PURE__ */ (0, import_jsx_runtime63.jsx)( 14343 keyboard_shortcuts_default, 14344 { 14345 undo: sidebar.undo, 14346 redo: sidebar.redo, 14347 save: sidebar.save 14348 } 14349 ), 14350 /* @__PURE__ */ (0, import_jsx_runtime63.jsx)( 14351 header_default, 14352 { 14353 sidebar, 14354 inserter, 14355 isInserterOpened: isInserterOpened2, 14356 setIsInserterOpened: setIsInserterOpened2, 14357 isFixedToolbarActive: isFixedToolbarActive || !isMediumViewport 14358 } 14359 ), 14360 (isFixedToolbarActive || !isMediumViewport) && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_block_editor8.BlockToolbar, { hideDragHandle: true }), 14361 /* @__PURE__ */ (0, import_jsx_runtime63.jsx)( 14362 BlockCanvas, 14363 { 14364 shouldIframe: false, 14365 styles: settings.defaultEditorStyles, 14366 height: "100%", 14367 children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_block_editor8.BlockList, { renderAppender: BlockAppender }) 14368 } 14369 ), 14370 (0, import_element57.createPortal)( 14371 // This is a temporary hack to prevent button component inside <BlockInspector> 14372 // from submitting form when type="button" is not specified. 14373 /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("form", { onSubmit: (event) => event.preventDefault(), children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_block_editor8.BlockInspector, {}) }), 14374 inspector.contentContainer[0] 14375 ) 14376 ] }), 14377 /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_block_editor8.__unstableBlockSettingsMenuFirstItem, { children: ({ onClose }) => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)( 14378 block_inspector_button_default, 14379 { 14380 inspector, 14381 closeMenu: onClose 14382 } 14383 ) }) 14384 ] }); 14385 } 14386 14387 // packages/customize-widgets/build-module/components/sidebar-controls/index.mjs 14388 var import_element58 = __toESM(require_element(), 1); 14389 var import_jsx_runtime64 = __toESM(require_jsx_runtime(), 1); 14390 var SidebarControlsContext = (0, import_element58.createContext)(); 14391 SidebarControlsContext.displayName = "SidebarControlsContext"; 14392 function SidebarControls({ 14393 sidebarControls, 14394 activeSidebarControl, 14395 children 14396 }) { 14397 const context = (0, import_element58.useMemo)( 14398 () => ({ 14399 sidebarControls, 14400 activeSidebarControl 14401 }), 14402 [sidebarControls, activeSidebarControl] 14403 ); 14404 return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(SidebarControlsContext.Provider, { value: context, children }); 14405 } 14406 function useSidebarControls() { 14407 const { sidebarControls } = (0, import_element58.useContext)(SidebarControlsContext); 14408 return sidebarControls; 14409 } 14410 function useActiveSidebarControl() { 14411 const { activeSidebarControl } = (0, import_element58.useContext)(SidebarControlsContext); 14412 return activeSidebarControl; 14413 } 14414 14415 // packages/customize-widgets/build-module/components/customize-widgets/use-clear-selected-block.mjs 14416 var import_element59 = __toESM(require_element(), 1); 14417 var import_data14 = __toESM(require_data(), 1); 14418 var import_block_editor9 = __toESM(require_block_editor(), 1); 14419 function useClearSelectedBlock(sidebarControl, popoverRef) { 14420 const { hasSelectedBlock, hasMultiSelection } = (0, import_data14.useSelect)(import_block_editor9.store); 14421 const { clearSelectedBlock } = (0, import_data14.useDispatch)(import_block_editor9.store); 14422 (0, import_element59.useEffect)(() => { 14423 if (popoverRef.current && sidebarControl) { 14424 let handleClearSelectedBlock = function(element) { 14425 if ( 14426 // 1. Make sure there are blocks being selected. 14427 (hasSelectedBlock() || hasMultiSelection()) && // 2. The element should exist in the DOM (not deleted). 14428 element && ownerDocument2.contains(element) && // 3. It should also not exist in the container, the popover, nor the dialog. 14429 !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. 14430 !inspector.expanded() 14431 ) { 14432 clearSelectedBlock(); 14433 } 14434 }, handleMouseDown = function(event) { 14435 handleClearSelectedBlock(event.target); 14436 }, handleBlur = function() { 14437 handleClearSelectedBlock(ownerDocument2.activeElement); 14438 }; 14439 const inspector = sidebarControl.inspector; 14440 const container = sidebarControl.container[0]; 14441 const ownerDocument2 = container.ownerDocument; 14442 const ownerWindow = ownerDocument2.defaultView; 14443 ownerDocument2.addEventListener("mousedown", handleMouseDown); 14444 ownerWindow.addEventListener("blur", handleBlur); 14445 return () => { 14446 ownerDocument2.removeEventListener( 14447 "mousedown", 14448 handleMouseDown 14449 ); 14450 ownerWindow.removeEventListener("blur", handleBlur); 14451 }; 14452 } 14453 }, [ 14454 popoverRef, 14455 sidebarControl, 14456 hasSelectedBlock, 14457 hasMultiSelection, 14458 clearSelectedBlock 14459 ]); 14460 } 14461 14462 // packages/customize-widgets/build-module/components/customize-widgets/index.mjs 14463 var import_jsx_runtime65 = __toESM(require_jsx_runtime(), 1); 14464 function CustomizeWidgets({ 14465 api, 14466 sidebarControls, 14467 blockEditorSettings 14468 }) { 14469 const [activeSidebarControl, setActiveSidebarControl] = (0, import_element60.useState)(null); 14470 const parentContainer = document.getElementById( 14471 "customize-theme-controls" 14472 ); 14473 const popoverRef = (0, import_element60.useRef)(); 14474 const adminPrimary = (0, import_element60.useMemo)(() => getAdminThemeColors().primary, []); 14475 useEnableWpCompatOverlaySlot(); 14476 useClearSelectedBlock(activeSidebarControl, popoverRef); 14477 (0, import_element60.useEffect)(() => { 14478 const unsubscribers = sidebarControls.map( 14479 (sidebarControl) => sidebarControl.subscribe((expanded) => { 14480 if (expanded) { 14481 setActiveSidebarControl(sidebarControl); 14482 } 14483 }) 14484 ); 14485 return () => { 14486 unsubscribers.forEach((unsubscriber) => unsubscriber()); 14487 }; 14488 }, [sidebarControls]); 14489 const activeSidebar = activeSidebarControl && (0, import_element60.createPortal)( 14490 /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(ErrorBoundary, { children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)( 14491 SidebarBlockEditor, 14492 { 14493 blockEditorSettings, 14494 sidebar: activeSidebarControl.sidebarAdapter, 14495 inserter: activeSidebarControl.inserter, 14496 inspector: activeSidebarControl.inspector 14497 }, 14498 activeSidebarControl.id 14499 ) }), 14500 activeSidebarControl.container[0] 14501 ); 14502 const popover = parentContainer && (0, import_element60.createPortal)( 14503 /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "customize-widgets-popover", ref: popoverRef, children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_components7.Popover.Slot, {}) }), 14504 parentContainer 14505 ); 14506 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)( 14507 SidebarControls, 14508 { 14509 sidebarControls, 14510 activeSidebarControl, 14511 children: /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)( 14512 FocusControl, 14513 { 14514 api, 14515 sidebarControls, 14516 children: [ 14517 activeSidebar, 14518 popover 14519 ] 14520 } 14521 ) 14522 } 14523 ) }) }); 14524 } 14525 14526 // packages/customize-widgets/build-module/controls/sidebar-section.mjs 14527 var import_i18n15 = __toESM(require_i18n(), 1); 14528 14529 // packages/customize-widgets/build-module/controls/inspector-section.mjs 14530 function getInspectorSection() { 14531 const { 14532 wp: { customize } 14533 } = window; 14534 return class InspectorSection extends customize.Section { 14535 constructor(id, options) { 14536 super(id, options); 14537 this.parentSection = options.parentSection; 14538 this.returnFocusWhenClose = null; 14539 this._isOpen = false; 14540 } 14541 get isOpen() { 14542 return this._isOpen; 14543 } 14544 set isOpen(value) { 14545 this._isOpen = value; 14546 this.triggerActiveCallbacks(); 14547 } 14548 ready() { 14549 this.contentContainer[0].classList.add( 14550 "customize-widgets-layout__inspector" 14551 ); 14552 } 14553 isContextuallyActive() { 14554 return this.isOpen; 14555 } 14556 onChangeExpanded(expanded, args) { 14557 super.onChangeExpanded(expanded, args); 14558 if (this.parentSection && !args.unchanged) { 14559 if (expanded) { 14560 this.parentSection.collapse({ 14561 manualTransition: true 14562 }); 14563 } else { 14564 this.parentSection.expand({ 14565 manualTransition: true, 14566 completeCallback: () => { 14567 if (this.returnFocusWhenClose && !this.contentContainer[0].contains( 14568 this.returnFocusWhenClose 14569 )) { 14570 this.returnFocusWhenClose.focus(); 14571 } 14572 } 14573 }); 14574 } 14575 } 14576 } 14577 open({ returnFocusWhenClose } = {}) { 14578 this.isOpen = true; 14579 this.returnFocusWhenClose = returnFocusWhenClose; 14580 this.expand({ 14581 allowMultiple: true 14582 }); 14583 } 14584 close() { 14585 this.collapse({ 14586 allowMultiple: true 14587 }); 14588 } 14589 collapse(options) { 14590 this.isOpen = false; 14591 super.collapse(options); 14592 } 14593 triggerActiveCallbacks() { 14594 this.active.callbacks.fireWith(this.active, [false, true]); 14595 } 14596 }; 14597 } 14598 14599 // packages/customize-widgets/build-module/controls/sidebar-section.mjs 14600 var getInspectorSectionId = (sidebarId) => `widgets-inspector-$sidebarId}`; 14601 function getSidebarSection() { 14602 const { 14603 wp: { customize } 14604 } = window; 14605 const reduceMotionMediaQuery = window.matchMedia( 14606 "(prefers-reduced-motion: reduce)" 14607 ); 14608 let isReducedMotion = reduceMotionMediaQuery.matches; 14609 reduceMotionMediaQuery.addEventListener("change", (event) => { 14610 isReducedMotion = event.matches; 14611 }); 14612 return class SidebarSection extends customize.Section { 14613 ready() { 14614 const InspectorSection = getInspectorSection(); 14615 this.inspector = new InspectorSection( 14616 getInspectorSectionId(this.id), 14617 { 14618 title: (0, import_i18n15.__)("Block Settings"), 14619 parentSection: this, 14620 customizeAction: [ 14621 (0, import_i18n15.__)("Customizing"), 14622 (0, import_i18n15.__)("Widgets"), 14623 this.params.title 14624 ].join(" \u25B8 ") 14625 } 14626 ); 14627 customize.section.add(this.inspector); 14628 this.contentContainer[0].classList.add( 14629 "customize-widgets__sidebar-section" 14630 ); 14631 } 14632 hasSubSectionOpened() { 14633 return this.inspector.expanded(); 14634 } 14635 onChangeExpanded(expanded, _args) { 14636 const controls = this.controls(); 14637 const args = { 14638 ..._args, 14639 completeCallback() { 14640 controls.forEach((control) => { 14641 control.onChangeSectionExpanded?.(expanded, args); 14642 }); 14643 _args.completeCallback?.(); 14644 } 14645 }; 14646 if (args.manualTransition) { 14647 if (expanded) { 14648 this.contentContainer.addClass(["busy", "open"]); 14649 this.contentContainer.removeClass("is-sub-section-open"); 14650 this.contentContainer.closest(".wp-full-overlay").addClass("section-open"); 14651 } else { 14652 this.contentContainer.addClass([ 14653 "busy", 14654 "is-sub-section-open" 14655 ]); 14656 this.contentContainer.closest(".wp-full-overlay").addClass("section-open"); 14657 this.contentContainer.removeClass("open"); 14658 } 14659 const handleTransitionEnd = () => { 14660 this.contentContainer.removeClass("busy"); 14661 args.completeCallback(); 14662 }; 14663 if (isReducedMotion) { 14664 handleTransitionEnd(); 14665 } else { 14666 this.contentContainer.one( 14667 "transitionend", 14668 handleTransitionEnd 14669 ); 14670 } 14671 } else { 14672 super.onChangeExpanded(expanded, args); 14673 } 14674 } 14675 }; 14676 } 14677 14678 // packages/customize-widgets/build-module/controls/sidebar-control.mjs 14679 var import_data16 = __toESM(require_data(), 1); 14680 14681 // packages/customize-widgets/build-module/components/sidebar-block-editor/sidebar-adapter.mjs 14682 var { wp } = window; 14683 function parseWidgetId(widgetId) { 14684 const matches = widgetId.match(/^(.+)-(\d+)$/); 14685 if (matches) { 14686 return { 14687 idBase: matches[1], 14688 number: parseInt(matches[2], 10) 14689 }; 14690 } 14691 return { idBase: widgetId }; 14692 } 14693 function widgetIdToSettingId(widgetId) { 14694 const { idBase, number } = parseWidgetId(widgetId); 14695 if (number) { 14696 return `widget_$idBase}[$number}]`; 14697 } 14698 return `widget_$idBase}`; 14699 } 14700 function debounce(leading, callback, timeout) { 14701 let isLeading = false; 14702 let timerID; 14703 function debounced(...args) { 14704 const result = (isLeading ? callback : leading).apply(this, args); 14705 isLeading = true; 14706 clearTimeout(timerID); 14707 timerID = setTimeout(() => { 14708 isLeading = false; 14709 }, timeout); 14710 return result; 14711 } 14712 debounced.cancel = () => { 14713 isLeading = false; 14714 clearTimeout(timerID); 14715 }; 14716 return debounced; 14717 } 14718 var SidebarAdapter = class { 14719 constructor(setting, api) { 14720 this.setting = setting; 14721 this.api = api; 14722 this.locked = false; 14723 this.widgetsCache = /* @__PURE__ */ new WeakMap(); 14724 this.subscribers = /* @__PURE__ */ new Set(); 14725 this.history = [ 14726 this._getWidgetIds().map( 14727 (widgetId) => this.getWidget(widgetId) 14728 ) 14729 ]; 14730 this.historyIndex = 0; 14731 this.historySubscribers = /* @__PURE__ */ new Set(); 14732 this._debounceSetHistory = debounce( 14733 this._pushHistory, 14734 this._replaceHistory, 14735 1e3 14736 ); 14737 this.setting.bind(this._handleSettingChange.bind(this)); 14738 this.api.bind("change", this._handleAllSettingsChange.bind(this)); 14739 this.undo = this.undo.bind(this); 14740 this.redo = this.redo.bind(this); 14741 this.save = this.save.bind(this); 14742 } 14743 subscribe(callback) { 14744 this.subscribers.add(callback); 14745 return () => { 14746 this.subscribers.delete(callback); 14747 }; 14748 } 14749 getWidgets() { 14750 return this.history[this.historyIndex]; 14751 } 14752 _emit(...args) { 14753 for (const callback of this.subscribers) { 14754 callback(...args); 14755 } 14756 } 14757 _getWidgetIds() { 14758 return this.setting.get(); 14759 } 14760 _pushHistory() { 14761 this.history = [ 14762 ...this.history.slice(0, this.historyIndex + 1), 14763 this._getWidgetIds().map( 14764 (widgetId) => this.getWidget(widgetId) 14765 ) 14766 ]; 14767 this.historyIndex += 1; 14768 this.historySubscribers.forEach((listener) => listener()); 14769 } 14770 _replaceHistory() { 14771 this.history[this.historyIndex] = this._getWidgetIds().map( 14772 (widgetId) => this.getWidget(widgetId) 14773 ); 14774 } 14775 _handleSettingChange() { 14776 if (this.locked) { 14777 return; 14778 } 14779 const prevWidgets = this.getWidgets(); 14780 this._pushHistory(); 14781 this._emit(prevWidgets, this.getWidgets()); 14782 } 14783 _handleAllSettingsChange(setting) { 14784 if (this.locked) { 14785 return; 14786 } 14787 if (!setting.id.startsWith("widget_")) { 14788 return; 14789 } 14790 const widgetId = settingIdToWidgetId(setting.id); 14791 if (!this.setting.get().includes(widgetId)) { 14792 return; 14793 } 14794 const prevWidgets = this.getWidgets(); 14795 this._pushHistory(); 14796 this._emit(prevWidgets, this.getWidgets()); 14797 } 14798 _createWidget(widget) { 14799 const widgetModel = wp.customize.Widgets.availableWidgets.findWhere({ 14800 id_base: widget.idBase 14801 }); 14802 let number = widget.number; 14803 if (widgetModel.get("is_multi") && !number) { 14804 widgetModel.set( 14805 "multi_number", 14806 widgetModel.get("multi_number") + 1 14807 ); 14808 number = widgetModel.get("multi_number"); 14809 } 14810 const settingId = number ? `widget_$widget.idBase}[$number}]` : `widget_$widget.idBase}`; 14811 const settingArgs = { 14812 transport: wp.customize.Widgets.data.selectiveRefreshableWidgets[widgetModel.get("id_base")] ? "postMessage" : "refresh", 14813 previewer: this.setting.previewer 14814 }; 14815 const setting = this.api.create( 14816 settingId, 14817 settingId, 14818 "", 14819 settingArgs 14820 ); 14821 setting.set(widget.instance); 14822 const widgetId = settingIdToWidgetId(settingId); 14823 return widgetId; 14824 } 14825 _removeWidget(widget) { 14826 const settingId = widgetIdToSettingId(widget.id); 14827 const setting = this.api(settingId); 14828 if (setting) { 14829 const instance = setting.get(); 14830 this.widgetsCache.delete(instance); 14831 } 14832 this.api.remove(settingId); 14833 } 14834 _updateWidget(widget) { 14835 const prevWidget = this.getWidget(widget.id); 14836 if (prevWidget === widget) { 14837 return widget.id; 14838 } 14839 if (prevWidget.idBase && widget.idBase && prevWidget.idBase === widget.idBase) { 14840 const settingId = widgetIdToSettingId(widget.id); 14841 this.api(settingId).set(widget.instance); 14842 return widget.id; 14843 } 14844 this._removeWidget(widget); 14845 return this._createWidget(widget); 14846 } 14847 getWidget(widgetId) { 14848 if (!widgetId) { 14849 return null; 14850 } 14851 const { idBase, number } = parseWidgetId(widgetId); 14852 const settingId = widgetIdToSettingId(widgetId); 14853 const setting = this.api(settingId); 14854 if (!setting) { 14855 return null; 14856 } 14857 const instance = setting.get(); 14858 if (this.widgetsCache.has(instance)) { 14859 return this.widgetsCache.get(instance); 14860 } 14861 const widget = { 14862 id: widgetId, 14863 idBase, 14864 number, 14865 instance 14866 }; 14867 this.widgetsCache.set(instance, widget); 14868 return widget; 14869 } 14870 _updateWidgets(nextWidgets) { 14871 this.locked = true; 14872 const addedWidgetIds = []; 14873 const nextWidgetIds = nextWidgets.map((nextWidget) => { 14874 if (nextWidget.id && this.getWidget(nextWidget.id)) { 14875 addedWidgetIds.push(null); 14876 return this._updateWidget(nextWidget); 14877 } 14878 const widgetId = this._createWidget(nextWidget); 14879 addedWidgetIds.push(widgetId); 14880 return widgetId; 14881 }); 14882 const deletedWidgets = this.getWidgets().filter( 14883 (widget) => !nextWidgetIds.includes(widget.id) 14884 ); 14885 deletedWidgets.forEach((widget) => this._removeWidget(widget)); 14886 this.setting.set(nextWidgetIds); 14887 this.locked = false; 14888 return addedWidgetIds; 14889 } 14890 setWidgets(nextWidgets) { 14891 const addedWidgetIds = this._updateWidgets(nextWidgets); 14892 this._debounceSetHistory(); 14893 return addedWidgetIds; 14894 } 14895 /** 14896 * Undo/Redo related features 14897 */ 14898 hasUndo() { 14899 return this.historyIndex > 0; 14900 } 14901 hasRedo() { 14902 return this.historyIndex < this.history.length - 1; 14903 } 14904 _seek(historyIndex) { 14905 const currentWidgets = this.getWidgets(); 14906 this.historyIndex = historyIndex; 14907 const widgets = this.history[this.historyIndex]; 14908 this._updateWidgets(widgets); 14909 this._emit(currentWidgets, this.getWidgets()); 14910 this.historySubscribers.forEach((listener) => listener()); 14911 this._debounceSetHistory.cancel(); 14912 } 14913 undo() { 14914 if (!this.hasUndo()) { 14915 return; 14916 } 14917 this._seek(this.historyIndex - 1); 14918 } 14919 redo() { 14920 if (!this.hasRedo()) { 14921 return; 14922 } 14923 this._seek(this.historyIndex + 1); 14924 } 14925 subscribeHistory(listener) { 14926 this.historySubscribers.add(listener); 14927 return () => { 14928 this.historySubscribers.delete(listener); 14929 }; 14930 } 14931 save() { 14932 this.api.previewer.save(); 14933 } 14934 }; 14935 14936 // packages/customize-widgets/build-module/controls/inserter-outer-section.mjs 14937 var import_keycodes5 = __toESM(require_keycodes(), 1); 14938 var import_dom21 = __toESM(require_dom(), 1); 14939 var import_data15 = __toESM(require_data(), 1); 14940 function getInserterOuterSection() { 14941 const { 14942 wp: { customize } 14943 } = window; 14944 const OuterSection = customize.OuterSection; 14945 customize.OuterSection = class extends OuterSection { 14946 onChangeExpanded(expanded, args) { 14947 if (expanded) { 14948 customize.section.each((section) => { 14949 if (section.params.type === "outer" && section.id !== this.id) { 14950 if (section.expanded()) { 14951 section.collapse(); 14952 } 14953 } 14954 }); 14955 } 14956 return super.onChangeExpanded(expanded, args); 14957 } 14958 }; 14959 customize.sectionConstructor.outer = customize.OuterSection; 14960 return class InserterOuterSection extends customize.OuterSection { 14961 constructor(...args) { 14962 super(...args); 14963 this.params.type = "outer"; 14964 this.activeElementBeforeExpanded = null; 14965 const ownerWindow = this.contentContainer[0].ownerDocument.defaultView; 14966 ownerWindow.addEventListener( 14967 "keydown", 14968 (event) => { 14969 if (this.expanded() && (event.keyCode === import_keycodes5.ESCAPE || event.code === "Escape") && !event.defaultPrevented) { 14970 event.preventDefault(); 14971 event.stopPropagation(); 14972 (0, import_data15.dispatch)(store).setIsInserterOpened( 14973 false 14974 ); 14975 } 14976 }, 14977 // Use capture mode to make this run before other event listeners. 14978 true 14979 ); 14980 this.contentContainer.addClass("widgets-inserter"); 14981 this.isFromInternalAction = false; 14982 this.expanded.bind(() => { 14983 if (!this.isFromInternalAction) { 14984 (0, import_data15.dispatch)(store).setIsInserterOpened( 14985 this.expanded() 14986 ); 14987 } 14988 this.isFromInternalAction = false; 14989 }); 14990 } 14991 open() { 14992 if (!this.expanded()) { 14993 const contentContainer = this.contentContainer[0]; 14994 this.activeElementBeforeExpanded = contentContainer.ownerDocument.activeElement; 14995 this.isFromInternalAction = true; 14996 this.expand({ 14997 completeCallback() { 14998 const searchBox = import_dom21.focus.tabbable.find(contentContainer)[1]; 14999 if (searchBox) { 15000 searchBox.focus(); 15001 } 15002 } 15003 }); 15004 } 15005 } 15006 close() { 15007 if (this.expanded()) { 15008 const contentContainer = this.contentContainer[0]; 15009 const activeElement2 = contentContainer.ownerDocument.activeElement; 15010 this.isFromInternalAction = true; 15011 this.collapse({ 15012 completeCallback() { 15013 if (contentContainer.contains(activeElement2)) { 15014 if (this.activeElementBeforeExpanded) { 15015 this.activeElementBeforeExpanded.focus(); 15016 } 15017 } 15018 } 15019 }); 15020 } 15021 } 15022 }; 15023 } 15024 15025 // packages/customize-widgets/build-module/controls/sidebar-control.mjs 15026 var getInserterId = (controlId) => `widgets-inserter-$controlId}`; 15027 function getSidebarControl() { 15028 const { 15029 wp: { customize } 15030 } = window; 15031 return class SidebarControl extends customize.Control { 15032 constructor(...args) { 15033 super(...args); 15034 this.subscribers = /* @__PURE__ */ new Set(); 15035 } 15036 ready() { 15037 const InserterOuterSection = getInserterOuterSection(); 15038 this.inserter = new InserterOuterSection( 15039 getInserterId(this.id), 15040 {} 15041 ); 15042 customize.section.add(this.inserter); 15043 this.sectionInstance = customize.section(this.section()); 15044 this.inspector = this.sectionInstance.inspector; 15045 this.sidebarAdapter = new SidebarAdapter(this.setting, customize); 15046 } 15047 subscribe(callback) { 15048 this.subscribers.add(callback); 15049 return () => { 15050 this.subscribers.delete(callback); 15051 }; 15052 } 15053 onChangeSectionExpanded(expanded, args) { 15054 if (!args.unchanged) { 15055 if (!expanded) { 15056 (0, import_data16.dispatch)(store).setIsInserterOpened( 15057 false 15058 ); 15059 } 15060 this.subscribers.forEach( 15061 (subscriber) => subscriber(expanded, args) 15062 ); 15063 } 15064 } 15065 }; 15066 } 15067 15068 // packages/customize-widgets/build-module/filters/move-to-sidebar.mjs 15069 var import_block_editor10 = __toESM(require_block_editor(), 1); 15070 var import_compose5 = __toESM(require_compose(), 1); 15071 var import_data17 = __toESM(require_data(), 1); 15072 var import_hooks2 = __toESM(require_hooks(), 1); 15073 var import_widgets4 = __toESM(require_widgets(), 1); 15074 var import_jsx_runtime66 = __toESM(require_jsx_runtime(), 1); 15075 var withMoveToSidebarToolbarItem = (0, import_compose5.createHigherOrderComponent)( 15076 (BlockEdit) => (props) => { 15077 let widgetId = (0, import_widgets4.getWidgetIdFromBlock)(props); 15078 const sidebarControls = useSidebarControls(); 15079 const activeSidebarControl = useActiveSidebarControl(); 15080 const hasMultipleSidebars = sidebarControls?.length > 1; 15081 const blockName = props.name; 15082 const clientId = props.clientId; 15083 const canInsertBlockInSidebar = (0, import_data17.useSelect)( 15084 (select) => { 15085 return select(import_block_editor10.store).canInsertBlockType( 15086 blockName, 15087 "" 15088 ); 15089 }, 15090 [blockName] 15091 ); 15092 const block = (0, import_data17.useSelect)( 15093 (select) => select(import_block_editor10.store).getBlock(clientId), 15094 [clientId] 15095 ); 15096 const { removeBlock } = (0, import_data17.useDispatch)(import_block_editor10.store); 15097 const [, focusWidget] = useFocusControl(); 15098 function moveToSidebar(sidebarControlId) { 15099 const newSidebarControl = sidebarControls.find( 15100 (sidebarControl) => sidebarControl.id === sidebarControlId 15101 ); 15102 if (widgetId) { 15103 const oldSetting = activeSidebarControl.setting; 15104 const newSetting = newSidebarControl.setting; 15105 oldSetting(oldSetting().filter((id) => id !== widgetId)); 15106 newSetting([...newSetting(), widgetId]); 15107 } else { 15108 const sidebarAdapter = newSidebarControl.sidebarAdapter; 15109 removeBlock(clientId); 15110 const addedWidgetIds = sidebarAdapter.setWidgets([ 15111 ...sidebarAdapter.getWidgets(), 15112 blockToWidget(block) 15113 ]); 15114 widgetId = addedWidgetIds.reverse().find((id) => !!id); 15115 } 15116 focusWidget(widgetId); 15117 } 15118 return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(import_jsx_runtime66.Fragment, { children: [ 15119 /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(BlockEdit, { ...props }, "edit"), 15120 hasMultipleSidebars && canInsertBlockInSidebar && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_block_editor10.BlockControls, { children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)( 15121 import_widgets4.MoveToWidgetArea, 15122 { 15123 widgetAreas: sidebarControls.map( 15124 (sidebarControl) => ({ 15125 id: sidebarControl.id, 15126 name: sidebarControl.params.label, 15127 description: sidebarControl.params.description 15128 }) 15129 ), 15130 currentWidgetAreaId: activeSidebarControl?.id, 15131 onSelect: moveToSidebar 15132 } 15133 ) }) 15134 ] }); 15135 }, 15136 "withMoveToSidebarToolbarItem" 15137 ); 15138 (0, import_hooks2.addFilter)( 15139 "editor.BlockEdit", 15140 "core/customize-widgets/block-edit", 15141 withMoveToSidebarToolbarItem 15142 ); 15143 15144 // packages/customize-widgets/build-module/filters/replace-media-upload.mjs 15145 var import_hooks3 = __toESM(require_hooks(), 1); 15146 var import_media_utils2 = __toESM(require_media_utils(), 1); 15147 var replaceMediaUpload = () => import_media_utils2.MediaUpload; 15148 (0, import_hooks3.addFilter)( 15149 "editor.MediaUpload", 15150 "core/edit-widgets/replace-media-upload", 15151 replaceMediaUpload 15152 ); 15153 15154 // packages/customize-widgets/build-module/filters/wide-widget-display.mjs 15155 var import_compose6 = __toESM(require_compose(), 1); 15156 var import_hooks4 = __toESM(require_hooks(), 1); 15157 var import_jsx_runtime67 = __toESM(require_jsx_runtime(), 1); 15158 var { wp: wp2 } = window; 15159 var withWideWidgetDisplay = (0, import_compose6.createHigherOrderComponent)( 15160 (BlockEdit) => (props) => { 15161 const { idBase } = props.attributes; 15162 const isWide = wp2.customize.Widgets.data.availableWidgets.find( 15163 (widget) => widget.id_base === idBase 15164 )?.is_wide ?? false; 15165 return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(BlockEdit, { ...props, isWide }, "edit"); 15166 }, 15167 "withWideWidgetDisplay" 15168 ); 15169 (0, import_hooks4.addFilter)( 15170 "editor.BlockEdit", 15171 "core/customize-widgets/wide-widget-display", 15172 withWideWidgetDisplay 15173 ); 15174 15175 // packages/customize-widgets/build-module/index.mjs 15176 var import_jsx_runtime68 = __toESM(require_jsx_runtime(), 1); 15177 var { wp: wp3 } = window; 15178 var DISABLED_BLOCKS = [ 15179 "core/more", 15180 "core/block", 15181 "core/freeform", 15182 "core/template-part" 15183 ]; 15184 function initialize(editorName, blockEditorSettings) { 15185 (0, import_data18.dispatch)(import_preferences4.store).setDefaults("core/customize-widgets", { 15186 fixedToolbar: false, 15187 welcomeGuide: true 15188 }); 15189 (0, import_data18.dispatch)(import_blocks2.store).reapplyBlockTypeFilters(); 15190 const coreBlocks = (0, import_block_library.__experimentalGetCoreBlocks)().filter((block) => { 15191 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")); 15192 }); 15193 (0, import_block_library.registerCoreBlocks)(coreBlocks); 15194 (0, import_widgets5.registerLegacyWidgetBlock)(); 15195 if (false) { 15196 (0, import_block_library.__experimentalRegisterExperimentalCoreBlocks)({ 15197 enableFSEBlocks: ENABLE_EXPERIMENTAL_FSE_BLOCKS 15198 }); 15199 } 15200 (0, import_widgets5.registerLegacyWidgetVariations)(blockEditorSettings); 15201 (0, import_widgets5.registerWidgetGroupBlock)(); 15202 (0, import_blocks2.setFreeformContentHandlerName)("core/html"); 15203 const SidebarControl = getSidebarControl(blockEditorSettings); 15204 wp3.customize.sectionConstructor.sidebar = getSidebarSection(); 15205 wp3.customize.controlConstructor.sidebar_block_editor = SidebarControl; 15206 const container = document.createElement("div"); 15207 document.body.appendChild(container); 15208 wp3.customize.bind("ready", () => { 15209 const sidebarControls = []; 15210 wp3.customize.control.each((control) => { 15211 if (control instanceof SidebarControl) { 15212 sidebarControls.push(control); 15213 } 15214 }); 15215 (0, import_element61.createRoot)(container).render( 15216 /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_element61.StrictMode, { children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)( 15217 CustomizeWidgets, 15218 { 15219 api: wp3.customize, 15220 sidebarControls, 15221 blockEditorSettings 15222 } 15223 ) }) 15224 ); 15225 }); 15226 } 15227 return __toCommonJS(index_exports); 15228 })(); 15229 /*! Bundled license information: 15230 15231 use-sync-external-store/cjs/use-sync-external-store-shim.development.js: 15232 (** 15233 * @license React 15234 * use-sync-external-store-shim.development.js 15235 * 15236 * Copyright (c) Meta Platforms, Inc. and affiliates. 15237 * 15238 * This source code is licensed under the MIT license found in the 15239 * LICENSE file in the root directory of this source tree. 15240 *) 15241 15242 use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js: 15243 (** 15244 * @license React 15245 * use-sync-external-store-shim/with-selector.development.js 15246 * 15247 * Copyright (c) Meta Platforms, Inc. and affiliates. 15248 * 15249 * This source code is licensed under the MIT license found in the 15250 * LICENSE file in the root directory of this source tree. 15251 *) 15252 */ 15253 (window.wp ||= {}).customizeWidgets = wp.customizeWidgets; 15254 })();
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated : Mon Oct 26 08:20:34 2026 | Cross-referenced by PHPXref |