| [ Index ] |
PHP Cross Reference of WordPress Trunk (Updated Daily) |
[Summary view] [Print] [Text view]
1 var __create = Object.create; 2 var __defProp = Object.defineProperty; 3 var __getOwnPropDesc = Object.getOwnPropertyDescriptor; 4 var __getOwnPropNames = Object.getOwnPropertyNames; 5 var __getProtoOf = Object.getPrototypeOf; 6 var __hasOwnProp = Object.prototype.hasOwnProperty; 7 var __commonJS = (cb, mod) => function __require() { 8 return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; 9 }; 10 var __export = (target, all) => { 11 for (var name in all) 12 __defProp(target, name, { get: all[name], enumerable: true }); 13 }; 14 var __copyProps = (to, from, except, desc) => { 15 if (from && typeof from === "object" || typeof from === "function") { 16 for (let key of __getOwnPropNames(from)) 17 if (!__hasOwnProp.call(to, key) && key !== except) 18 __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); 19 } 20 return to; 21 }; 22 var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( 23 // If the importer is in node compatibility mode or this is not an ESM 24 // file that has been converted to a CommonJS file using a Babel- 25 // compatible transform (i.e. "__esModule" has not been set), then set 26 // "default" to the CommonJS "module.exports" for node compatibility. 27 isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, 28 mod 29 )); 30 31 // package-external:@wordpress/i18n 32 var require_i18n = __commonJS({ 33 "package-external:@wordpress/i18n"(exports, module) { 34 module.exports = window.wp.i18n; 35 } 36 }); 37 38 // vendor-external:react 39 var require_react = __commonJS({ 40 "vendor-external:react"(exports, module) { 41 module.exports = window.React; 42 } 43 }); 44 45 // vendor-external:react/jsx-runtime 46 var require_jsx_runtime = __commonJS({ 47 "vendor-external:react/jsx-runtime"(exports, module) { 48 module.exports = window.ReactJSXRuntime; 49 } 50 }); 51 52 // vendor-external:react-dom 53 var require_react_dom = __commonJS({ 54 "vendor-external:react-dom"(exports, module) { 55 module.exports = window.ReactDOM; 56 } 57 }); 58 59 // package-external:@wordpress/element 60 var require_element = __commonJS({ 61 "package-external:@wordpress/element"(exports, module) { 62 module.exports = window.wp.element; 63 } 64 }); 65 66 // package-external:@wordpress/primitives 67 var require_primitives = __commonJS({ 68 "package-external:@wordpress/primitives"(exports, module) { 69 module.exports = window.wp.primitives; 70 } 71 }); 72 73 // 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 74 var require_use_sync_external_store_shim_development = __commonJS({ 75 "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) { 76 "use strict"; 77 (function() { 78 function is(x, y) { 79 return x === y && (0 !== x || 1 / x === 1 / y) || x !== x && y !== y; 80 } 81 function useSyncExternalStore$2(subscribe, getSnapshot) { 82 didWarnOld18Alpha || void 0 === React53.startTransition || (didWarnOld18Alpha = true, console.error( 83 "You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release." 84 )); 85 var value = getSnapshot(); 86 if (!didWarnUncachedGetSnapshot) { 87 var cachedValue = getSnapshot(); 88 objectIs(value, cachedValue) || (console.error( 89 "The result of getSnapshot should be cached to avoid an infinite loop" 90 ), didWarnUncachedGetSnapshot = true); 91 } 92 cachedValue = useState14({ 93 inst: { value, getSnapshot } 94 }); 95 var inst = cachedValue[0].inst, forceUpdate = cachedValue[1]; 96 useLayoutEffect3( 97 function() { 98 inst.value = value; 99 inst.getSnapshot = getSnapshot; 100 checkIfSnapshotChanged(inst) && forceUpdate({ inst }); 101 }, 102 [subscribe, value, getSnapshot] 103 ); 104 useEffect14( 105 function() { 106 checkIfSnapshotChanged(inst) && forceUpdate({ inst }); 107 return subscribe(function() { 108 checkIfSnapshotChanged(inst) && forceUpdate({ inst }); 109 }); 110 }, 111 [subscribe] 112 ); 113 useDebugValue2(value); 114 return value; 115 } 116 function checkIfSnapshotChanged(inst) { 117 var latestGetSnapshot = inst.getSnapshot; 118 inst = inst.value; 119 try { 120 var nextValue = latestGetSnapshot(); 121 return !objectIs(inst, nextValue); 122 } catch (error2) { 123 return true; 124 } 125 } 126 function useSyncExternalStore$1(subscribe, getSnapshot) { 127 return getSnapshot(); 128 } 129 "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error()); 130 var React53 = require_react(), objectIs = "function" === typeof Object.is ? Object.is : is, useState14 = React53.useState, useEffect14 = React53.useEffect, useLayoutEffect3 = React53.useLayoutEffect, useDebugValue2 = React53.useDebugValue, didWarnOld18Alpha = false, didWarnUncachedGetSnapshot = false, shim = "undefined" === typeof window || "undefined" === typeof window.document || "undefined" === typeof window.document.createElement ? useSyncExternalStore$1 : useSyncExternalStore$2; 131 exports.useSyncExternalStore = void 0 !== React53.useSyncExternalStore ? React53.useSyncExternalStore : shim; 132 "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error()); 133 })(); 134 } 135 }); 136 137 // node_modules/.store/use-sync-external-store@1.7.0-jHNF5n8408rkWhZ5NHKclA/node_modules/use-sync-external-store/shim/index.js 138 var require_shim = __commonJS({ 139 "node_modules/.store/use-sync-external-store@1.7.0-jHNF5n8408rkWhZ5NHKclA/node_modules/use-sync-external-store/shim/index.js"(exports, module) { 140 "use strict"; 141 if (false) { 142 module.exports = null; 143 } else { 144 module.exports = require_use_sync_external_store_shim_development(); 145 } 146 } 147 }); 148 149 // node_modules/.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 150 var require_with_selector_development = __commonJS({ 151 "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) { 152 "use strict"; 153 (function() { 154 function is(x, y) { 155 return x === y && (0 !== x || 1 / x === 1 / y) || x !== x && y !== y; 156 } 157 "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error()); 158 var React53 = require_react(), shim = require_shim(), objectIs = "function" === typeof Object.is ? Object.is : is, useSyncExternalStore3 = shim.useSyncExternalStore, useRef22 = React53.useRef, useEffect14 = React53.useEffect, useMemo17 = React53.useMemo, useDebugValue2 = React53.useDebugValue; 159 exports.useSyncExternalStoreWithSelector = function(subscribe, getSnapshot, getServerSnapshot, selector, isEqual) { 160 var instRef = useRef22(null); 161 if (null === instRef.current) { 162 var inst = { hasValue: false, value: null }; 163 instRef.current = inst; 164 } else inst = instRef.current; 165 instRef = useMemo17( 166 function() { 167 function memoizedSelector(nextSnapshot) { 168 if (!hasMemo) { 169 hasMemo = true; 170 memoizedSnapshot = nextSnapshot; 171 nextSnapshot = selector(nextSnapshot); 172 if (void 0 !== isEqual && inst.hasValue) { 173 var currentSelection = inst.value; 174 if (isEqual(currentSelection, nextSnapshot)) 175 return memoizedSelection = currentSelection; 176 } 177 return memoizedSelection = nextSnapshot; 178 } 179 currentSelection = memoizedSelection; 180 if (objectIs(memoizedSnapshot, nextSnapshot)) 181 return currentSelection; 182 var nextSelection = selector(nextSnapshot); 183 if (void 0 !== isEqual && isEqual(currentSelection, nextSelection)) 184 return memoizedSnapshot = nextSnapshot, currentSelection; 185 memoizedSnapshot = nextSnapshot; 186 return memoizedSelection = nextSelection; 187 } 188 var hasMemo = false, memoizedSnapshot, memoizedSelection, maybeGetServerSnapshot = void 0 === getServerSnapshot ? null : getServerSnapshot; 189 return [ 190 function() { 191 return memoizedSelector(getSnapshot()); 192 }, 193 null === maybeGetServerSnapshot ? void 0 : function() { 194 return memoizedSelector(maybeGetServerSnapshot()); 195 } 196 ]; 197 }, 198 [getSnapshot, getServerSnapshot, selector, isEqual] 199 ); 200 var value = useSyncExternalStore3(subscribe, instRef[0], instRef[1]); 201 useEffect14( 202 function() { 203 inst.hasValue = true; 204 inst.value = value; 205 }, 206 [value] 207 ); 208 useDebugValue2(value); 209 return value; 210 }; 211 "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error()); 212 })(); 213 } 214 }); 215 216 // node_modules/.store/use-sync-external-store@1.7.0-jHNF5n8408rkWhZ5NHKclA/node_modules/use-sync-external-store/shim/with-selector.js 217 var require_with_selector = __commonJS({ 218 "node_modules/.store/use-sync-external-store@1.7.0-jHNF5n8408rkWhZ5NHKclA/node_modules/use-sync-external-store/shim/with-selector.js"(exports, module) { 219 "use strict"; 220 if (false) { 221 module.exports = null; 222 } else { 223 module.exports = require_with_selector_development(); 224 } 225 } 226 }); 227 228 // package-external:@wordpress/theme 229 var require_theme = __commonJS({ 230 "package-external:@wordpress/theme"(exports, module) { 231 module.exports = window.wp.theme; 232 } 233 }); 234 235 // package-external:@wordpress/private-apis 236 var require_private_apis = __commonJS({ 237 "package-external:@wordpress/private-apis"(exports, module) { 238 module.exports = window.wp.privateApis; 239 } 240 }); 241 242 // package-external:@wordpress/components 243 var require_components = __commonJS({ 244 "package-external:@wordpress/components"(exports, module) { 245 module.exports = window.wp.components; 246 } 247 }); 248 249 // package-external:@wordpress/data 250 var require_data = __commonJS({ 251 "package-external:@wordpress/data"(exports, module) { 252 module.exports = window.wp.data; 253 } 254 }); 255 256 // package-external:@wordpress/core-data 257 var require_core_data = __commonJS({ 258 "package-external:@wordpress/core-data"(exports, module) { 259 module.exports = window.wp.coreData; 260 } 261 }); 262 263 // package-external:@wordpress/notices 264 var require_notices = __commonJS({ 265 "package-external:@wordpress/notices"(exports, module) { 266 module.exports = window.wp.notices; 267 } 268 }); 269 270 // package-external:@wordpress/url 271 var require_url = __commonJS({ 272 "package-external:@wordpress/url"(exports, module) { 273 module.exports = window.wp.url; 274 } 275 }); 276 277 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useRenderElement.mjs 278 var React4 = __toESM(require_react(), 1); 279 280 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useRefWithInit.mjs 281 var React = __toESM(require_react(), 1); 282 var UNINITIALIZED = {}; 283 function useRefWithInit(init, initArg) { 284 const ref = React.useRef(UNINITIALIZED); 285 if (ref.current === UNINITIALIZED) { 286 ref.current = init(initArg); 287 } 288 return ref; 289 } 290 291 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useMergedRefs.mjs 292 function useMergedRefs(a, b, c, d) { 293 const forkRef = useRefWithInit(createForkRef).current; 294 if (didChange(forkRef, a, b, c, d)) { 295 update(forkRef, [a, b, c, d]); 296 } 297 return forkRef.callback; 298 } 299 function useMergedRefsN(refs) { 300 const forkRef = useRefWithInit(createForkRef).current; 301 if (didChangeN(forkRef, refs)) { 302 update(forkRef, refs); 303 } 304 return forkRef.callback; 305 } 306 function createForkRef() { 307 return { 308 callback: null, 309 cleanup: null, 310 refs: [] 311 }; 312 } 313 function didChange(forkRef, a, b, c, d) { 314 return forkRef.refs[0] !== a || forkRef.refs[1] !== b || forkRef.refs[2] !== c || forkRef.refs[3] !== d; 315 } 316 function didChangeN(forkRef, newRefs) { 317 return forkRef.refs.length !== newRefs.length || forkRef.refs.some((ref, index2) => ref !== newRefs[index2]); 318 } 319 function update(forkRef, refs) { 320 forkRef.refs = refs; 321 if (refs.every((ref) => ref == null)) { 322 forkRef.callback = null; 323 return; 324 } 325 forkRef.callback = (instance) => { 326 if (forkRef.cleanup) { 327 forkRef.cleanup(); 328 forkRef.cleanup = null; 329 } 330 if (instance != null) { 331 const cleanupCallbacks = Array(refs.length).fill(null); 332 for (let i = 0; i < refs.length; i += 1) { 333 const ref = refs[i]; 334 if (ref == null) { 335 continue; 336 } 337 switch (typeof ref) { 338 case "function": { 339 const refCleanup = ref(instance); 340 if (typeof refCleanup === "function") { 341 cleanupCallbacks[i] = refCleanup; 342 } 343 break; 344 } 345 case "object": { 346 ref.current = instance; 347 break; 348 } 349 default: 350 } 351 } 352 forkRef.cleanup = () => { 353 for (let i = 0; i < refs.length; i += 1) { 354 const ref = refs[i]; 355 if (ref == null) { 356 continue; 357 } 358 switch (typeof ref) { 359 case "function": { 360 const cleanupCallback = cleanupCallbacks[i]; 361 if (typeof cleanupCallback === "function") { 362 cleanupCallback(); 363 } else { 364 void ref(null); 365 } 366 break; 367 } 368 case "object": { 369 ref.current = null; 370 break; 371 } 372 default: 373 } 374 } 375 }; 376 } 377 }; 378 } 379 380 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/getReactElementRef.mjs 381 var React3 = __toESM(require_react(), 1); 382 383 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/reactVersion.mjs 384 var React2 = __toESM(require_react(), 1); 385 var majorVersion = parseInt(React2.version, 10); 386 function isReactVersionAtLeast(reactVersionToCheck) { 387 return majorVersion >= reactVersionToCheck; 388 } 389 390 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/getReactElementRef.mjs 391 function getReactElementRef(element) { 392 if (!/* @__PURE__ */ React3.isValidElement(element)) { 393 return null; 394 } 395 const reactElement = element; 396 const propsWithRef = reactElement.props; 397 return (isReactVersionAtLeast(19) ? propsWithRef?.ref : reactElement.ref) ?? null; 398 } 399 400 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/mergeObjects.mjs 401 function mergeObjects(a, b) { 402 if (a && !b) { 403 return a; 404 } 405 if (!a && b) { 406 return b; 407 } 408 if (a || b) { 409 return { 410 ...a, 411 ...b 412 }; 413 } 414 return void 0; 415 } 416 417 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/createLogOnce.mjs 418 var loggedMessages; 419 if (true) { 420 loggedMessages = /* @__PURE__ */ new Set(); 421 } 422 function createLogOnce(severity, prefix) { 423 return function logOnce(...messages) { 424 if (true) { 425 const message = messages.join(" "); 426 const output = prefix ? `$prefix}: $message}` : message; 427 const key = `$severity}:$output}`; 428 if (!loggedMessages.has(key)) { 429 loggedMessages.add(key); 430 if (severity === "warn") { 431 console.warn(output); 432 } else { 433 console.error(output); 434 } 435 } 436 } 437 }; 438 } 439 440 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/warn.mjs 441 var warn = createLogOnce("warn", "Base UI"); 442 443 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/empty.mjs 444 function NOOP() { 445 } 446 var EMPTY_ARRAY = Object.freeze([]); 447 var EMPTY_OBJECT = Object.freeze({}); 448 449 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/getStateAttributesProps.mjs 450 function getStateAttributesProps(state, customMapping) { 451 const props = {}; 452 for (const key in state) { 453 const value = state[key]; 454 if (customMapping?.hasOwnProperty(key)) { 455 const customProps = customMapping[key](value); 456 if (customProps != null) { 457 Object.assign(props, customProps); 458 } 459 continue; 460 } 461 if (value === true) { 462 props[`data-$key.toLowerCase()}`] = ""; 463 } else if (value) { 464 props[`data-$key.toLowerCase()}`] = value.toString(); 465 } 466 } 467 return props; 468 } 469 470 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/resolveClassName.mjs 471 function resolveClassName(className, state) { 472 return typeof className === "function" ? className(state) : className; 473 } 474 475 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/resolveStyle.mjs 476 function resolveStyle(style, state) { 477 return typeof style === "function" ? style(state) : style; 478 } 479 480 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/merge-props/mergeProps.mjs 481 var EMPTY_PROPS = {}; 482 function mergeProps(a, b, c, d, e) { 483 if (!c && !d && !e && !a) { 484 return createInitialMergedProps(b); 485 } 486 let merged = createInitialMergedProps(a); 487 if (b) { 488 merged = mergeInto(merged, b); 489 } 490 if (c) { 491 merged = mergeInto(merged, c); 492 } 493 if (d) { 494 merged = mergeInto(merged, d); 495 } 496 if (e) { 497 merged = mergeInto(merged, e); 498 } 499 return merged; 500 } 501 function mergePropsN(props) { 502 if (props.length === 0) { 503 return EMPTY_PROPS; 504 } 505 if (props.length === 1) { 506 return createInitialMergedProps(props[0]); 507 } 508 let merged = createInitialMergedProps(props[0]); 509 for (let i = 1; i < props.length; i += 1) { 510 merged = mergeInto(merged, props[i]); 511 } 512 return merged; 513 } 514 function createInitialMergedProps(inputProps) { 515 if (isPropsGetter(inputProps)) { 516 return { 517 ...inputProps(EMPTY_PROPS) 518 }; 519 } 520 return copyInitialProps(inputProps); 521 } 522 function mergeInto(merged, inputProps) { 523 if (isPropsGetter(inputProps)) { 524 return inputProps(merged); 525 } 526 return mutablyMergeInto(merged, inputProps); 527 } 528 function copyInitialProps(inputProps) { 529 const copiedProps = { 530 ...inputProps 531 }; 532 for (const propName in copiedProps) { 533 const propValue = copiedProps[propName]; 534 if (isEventHandler(propName, propValue)) { 535 copiedProps[propName] = wrapEventHandler(propValue); 536 } 537 } 538 return copiedProps; 539 } 540 function mutablyMergeInto(mergedProps, externalProps) { 541 if (!externalProps) { 542 return mergedProps; 543 } 544 for (const propName in externalProps) { 545 const externalPropValue = externalProps[propName]; 546 switch (propName) { 547 case "style": { 548 mergedProps[propName] = mergeObjects(mergedProps.style, externalPropValue); 549 break; 550 } 551 case "className": { 552 mergedProps[propName] = mergeClassNames(mergedProps.className, externalPropValue); 553 break; 554 } 555 default: { 556 if (isEventHandler(propName, externalPropValue)) { 557 mergedProps[propName] = mergeEventHandlers(mergedProps[propName], externalPropValue); 558 } else { 559 mergedProps[propName] = externalPropValue; 560 } 561 } 562 } 563 } 564 return mergedProps; 565 } 566 function isEventHandler(key, value) { 567 const code0 = key.charCodeAt(0); 568 const code1 = key.charCodeAt(1); 569 const code2 = key.charCodeAt(2); 570 return code0 === 111 && code1 === 110 && code2 >= 65 && code2 <= 90 && (typeof value === "function" || typeof value === "undefined"); 571 } 572 function isPropsGetter(inputProps) { 573 return typeof inputProps === "function"; 574 } 575 function mergeEventHandlers(ourHandler, theirHandler) { 576 if (!theirHandler) { 577 return ourHandler; 578 } 579 if (!ourHandler) { 580 return wrapEventHandler(theirHandler); 581 } 582 return (...args) => { 583 const event = args[0]; 584 if (isSyntheticEvent(event)) { 585 const baseUIEvent = event; 586 makeEventPreventable(baseUIEvent); 587 const result2 = theirHandler(...args); 588 if (!baseUIEvent.baseUIHandlerPrevented) { 589 ourHandler?.(...args); 590 } 591 return result2; 592 } 593 const result = theirHandler(...args); 594 ourHandler?.(...args); 595 return result; 596 }; 597 } 598 function wrapEventHandler(handler) { 599 if (!handler) { 600 return handler; 601 } 602 return (...args) => { 603 const event = args[0]; 604 if (isSyntheticEvent(event)) { 605 makeEventPreventable(event); 606 } 607 return handler(...args); 608 }; 609 } 610 function makeEventPreventable(event) { 611 event.preventBaseUIHandler = () => { 612 event.baseUIHandlerPrevented = true; 613 }; 614 return event; 615 } 616 function mergeClassNames(ourClassName, theirClassName) { 617 if (theirClassName) { 618 if (ourClassName) { 619 return theirClassName + " " + ourClassName; 620 } 621 return theirClassName; 622 } 623 return ourClassName; 624 } 625 function isSyntheticEvent(event) { 626 return event != null && typeof event === "object" && "nativeEvent" in event; 627 } 628 629 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useRenderElement.mjs 630 var import_react = __toESM(require_react(), 1); 631 function useRenderElement(element, componentProps, params = {}) { 632 let renderProp = componentProps.render; 633 if (params.enabled !== false) { 634 renderProp = unwrapLazyRenderProp(renderProp); 635 } 636 const outProps = useRenderElementProps(componentProps, params, renderProp); 637 if (params.enabled === false) { 638 return null; 639 } 640 const state = params.state ?? EMPTY_OBJECT; 641 return evaluateRenderProp(element, renderProp, outProps, state); 642 } 643 function useRenderElementProps(componentProps, params, renderProp) { 644 const { 645 className: classNameProp, 646 style: styleProp 647 } = componentProps; 648 const { 649 state = EMPTY_OBJECT, 650 ref, 651 props, 652 stateAttributesMapping, 653 enabled = true 654 } = params; 655 const className = enabled ? resolveClassName(classNameProp, state) : void 0; 656 const style = enabled ? resolveStyle(styleProp, state) : void 0; 657 const stateProps = enabled ? getStateAttributesProps(state, stateAttributesMapping) : EMPTY_OBJECT; 658 const resolvedProps = enabled && props ? resolveRenderFunctionProps(props) : void 0; 659 const outProps = enabled ? mergeObjects(stateProps, resolvedProps) ?? {} : EMPTY_OBJECT; 660 if (typeof document !== "undefined") { 661 if (!enabled) { 662 void useMergedRefs(null, null); 663 } else if (Array.isArray(ref)) { 664 outProps.ref = useMergedRefsN([outProps.ref, getReactElementRef(renderProp), ...ref]); 665 } else { 666 outProps.ref = useMergedRefs(outProps.ref, getReactElementRef(renderProp), ref); 667 } 668 } 669 if (!enabled) { 670 return EMPTY_OBJECT; 671 } 672 if (className !== void 0) { 673 outProps.className = mergeClassNames(outProps.className, className); 674 } 675 if (style !== void 0) { 676 outProps.style = mergeObjects(outProps.style, style); 677 } 678 return outProps; 679 } 680 function resolveRenderFunctionProps(props) { 681 if (Array.isArray(props)) { 682 return mergePropsN(props); 683 } 684 return mergeProps(void 0, props); 685 } 686 var REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for("react.lazy"); 687 var COMPONENT_IDENTIFIER_PATTERN = /^[A-Z][A-Za-z0-9$]*$/; 688 var LOWERCASE_CHARACTER_PATTERN = /[a-z]/; 689 function unwrapLazyRenderProp(render) { 690 if (render?.$$typeof !== REACT_LAZY_TYPE) { 691 return render; 692 } 693 const unwrapped = React4.Children.toArray(render)[0]; 694 return /* @__PURE__ */ React4.isValidElement(unwrapped) ? unwrapped : render; 695 } 696 function evaluateRenderProp(element, render, props, state) { 697 if (render) { 698 if (typeof render === "function") { 699 if (true) { 700 warnIfRenderPropLooksLikeComponent(render); 701 } 702 return render(props, state); 703 } 704 const mergedProps = mergeProps(props, render.props); 705 mergedProps.ref = props.ref; 706 if (true) { 707 if (!/* @__PURE__ */ React4.isValidElement(render)) { 708 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")); 709 } 710 } 711 return /* @__PURE__ */ React4.cloneElement(render, mergedProps); 712 } 713 return renderTag(element, props); 714 } 715 function warnIfRenderPropLooksLikeComponent(renderFn) { 716 const functionName = renderFn.name; 717 if (functionName.length === 0) { 718 return; 719 } 720 if (!COMPONENT_IDENTIFIER_PATTERN.test(functionName)) { 721 return; 722 } 723 if (!LOWERCASE_CHARACTER_PATTERN.test(functionName)) { 724 return; 725 } 726 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"); 727 } 728 function renderTag(Tag, props) { 729 if (Tag === "button") { 730 return /* @__PURE__ */ (0, import_react.createElement)("button", { 731 type: "button", 732 ...props, 733 key: props.key 734 }); 735 } 736 if (Tag === "img") { 737 return /* @__PURE__ */ (0, import_react.createElement)("img", { 738 alt: "", 739 ...props, 740 key: props.key 741 }); 742 } 743 return /* @__PURE__ */ React4.createElement(Tag, props); 744 } 745 746 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/safeReact.mjs 747 var React5 = __toESM(require_react(), 1); 748 var SafeReact = { 749 ...React5 750 }; 751 752 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useStableCallback.mjs 753 var useInsertionEffect = SafeReact.useInsertionEffect; 754 var useSafeInsertionEffect = ( 755 // React 17 doesn't have useInsertionEffect. 756 useInsertionEffect && // Preact replaces useInsertionEffect with useLayoutEffect and fires too late. 757 useInsertionEffect !== SafeReact.useLayoutEffect ? useInsertionEffect : (fn) => fn() 758 ); 759 function useStableCallback(callback) { 760 const stable = useRefWithInit(createStableCallback).current; 761 stable.next = callback; 762 useSafeInsertionEffect(stable.effect); 763 return stable.trampoline; 764 } 765 function createStableCallback() { 766 const stable = { 767 next: void 0, 768 callback: assertNotCalled, 769 trampoline: (...args) => stable.callback?.(...args), 770 effect: () => { 771 stable.callback = stable.next; 772 } 773 }; 774 return stable; 775 } 776 function assertNotCalled() { 777 if (true) { 778 throw ( 779 /* minify-error-disabled */ 780 new Error("Base UI: Cannot call an event handler while rendering.") 781 ); 782 } 783 } 784 785 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useIsoLayoutEffect.mjs 786 var React6 = __toESM(require_react(), 1); 787 var noop = () => { 788 }; 789 var useIsoLayoutEffect = typeof document !== "undefined" ? React6.useLayoutEffect : noop; 790 791 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useOpenChangeComplete.mjs 792 var React8 = __toESM(require_react(), 1); 793 794 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useAnimationsFinished.mjs 795 var ReactDOM = __toESM(require_react_dom(), 1); 796 797 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useOnMount.mjs 798 var React7 = __toESM(require_react(), 1); 799 function useOnMount(fn) { 800 React7.useEffect(fn, EMPTY_ARRAY); 801 } 802 803 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useAnimationFrame.mjs 804 var EMPTY = null; 805 var LAST_RAF = globalThis.requestAnimationFrame; 806 var Scheduler = class { 807 /* This implementation uses an array as a backing data-structure for frame callbacks. 808 * It allows `O(1)` callback cancelling by inserting a `null` in the array, though it 809 * never calls the native `cancelAnimationFrame` if there are no frames left. This can 810 * be much more efficient if there is a call pattern that alterns as 811 * "request-cancel-request-cancel-…". 812 * But in the case of "request-request-…-cancel-cancel-…", it leaves the final animation 813 * frame to run anyway. We turn that frame into a `O(1)` no-op via `callbacksCount`. */ 814 callbacks = []; 815 callbacksCount = 0; 816 nextId = 1; 817 startId = 1; 818 isScheduled = false; 819 tick = (timestamp) => { 820 this.isScheduled = false; 821 const currentCallbacks = this.callbacks; 822 const currentCallbacksCount = this.callbacksCount; 823 this.callbacks = []; 824 this.callbacksCount = 0; 825 this.startId = this.nextId; 826 if (currentCallbacksCount > 0) { 827 for (let i = 0; i < currentCallbacks.length; i += 1) { 828 currentCallbacks[i]?.(timestamp); 829 } 830 } 831 }; 832 request(fn) { 833 const id = this.nextId; 834 this.nextId += 1; 835 this.callbacks.push(fn); 836 this.callbacksCount += 1; 837 const didRAFChange = LAST_RAF !== requestAnimationFrame && (LAST_RAF = requestAnimationFrame, true); 838 if (!this.isScheduled || didRAFChange) { 839 requestAnimationFrame(this.tick); 840 this.isScheduled = true; 841 } 842 return id; 843 } 844 cancel(id) { 845 const index2 = id - this.startId; 846 if (index2 < 0 || index2 >= this.callbacks.length) { 847 return; 848 } 849 if (this.callbacks[index2] === null) { 850 return; 851 } 852 this.callbacks[index2] = null; 853 this.callbacksCount -= 1; 854 } 855 }; 856 var scheduler = new Scheduler(); 857 var AnimationFrame = class _AnimationFrame { 858 static create() { 859 return new _AnimationFrame(); 860 } 861 static request(fn) { 862 return scheduler.request(fn); 863 } 864 static cancel(id) { 865 return scheduler.cancel(id); 866 } 867 currentId = EMPTY; 868 /** 869 * Executes `fn` after `delay`, clearing any previously scheduled call. 870 */ 871 request(fn) { 872 this.cancel(); 873 this.currentId = scheduler.request(() => { 874 this.currentId = EMPTY; 875 fn(); 876 }); 877 } 878 cancel = () => { 879 if (this.currentId !== EMPTY) { 880 scheduler.cancel(this.currentId); 881 this.currentId = EMPTY; 882 } 883 }; 884 disposeEffect = () => { 885 return this.cancel; 886 }; 887 }; 888 function useAnimationFrame() { 889 const timeout = useRefWithInit(AnimationFrame.create).current; 890 useOnMount(timeout.disposeEffect); 891 return timeout; 892 } 893 894 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/resolveRef.mjs 895 function resolveRef(maybeRef) { 896 if (maybeRef == null) { 897 return maybeRef; 898 } 899 return "current" in maybeRef ? maybeRef.current : maybeRef; 900 } 901 902 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/getFiniteAnimations.mjs 903 function getFiniteAnimations(element, options) { 904 return element.getAnimations(options).filter((animation) => { 905 const timing = animation.effect?.getTiming(); 906 return timing?.duration !== Infinity && timing?.iterations !== Infinity; 907 }); 908 } 909 910 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/TransitionStatusDataAttributes.mjs 911 var startingStyle = "data-starting-style"; 912 var endingStyle = "data-ending-style"; 913 914 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useAnimationsFinished.mjs 915 var pendingCallbacks = null; 916 function flushBeforePaint(fn) { 917 if (!pendingCallbacks) { 918 const callbacks = []; 919 pendingCallbacks = callbacks; 920 queueMicrotask(() => { 921 pendingCallbacks = null; 922 ReactDOM.flushSync(() => { 923 for (const callback of callbacks) { 924 callback(); 925 } 926 }); 927 }); 928 } 929 pendingCallbacks.push(fn); 930 } 931 function useAnimationsFinished(elementOrRef, waitForStartingStyleRemoved = false, batch = false) { 932 const frame = useAnimationFrame(); 933 return useStableCallback((fnToExecute, signal = null) => { 934 frame.cancel(); 935 const element = resolveRef(elementOrRef); 936 if (element == null) { 937 return; 938 } 939 const resolvedElement = element; 940 const done = () => { 941 if (!batch) { 942 ReactDOM.flushSync(fnToExecute); 943 return; 944 } 945 flushBeforePaint(() => { 946 if (!signal?.aborted) { 947 fnToExecute(); 948 } 949 }); 950 }; 951 if (typeof resolvedElement.getAnimations !== "function" || globalThis.BASE_UI_ANIMATIONS_DISABLED) { 952 fnToExecute(); 953 return; 954 } 955 function exec() { 956 Promise.all(getFiniteAnimations(resolvedElement).map((animation) => animation.finished.then(NOOP))).then(() => { 957 if (!signal?.aborted) { 958 done(); 959 } 960 }, () => { 961 if (signal?.aborted) { 962 return; 963 } 964 const currentAnimations = getFiniteAnimations(resolvedElement); 965 if (currentAnimations.some((animation) => animation.pending || animation.playState !== "finished")) { 966 exec(); 967 return; 968 } 969 done(); 970 }); 971 } 972 if (waitForStartingStyleRemoved) { 973 const startingStyleAttribute = startingStyle; 974 if (!resolvedElement.hasAttribute(startingStyleAttribute)) { 975 frame.request(exec); 976 return; 977 } 978 const attributeObserver = new MutationObserver(() => { 979 if (!resolvedElement.hasAttribute(startingStyleAttribute)) { 980 attributeObserver.disconnect(); 981 exec(); 982 } 983 }); 984 attributeObserver.observe(resolvedElement, { 985 attributes: true, 986 attributeFilter: [startingStyleAttribute] 987 }); 988 signal?.addEventListener("abort", () => attributeObserver.disconnect(), { 989 once: true 990 }); 991 return; 992 } 993 frame.request(exec); 994 }); 995 } 996 997 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useOpenChangeComplete.mjs 998 function useOpenChangeComplete(parameters) { 999 const { 1000 enabled = true, 1001 open: open2, 1002 ref, 1003 batch = false, 1004 onComplete: onCompleteParam 1005 } = parameters; 1006 const onComplete = useStableCallback(onCompleteParam); 1007 const runOnceAnimationsFinish = useAnimationsFinished(ref, open2, batch); 1008 React8.useEffect(() => { 1009 if (!enabled) { 1010 return void 0; 1011 } 1012 const abortController = new AbortController(); 1013 runOnceAnimationsFinish(onComplete, abortController.signal); 1014 return () => { 1015 abortController.abort(); 1016 }; 1017 }, [enabled, open2, onComplete, runOnceAnimationsFinish]); 1018 } 1019 1020 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/stateAttributesMapping.mjs 1021 var STARTING_HOOK = { 1022 [startingStyle]: "" 1023 }; 1024 var ENDING_HOOK = { 1025 [endingStyle]: "" 1026 }; 1027 var transitionStatusMapping = { 1028 transitionStatus(value) { 1029 if (value === "starting") { 1030 return STARTING_HOOK; 1031 } 1032 if (value === "ending") { 1033 return ENDING_HOOK; 1034 } 1035 return null; 1036 } 1037 }; 1038 1039 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useTransitionStatus.mjs 1040 var React9 = __toESM(require_react(), 1); 1041 function useTransitionStatus(open2, enableIdleState = false, deferEndingState = false, animateInitialOpen = false) { 1042 const [transitionStatus, setTransitionStatus] = React9.useState(open2 && enableIdleState ? "idle" : void 0); 1043 const [mounted, setMounted] = React9.useState(open2 && !animateInitialOpen); 1044 if (open2 && !mounted) { 1045 setMounted(true); 1046 setTransitionStatus("starting"); 1047 } 1048 if (!open2 && mounted && transitionStatus !== "ending" && !deferEndingState) { 1049 setTransitionStatus("ending"); 1050 } 1051 if (!open2 && !mounted && transitionStatus === "ending") { 1052 setTransitionStatus(void 0); 1053 } 1054 useIsoLayoutEffect(() => { 1055 if (!open2 && mounted && transitionStatus !== "ending" && deferEndingState) { 1056 const frame = AnimationFrame.request(() => { 1057 setTransitionStatus("ending"); 1058 }); 1059 return () => { 1060 AnimationFrame.cancel(frame); 1061 }; 1062 } 1063 return void 0; 1064 }, [open2, mounted, transitionStatus, deferEndingState]); 1065 useIsoLayoutEffect(() => { 1066 if (!open2 || enableIdleState || transitionStatus === void 0) { 1067 return void 0; 1068 } 1069 const frame = AnimationFrame.request(() => { 1070 setTransitionStatus(void 0); 1071 }); 1072 return () => { 1073 AnimationFrame.cancel(frame); 1074 }; 1075 }, [enableIdleState, open2, transitionStatus]); 1076 useIsoLayoutEffect(() => { 1077 if (!open2 || !enableIdleState) { 1078 return void 0; 1079 } 1080 if (open2 && mounted && transitionStatus !== "idle") { 1081 setTransitionStatus("starting"); 1082 } 1083 const frame = AnimationFrame.request(() => { 1084 setTransitionStatus("idle"); 1085 }); 1086 return () => { 1087 AnimationFrame.cancel(frame); 1088 }; 1089 }, [enableIdleState, open2, mounted, transitionStatus]); 1090 return { 1091 mounted, 1092 setMounted, 1093 transitionStatus 1094 }; 1095 } 1096 1097 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useTimeout.mjs 1098 var EMPTY2 = 0; 1099 var Timeout = class _Timeout { 1100 static create() { 1101 return new _Timeout(); 1102 } 1103 currentId = EMPTY2; 1104 /** 1105 * Executes `fn` after `delay`, clearing any previously scheduled call. 1106 */ 1107 start(delay, fn) { 1108 this.clear(); 1109 this.currentId = setTimeout(() => { 1110 this.currentId = EMPTY2; 1111 fn(); 1112 }, delay); 1113 } 1114 isStarted() { 1115 return this.currentId !== EMPTY2; 1116 } 1117 clear = () => { 1118 if (this.currentId !== EMPTY2) { 1119 clearTimeout(this.currentId); 1120 this.currentId = EMPTY2; 1121 } 1122 }; 1123 disposeEffect = () => { 1124 return this.clear; 1125 }; 1126 }; 1127 function useTimeout() { 1128 const timeout = useRefWithInit(Timeout.create).current; 1129 useOnMount(timeout.disposeEffect); 1130 return timeout; 1131 } 1132 1133 // node_modules/.store/clsx@2.1.1-XOLP1vUL9vEGfpiXm37fAw/node_modules/clsx/dist/clsx.mjs 1134 function r(e) { 1135 var t, f, n = ""; 1136 if ("string" == typeof e || "number" == typeof e) n += e; 1137 else if ("object" == typeof e) if (Array.isArray(e)) { 1138 var o = e.length; 1139 for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f); 1140 } else for (f in e) e[f] && (n && (n += " "), n += f); 1141 return n; 1142 } 1143 function clsx() { 1144 for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t); 1145 return n; 1146 } 1147 var clsx_default = clsx; 1148 1149 // packages/ui/build-module/icon/icon.mjs 1150 var import_element = __toESM(require_element(), 1); 1151 var import_primitives = __toESM(require_primitives(), 1); 1152 var import_jsx_runtime = __toESM(require_jsx_runtime(), 1); 1153 var Icon = (0, import_element.forwardRef)( 1154 function UnforwardedIcon({ icon, size: size4 = 24, style, ...restProps }, ref) { 1155 const mergedStyle = icon.props.style || style ? { ...icon.props.style, ...style } : void 0; 1156 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)( 1157 import_primitives.SVG, 1158 { 1159 ref, 1160 ...icon.props, 1161 ...restProps, 1162 ...mergedStyle ? { style: mergedStyle } : {}, 1163 width: size4, 1164 height: size4 1165 } 1166 ); 1167 } 1168 ); 1169 1170 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/error.mjs 1171 var error = createLogOnce("error", "Base UI"); 1172 1173 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useId.mjs 1174 var React11 = __toESM(require_react(), 1); 1175 1176 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useForcedRerendering.mjs 1177 var React10 = __toESM(require_react(), 1); 1178 function useForcedRerendering() { 1179 const [, setState] = React10.useState({}); 1180 return React10.useCallback(() => { 1181 setState({}); 1182 }, []); 1183 } 1184 1185 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useId.mjs 1186 var globalId = 0; 1187 function useGlobalId(idOverride, prefix = "mui") { 1188 const defaultId = React11.useRef(void 0); 1189 const forceRerender = useForcedRerendering(); 1190 const id = idOverride ?? defaultId.current; 1191 React11.useEffect(() => { 1192 if (defaultId.current == null) { 1193 globalId += 1; 1194 defaultId.current = `$prefix}-$globalId}`; 1195 if (idOverride == null) { 1196 forceRerender(); 1197 } 1198 } 1199 }, [idOverride, prefix, forceRerender]); 1200 return id; 1201 } 1202 var maybeReactUseId = SafeReact.useId; 1203 function useId(idOverride, prefix) { 1204 if (maybeReactUseId !== void 0) { 1205 const reactId = maybeReactUseId(); 1206 return idOverride ?? (prefix ? `$prefix}-$reactId}` : reactId); 1207 } 1208 return useGlobalId(idOverride, prefix); 1209 } 1210 1211 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useBaseUiId.mjs 1212 function useBaseUiId(idOverride) { 1213 return useId(idOverride, "base-ui"); 1214 } 1215 1216 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/createBaseUIEventDetails.mjs 1217 function createChangeEventDetails(reason, event, trigger, customProperties) { 1218 let canceled = false; 1219 let allowPropagation = false; 1220 const custom = customProperties ?? EMPTY_OBJECT; 1221 const details = { 1222 reason, 1223 event: event ?? new Event("base-ui"), 1224 cancel() { 1225 canceled = true; 1226 }, 1227 allowPropagation() { 1228 allowPropagation = true; 1229 }, 1230 get isCanceled() { 1231 return canceled; 1232 }, 1233 get isPropagationAllowed() { 1234 return allowPropagation; 1235 }, 1236 trigger, 1237 ...custom 1238 }; 1239 return details; 1240 } 1241 1242 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/reason-parts.mjs 1243 var reason_parts_exports = {}; 1244 __export(reason_parts_exports, { 1245 cancelOpen: () => cancelOpen, 1246 chipRemovePress: () => chipRemovePress, 1247 clearPress: () => clearPress, 1248 closePress: () => closePress, 1249 closeWatcher: () => closeWatcher, 1250 decrementPress: () => decrementPress, 1251 disabled: () => disabled, 1252 drag: () => drag, 1253 escapeKey: () => escapeKey, 1254 focusOut: () => focusOut, 1255 imperativeAction: () => imperativeAction, 1256 incrementPress: () => incrementPress, 1257 initial: () => initial, 1258 inputBlur: () => inputBlur, 1259 inputChange: () => inputChange, 1260 inputClear: () => inputClear, 1261 inputPaste: () => inputPaste, 1262 inputPress: () => inputPress, 1263 itemPress: () => itemPress, 1264 keyboard: () => keyboard, 1265 linkPress: () => linkPress, 1266 listNavigation: () => listNavigation, 1267 missing: () => missing, 1268 none: () => none, 1269 outsidePress: () => outsidePress, 1270 pointer: () => pointer, 1271 popupClose: () => popupClose, 1272 scrub: () => scrub, 1273 siblingOpen: () => siblingOpen, 1274 swipe: () => swipe, 1275 trackPress: () => trackPress, 1276 triggerFocus: () => triggerFocus, 1277 triggerHover: () => triggerHover, 1278 triggerPress: () => triggerPress, 1279 wheel: () => wheel, 1280 windowResize: () => windowResize 1281 }); 1282 var none = "none"; 1283 var triggerPress = "trigger-press"; 1284 var triggerHover = "trigger-hover"; 1285 var triggerFocus = "trigger-focus"; 1286 var outsidePress = "outside-press"; 1287 var itemPress = "item-press"; 1288 var closePress = "close-press"; 1289 var linkPress = "link-press"; 1290 var clearPress = "clear-press"; 1291 var chipRemovePress = "chip-remove-press"; 1292 var trackPress = "track-press"; 1293 var incrementPress = "increment-press"; 1294 var decrementPress = "decrement-press"; 1295 var inputChange = "input-change"; 1296 var inputClear = "input-clear"; 1297 var inputBlur = "input-blur"; 1298 var inputPaste = "input-paste"; 1299 var inputPress = "input-press"; 1300 var focusOut = "focus-out"; 1301 var escapeKey = "escape-key"; 1302 var closeWatcher = "close-watcher"; 1303 var listNavigation = "list-navigation"; 1304 var keyboard = "keyboard"; 1305 var pointer = "pointer"; 1306 var drag = "drag"; 1307 var wheel = "wheel"; 1308 var scrub = "scrub"; 1309 var popupClose = "popup-close"; 1310 var cancelOpen = "cancel-open"; 1311 var siblingOpen = "sibling-open"; 1312 var disabled = "disabled"; 1313 var missing = "missing"; 1314 var initial = "initial"; 1315 var imperativeAction = "imperative-action"; 1316 var swipe = "swipe"; 1317 var windowResize = "window-resize"; 1318 1319 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/use-button/useButton.mjs 1320 var React14 = __toESM(require_react(), 1); 1321 1322 // node_modules/.store/@floating-ui/utils@0.2.12-gOxTzMf36nCrbeHpEew-rw/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs 1323 function hasWindow() { 1324 return typeof window !== "undefined"; 1325 } 1326 function getNodeName(node) { 1327 if (isNode(node)) { 1328 return (node.nodeName || "").toLowerCase(); 1329 } 1330 return "#document"; 1331 } 1332 function getWindow(node) { 1333 var _node$ownerDocument; 1334 return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window; 1335 } 1336 function getDocumentElement(node) { 1337 var _ref; 1338 return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement; 1339 } 1340 function isNode(value) { 1341 if (!hasWindow()) { 1342 return false; 1343 } 1344 return value instanceof Node || value instanceof getWindow(value).Node; 1345 } 1346 function isElement(value) { 1347 if (!hasWindow()) { 1348 return false; 1349 } 1350 return value instanceof Element || value instanceof getWindow(value).Element; 1351 } 1352 function isHTMLElement(value) { 1353 if (!hasWindow()) { 1354 return false; 1355 } 1356 return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement; 1357 } 1358 function isShadowRoot(value) { 1359 if (!hasWindow() || typeof ShadowRoot === "undefined") { 1360 return false; 1361 } 1362 return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot; 1363 } 1364 function isOverflowElement(element) { 1365 const { 1366 overflow, 1367 overflowX, 1368 overflowY, 1369 display 1370 } = getComputedStyle2(element); 1371 return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== "inline" && display !== "contents"; 1372 } 1373 function isTableElement(element) { 1374 return /^(table|td|th)$/.test(getNodeName(element)); 1375 } 1376 function isTopLayer(element) { 1377 try { 1378 if (element.matches(":popover-open")) { 1379 return true; 1380 } 1381 } catch (_e) { 1382 } 1383 try { 1384 return element.matches(":modal"); 1385 } catch (_e) { 1386 return false; 1387 } 1388 } 1389 var willChangeRe = /transform|translate|scale|rotate|perspective|filter/; 1390 var containRe = /paint|layout|strict|content/; 1391 var isNotNone = (value) => !!value && value !== "none"; 1392 var isWebKitValue; 1393 function isContainingBlock(elementOrCss) { 1394 const css = isElement(elementOrCss) ? getComputedStyle2(elementOrCss) : elementOrCss; 1395 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 || ""); 1396 } 1397 function getContainingBlock(element) { 1398 let currentNode = getParentNode(element); 1399 while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) { 1400 if (isContainingBlock(currentNode)) { 1401 return currentNode; 1402 } else if (isTopLayer(currentNode)) { 1403 return null; 1404 } 1405 currentNode = getParentNode(currentNode); 1406 } 1407 return null; 1408 } 1409 function isWebKit() { 1410 if (isWebKitValue == null) { 1411 isWebKitValue = typeof CSS !== "undefined" && CSS.supports && CSS.supports("-webkit-backdrop-filter", "none"); 1412 } 1413 return isWebKitValue; 1414 } 1415 function isLastTraversableNode(node) { 1416 return /^(html|body|#document)$/.test(getNodeName(node)); 1417 } 1418 function getComputedStyle2(element) { 1419 return getWindow(element).getComputedStyle(element); 1420 } 1421 function getNodeScroll(element) { 1422 if (isElement(element)) { 1423 return { 1424 scrollLeft: element.scrollLeft, 1425 scrollTop: element.scrollTop 1426 }; 1427 } 1428 return { 1429 scrollLeft: element.scrollX, 1430 scrollTop: element.scrollY 1431 }; 1432 } 1433 function getParentNode(node) { 1434 if (getNodeName(node) === "html") { 1435 return node; 1436 } 1437 const result = ( 1438 // Step into the shadow DOM of the parent of a slotted node. 1439 node.assignedSlot || // DOM Element detected. 1440 node.parentNode || // ShadowRoot detected. 1441 isShadowRoot(node) && node.host || // Fallback. 1442 getDocumentElement(node) 1443 ); 1444 return isShadowRoot(result) ? result.host : result; 1445 } 1446 function getNearestOverflowAncestor(node) { 1447 const parentNode = getParentNode(node); 1448 if (isLastTraversableNode(parentNode)) { 1449 return (node.ownerDocument || node).body; 1450 } 1451 if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) { 1452 return parentNode; 1453 } 1454 return getNearestOverflowAncestor(parentNode); 1455 } 1456 function getOverflowAncestors(node, list, traverseIframes) { 1457 var _node$ownerDocument2; 1458 if (list === void 0) { 1459 list = []; 1460 } 1461 if (traverseIframes === void 0) { 1462 traverseIframes = true; 1463 } 1464 const scrollableAncestor = getNearestOverflowAncestor(node); 1465 const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body); 1466 const win = getWindow(scrollableAncestor); 1467 if (isBody) { 1468 const frameElement = getFrameElement(win); 1469 return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []); 1470 } else { 1471 return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes)); 1472 } 1473 } 1474 function getFrameElement(win) { 1475 return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null; 1476 } 1477 1478 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/root/CompositeRootContext.mjs 1479 var React12 = __toESM(require_react(), 1); 1480 var CompositeRootContext = /* @__PURE__ */ React12.createContext(void 0); 1481 if (true) CompositeRootContext.displayName = "CompositeRootContext"; 1482 function useCompositeRootContext(optional = false) { 1483 const context = React12.useContext(CompositeRootContext); 1484 if (context === void 0 && !optional) { 1485 throw new Error(true ? "Base UI: CompositeRootContext is missing. Composite parts must be placed within <Composite.Root>." : formatErrorMessage_default(16)); 1486 } 1487 return context; 1488 } 1489 1490 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/useFocusableWhenDisabled.mjs 1491 var React13 = __toESM(require_react(), 1); 1492 function useFocusableWhenDisabled(parameters) { 1493 const { 1494 focusableWhenDisabled, 1495 disabled: disabled2, 1496 composite = false, 1497 tabIndex: tabIndexProp = 0, 1498 isNativeButton 1499 } = parameters; 1500 const isFocusableComposite = composite && focusableWhenDisabled !== false; 1501 const isNonFocusableComposite = composite && focusableWhenDisabled === false; 1502 const props = React13.useMemo(() => { 1503 const additionalProps = { 1504 // allow Tabbing away from focusableWhenDisabled elements 1505 onKeyDown(event) { 1506 if (disabled2 && focusableWhenDisabled && event.key !== "Tab") { 1507 event.preventDefault(); 1508 } 1509 } 1510 }; 1511 if (!composite) { 1512 additionalProps.tabIndex = tabIndexProp; 1513 if (!isNativeButton && disabled2) { 1514 additionalProps.tabIndex = focusableWhenDisabled ? tabIndexProp : -1; 1515 } 1516 } 1517 if (isNativeButton && (focusableWhenDisabled || isFocusableComposite) || !isNativeButton && disabled2) { 1518 additionalProps["aria-disabled"] = disabled2; 1519 } 1520 if (isNativeButton && (!focusableWhenDisabled || isNonFocusableComposite)) { 1521 additionalProps.disabled = disabled2; 1522 } 1523 return additionalProps; 1524 }, [composite, disabled2, focusableWhenDisabled, isFocusableComposite, isNonFocusableComposite, isNativeButton, tabIndexProp]); 1525 return { 1526 props 1527 }; 1528 } 1529 1530 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/owner.mjs 1531 function ownerDocument(node) { 1532 return node?.ownerDocument || document; 1533 } 1534 1535 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/dispatchClickWithModifiers.mjs 1536 function dispatchClickWithModifiers(target, sourceEvent, { 1537 detail = 0, 1538 pointerType = "" 1539 } = {}) { 1540 target.dispatchEvent(new (getWindow(target)).PointerEvent("click", { 1541 bubbles: true, 1542 cancelable: true, 1543 composed: true, 1544 detail, 1545 pointerType, 1546 shiftKey: sourceEvent.shiftKey, 1547 ctrlKey: sourceEvent.ctrlKey, 1548 altKey: sourceEvent.altKey, 1549 metaKey: sourceEvent.metaKey 1550 })); 1551 } 1552 1553 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/use-button/useButton.mjs 1554 function useButton(parameters = {}) { 1555 const { 1556 disabled: disabled2 = false, 1557 focusableWhenDisabled, 1558 tabIndex = 0, 1559 native: isNativeButton = true, 1560 composite: compositeProp 1561 } = parameters; 1562 const elementRef = React14.useRef(null); 1563 const compositeRootContext = useCompositeRootContext(true); 1564 const isCompositeItem = compositeProp ?? compositeRootContext !== void 0; 1565 const { 1566 props: focusableWhenDisabledProps 1567 } = useFocusableWhenDisabled({ 1568 focusableWhenDisabled, 1569 disabled: disabled2, 1570 composite: isCompositeItem, 1571 tabIndex, 1572 isNativeButton 1573 }); 1574 if (true) { 1575 React14.useEffect(() => { 1576 if (!elementRef.current) { 1577 return; 1578 } 1579 const isButtonTag = isButtonElement(elementRef.current); 1580 if (isNativeButton) { 1581 if (!isButtonTag) { 1582 const ownerStackMessage = SafeReact.captureOwnerStack?.() || ""; 1583 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`."; 1584 error(`$message}$ownerStackMessage}`); 1585 } 1586 } else if (isButtonTag) { 1587 const ownerStackMessage = SafeReact.captureOwnerStack?.() || ""; 1588 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`."; 1589 error(`$message}$ownerStackMessage}`); 1590 } 1591 }, [isNativeButton]); 1592 } 1593 const updateDisabled = React14.useCallback(() => { 1594 const element = elementRef.current; 1595 if (!isButtonElement(element)) { 1596 return; 1597 } 1598 if (isCompositeItem && disabled2 && focusableWhenDisabledProps.disabled === void 0 && element.disabled) { 1599 element.disabled = false; 1600 } 1601 }, [disabled2, focusableWhenDisabledProps.disabled, isCompositeItem]); 1602 useIsoLayoutEffect(updateDisabled, [updateDisabled]); 1603 const getButtonProps = React14.useCallback((externalProps = {}) => { 1604 const { 1605 onClick: externalOnClick, 1606 onMouseDown: externalOnMouseDown, 1607 onKeyUp: externalOnKeyUp, 1608 onKeyDown: externalOnKeyDown, 1609 onPointerDown: externalOnPointerDown, 1610 ...otherExternalProps 1611 } = externalProps; 1612 return mergeProps({ 1613 onClick(event) { 1614 if (disabled2) { 1615 event.preventDefault(); 1616 return; 1617 } 1618 externalOnClick?.(event); 1619 }, 1620 onMouseDown(event) { 1621 if (!disabled2) { 1622 externalOnMouseDown?.(event); 1623 } 1624 }, 1625 onKeyDown(event) { 1626 if (disabled2) { 1627 return; 1628 } 1629 makeEventPreventable(event); 1630 externalOnKeyDown?.(event); 1631 if (event.baseUIHandlerPrevented) { 1632 return; 1633 } 1634 const isCurrentTarget = event.target === event.currentTarget; 1635 const currentTarget = event.currentTarget; 1636 const isButton = isButtonElement(currentTarget); 1637 const isLink = !isNativeButton && isValidLinkElement(currentTarget); 1638 const shouldClick = isCurrentTarget && (isNativeButton ? isButton : !isLink); 1639 const isEnterKey = event.key === "Enter"; 1640 const isSpaceKey = event.key === " "; 1641 const role = currentTarget.getAttribute("role"); 1642 const isTextNavigationRole = role?.startsWith("menuitem") || role === "option" || role === "gridcell"; 1643 if (isCurrentTarget && isCompositeItem && isSpaceKey) { 1644 if (event.defaultPrevented && isTextNavigationRole) { 1645 return; 1646 } 1647 event.preventDefault(); 1648 if (!isNativeButton || isButton) { 1649 event.preventBaseUIHandler(); 1650 dispatchClickWithModifiers(currentTarget, event); 1651 } 1652 return; 1653 } 1654 if (!shouldClick || isNativeButton || !isSpaceKey && !isEnterKey) { 1655 if (isCurrentTarget && isLink && isSpaceKey) { 1656 event.preventDefault(); 1657 } 1658 return; 1659 } 1660 if (event.defaultPrevented) { 1661 return; 1662 } 1663 event.preventDefault(); 1664 if (isEnterKey) { 1665 event.preventBaseUIHandler(); 1666 dispatchClickWithModifiers(currentTarget, event); 1667 } 1668 }, 1669 onKeyUp(event) { 1670 if (disabled2) { 1671 return; 1672 } 1673 makeEventPreventable(event); 1674 externalOnKeyUp?.(event); 1675 if (event.target === event.currentTarget && isNativeButton && isCompositeItem && isButtonElement(event.currentTarget) && event.key === " ") { 1676 event.preventDefault(); 1677 return; 1678 } 1679 if (event.baseUIHandlerPrevented) { 1680 return; 1681 } 1682 if (event.target === event.currentTarget && !isNativeButton && !isCompositeItem && !event.defaultPrevented && event.key === " ") { 1683 event.preventBaseUIHandler(); 1684 dispatchClickWithModifiers(event.currentTarget, event); 1685 } 1686 }, 1687 onPointerDown(event) { 1688 if (disabled2) { 1689 event.preventDefault(); 1690 return; 1691 } 1692 externalOnPointerDown?.(event); 1693 } 1694 }, isNativeButton ? { 1695 type: "button" 1696 } : { 1697 role: "button" 1698 }, focusableWhenDisabledProps, otherExternalProps); 1699 }, [disabled2, focusableWhenDisabledProps, isCompositeItem, isNativeButton]); 1700 const buttonRef = useStableCallback((element) => { 1701 elementRef.current = element; 1702 updateDisabled(); 1703 }); 1704 return { 1705 getButtonProps, 1706 buttonRef 1707 }; 1708 } 1709 function isButtonElement(elem) { 1710 return isHTMLElement(elem) && elem.tagName === "BUTTON"; 1711 } 1712 function isValidLinkElement(elem) { 1713 return isHTMLElement(elem) && elem.tagName === "A" && Boolean(elem.href); 1714 } 1715 1716 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/addEventListener.mjs 1717 function addEventListener(target, type, listener, options) { 1718 target.addEventListener(type, listener, options); 1719 return () => { 1720 target.removeEventListener(type, listener, options); 1721 }; 1722 } 1723 1724 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useValueAsRef.mjs 1725 function useValueAsRef(value) { 1726 const latest = useRefWithInit(createLatestRef, value).current; 1727 latest.next = value; 1728 useIsoLayoutEffect(latest.effect); 1729 return latest; 1730 } 1731 function createLatestRef(value) { 1732 const latest = { 1733 current: value, 1734 next: value, 1735 effect: () => { 1736 latest.current = latest.next; 1737 } 1738 }; 1739 return latest; 1740 } 1741 1742 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/parts.mjs 1743 var parts_exports = {}; 1744 __export(parts_exports, { 1745 engine: () => engine_exports, 1746 env: () => env_exports, 1747 mediaQuery: () => media_query_exports, 1748 os: () => os_exports, 1749 screenReader: () => screen_reader_exports 1750 }); 1751 1752 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/os.mjs 1753 var os_exports = {}; 1754 __export(os_exports, { 1755 android: () => android, 1756 apple: () => apple, 1757 ios: () => ios, 1758 linux: () => linux, 1759 mac: () => mac, 1760 windows: () => windows 1761 }); 1762 1763 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/shared.mjs 1764 function readRawData() { 1765 if (typeof navigator === "undefined") { 1766 return { 1767 userAgent: "", 1768 platform: "", 1769 maxTouchPoints: 0 1770 }; 1771 } 1772 if (true) { 1773 const uaData = navigator.userAgentData; 1774 if (uaData && Array.isArray(uaData.brands)) { 1775 return { 1776 userAgent: uaData.brands.map(({ 1777 brand, 1778 version: version2 1779 }) => `$brand}/$version2}`).join(" "), 1780 platform: uaData.platform ?? navigator.platform ?? "", 1781 maxTouchPoints: navigator.maxTouchPoints ?? 0 1782 }; 1783 } 1784 } 1785 return { 1786 userAgent: navigator.userAgent, 1787 platform: navigator.platform ?? "", 1788 maxTouchPoints: navigator.maxTouchPoints ?? 0 1789 }; 1790 } 1791 var { 1792 userAgent, 1793 platform, 1794 maxTouchPoints 1795 } = readRawData(); 1796 var lowerUserAgent = userAgent.toLowerCase(); 1797 var lowerPlatform = platform.toLowerCase(); 1798 1799 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/os.mjs 1800 var ios = /^i(os$|p)/.test(lowerPlatform) || lowerPlatform === "macintel" && maxTouchPoints > 1; 1801 var ANDROID_STRING = "android"; 1802 var android = lowerPlatform === ANDROID_STRING || lowerUserAgent.includes(ANDROID_STRING); 1803 var mac = !ios && lowerPlatform.startsWith("mac"); 1804 var windows = lowerPlatform.startsWith("win"); 1805 var linux = !android && /^(linux|chrome os)/.test(lowerPlatform); 1806 var apple = mac || ios; 1807 1808 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/engine.mjs 1809 var engine_exports = {}; 1810 __export(engine_exports, { 1811 blink: () => blink, 1812 gecko: () => gecko, 1813 webkit: () => webkit 1814 }); 1815 var webkit = typeof CSS !== "undefined" && !!CSS.supports?.("-webkit-backdrop-filter:none"); 1816 var gecko = !webkit && lowerUserAgent.includes("firefox"); 1817 var blink = !webkit && lowerUserAgent.includes("chrom"); 1818 1819 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/screen-reader.mjs 1820 var screen_reader_exports = {}; 1821 __export(screen_reader_exports, { 1822 voiceOver: () => voiceOver 1823 }); 1824 var voiceOver = apple; 1825 1826 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/env.mjs 1827 var env_exports = {}; 1828 __export(env_exports, { 1829 jsdom: () => jsdom 1830 }); 1831 var jsdom = /jsdom|happydom/.test(lowerUserAgent); 1832 1833 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/media-query.mjs 1834 var media_query_exports = {}; 1835 __export(media_query_exports, { 1836 iOS: () => iOS 1837 }); 1838 var iOS = "@supports (-webkit-touch-callout: none)"; 1839 1840 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingDelayGroup.mjs 1841 var React15 = __toESM(require_react(), 1); 1842 1843 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/event.mjs 1844 function isReactEvent(event) { 1845 return "nativeEvent" in event; 1846 } 1847 function isVirtualClick(event) { 1848 if (event.pointerType === "" && event.isTrusted) { 1849 return true; 1850 } 1851 if (parts_exports.os.android && event.pointerType) { 1852 return event.type === "click" && event.buttons === 1; 1853 } 1854 return event.detail === 0 && !event.pointerType; 1855 } 1856 function isMouseLikePointerType(pointerType, strict) { 1857 const values = ["mouse", "pen"]; 1858 if (!strict) { 1859 values.push("", void 0); 1860 } 1861 return values.includes(pointerType); 1862 } 1863 function isClickLikeEvent(event) { 1864 const type = event.type; 1865 return type === "click" || type === "mousedown" || type === "keydown" || type === "keyup"; 1866 } 1867 1868 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/shadowDom.mjs 1869 function activeElement(doc) { 1870 let element = doc.activeElement; 1871 while (element?.shadowRoot?.activeElement != null) { 1872 element = element.shadowRoot.activeElement; 1873 } 1874 return element; 1875 } 1876 function contains(parent, child) { 1877 if (!parent || !child) { 1878 return false; 1879 } 1880 const rootNode = child.getRootNode?.(); 1881 if (parent.contains(child)) { 1882 return true; 1883 } 1884 if (rootNode && isShadowRoot(rootNode)) { 1885 let next = child; 1886 while (next) { 1887 if (parent === next) { 1888 return true; 1889 } 1890 next = next.parentNode || next.host; 1891 } 1892 } 1893 return false; 1894 } 1895 function closest(node, selector) { 1896 let current = node; 1897 while (current) { 1898 if (isElement(current) && current.matches(selector)) { 1899 return current; 1900 } 1901 current = current.assignedSlot ?? current.parentNode ?? (isShadowRoot(current) ? current.host : null); 1902 } 1903 return null; 1904 } 1905 function getTarget(event) { 1906 if ("composedPath" in event) { 1907 return event.composedPath()[0] ?? event.target; 1908 } 1909 return event.target; 1910 } 1911 1912 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/constants.mjs 1913 var FOCUSABLE_ATTRIBUTE = "data-base-ui-focusable"; 1914 var TYPEABLE_SELECTOR = "input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])"; 1915 1916 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/CommonPopupDataAttributes.mjs 1917 var open = "data-open"; 1918 var closed = "data-closed"; 1919 var anchorHidden = "data-anchor-hidden"; 1920 1921 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/CommonTriggerDataAttributes.mjs 1922 var CommonTriggerDataAttributes_exports = {}; 1923 __export(CommonTriggerDataAttributes_exports, { 1924 popupOpen: () => popupOpen, 1925 pressed: () => pressed 1926 }); 1927 var popupOpen = "data-popup-open"; 1928 var pressed = "data-pressed"; 1929 1930 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popupStateMapping.mjs 1931 var TRIGGER_HOOK = { 1932 [popupOpen]: "" 1933 }; 1934 var PRESSABLE_TRIGGER_HOOK = { 1935 [popupOpen]: "", 1936 [pressed]: "" 1937 }; 1938 var POPUP_OPEN_HOOK = { 1939 [open]: "" 1940 }; 1941 var POPUP_CLOSED_HOOK = { 1942 [closed]: "" 1943 }; 1944 var ANCHOR_HIDDEN_HOOK = { 1945 [anchorHidden]: "" 1946 }; 1947 var triggerOpenStateMapping = { 1948 open(value) { 1949 if (value) { 1950 return TRIGGER_HOOK; 1951 } 1952 return null; 1953 } 1954 }; 1955 var popupStateMapping = { 1956 open(value) { 1957 if (value) { 1958 return POPUP_OPEN_HOOK; 1959 } 1960 return POPUP_CLOSED_HOOK; 1961 }, 1962 anchorHidden(value) { 1963 if (value) { 1964 return ANCHOR_HIDDEN_HOOK; 1965 } 1966 return null; 1967 } 1968 }; 1969 var popupTransitionStateMapping = { 1970 ...popupStateMapping, 1971 ...transitionStatusMapping 1972 }; 1973 1974 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/trigger/TooltipTriggerDataAttributes.mjs 1975 var popupOpen2 = CommonTriggerDataAttributes_exports.popupOpen; 1976 var triggerDisabled = "data-trigger-disabled"; 1977 1978 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/element.mjs 1979 function isTargetInsideEnabledTrigger(target, triggerElements) { 1980 if (!isElement(target)) { 1981 return false; 1982 } 1983 const targetElement = target; 1984 if (triggerElements.hasElement(targetElement)) { 1985 return !targetElement.hasAttribute(triggerDisabled); 1986 } 1987 for (const [, trigger] of triggerElements.entries()) { 1988 if (contains(trigger, targetElement)) { 1989 return !trigger.hasAttribute(triggerDisabled); 1990 } 1991 } 1992 return false; 1993 } 1994 function isEventTargetWithin(event, node) { 1995 if (node == null) { 1996 return false; 1997 } 1998 if ("composedPath" in event) { 1999 return event.composedPath().includes(node); 2000 } 2001 const eventAgain = event; 2002 return eventAgain.target != null && node.contains(eventAgain.target); 2003 } 2004 function isRootElement(element) { 2005 return element.matches("html,body"); 2006 } 2007 function isTypeableElement(element) { 2008 return isHTMLElement(element) && element.matches(TYPEABLE_SELECTOR); 2009 } 2010 function isInteractiveElement(element) { 2011 return closest(element, `button,a[href],[role="button"],select,[tabindex]:not([tabindex="-1"]),$TYPEABLE_SELECTOR}`) != null; 2012 } 2013 function matchesFocusVisible(element) { 2014 if (!element || parts_exports.env.jsdom) { 2015 return true; 2016 } 2017 try { 2018 return element.matches(":focus-visible"); 2019 } catch (_e) { 2020 return true; 2021 } 2022 } 2023 2024 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useHoverShared.mjs 2025 function resolveValue(value, pointerType) { 2026 if (pointerType != null && !isMouseLikePointerType(pointerType)) { 2027 return 0; 2028 } 2029 if (typeof value === "function") { 2030 return value(); 2031 } 2032 return value; 2033 } 2034 function getDelay(value, prop, pointerType) { 2035 const result = resolveValue(value, pointerType); 2036 if (typeof result === "number") { 2037 return result; 2038 } 2039 return result?.[prop]; 2040 } 2041 function getRestMs(value) { 2042 if (typeof value === "function") { 2043 return value(); 2044 } 2045 return value; 2046 } 2047 function isClickLikeOpenEvent(openEventType, interactedInside) { 2048 return interactedInside || openEventType === "click" || openEventType === "mousedown"; 2049 } 2050 function isHoverOpenEvent(openEventType) { 2051 return openEventType?.includes("mouse") && openEventType !== "mousedown"; 2052 } 2053 2054 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingDelayGroup.mjs 2055 var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1); 2056 var FloatingDelayGroupContext = /* @__PURE__ */ React15.createContext({ 2057 hasProvider: false, 2058 timeoutMs: 0, 2059 delayRef: { 2060 current: 0 2061 }, 2062 initialDelayRef: { 2063 current: 0 2064 }, 2065 timeout: new Timeout(), 2066 currentIdRef: { 2067 current: null 2068 }, 2069 currentContextRef: { 2070 current: null 2071 } 2072 }); 2073 if (true) FloatingDelayGroupContext.displayName = "FloatingDelayGroupContext"; 2074 function resetDelayRef(delayRef, initialDelayRef) { 2075 delayRef.current = initialDelayRef.current; 2076 } 2077 function FloatingDelayGroup(props) { 2078 const { 2079 children, 2080 delay, 2081 timeoutMs = 0 2082 } = props; 2083 const delayRef = React15.useRef(delay); 2084 const initialDelayRef = React15.useRef(delay); 2085 const currentIdRef = React15.useRef(null); 2086 const currentContextRef = React15.useRef(null); 2087 const timeout = useTimeout(); 2088 useIsoLayoutEffect(() => { 2089 initialDelayRef.current = delay; 2090 if (!currentIdRef.current) { 2091 delayRef.current = delay; 2092 return; 2093 } 2094 delayRef.current = { 2095 open: getDelay(delayRef.current, "open"), 2096 close: getDelay(delay, "close") 2097 }; 2098 }, [delay, currentIdRef, delayRef, initialDelayRef]); 2099 return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(FloatingDelayGroupContext.Provider, { 2100 value: React15.useMemo(() => ({ 2101 hasProvider: true, 2102 delayRef, 2103 initialDelayRef, 2104 currentIdRef, 2105 timeoutMs, 2106 currentContextRef, 2107 timeout 2108 }), [timeoutMs, timeout]), 2109 children 2110 }); 2111 } 2112 function useDelayGroup(store2, options = { 2113 open: false 2114 }) { 2115 const { 2116 open: open2 2117 } = options; 2118 const floatingId = store2.useState("floatingId"); 2119 const groupContext = React15.useContext(FloatingDelayGroupContext); 2120 const { 2121 currentIdRef, 2122 delayRef, 2123 timeoutMs, 2124 initialDelayRef, 2125 currentContextRef, 2126 hasProvider, 2127 timeout 2128 } = groupContext; 2129 const [isInstantPhase, setIsInstantPhase] = React15.useState(false); 2130 const openRef = React15.useRef(open2); 2131 useIsoLayoutEffect(() => { 2132 openRef.current = open2; 2133 }, [open2]); 2134 useIsoLayoutEffect(() => { 2135 function unset() { 2136 currentContextRef.current?.setIsInstantPhase(false); 2137 currentIdRef.current = null; 2138 currentContextRef.current = null; 2139 delayRef.current = initialDelayRef.current; 2140 timeout.clear(); 2141 } 2142 if (!currentIdRef.current) { 2143 return void 0; 2144 } 2145 if (!open2 && currentIdRef.current === floatingId) { 2146 setIsInstantPhase(false); 2147 if (timeoutMs) { 2148 const closingId = floatingId; 2149 timeout.start(timeoutMs, () => { 2150 if (store2.select("open") || currentIdRef.current && currentIdRef.current !== closingId) { 2151 return; 2152 } 2153 unset(); 2154 }); 2155 return () => { 2156 if (openRef.current || currentIdRef.current !== closingId) { 2157 timeout.clear(); 2158 } 2159 }; 2160 } 2161 unset(); 2162 } 2163 return void 0; 2164 }, [open2, floatingId, currentIdRef, delayRef, timeoutMs, initialDelayRef, currentContextRef, timeout, store2]); 2165 useIsoLayoutEffect(() => { 2166 if (!open2) { 2167 return; 2168 } 2169 const prevContext = currentContextRef.current; 2170 const prevId = currentIdRef.current; 2171 timeout.clear(); 2172 currentContextRef.current = { 2173 onOpenChange: store2.setOpen, 2174 setIsInstantPhase 2175 }; 2176 currentIdRef.current = floatingId; 2177 delayRef.current = { 2178 open: 0, 2179 close: getDelay(initialDelayRef.current, "close") 2180 }; 2181 if (prevId !== null && prevId !== floatingId) { 2182 setIsInstantPhase(true); 2183 prevContext?.setIsInstantPhase(true); 2184 prevContext?.onOpenChange(false, createChangeEventDetails(reason_parts_exports.none)); 2185 } else { 2186 setIsInstantPhase(false); 2187 prevContext?.setIsInstantPhase(false); 2188 } 2189 }, [open2, floatingId, store2, currentIdRef, delayRef, initialDelayRef, currentContextRef, timeout]); 2190 useIsoLayoutEffect(() => { 2191 return () => { 2192 if (currentIdRef.current === floatingId) { 2193 currentContextRef.current = null; 2194 if (!openRef.current) { 2195 return; 2196 } 2197 currentIdRef.current = null; 2198 resetDelayRef(delayRef, initialDelayRef); 2199 timeout.clear(); 2200 } 2201 }; 2202 }, [currentContextRef, currentIdRef, delayRef, floatingId, initialDelayRef, timeout]); 2203 return React15.useMemo(() => ({ 2204 activeIdRef: currentIdRef, 2205 hasProvider, 2206 delayRef, 2207 isInstantPhase 2208 }), [currentIdRef, hasProvider, delayRef, isInstantPhase]); 2209 } 2210 2211 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/mergeCleanups.mjs 2212 function mergeCleanups(...cleanups) { 2213 return () => { 2214 for (let i = 0; i < cleanups.length; i += 1) { 2215 const cleanup = cleanups[i]; 2216 if (cleanup) { 2217 cleanup(); 2218 } 2219 } 2220 }; 2221 } 2222 2223 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/FocusGuard.mjs 2224 var React16 = __toESM(require_react(), 1); 2225 2226 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/visuallyHidden.mjs 2227 var visuallyHiddenBase = { 2228 clipPath: "inset(50%)", 2229 overflow: "hidden", 2230 whiteSpace: "nowrap", 2231 border: 0, 2232 padding: 0, 2233 width: 1, 2234 height: 1, 2235 margin: -1 2236 }; 2237 var visuallyHidden = { 2238 ...visuallyHiddenBase, 2239 position: "fixed", 2240 margin: 0, 2241 top: 0, 2242 left: 0 2243 }; 2244 var visuallyHiddenInput = { 2245 ...visuallyHiddenBase, 2246 position: "absolute" 2247 }; 2248 2249 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/FocusGuard.mjs 2250 var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1); 2251 var FocusGuard = /* @__PURE__ */ React16.forwardRef(function FocusGuard2(props, ref) { 2252 const [role, setRole] = React16.useState(); 2253 useIsoLayoutEffect(() => { 2254 if (parts_exports.screenReader.voiceOver && parts_exports.engine.webkit) { 2255 setRole("button"); 2256 } 2257 }, []); 2258 const restProps = { 2259 tabIndex: 0, 2260 // Role is only for VoiceOver 2261 role 2262 }; 2263 return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { 2264 ...props, 2265 ref, 2266 style: visuallyHidden, 2267 "aria-hidden": role ? void 0 : true, 2268 ...restProps, 2269 "data-base-ui-focus-guard": "" 2270 }); 2271 }); 2272 if (true) FocusGuard.displayName = "FocusGuard"; 2273 2274 // node_modules/.store/@floating-ui/utils@0.2.12-gOxTzMf36nCrbeHpEew-rw/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs 2275 var min = Math.min; 2276 var max = Math.max; 2277 var round = Math.round; 2278 var floor = Math.floor; 2279 var createCoords = (v) => ({ 2280 x: v, 2281 y: v 2282 }); 2283 var oppositeSideMap = { 2284 left: "right", 2285 right: "left", 2286 bottom: "top", 2287 top: "bottom" 2288 }; 2289 function clamp(start, value, end) { 2290 return max(start, min(value, end)); 2291 } 2292 function evaluate(value, param) { 2293 return typeof value === "function" ? value(param) : value; 2294 } 2295 function getSide(placement) { 2296 return placement.split("-")[0]; 2297 } 2298 function getAlignment(placement) { 2299 return placement.split("-")[1]; 2300 } 2301 function getOppositeAxis(axis) { 2302 return axis === "x" ? "y" : "x"; 2303 } 2304 function getAxisLength(axis) { 2305 return axis === "y" ? "height" : "width"; 2306 } 2307 function getSideAxis(placement) { 2308 const firstChar = placement[0]; 2309 return firstChar === "t" || firstChar === "b" ? "y" : "x"; 2310 } 2311 function getAlignmentAxis(placement) { 2312 return getOppositeAxis(getSideAxis(placement)); 2313 } 2314 function getAlignmentSides(placement, rects, rtl) { 2315 if (rtl === void 0) { 2316 rtl = false; 2317 } 2318 const alignment = getAlignment(placement); 2319 const alignmentAxis = getAlignmentAxis(placement); 2320 const length = getAxisLength(alignmentAxis); 2321 let mainAlignmentSide = alignmentAxis === "x" ? alignment === (rtl ? "end" : "start") ? "right" : "left" : alignment === "start" ? "bottom" : "top"; 2322 if (rects.reference[length] > rects.floating[length]) { 2323 mainAlignmentSide = getOppositePlacement(mainAlignmentSide); 2324 } 2325 return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)]; 2326 } 2327 function getExpandedPlacements(placement) { 2328 const oppositePlacement = getOppositePlacement(placement); 2329 return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)]; 2330 } 2331 function getOppositeAlignmentPlacement(placement) { 2332 return placement.includes("start") ? placement.replace("start", "end") : placement.replace("end", "start"); 2333 } 2334 var lrPlacement = ["left", "right"]; 2335 var rlPlacement = ["right", "left"]; 2336 var tbPlacement = ["top", "bottom"]; 2337 var btPlacement = ["bottom", "top"]; 2338 function getSideList(side, isStart, rtl) { 2339 switch (side) { 2340 case "top": 2341 case "bottom": 2342 if (rtl) return isStart ? rlPlacement : lrPlacement; 2343 return isStart ? lrPlacement : rlPlacement; 2344 case "left": 2345 case "right": 2346 return isStart ? tbPlacement : btPlacement; 2347 default: 2348 return []; 2349 } 2350 } 2351 function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) { 2352 const alignment = getAlignment(placement); 2353 let list = getSideList(getSide(placement), direction === "start", rtl); 2354 if (alignment) { 2355 list = list.map((side) => side + "-" + alignment); 2356 if (flipAlignment) { 2357 list = list.concat(list.map(getOppositeAlignmentPlacement)); 2358 } 2359 } 2360 return list; 2361 } 2362 function getOppositePlacement(placement) { 2363 const side = getSide(placement); 2364 return oppositeSideMap[side] + placement.slice(side.length); 2365 } 2366 function expandPaddingObject(padding) { 2367 var _padding$top, _padding$right, _padding$bottom, _padding$left; 2368 return { 2369 top: (_padding$top = padding.top) != null ? _padding$top : 0, 2370 right: (_padding$right = padding.right) != null ? _padding$right : 0, 2371 bottom: (_padding$bottom = padding.bottom) != null ? _padding$bottom : 0, 2372 left: (_padding$left = padding.left) != null ? _padding$left : 0 2373 }; 2374 } 2375 function getPaddingObject(padding) { 2376 return typeof padding !== "number" ? expandPaddingObject(padding) : { 2377 top: padding, 2378 right: padding, 2379 bottom: padding, 2380 left: padding 2381 }; 2382 } 2383 function rectToClientRect(rect) { 2384 const { 2385 x, 2386 y, 2387 width, 2388 height 2389 } = rect; 2390 return { 2391 width, 2392 height, 2393 top: y, 2394 left: x, 2395 right: x + width, 2396 bottom: y + height, 2397 x, 2398 y 2399 }; 2400 } 2401 2402 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/composite.mjs 2403 function isHiddenByStyles(styles) { 2404 return styles.visibility === "hidden" || styles.visibility === "collapse"; 2405 } 2406 function isElementVisible(element, styles = element ? getComputedStyle2(element) : null) { 2407 if (!element || !element.isConnected || !styles || isHiddenByStyles(styles)) { 2408 return false; 2409 } 2410 if (typeof element.checkVisibility === "function") { 2411 return element.checkVisibility(); 2412 } 2413 return styles.display !== "none" && styles.display !== "contents"; 2414 } 2415 2416 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/tabbable.mjs 2417 var CANDIDATE_SELECTOR = 'a[href],button,input,select,textarea,summary,details,iframe,object,embed,[tabindex],[contenteditable]:not([contenteditable="false"]),audio[controls],video[controls]'; 2418 function getParentElement(element) { 2419 const assignedSlot = element.assignedSlot; 2420 if (assignedSlot) { 2421 return assignedSlot; 2422 } 2423 if (element.parentElement) { 2424 return element.parentElement; 2425 } 2426 const rootNode = element.getRootNode(); 2427 return isShadowRoot(rootNode) ? rootNode.host : null; 2428 } 2429 function getDetailsSummary(details) { 2430 for (const child of Array.from(details.children)) { 2431 if (getNodeName(child) === "summary") { 2432 return child; 2433 } 2434 } 2435 return null; 2436 } 2437 function isWithinOpenDetailsSummary(element, details) { 2438 const summary = getDetailsSummary(details); 2439 return !!summary && (element === summary || contains(summary, element)); 2440 } 2441 function isFocusableCandidate(element) { 2442 const nodeName = element ? getNodeName(element) : ""; 2443 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"); 2444 } 2445 function isFocusableElement(element) { 2446 if (!isFocusableCandidate(element) || !element.isConnected || element.matches(":disabled")) { 2447 return false; 2448 } 2449 for (let current = element; current; current = getParentElement(current)) { 2450 const isAncestor = current !== element; 2451 const isSlot = getNodeName(current) === "slot"; 2452 if (current.hasAttribute("inert")) { 2453 return false; 2454 } 2455 if (isAncestor && getNodeName(current) === "details" && !current.open && !isWithinOpenDetailsSummary(element, current) || current.hasAttribute("hidden") || !isSlot && !isVisibleInTabbableTree(current, isAncestor)) { 2456 return false; 2457 } 2458 } 2459 return true; 2460 } 2461 function isVisibleInTabbableTree(element, isAncestor) { 2462 const styles = getComputedStyle2(element); 2463 if (!isAncestor) { 2464 return isElementVisible(element, styles); 2465 } 2466 return styles.display !== "none"; 2467 } 2468 function getTabIndex(element) { 2469 const tabIndex = element.tabIndex; 2470 if (tabIndex < 0) { 2471 const nodeName = getNodeName(element); 2472 if (nodeName === "details" || nodeName === "audio" || nodeName === "video" || isHTMLElement(element) && element.isContentEditable) { 2473 return 0; 2474 } 2475 } 2476 return tabIndex; 2477 } 2478 function getNamedRadioInput(element) { 2479 if (getNodeName(element) !== "input") { 2480 return null; 2481 } 2482 const input = element; 2483 return input.type === "radio" && input.name !== "" ? input : null; 2484 } 2485 function isTabbableRadio(element, candidates) { 2486 const input = getNamedRadioInput(element); 2487 if (!input) { 2488 return true; 2489 } 2490 const checkedRadio = candidates.find((candidate) => { 2491 const radio = getNamedRadioInput(candidate); 2492 return radio?.name === input.name && radio.form === input.form && radio.checked; 2493 }); 2494 if (checkedRadio) { 2495 return checkedRadio === input; 2496 } 2497 return candidates.find((candidate) => { 2498 const radio = getNamedRadioInput(candidate); 2499 return radio?.name === input.name && radio.form === input.form; 2500 }) === input; 2501 } 2502 function getComposedChildren(container) { 2503 if (isHTMLElement(container) && getNodeName(container) === "slot") { 2504 const assignedElements = container.assignedElements({ 2505 flatten: true 2506 }); 2507 if (assignedElements.length > 0) { 2508 return assignedElements; 2509 } 2510 } 2511 if (isHTMLElement(container) && container.shadowRoot) { 2512 return Array.from(container.shadowRoot.children); 2513 } 2514 return Array.from(container.children); 2515 } 2516 function appendCandidates(container, list) { 2517 getComposedChildren(container).forEach((child) => { 2518 if (isFocusableCandidate(child)) { 2519 list.push(child); 2520 } 2521 appendCandidates(child, list); 2522 }); 2523 } 2524 function appendMatchingElements(container, selector, list) { 2525 getComposedChildren(container).forEach((child) => { 2526 if (isHTMLElement(child) && child.matches(selector)) { 2527 list.push(child); 2528 } 2529 appendMatchingElements(child, selector, list); 2530 }); 2531 } 2532 function focusable(container) { 2533 const candidates = []; 2534 appendCandidates(container, candidates); 2535 return candidates.filter(isFocusableElement); 2536 } 2537 function tabbable(container) { 2538 const candidates = focusable(container); 2539 return candidates.filter((element) => getTabIndex(element) >= 0 && isTabbableRadio(element, candidates)); 2540 } 2541 function getTabbableIn(container, dir) { 2542 const list = tabbable(container); 2543 const len = list.length; 2544 if (len === 0) { 2545 return void 0; 2546 } 2547 const active = activeElement(ownerDocument(container)); 2548 const index2 = list.indexOf(active); 2549 const nextIndex = index2 === -1 ? dir === 1 ? 0 : len - 1 : index2 + dir; 2550 return list[nextIndex]; 2551 } 2552 function getNextTabbable(referenceElement) { 2553 return getTabbableIn(ownerDocument(referenceElement).body, 1) || referenceElement; 2554 } 2555 function getPreviousTabbable(referenceElement) { 2556 return getTabbableIn(ownerDocument(referenceElement).body, -1) || referenceElement; 2557 } 2558 function isOutsideEvent(event, container) { 2559 const containerElement = container || event.currentTarget; 2560 const relatedTarget = event.relatedTarget; 2561 return !relatedTarget || !contains(containerElement, relatedTarget); 2562 } 2563 function disableFocusInside(container) { 2564 const tabbableElements = tabbable(container); 2565 tabbableElements.forEach((element) => { 2566 element.dataset.tabindex = element.getAttribute("tabindex") || ""; 2567 element.setAttribute("tabindex", "-1"); 2568 }); 2569 } 2570 function enableFocusInside(container) { 2571 const elements = []; 2572 appendMatchingElements(container, "[data-tabindex]", elements); 2573 elements.forEach((element) => { 2574 const tabindex = element.dataset.tabindex; 2575 delete element.dataset.tabindex; 2576 if (tabindex) { 2577 element.setAttribute("tabindex", tabindex); 2578 } else { 2579 element.removeAttribute("tabindex"); 2580 } 2581 }); 2582 } 2583 2584 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/nodes.mjs 2585 function getNodeChildren(nodes, id, onlyOpenChildren = true) { 2586 const directChildren = nodes.filter((node) => node.parentId === id); 2587 return directChildren.flatMap((child) => [...!onlyOpenChildren || child.context?.open ? [child] : [], ...getNodeChildren(nodes, child.id, onlyOpenChildren)]); 2588 } 2589 2590 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/createAttribute.mjs 2591 function createAttribute(name) { 2592 return `data-base-ui-$name}`; 2593 } 2594 2595 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingPortal.mjs 2596 var React17 = __toESM(require_react(), 1); 2597 var ReactDOM2 = __toESM(require_react_dom(), 1); 2598 2599 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/constants.mjs 2600 var DISABLED_TRANSITIONS_STYLE = { 2601 style: { 2602 transition: "none" 2603 } 2604 }; 2605 var BASE_UI_SWIPE_IGNORE_ATTRIBUTE = "data-base-ui-swipe-ignore"; 2606 var LEGACY_SWIPE_IGNORE_ATTRIBUTE = "data-swipe-ignore"; 2607 var BASE_UI_SWIPE_IGNORE_SELECTOR = `[$BASE_UI_SWIPE_IGNORE_ATTRIBUTE}]`; 2608 var LEGACY_SWIPE_IGNORE_SELECTOR = `[$LEGACY_SWIPE_IGNORE_ATTRIBUTE}]`; 2609 var POPUP_COLLISION_AVOIDANCE = { 2610 fallbackAxisSide: "end" 2611 }; 2612 var ownerVisuallyHidden = { 2613 clipPath: "inset(50%)", 2614 position: "fixed", 2615 top: 0, 2616 left: 0 2617 }; 2618 2619 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingPortal.mjs 2620 var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1); 2621 var PortalContext = /* @__PURE__ */ React17.createContext(null); 2622 if (true) PortalContext.displayName = "PortalContext"; 2623 var usePortalContext = () => React17.useContext(PortalContext); 2624 var attr = createAttribute("portal"); 2625 function useFloatingPortalNode(props = {}) { 2626 const { 2627 ref, 2628 container: containerProp, 2629 componentProps = EMPTY_OBJECT, 2630 elementProps 2631 } = props; 2632 const uniqueId = useId(); 2633 const portalContext = usePortalContext(); 2634 const parentPortalNode = portalContext?.portalNode; 2635 const [containerElement, setContainerElement] = React17.useState(null); 2636 const [portalNode, setPortalNode] = React17.useState(null); 2637 const setPortalNodeRef = useStableCallback((node) => { 2638 if (node !== null) { 2639 setPortalNode(node); 2640 } 2641 }); 2642 const containerRef = React17.useRef(null); 2643 useIsoLayoutEffect(() => { 2644 if (containerProp === null) { 2645 if (containerRef.current) { 2646 containerRef.current = null; 2647 setPortalNode(null); 2648 setContainerElement(null); 2649 } 2650 return; 2651 } 2652 const resolvedContainer = (containerProp && (isNode(containerProp) ? containerProp : containerProp.current)) ?? parentPortalNode ?? document.body; 2653 if (resolvedContainer == null) { 2654 if (containerRef.current) { 2655 containerRef.current = null; 2656 setPortalNode(null); 2657 setContainerElement(null); 2658 } 2659 return; 2660 } 2661 if (containerRef.current !== resolvedContainer) { 2662 containerRef.current = resolvedContainer; 2663 setPortalNode(null); 2664 setContainerElement(resolvedContainer); 2665 } 2666 }, [containerProp, parentPortalNode]); 2667 const portalElement = useRenderElement("div", componentProps, { 2668 ref: [ref, setPortalNodeRef], 2669 props: [{ 2670 id: uniqueId, 2671 [attr]: "" 2672 }, elementProps] 2673 }); 2674 const portalSubtree = containerElement && portalElement ? /* @__PURE__ */ ReactDOM2.createPortal(portalElement, containerElement) : null; 2675 return { 2676 node: portalNode, 2677 // `id` and `render` props can override or remove the generated ID. Use the exact 2678 // rendered value so `aria-owns` never points at an ID absent from the DOM. 2679 nodeId: /* @__PURE__ */ React17.isValidElement(portalElement) ? portalElement.props.id : void 0, 2680 subtree: portalSubtree 2681 }; 2682 } 2683 var FloatingPortal = /* @__PURE__ */ React17.forwardRef(function FloatingPortal2(componentProps, forwardedRef) { 2684 const { 2685 render, 2686 className, 2687 style, 2688 children, 2689 container, 2690 portalOwnerRole, 2691 ...elementProps 2692 } = componentProps; 2693 const { 2694 node: portalNode, 2695 nodeId: portalNodeId, 2696 subtree: portalSubtree 2697 } = useFloatingPortalNode({ 2698 container, 2699 ref: forwardedRef, 2700 componentProps, 2701 elementProps 2702 }); 2703 const beforeOutsideRef = React17.useRef(null); 2704 const afterOutsideRef = React17.useRef(null); 2705 const beforeInsideRef = React17.useRef(null); 2706 const afterInsideRef = React17.useRef(null); 2707 const [focusManagerState, setFocusManagerState] = React17.useState(null); 2708 const focusInsideDisabledRef = React17.useRef(false); 2709 const modal = focusManagerState?.modal; 2710 const open2 = focusManagerState?.open; 2711 const shouldRenderGuards = !!focusManagerState && !focusManagerState.modal && focusManagerState.open && !!portalNode; 2712 React17.useEffect(() => { 2713 if (!portalNode || modal) { 2714 return void 0; 2715 } 2716 function onFocus(event) { 2717 if (portalNode && event.relatedTarget && isOutsideEvent(event)) { 2718 if (event.type === "focusin") { 2719 if (focusInsideDisabledRef.current) { 2720 enableFocusInside(portalNode); 2721 focusInsideDisabledRef.current = false; 2722 } 2723 } else { 2724 disableFocusInside(portalNode); 2725 focusInsideDisabledRef.current = true; 2726 } 2727 } 2728 } 2729 return mergeCleanups(addEventListener(portalNode, "focusin", onFocus, true), addEventListener(portalNode, "focusout", onFocus, true)); 2730 }, [portalNode, modal]); 2731 useIsoLayoutEffect(() => { 2732 if (!portalNode || open2 !== true || !focusInsideDisabledRef.current) { 2733 return; 2734 } 2735 enableFocusInside(portalNode); 2736 focusInsideDisabledRef.current = false; 2737 }, [open2, portalNode]); 2738 const portalContextValue = React17.useMemo(() => ({ 2739 beforeOutsideRef, 2740 afterOutsideRef, 2741 beforeInsideRef, 2742 afterInsideRef, 2743 portalNode, 2744 setFocusManagerState 2745 }), [portalNode]); 2746 return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(React17.Fragment, { 2747 children: [portalSubtree, /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(PortalContext.Provider, { 2748 value: portalContextValue, 2749 children: [shouldRenderGuards && portalNode && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(FocusGuard, { 2750 "data-type": "outside", 2751 ref: beforeOutsideRef, 2752 onFocus: (event) => { 2753 if (isOutsideEvent(event, portalNode)) { 2754 beforeInsideRef.current?.focus(); 2755 } else { 2756 const domReference = focusManagerState ? focusManagerState.domReference : null; 2757 const prevTabbable = getPreviousTabbable(domReference); 2758 prevTabbable?.focus(); 2759 } 2760 } 2761 }), shouldRenderGuards && portalNode && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { 2762 role: portalOwnerRole, 2763 "aria-owns": portalNodeId, 2764 style: ownerVisuallyHidden 2765 }), portalNode && /* @__PURE__ */ ReactDOM2.createPortal(children, portalNode), shouldRenderGuards && portalNode && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(FocusGuard, { 2766 "data-type": "outside", 2767 ref: afterOutsideRef, 2768 onFocus: (event) => { 2769 if (isOutsideEvent(event, portalNode)) { 2770 afterInsideRef.current?.focus(); 2771 } else { 2772 const domReference = focusManagerState ? focusManagerState.domReference : null; 2773 const nextTabbable = getNextTabbable(domReference); 2774 nextTabbable?.focus(); 2775 if (focusManagerState?.closeOnFocusOut) { 2776 focusManagerState?.onOpenChange(false, createChangeEventDetails(reason_parts_exports.focusOut, event.nativeEvent)); 2777 } 2778 } 2779 } 2780 })] 2781 })] 2782 }); 2783 }); 2784 if (true) FloatingPortal.displayName = "FloatingPortal"; 2785 2786 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingTree.mjs 2787 var React18 = __toESM(require_react(), 1); 2788 2789 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/createEventEmitter.mjs 2790 function createEventEmitter() { 2791 const map = /* @__PURE__ */ new Map(); 2792 return { 2793 emit(event, data) { 2794 map.get(event)?.forEach((listener) => listener(data)); 2795 }, 2796 on(event, listener) { 2797 if (!map.has(event)) { 2798 map.set(event, /* @__PURE__ */ new Set()); 2799 } 2800 map.get(event).add(listener); 2801 }, 2802 off(event, listener) { 2803 map.get(event)?.delete(listener); 2804 } 2805 }; 2806 } 2807 2808 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingTree.mjs 2809 var import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1); 2810 var FloatingNodeContext = /* @__PURE__ */ React18.createContext(null); 2811 if (true) FloatingNodeContext.displayName = "FloatingNodeContext"; 2812 var FloatingTreeContext = /* @__PURE__ */ React18.createContext(null); 2813 if (true) FloatingTreeContext.displayName = "FloatingTreeContext"; 2814 var useFloatingParentNodeId = () => React18.useContext(FloatingNodeContext)?.id || null; 2815 var useFloatingTree = (externalTree) => { 2816 const contextTree = React18.useContext(FloatingTreeContext); 2817 return externalTree ?? contextTree; 2818 }; 2819 2820 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useClientPoint.mjs 2821 var React19 = __toESM(require_react(), 1); 2822 function createVirtualElement(domElement, data) { 2823 let offsetX = null; 2824 let offsetY = null; 2825 let isAutoUpdateEvent = false; 2826 return { 2827 contextElement: domElement || void 0, 2828 getBoundingClientRect() { 2829 const domRect = domElement?.getBoundingClientRect() || { 2830 width: 0, 2831 height: 0, 2832 x: 0, 2833 y: 0 2834 }; 2835 const isXAxis = data.axis === "x" || data.axis === "both"; 2836 const isYAxis = data.axis === "y" || data.axis === "both"; 2837 const canTrackCursorOnAutoUpdate = ["mouseenter", "mousemove"].includes(data.dataRef.current.openEvent?.type || "") && data.pointerType !== "touch"; 2838 const width = data.axis === "y" ? domRect.width : 0; 2839 const height = data.axis === "x" ? domRect.height : 0; 2840 let x = domRect.x; 2841 let y = domRect.y; 2842 if (offsetX == null && data.x && isXAxis) { 2843 offsetX = domRect.x - data.x; 2844 } 2845 if (offsetY == null && data.y && isYAxis) { 2846 offsetY = domRect.y - data.y; 2847 } 2848 x -= offsetX || 0; 2849 y -= offsetY || 0; 2850 if (!isAutoUpdateEvent || canTrackCursorOnAutoUpdate) { 2851 x = isXAxis && data.x != null ? data.x : x; 2852 y = isYAxis && data.y != null ? data.y : y; 2853 } 2854 isAutoUpdateEvent = true; 2855 return { 2856 width, 2857 height, 2858 x, 2859 y, 2860 top: y, 2861 right: x + width, 2862 bottom: y + height, 2863 left: x 2864 }; 2865 } 2866 }; 2867 } 2868 function isMouseBasedEvent(event) { 2869 return event != null && event.clientX != null; 2870 } 2871 function useClientPoint(store2, props = {}) { 2872 const { 2873 enabled = true, 2874 axis = "both" 2875 } = props; 2876 const open2 = store2.useState("open"); 2877 const floating = store2.useState("floatingElement"); 2878 const domReference = store2.useState("domReferenceElement"); 2879 const dataRef = store2.context.dataRef; 2880 const initialRef = React19.useRef(false); 2881 const cleanupListenerRef = React19.useRef(null); 2882 const [pointerType, setPointerType] = React19.useState(); 2883 const [reactive, setReactive] = React19.useState([]); 2884 const resetReference = useStableCallback((reference2) => { 2885 store2.set("positionReference", reference2); 2886 }); 2887 const setReference = useStableCallback((newX, newY, referenceElement) => { 2888 if (initialRef.current) { 2889 return; 2890 } 2891 if (dataRef.current.openEvent && !isMouseBasedEvent(dataRef.current.openEvent)) { 2892 return; 2893 } 2894 store2.set("positionReference", createVirtualElement(referenceElement ?? domReference, { 2895 x: newX, 2896 y: newY, 2897 axis, 2898 dataRef, 2899 pointerType 2900 })); 2901 }); 2902 const handleReferenceEnterOrMove = useStableCallback((event) => { 2903 if (!open2) { 2904 setReference(event.clientX, event.clientY, event.currentTarget); 2905 } else if (!cleanupListenerRef.current) { 2906 setReference(event.clientX, event.clientY, event.currentTarget); 2907 setReactive([]); 2908 } 2909 }); 2910 const openCheck = isMouseLikePointerType(pointerType) ? floating : open2; 2911 React19.useEffect(() => { 2912 if (!enabled) { 2913 resetReference(domReference); 2914 return void 0; 2915 } 2916 if (!openCheck) { 2917 return void 0; 2918 } 2919 function cleanupListener() { 2920 cleanupListenerRef.current?.(); 2921 cleanupListenerRef.current = null; 2922 } 2923 const win = getWindow(floating); 2924 function handleMouseMove(event) { 2925 const target = getTarget(event); 2926 if (!contains(floating, target)) { 2927 setReference(event.clientX, event.clientY); 2928 } else { 2929 cleanupListener(); 2930 } 2931 } 2932 if (!dataRef.current.openEvent || isMouseBasedEvent(dataRef.current.openEvent)) { 2933 cleanupListenerRef.current = addEventListener(win, "mousemove", handleMouseMove); 2934 } else { 2935 resetReference(domReference); 2936 } 2937 return cleanupListener; 2938 }, [openCheck, enabled, floating, dataRef, domReference, store2, setReference, resetReference, reactive]); 2939 React19.useEffect(() => () => { 2940 store2.set("positionReference", null); 2941 }, [store2]); 2942 React19.useEffect(() => { 2943 if (enabled && !floating) { 2944 initialRef.current = false; 2945 } 2946 }, [enabled, floating]); 2947 React19.useEffect(() => { 2948 if (!enabled && open2) { 2949 initialRef.current = true; 2950 } 2951 }, [enabled, open2]); 2952 const reference = React19.useMemo(() => { 2953 function setPointerTypeRef(event) { 2954 setPointerType(event.pointerType); 2955 } 2956 return { 2957 onPointerDown: setPointerTypeRef, 2958 onPointerEnter: setPointerTypeRef, 2959 onMouseMove: handleReferenceEnterOrMove, 2960 onMouseEnter: handleReferenceEnterOrMove 2961 }; 2962 }, [handleReferenceEnterOrMove]); 2963 return React19.useMemo(() => enabled ? { 2964 reference, 2965 trigger: reference 2966 } : {}, [enabled, reference]); 2967 } 2968 2969 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useDismiss.mjs 2970 var React20 = __toESM(require_react(), 1); 2971 function alwaysFalse() { 2972 return false; 2973 } 2974 function normalizeProp(normalizable) { 2975 return { 2976 escapeKey: typeof normalizable === "boolean" ? normalizable : normalizable?.escapeKey ?? false, 2977 outsidePress: typeof normalizable === "boolean" ? normalizable : normalizable?.outsidePress ?? true 2978 }; 2979 } 2980 function useDismiss(store2, props = {}) { 2981 const { 2982 enabled = true, 2983 escapeKey: escapeKey2 = true, 2984 outsidePress: outsidePressProp = true, 2985 outsidePressEvent = "sloppy", 2986 referencePress = alwaysFalse, 2987 bubbles, 2988 externalTree 2989 } = props; 2990 const open2 = store2.useState("open"); 2991 const floatingElement = store2.useState("floatingElement"); 2992 const { 2993 dataRef, 2994 events 2995 } = store2.context; 2996 const tree = useFloatingTree(externalTree); 2997 const outsidePressFn = useStableCallback(typeof outsidePressProp === "function" ? outsidePressProp : () => false); 2998 const outsidePress2 = typeof outsidePressProp === "function" ? outsidePressFn : outsidePressProp; 2999 const outsidePressEnabled = outsidePress2 !== false; 3000 const getOutsidePressEventProp = useStableCallback(() => outsidePressEvent); 3001 const { 3002 escapeKey: escapeKeyBubbles, 3003 outsidePress: outsidePressBubbles 3004 } = normalizeProp(bubbles); 3005 const pressStartedInsideRef = React20.useRef(false); 3006 const pressStartPreventedRef = React20.useRef(false); 3007 const suppressNextOutsideClickRef = React20.useRef(false); 3008 const sawPressWhileOpenRef = React20.useRef(false); 3009 const isComposingRef = React20.useRef(false); 3010 const currentPointerTypeRef = React20.useRef(""); 3011 const touchStateRef = React20.useRef(null); 3012 const cancelDismissOnEndTimeout = useTimeout(); 3013 const clearInsideReactTreeTimeout = useTimeout(); 3014 const compositionTimeout = useTimeout(); 3015 const clearInsideReactTree = useStableCallback(() => { 3016 clearInsideReactTreeTimeout.clear(); 3017 dataRef.current.insideReactTree = false; 3018 }); 3019 const hasBlockingChild = useStableCallback((bubbleKey) => { 3020 const nodeId = dataRef.current.floatingContext?.nodeId; 3021 const children = tree ? getNodeChildren(tree.nodesRef.current, nodeId) : []; 3022 return children.some((child) => child.context?.open && !child.context.dataRef.current[bubbleKey]); 3023 }); 3024 const isEventWithinOwnElements = useStableCallback((event) => { 3025 return isEventTargetWithin(event, store2.select("floatingElement")) || isEventTargetWithin(event, store2.select("domReferenceElement")); 3026 }); 3027 const closeOnReferencePress = useStableCallback((event) => { 3028 if (!referencePress()) { 3029 return; 3030 } 3031 store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerPress, event.nativeEvent)); 3032 }); 3033 const closeOnEscapeKeyDown = useStableCallback((event) => { 3034 if (!open2 || !enabled || !escapeKey2 || event.key !== "Escape") { 3035 return; 3036 } 3037 const native = isReactEvent(event) ? event.nativeEvent : event; 3038 if (isComposingRef.current || native.isComposing) { 3039 return; 3040 } 3041 if (!escapeKeyBubbles && hasBlockingChild("__escapeKeyBubbles")) { 3042 return; 3043 } 3044 const eventDetails = createChangeEventDetails(reason_parts_exports.escapeKey, native); 3045 store2.setOpen(false, eventDetails); 3046 if (!eventDetails.isCanceled) { 3047 event.preventDefault(); 3048 } 3049 if (!escapeKeyBubbles && !eventDetails.isPropagationAllowed) { 3050 event.stopPropagation(); 3051 } 3052 }); 3053 const markInsideReactTree = useStableCallback(() => { 3054 dataRef.current.insideReactTree = true; 3055 clearInsideReactTreeTimeout.start(0, clearInsideReactTree); 3056 }); 3057 const markPressStartedInsideReactTree = useStableCallback((event) => { 3058 if (!open2 || !enabled || event.button !== 0) { 3059 return; 3060 } 3061 const target = getTarget(event.nativeEvent); 3062 if (!contains(store2.select("floatingElement"), target)) { 3063 return; 3064 } 3065 if (!pressStartedInsideRef.current) { 3066 pressStartedInsideRef.current = true; 3067 pressStartPreventedRef.current = false; 3068 } 3069 }); 3070 const markInsidePressStartPrevented = useStableCallback((event) => { 3071 if (!open2 || !enabled) { 3072 return; 3073 } 3074 if (!(event.defaultPrevented || event.nativeEvent.defaultPrevented)) { 3075 return; 3076 } 3077 if (pressStartedInsideRef.current) { 3078 pressStartPreventedRef.current = true; 3079 } 3080 }); 3081 React20.useEffect(() => { 3082 function handleOpenChange(details) { 3083 if (!details.open) { 3084 sawPressWhileOpenRef.current = false; 3085 } 3086 } 3087 events.on("openchange", handleOpenChange); 3088 return () => { 3089 events.off("openchange", handleOpenChange); 3090 }; 3091 }, [events]); 3092 React20.useEffect(() => clearInsideReactTree, [clearInsideReactTree]); 3093 React20.useEffect(() => { 3094 if (!open2 || !enabled) { 3095 if (!open2) { 3096 sawPressWhileOpenRef.current = false; 3097 isComposingRef.current = false; 3098 currentPointerTypeRef.current = ""; 3099 touchStateRef.current = null; 3100 } 3101 return clearInsideReactTree; 3102 } 3103 dataRef.current.__escapeKeyBubbles = escapeKeyBubbles; 3104 dataRef.current.__outsidePressBubbles = outsidePressBubbles; 3105 const preventedPressSuppressionTimeout = new Timeout(); 3106 const doc = ownerDocument(floatingElement); 3107 function handleCompositionStart() { 3108 compositionTimeout.clear(); 3109 isComposingRef.current = true; 3110 } 3111 function handleCompositionEnd() { 3112 isComposingRef.current = true; 3113 compositionTimeout.start( 3114 // 0ms or 1ms don't work in Safari. 5ms appears to consistently work. 3115 // Only apply to WebKit for the test to remain 0ms. 3116 parts_exports.engine.webkit ? 5 : 0, 3117 () => { 3118 isComposingRef.current = false; 3119 } 3120 ); 3121 } 3122 function suppressImmediateOutsideClickAfterPreventedStart() { 3123 suppressNextOutsideClickRef.current = true; 3124 preventedPressSuppressionTimeout.start(0, () => { 3125 suppressNextOutsideClickRef.current = false; 3126 }); 3127 } 3128 function resetPressStartState() { 3129 pressStartedInsideRef.current = false; 3130 pressStartPreventedRef.current = false; 3131 } 3132 function getOutsidePressEvent() { 3133 const type = currentPointerTypeRef.current; 3134 const computedType = type === "pen" || !type ? "mouse" : type; 3135 const outsidePressEventValue = getOutsidePressEventProp(); 3136 const resolved = typeof outsidePressEventValue === "function" ? outsidePressEventValue() : outsidePressEventValue; 3137 if (typeof resolved === "string") { 3138 return resolved; 3139 } 3140 return resolved[computedType]; 3141 } 3142 function shouldIgnoreEvent(event) { 3143 const computedOutsidePressEvent = getOutsidePressEvent(); 3144 return computedOutsidePressEvent === "intentional" && event.type !== "click" || computedOutsidePressEvent === "sloppy" && event.type === "click"; 3145 } 3146 function isEventWithinFloatingTree(event) { 3147 const nodeId = dataRef.current.floatingContext?.nodeId; 3148 const targetIsInsideChildren = tree && getNodeChildren(tree.nodesRef.current, nodeId).some((node) => isEventTargetWithin(event, node.context?.elements.floating)); 3149 return isEventWithinOwnElements(event) || targetIsInsideChildren; 3150 } 3151 function closeOnPressOutside(event) { 3152 if (shouldIgnoreEvent(event)) { 3153 if (event.type !== "click" && !isEventWithinOwnElements(event)) { 3154 preventedPressSuppressionTimeout.clear(); 3155 suppressNextOutsideClickRef.current = false; 3156 } 3157 clearInsideReactTree(); 3158 return; 3159 } 3160 if (dataRef.current.insideReactTree) { 3161 clearInsideReactTree(); 3162 return; 3163 } 3164 const target = getTarget(event); 3165 const inertSelector = `[$createAttribute("inert")}]`; 3166 const targetRoot = isElement(target) ? target.getRootNode() : null; 3167 const markers = Array.from((isShadowRoot(targetRoot) ? targetRoot : ownerDocument(store2.select("floatingElement"))).querySelectorAll(inertSelector)); 3168 const triggers = store2.context.triggerElements; 3169 if (target && (triggers.hasElement(target) || triggers.hasMatchingElement((trigger) => contains(trigger, target)))) { 3170 return; 3171 } 3172 let targetRootAncestor = isElement(target) ? target : null; 3173 while (targetRootAncestor && !isLastTraversableNode(targetRootAncestor)) { 3174 const nextParent = getParentNode(targetRootAncestor); 3175 if (isLastTraversableNode(nextParent) || !isElement(nextParent)) { 3176 break; 3177 } 3178 targetRootAncestor = nextParent; 3179 } 3180 if (markers.length && isElement(target) && !isRootElement(target) && // Clicked on a direct ancestor (e.g. FloatingOverlay). 3181 !contains(target, store2.select("floatingElement")) && // If the target root element contains none of the markers, then the 3182 // element was injected after the floating element rendered. 3183 markers.every((marker) => !contains(targetRootAncestor, marker))) { 3184 return; 3185 } 3186 if (isHTMLElement(target) && !("touches" in event)) { 3187 const lastTraversableNode = isLastTraversableNode(target); 3188 const style = getComputedStyle2(target); 3189 const scrollRe = /auto|scroll/; 3190 const isScrollableX = lastTraversableNode || scrollRe.test(style.overflowX); 3191 const isScrollableY = lastTraversableNode || scrollRe.test(style.overflowY); 3192 const canScrollX = isScrollableX && target.clientWidth > 0 && target.scrollWidth > target.clientWidth; 3193 const canScrollY = isScrollableY && target.clientHeight > 0 && target.scrollHeight > target.clientHeight; 3194 const isRTL3 = style.direction === "rtl"; 3195 const pressedVerticalScrollbar = canScrollY && (isRTL3 ? event.offsetX <= target.offsetWidth - target.clientWidth : event.offsetX > target.clientWidth); 3196 const pressedHorizontalScrollbar = canScrollX && event.offsetY > target.clientHeight; 3197 if (pressedVerticalScrollbar || pressedHorizontalScrollbar) { 3198 return; 3199 } 3200 } 3201 if (isEventWithinFloatingTree(event)) { 3202 return; 3203 } 3204 if (getOutsidePressEvent() === "intentional") { 3205 if (event.detail !== 0 && !isVirtualClick(event) && !sawPressWhileOpenRef.current) { 3206 return; 3207 } 3208 if (suppressNextOutsideClickRef.current) { 3209 preventedPressSuppressionTimeout.clear(); 3210 suppressNextOutsideClickRef.current = false; 3211 return; 3212 } 3213 } 3214 if (typeof outsidePress2 === "function" && !outsidePress2(event)) { 3215 return; 3216 } 3217 if (hasBlockingChild("__outsidePressBubbles")) { 3218 return; 3219 } 3220 store2.setOpen(false, createChangeEventDetails(reason_parts_exports.outsidePress, event)); 3221 clearInsideReactTree(); 3222 } 3223 function handlePointerDown(event) { 3224 if (getOutsidePressEvent() !== "sloppy" || event.pointerType === "touch" || !store2.select("open") || !enabled || isEventWithinOwnElements(event)) { 3225 return; 3226 } 3227 closeOnPressOutside(event); 3228 } 3229 function handleTouchStart(event) { 3230 if (getOutsidePressEvent() !== "sloppy" || !store2.select("open") || !enabled || isEventWithinOwnElements(event)) { 3231 return; 3232 } 3233 const touch = event.touches[0]; 3234 if (touch) { 3235 touchStateRef.current = { 3236 startTime: Date.now(), 3237 startX: touch.clientX, 3238 startY: touch.clientY, 3239 dismissOnTouchEnd: false, 3240 dismissOnMouseDown: true 3241 }; 3242 cancelDismissOnEndTimeout.start(1e3, () => { 3243 if (touchStateRef.current) { 3244 touchStateRef.current.dismissOnTouchEnd = false; 3245 touchStateRef.current.dismissOnMouseDown = false; 3246 } 3247 }); 3248 } 3249 } 3250 function addTargetEventListenerOnce(event, listener) { 3251 const target = getTarget(event); 3252 if (!target) { 3253 return; 3254 } 3255 const unsubscribe2 = addEventListener(target, event.type, () => { 3256 listener(event); 3257 unsubscribe2(); 3258 }); 3259 } 3260 function handleTouchStartCapture(event) { 3261 currentPointerTypeRef.current = "touch"; 3262 addTargetEventListenerOnce(event, handleTouchStart); 3263 } 3264 function closeOnPressOutsideCapture(event) { 3265 cancelDismissOnEndTimeout.clear(); 3266 if (event.type === "pointerdown") { 3267 if (event.button === 0) { 3268 sawPressWhileOpenRef.current = true; 3269 } 3270 currentPointerTypeRef.current = event.pointerType; 3271 } 3272 if (event.type === "mousedown" && touchStateRef.current && !touchStateRef.current.dismissOnMouseDown) { 3273 return; 3274 } 3275 addTargetEventListenerOnce(event, (targetEvent) => { 3276 if (targetEvent.type === "pointerdown") { 3277 handlePointerDown(targetEvent); 3278 } else { 3279 closeOnPressOutside(targetEvent); 3280 } 3281 }); 3282 } 3283 function handlePressEndCapture(event) { 3284 if (event.type === "pointercancel") { 3285 sawPressWhileOpenRef.current = false; 3286 } 3287 if (!pressStartedInsideRef.current) { 3288 return; 3289 } 3290 const pressStartedInsideDefaultPrevented = pressStartPreventedRef.current; 3291 resetPressStartState(); 3292 if (getOutsidePressEvent() !== "intentional") { 3293 return; 3294 } 3295 if (event.type === "pointercancel") { 3296 if (pressStartedInsideDefaultPrevented) { 3297 suppressImmediateOutsideClickAfterPreventedStart(); 3298 } 3299 return; 3300 } 3301 if (isEventWithinFloatingTree(event)) { 3302 return; 3303 } 3304 if (pressStartedInsideDefaultPrevented) { 3305 suppressImmediateOutsideClickAfterPreventedStart(); 3306 return; 3307 } 3308 if (typeof outsidePress2 === "function" && !outsidePress2(event)) { 3309 return; 3310 } 3311 preventedPressSuppressionTimeout.clear(); 3312 suppressNextOutsideClickRef.current = true; 3313 clearInsideReactTree(); 3314 } 3315 function handleTouchMove(event) { 3316 if (getOutsidePressEvent() !== "sloppy" || !touchStateRef.current || isEventWithinOwnElements(event)) { 3317 return; 3318 } 3319 const touch = event.touches[0]; 3320 if (!touch) { 3321 return; 3322 } 3323 const deltaX = Math.abs(touch.clientX - touchStateRef.current.startX); 3324 const deltaY = Math.abs(touch.clientY - touchStateRef.current.startY); 3325 const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY); 3326 if (distance > 5) { 3327 touchStateRef.current.dismissOnTouchEnd = true; 3328 } 3329 if (distance > 10) { 3330 closeOnPressOutside(event); 3331 cancelDismissOnEndTimeout.clear(); 3332 touchStateRef.current = null; 3333 } 3334 } 3335 function handleTouchMoveCapture(event) { 3336 addTargetEventListenerOnce(event, handleTouchMove); 3337 } 3338 function handleTouchEnd(event) { 3339 if (getOutsidePressEvent() !== "sloppy" || !touchStateRef.current || isEventWithinOwnElements(event)) { 3340 return; 3341 } 3342 if (touchStateRef.current.dismissOnTouchEnd) { 3343 closeOnPressOutside(event); 3344 } 3345 cancelDismissOnEndTimeout.clear(); 3346 touchStateRef.current = null; 3347 } 3348 function handleTouchEndCapture(event) { 3349 addTargetEventListenerOnce(event, handleTouchEnd); 3350 } 3351 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, { 3352 capture: true, 3353 passive: true 3354 }), addEventListener(doc, "touchmove", handleTouchMoveCapture, { 3355 capture: true, 3356 passive: true 3357 }), addEventListener(doc, "touchend", handleTouchEndCapture, { 3358 capture: true, 3359 passive: true 3360 }))); 3361 return () => { 3362 unsubscribe(); 3363 preventedPressSuppressionTimeout.clear(); 3364 resetPressStartState(); 3365 suppressNextOutsideClickRef.current = false; 3366 }; 3367 }, [dataRef, floatingElement, escapeKey2, outsidePressEnabled, outsidePress2, open2, enabled, escapeKeyBubbles, outsidePressBubbles, closeOnEscapeKeyDown, clearInsideReactTree, getOutsidePressEventProp, hasBlockingChild, isEventWithinOwnElements, tree, store2, cancelDismissOnEndTimeout, compositionTimeout]); 3368 const reference = React20.useMemo(() => ({ 3369 onKeyDown: closeOnEscapeKeyDown, 3370 onPointerDown: closeOnReferencePress, 3371 onClick: closeOnReferencePress 3372 }), [closeOnEscapeKeyDown, closeOnReferencePress]); 3373 const floating = React20.useMemo(() => ({ 3374 onKeyDown: closeOnEscapeKeyDown, 3375 // `onMouseDown` may be blocked if `event.preventDefault()` is called in 3376 // `onPointerDown`, such as with <NumberField.ScrubArea>. 3377 // See https://github.com/mui/base-ui/pull/3379 3378 onPointerDown: markInsidePressStartPrevented, 3379 onMouseDown: markInsidePressStartPrevented, 3380 onClickCapture: markInsideReactTree, 3381 onMouseDownCapture(event) { 3382 markInsideReactTree(); 3383 markPressStartedInsideReactTree(event); 3384 }, 3385 onPointerDownCapture(event) { 3386 markInsideReactTree(); 3387 markPressStartedInsideReactTree(event); 3388 }, 3389 onMouseUpCapture: markInsideReactTree, 3390 onTouchEndCapture: markInsideReactTree, 3391 onTouchMoveCapture: markInsideReactTree 3392 }), [closeOnEscapeKeyDown, markInsideReactTree, markPressStartedInsideReactTree, markInsidePressStartPrevented]); 3393 return React20.useMemo(() => enabled ? { 3394 reference, 3395 floating, 3396 trigger: reference 3397 } : {}, [enabled, reference, floating]); 3398 } 3399 3400 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popups/popupHandle.mjs 3401 var BasePopupHandle = class { 3402 /** 3403 * Stores of every root currently using this handle, in attach order. A handle is meant to be used 3404 * by a single mounted root, but roots can transiently overlap (e.g. during an animated route 3405 * transition), so this stack lets `attachStore`'s cleanup restore the previous root instead of 3406 * leaving a still-mounted root uncontrollable when a newer overlapping root detaches first. 3407 */ 3408 attachedStores = []; 3409 /** 3410 * Store of the root that currently controls the handle: the most recently attached one still 3411 * mounted, or `null` when no root is attached. Imperative methods are no-ops while this is `null`. 3412 */ 3413 attachedStoreValue = null; 3414 /** 3415 * Listeners notified when `attachedStore` changes, so detached triggers can follow the store pointer. 3416 */ 3417 storeListeners = /* @__PURE__ */ new Set(); 3418 /** 3419 * Creates a handle backed by the store used while no root is attached. 3420 * 3421 * @param fallbackStore Inert, closed store handed to detached triggers while no root is attached, 3422 * so they can render and register without a mounted root. Triggers register into whichever store 3423 * `store` currently resolves to, so while detached they live in this store's trigger map and 3424 * migrate themselves to the root's store (and back) as it attaches/detaches. 3425 * @param componentName Component name used to prefix dev warnings, e.g. `'Menu'` produces 3426 * `MenuHandle.open()` in warning text. 3427 * @param throwOnMissingTrigger Whether `open(triggerId)` throws when no trigger with that id is 3428 * registered. Anchored popups (Menu, Popover, Tooltip, PreviewCard) need a trigger to anchor to, 3429 * so they throw; Dialog is not anchored and instead opens unassociated with a dev warning. 3430 */ 3431 constructor(fallbackStore, componentName, throwOnMissingTrigger = true) { 3432 this.fallbackStore = fallbackStore; 3433 this.componentName = componentName; 3434 this.throwOnMissingTrigger = throwOnMissingTrigger; 3435 } 3436 get attachedStore() { 3437 return this.attachedStoreValue; 3438 } 3439 /** 3440 * Store that detached triggers read from: the attached root's store, or an inert fallback store 3441 * used while no root is attached. 3442 * @internal 3443 */ 3444 get store() { 3445 return this.attachedStoreValue ?? this.fallbackStore; 3446 } 3447 /** 3448 * Stable fallback store used for server rendering and hydration. Root stores cannot be recorded on 3449 * the handle during render because a handle can be shared by concurrent server-rendered requests. 3450 * @internal 3451 */ 3452 get serverStore() { 3453 return this.fallbackStore; 3454 } 3455 /** 3456 * Subscribes to changes of the attached store pointer so detached triggers re-render and re-bind 3457 * when a root attaches or detaches. Returns a function that removes the listener. 3458 * @internal 3459 */ 3460 subscribeStore(listener) { 3461 this.storeListeners.add(listener); 3462 return () => { 3463 this.storeListeners.delete(listener); 3464 }; 3465 } 3466 /** 3467 * Points the handle at a root's store and notifies subscribers so detached triggers re-render and 3468 * re-register into it (their registration effect migrates them when the store pointer changes). 3469 * Returns a cleanup function that detaches the store again. 3470 * @internal 3471 */ 3472 attachStore(newStore) { 3473 this.attachedStores.push(newStore); 3474 this.setActiveStore(newStore); 3475 if (true) { 3476 if (this.attachedStores.length > 1) { 3477 const dev = this; 3478 (dev.overlapWarningFrame ??= AnimationFrame.create()).request(() => { 3479 if (this.attachedStores.length > 1) { 3480 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."); 3481 } 3482 }); 3483 } 3484 } 3485 return () => { 3486 const index2 = this.attachedStores.lastIndexOf(newStore); 3487 if (index2 !== -1) { 3488 this.attachedStores.splice(index2, 1); 3489 } 3490 this.setActiveStore(this.attachedStores[this.attachedStores.length - 1] ?? null); 3491 }; 3492 } 3493 /** 3494 * Sets the store that currently controls the handle and notifies subscribers when it changes, so 3495 * detached triggers re-render and migrate their registration to the new store. 3496 */ 3497 setActiveStore(store2) { 3498 if (this.attachedStoreValue !== store2) { 3499 this.attachedStoreValue = store2; 3500 this.storeListeners.forEach((listener) => { 3501 listener(); 3502 }); 3503 } 3504 } 3505 /** 3506 * Opens the attached root's store and associates it with the trigger with the given id, or a 3507 * no-op (with a dev warning) while no root is attached. Shared by every concrete handle's public 3508 * `open()` method, which only narrows the parameter type. 3509 * 3510 * When a trigger id is given but no matching trigger is registered, anchored popups throw (see 3511 * `throwOnMissingTrigger`); Dialog opens unassociated with a dev warning instead. 3512 * 3513 * This method should only be called in an event handler or an effect (not during rendering). 3514 * 3515 * @param triggerId ID of the trigger to associate with the popup, or `null`/`undefined` to open 3516 * without associating any trigger. 3517 */ 3518 openByTrigger(triggerId) { 3519 const attachedStore = this.attachedStore; 3520 if (attachedStore === null) { 3521 if (true) { 3522 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.`); 3523 } 3524 return; 3525 } 3526 let triggerElement; 3527 if (triggerId) { 3528 for (let i = this.attachedStores.length - 1; i >= 0 && !triggerElement; i -= 1) { 3529 triggerElement = this.attachedStores[i].context.triggerElements.getById(triggerId); 3530 } 3531 triggerElement ??= this.fallbackStore.context.triggerElements.getById(triggerId); 3532 } 3533 if (triggerId && !triggerElement) { 3534 if (this.throwOnMissingTrigger) { 3535 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)); 3536 } 3537 if (true) { 3538 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.`); 3539 } 3540 } 3541 attachedStore.setOpen(true, createChangeEventDetails(reason_parts_exports.imperativeAction, void 0, triggerElement)); 3542 } 3543 /** 3544 * Closes the popup by setting the attached root's store to closed, or a no-op (with a dev warning) 3545 * while no root is attached. Shared by every concrete handle's public `close()` method. 3546 * 3547 * This method should only be called in an event handler or an effect (not during rendering). 3548 */ 3549 closePopup() { 3550 const attachedStore = this.attachedStore; 3551 if (attachedStore === null) { 3552 if (true) { 3553 console.warn(`Base UI: $this.componentName}Handle.close() was called while no root using this handle is mounted. The call was ignored.`); 3554 } 3555 return; 3556 } 3557 attachedStore.setOpen(false, createChangeEventDetails(reason_parts_exports.imperativeAction)); 3558 } 3559 }; 3560 3561 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popups/popupStoreUtils.mjs 3562 var React22 = __toESM(require_react(), 1); 3563 var ReactDOM3 = __toESM(require_react_dom(), 1); 3564 3565 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useSyncedFloatingRootContext.mjs 3566 function useSyncedFloatingRootContext(options) { 3567 const { 3568 popupStore, 3569 treatPopupAsFloatingElement = false, 3570 floatingRootContext: store2, 3571 floatingId, 3572 nested, 3573 onOpenChange 3574 } = options; 3575 const open2 = popupStore.useState("open"); 3576 const referenceElement = popupStore.useState("activeTriggerElement"); 3577 const floatingElement = popupStore.useState(treatPopupAsFloatingElement ? "popupElement" : "positionerElement"); 3578 const handleOpenChange = onOpenChange; 3579 popupStore.useSyncedValue("floatingId", floatingId); 3580 useIsoLayoutEffect(() => { 3581 const valuesToSync = { 3582 open: open2, 3583 floatingId, 3584 referenceElement, 3585 floatingElement 3586 }; 3587 if (isElement(referenceElement)) { 3588 valuesToSync.domReferenceElement = referenceElement; 3589 } 3590 if (store2.state.positionReference === store2.state.referenceElement) { 3591 valuesToSync.positionReference = referenceElement; 3592 } 3593 store2.update(valuesToSync); 3594 }, [open2, floatingId, referenceElement, floatingElement, store2]); 3595 store2.context.onOpenChange = handleOpenChange; 3596 store2.context.nested = nested; 3597 return store2; 3598 } 3599 3600 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useUnmountAfterClose.mjs 3601 var React21 = __toESM(require_react(), 1); 3602 function useUnmountAfterClose(parameters) { 3603 const { 3604 open: open2, 3605 ref, 3606 preventUnmountOnClose, 3607 setPreventUnmountOnClose: setPreventUnmountOnCloseParam, 3608 onUnmount, 3609 animateInitialOpen 3610 } = parameters; 3611 const setPreventUnmountOnClose = useStableCallback(setPreventUnmountOnCloseParam); 3612 const { 3613 mounted, 3614 setMounted, 3615 transitionStatus 3616 } = useTransitionStatus(open2, false, false, animateInitialOpen); 3617 const preventUnmountingOnClose = open2 ? false : preventUnmountOnClose; 3618 useIsoLayoutEffect(() => { 3619 if (open2) { 3620 setPreventUnmountOnClose(false); 3621 } 3622 }, [open2, setPreventUnmountOnClose]); 3623 const mountedRef = React21.useRef(mounted); 3624 const pendingUnmountRef = React21.useRef(false); 3625 const rerender = useForcedRerendering(); 3626 const unmount = () => { 3627 mountedRef.current = false; 3628 setMounted(false); 3629 onUnmount(); 3630 }; 3631 useIsoLayoutEffect(() => { 3632 mountedRef.current = mounted; 3633 if (pendingUnmountRef.current) { 3634 pendingUnmountRef.current = false; 3635 if (!open2 && mounted) { 3636 unmount(); 3637 } 3638 } 3639 }); 3640 const forceUnmount = useStableCallback(() => { 3641 if (!mountedRef.current) { 3642 return; 3643 } 3644 if (open2) { 3645 pendingUnmountRef.current = true; 3646 rerender(); 3647 return; 3648 } 3649 unmount(); 3650 }); 3651 useOpenChangeComplete({ 3652 enabled: mounted && !open2 && !preventUnmountingOnClose, 3653 open: open2, 3654 ref, 3655 onComplete() { 3656 if (!open2) { 3657 forceUnmount(); 3658 } 3659 } 3660 }); 3661 return { 3662 mounted, 3663 transitionStatus, 3664 preventUnmountingOnClose, 3665 forceUnmount 3666 }; 3667 } 3668 3669 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popups/popupStoreUtils.mjs 3670 var FOCUSABLE_POPUP_PROPS = { 3671 tabIndex: -1, 3672 [FOCUSABLE_ATTRIBUTE]: "" 3673 }; 3674 function usePopupRootStore(createStore, treatPopupAsFloatingElement = false) { 3675 const floatingId = useId(); 3676 const nested = useFloatingParentNodeId() != null; 3677 const store2 = useRefWithInit(() => createStore(floatingId, nested)).current; 3678 useSyncedFloatingRootContext({ 3679 popupStore: store2, 3680 treatPopupAsFloatingElement, 3681 floatingRootContext: store2.state.floatingRootContext, 3682 floatingId, 3683 nested, 3684 onOpenChange: store2.setOpen 3685 }); 3686 return store2; 3687 } 3688 function PopupHandleAttachment({ 3689 handle, 3690 store: store2 3691 }) { 3692 useIsoLayoutEffect(() => { 3693 return handle.attachStore(store2); 3694 }, [handle, store2]); 3695 return null; 3696 } 3697 function syncTriggerCount(store2) { 3698 const triggerCount = store2.context.triggerElements.size; 3699 if (store2.select("open") && store2.state.triggerCount !== triggerCount) { 3700 store2.set("triggerCount", triggerCount); 3701 } 3702 } 3703 function useTriggerRegistration(id, store2) { 3704 const registrationRef = React22.useRef(null); 3705 return useStableCallback((element) => { 3706 const registration = registrationRef.current; 3707 if (registration !== null) { 3708 if (registration.element === element && registration.store === store2 && registration.id === id) { 3709 return; 3710 } 3711 registrationRef.current = null; 3712 const registeredStore = registration.store; 3713 if (registeredStore.context.triggerElements.getById(registration.id) === registration.element) { 3714 registeredStore.context.triggerElements.delete(registration.id); 3715 syncTriggerCount(registeredStore); 3716 } 3717 } 3718 if (element !== null && id !== void 0) { 3719 registrationRef.current = { 3720 store: store2, 3721 id, 3722 element 3723 }; 3724 store2.context.triggerElements.add(id, element); 3725 syncTriggerCount(store2); 3726 } 3727 }); 3728 } 3729 function createPopupOpenState(state, open2, trigger, preventUnmountOnClose = false) { 3730 let preventUnmountingOnClose = state.preventUnmountingOnClose; 3731 if (open2) { 3732 preventUnmountingOnClose = false; 3733 } else if (preventUnmountOnClose) { 3734 preventUnmountingOnClose = true; 3735 } 3736 const triggerId = trigger?.id ?? null; 3737 let activeTriggerId = state.activeTriggerId; 3738 let activeTriggerElement = state.activeTriggerElement; 3739 if (triggerId || open2) { 3740 activeTriggerId = triggerId; 3741 activeTriggerElement = trigger ?? null; 3742 } 3743 return { 3744 open: open2, 3745 preventUnmountingOnClose, 3746 activeTriggerId, 3747 activeTriggerElement, 3748 // An open request without a trigger (a handle's `open(null)` or `openWithPayload()`) must not 3749 // be reassociated with a lone registered trigger later on. Controlled and default opens never 3750 // pass through here, so they keep claiming a lone trigger. A close request keeps the flag: a 3751 // controlled root may decline it and stay open, so the Root clears the flag only once the 3752 // popup is effectively closed. 3753 openedWithoutTrigger: open2 ? trigger == null : state.openedWithoutTrigger 3754 }; 3755 } 3756 function attachPreventUnmountOnClose(eventDetails) { 3757 let preventUnmountOnClose = false; 3758 eventDetails.preventUnmountOnClose = () => { 3759 preventUnmountOnClose = true; 3760 }; 3761 return () => preventUnmountOnClose; 3762 } 3763 function applyPopupOpenChange(store2, nextOpen, eventDetails, options = {}) { 3764 const reason = eventDetails.reason; 3765 const isHover = reason === reason_parts_exports.triggerHover; 3766 const isFocusOpen = nextOpen && reason === reason_parts_exports.triggerFocus; 3767 const isDismissClose = !nextOpen && (reason === reason_parts_exports.triggerPress || reason === reason_parts_exports.escapeKey); 3768 const shouldPreventUnmountOnClose = attachPreventUnmountOnClose(eventDetails); 3769 store2.context.onOpenChange?.(nextOpen, eventDetails); 3770 if (eventDetails.isCanceled) { 3771 return; 3772 } 3773 options.onBeforeDispatch?.(); 3774 store2.state.floatingRootContext.dispatchOpenChange(nextOpen, eventDetails); 3775 const changeState = () => { 3776 const popupOpenState = createPopupOpenState(store2.state, nextOpen, eventDetails.trigger, shouldPreventUnmountOnClose()); 3777 const updatedState = { 3778 ...options.extraState, 3779 ...popupOpenState 3780 }; 3781 if (isFocusOpen) { 3782 updatedState.instantType = "focus"; 3783 } else if (isDismissClose) { 3784 updatedState.instantType = "dismiss"; 3785 } else if (isHover) { 3786 updatedState.instantType = void 0; 3787 } 3788 store2.update(updatedState); 3789 }; 3790 if (isHover) { 3791 ReactDOM3.flushSync(changeState); 3792 } else { 3793 changeState(); 3794 } 3795 } 3796 function useTriggerDataForwarding(triggerId, triggerElementRef, store2, stateUpdates) { 3797 const isMountedByThisTrigger = store2.useState("isMountedByTrigger", triggerId); 3798 const baseRegisterTrigger = useTriggerRegistration(triggerId, store2); 3799 const applyTriggerData = useStableCallback((element) => { 3800 const open2 = store2.select("open"); 3801 const activeTriggerId = store2.select("activeTriggerId"); 3802 if (activeTriggerId === triggerId) { 3803 const changes = { 3804 activeTriggerElement: element, 3805 ...open2 ? stateUpdates : null 3806 }; 3807 store2.update(changes); 3808 return; 3809 } 3810 if (activeTriggerId == null && open2 && !store2.state.openedWithoutTrigger) { 3811 const changes = { 3812 activeTriggerId: triggerId ?? null, 3813 activeTriggerElement: element, 3814 ...stateUpdates 3815 }; 3816 store2.update(changes); 3817 } 3818 }); 3819 const registerTrigger = useStableCallback((element) => { 3820 baseRegisterTrigger(element); 3821 if (element) { 3822 applyTriggerData(element); 3823 } 3824 }); 3825 useIsoLayoutEffect(() => { 3826 registerTrigger(triggerElementRef.current); 3827 return () => registerTrigger(null); 3828 }, [registerTrigger, triggerElementRef, store2, triggerId]); 3829 useIsoLayoutEffect(() => { 3830 if (isMountedByThisTrigger) { 3831 const changes = { 3832 activeTriggerElement: triggerElementRef.current, 3833 ...stateUpdates 3834 }; 3835 store2.update(changes); 3836 } 3837 }, [isMountedByThisTrigger, store2, triggerElementRef, ...Object.values(stateUpdates)]); 3838 return { 3839 registerTrigger, 3840 isMountedByThisTrigger 3841 }; 3842 } 3843 function useImplicitActiveTrigger(store2, options = {}) { 3844 const { 3845 closeOnActiveTriggerUnmount = false 3846 } = options; 3847 const resolvedActiveTriggerIdRef = React22.useRef(null); 3848 const open2 = store2.useState("open"); 3849 const reactiveTriggerCount = store2.useState("triggerCount"); 3850 const activeTriggerId = store2.useState("activeTriggerId"); 3851 const reactiveActiveTriggerElement = store2.useState("activeTriggerElement"); 3852 useIsoLayoutEffect(() => { 3853 if (!open2) { 3854 resolvedActiveTriggerIdRef.current = null; 3855 if (store2.state.triggerCount !== 0) { 3856 store2.set("triggerCount", 0); 3857 } 3858 if (store2.state.openedWithoutTrigger) { 3859 store2.set("openedWithoutTrigger", false); 3860 } 3861 return; 3862 } 3863 const triggerCount = store2.context.triggerElements.size; 3864 const stateUpdates = {}; 3865 if (store2.state.triggerCount !== triggerCount) { 3866 stateUpdates.triggerCount = triggerCount; 3867 } 3868 const currentActiveTriggerId = store2.select("activeTriggerId"); 3869 let lostActiveTriggerId = null; 3870 if (currentActiveTriggerId) { 3871 const activeTriggerElement = store2.context.triggerElements.getById(currentActiveTriggerId); 3872 if (!activeTriggerElement) { 3873 for (const [triggerId, triggerElement] of store2.context.triggerElements.entries()) { 3874 if (triggerElement === store2.state.activeTriggerElement) { 3875 stateUpdates.activeTriggerId = triggerId; 3876 stateUpdates.activeTriggerElement = triggerElement; 3877 resolvedActiveTriggerIdRef.current = triggerId; 3878 break; 3879 } 3880 } 3881 if (stateUpdates.activeTriggerId === void 0) { 3882 if (resolvedActiveTriggerIdRef.current === currentActiveTriggerId) { 3883 lostActiveTriggerId = currentActiveTriggerId; 3884 } else { 3885 resolvedActiveTriggerIdRef.current = null; 3886 } 3887 } 3888 } else { 3889 resolvedActiveTriggerIdRef.current = currentActiveTriggerId; 3890 if (activeTriggerElement !== store2.state.activeTriggerElement) { 3891 stateUpdates.activeTriggerElement = activeTriggerElement; 3892 } 3893 } 3894 } else { 3895 resolvedActiveTriggerIdRef.current = null; 3896 } 3897 if (!lostActiveTriggerId && !currentActiveTriggerId && !store2.state.openedWithoutTrigger && triggerCount === 1) { 3898 const iteratorResult = store2.context.triggerElements.entries().next(); 3899 if (!iteratorResult.done) { 3900 const [implicitTriggerId, implicitTriggerElement] = iteratorResult.value; 3901 stateUpdates.activeTriggerId = implicitTriggerId; 3902 stateUpdates.activeTriggerElement = implicitTriggerElement; 3903 resolvedActiveTriggerIdRef.current = implicitTriggerId; 3904 } 3905 } 3906 if (stateUpdates.triggerCount !== void 0 || stateUpdates.activeTriggerId !== void 0 || stateUpdates.activeTriggerElement !== void 0) { 3907 store2.update(stateUpdates); 3908 } 3909 if (lostActiveTriggerId) { 3910 if (closeOnActiveTriggerUnmount) { 3911 queueMicrotask(() => { 3912 if (store2.select("open") && store2.select("activeTriggerId") === lostActiveTriggerId && !store2.context.triggerElements.getById(lostActiveTriggerId)) { 3913 const eventDetails = createChangeEventDetails(reason_parts_exports.none); 3914 store2.setOpen(false, eventDetails); 3915 if (!eventDetails.isCanceled) { 3916 store2.update({ 3917 activeTriggerId: null, 3918 activeTriggerElement: null 3919 }); 3920 } 3921 } 3922 }); 3923 } 3924 } 3925 }, [open2, store2, reactiveTriggerCount, activeTriggerId, reactiveActiveTriggerElement, closeOnActiveTriggerUnmount]); 3926 } 3927 function useOpenStateTransitions(open2, store2, onUnmount, animateInitialOpen) { 3928 const { 3929 mounted, 3930 transitionStatus, 3931 forceUnmount 3932 } = useUnmountAfterClose({ 3933 open: open2, 3934 ref: store2.context.popupRef, 3935 preventUnmountOnClose: store2.useState("preventUnmountingOnClose"), 3936 setPreventUnmountOnClose: (preventUnmountOnClose) => store2.set("preventUnmountingOnClose", preventUnmountOnClose), 3937 animateInitialOpen, 3938 onUnmount() { 3939 store2.update({ 3940 activeTriggerId: null, 3941 activeTriggerElement: null, 3942 mounted: false, 3943 preventUnmountingOnClose: false 3944 }); 3945 onUnmount?.(); 3946 store2.context.onOpenChangeComplete?.(false); 3947 } 3948 }); 3949 useRefWithInit(() => { 3950 store2.set("mounted", mounted); 3951 return null; 3952 }); 3953 store2.useSyncedValues({ 3954 mounted, 3955 transitionStatus 3956 }); 3957 return { 3958 forceUnmount, 3959 transitionStatus 3960 }; 3961 } 3962 function usePopupInteractionProps(store2, statePart) { 3963 store2.useSyncedValues(statePart); 3964 useIsoLayoutEffect(() => () => { 3965 store2.update({ 3966 activeTriggerProps: EMPTY_OBJECT, 3967 inactiveTriggerProps: EMPTY_OBJECT, 3968 popupProps: EMPTY_OBJECT 3969 }); 3970 }, [store2]); 3971 } 3972 3973 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popups/popupTriggerMap.mjs 3974 var devElementIdsByMap; 3975 function getDevElementIds(map) { 3976 devElementIdsByMap ??= /* @__PURE__ */ new WeakMap(); 3977 let elementIds = devElementIdsByMap.get(map); 3978 if (!elementIds) { 3979 elementIds = /* @__PURE__ */ new WeakMap(); 3980 devElementIdsByMap.set(map, elementIds); 3981 } 3982 return elementIds; 3983 } 3984 var PopupTriggerMap = class { 3985 idMap = /* @__PURE__ */ new Map(); 3986 /** 3987 * Adds a trigger element with the given ID. 3988 * 3989 * Note: The provided element is assumed to not be registered under multiple IDs. 3990 */ 3991 add(id, element) { 3992 if (true) { 3993 const elementIds = getDevElementIds(this); 3994 const existingId = elementIds.get(element); 3995 if (existingId !== void 0 && existingId !== id) { 3996 throw new Error("Base UI: A trigger element cannot be registered under multiple IDs in PopupTriggerMap."); 3997 } 3998 const previousElement = this.idMap.get(id); 3999 if (previousElement !== void 0 && previousElement !== element) { 4000 elementIds.delete(previousElement); 4001 } 4002 elementIds.set(element, id); 4003 } 4004 this.idMap.set(id, element); 4005 } 4006 /** 4007 * Removes the trigger element with the given ID. 4008 */ 4009 delete(id) { 4010 if (true) { 4011 const element = this.idMap.get(id); 4012 if (element !== void 0) { 4013 devElementIdsByMap?.get(this)?.delete(element); 4014 } 4015 } 4016 this.idMap.delete(id); 4017 } 4018 /** 4019 * Whether the given element is registered as a trigger. 4020 */ 4021 hasElement(element) { 4022 for (const registered of this.idMap.values()) { 4023 if (registered === element) { 4024 return true; 4025 } 4026 } 4027 return false; 4028 } 4029 /** 4030 * Whether there is a registered trigger element matching the given predicate. 4031 */ 4032 hasMatchingElement(predicate) { 4033 for (const element of this.idMap.values()) { 4034 if (predicate(element)) { 4035 return true; 4036 } 4037 } 4038 return false; 4039 } 4040 /** 4041 * Returns the trigger element associated with the given ID, or undefined if no such element exists. 4042 */ 4043 getById(id) { 4044 return this.idMap.get(id); 4045 } 4046 /** 4047 * Returns an iterable of all registered trigger entries, where each entry is a tuple of [id, element]. 4048 */ 4049 entries() { 4050 return this.idMap.entries(); 4051 } 4052 /** 4053 * Returns an iterable of all registered trigger elements. 4054 */ 4055 elements() { 4056 return this.idMap.values(); 4057 } 4058 /** 4059 * Returns the number of registered trigger elements. 4060 */ 4061 get size() { 4062 return this.idMap.size; 4063 } 4064 }; 4065 4066 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/store/useStore.mjs 4067 var React24 = __toESM(require_react(), 1); 4068 var import_shim = __toESM(require_shim(), 1); 4069 var import_with_selector = __toESM(require_with_selector(), 1); 4070 4071 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/fastHooks.mjs 4072 var React23 = __toESM(require_react(), 1); 4073 var hooks = []; 4074 var currentInstance = void 0; 4075 function getInstance() { 4076 return currentInstance; 4077 } 4078 function register(hook) { 4079 hooks.push(hook); 4080 } 4081 function fastComponent(fn) { 4082 const FastComponent = (props, forwardedRef) => { 4083 const instance = useRefWithInit(createInstance).current; 4084 let result; 4085 try { 4086 currentInstance = instance; 4087 for (const hook of hooks) { 4088 hook.before(instance); 4089 } 4090 result = fn(props, forwardedRef); 4091 for (const hook of hooks) { 4092 hook.after(instance); 4093 } 4094 instance.didInitialize = true; 4095 } finally { 4096 currentInstance = void 0; 4097 } 4098 return result; 4099 }; 4100 FastComponent.displayName = fn.displayName || fn.name; 4101 return FastComponent; 4102 } 4103 function fastComponentRef(fn) { 4104 return /* @__PURE__ */ React23.forwardRef(fastComponent(fn)); 4105 } 4106 function createInstance() { 4107 return { 4108 didInitialize: false 4109 }; 4110 } 4111 4112 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/store/useStore.mjs 4113 var canUseRawUseSyncExternalStore = isReactVersionAtLeast(19); 4114 var useStoreImplementation = canUseRawUseSyncExternalStore ? useStoreFast : useStoreLegacy; 4115 function useStore(store2, selector, a1, a2, a3) { 4116 return useStoreImplementation(store2, selector, a1, a2, a3); 4117 } 4118 function useStoreR19(store2, selector, a1, a2, a3) { 4119 const getSelection = React24.useCallback(() => selector(store2.getSnapshot(), a1, a2, a3), [store2, selector, a1, a2, a3]); 4120 return (0, import_shim.useSyncExternalStore)(store2.subscribe, getSelection, getSelection); 4121 } 4122 register({ 4123 before(instance) { 4124 instance.syncIndex = 0; 4125 if (!instance.didInitialize) { 4126 instance.syncTick = 1; 4127 instance.syncHooks = []; 4128 instance.didChangeStore = true; 4129 instance.getSnapshot = () => { 4130 let didChange2 = false; 4131 for (let i = 0; i < instance.syncHooks.length; i += 1) { 4132 const hook = instance.syncHooks[i]; 4133 const value = hook.selector(hook.store.state, hook.a1, hook.a2, hook.a3); 4134 if (!Object.is(hook.value, value)) { 4135 didChange2 = true; 4136 hook.value = value; 4137 } 4138 } 4139 if (didChange2) { 4140 instance.syncTick += 1; 4141 } 4142 return instance.syncTick; 4143 }; 4144 } 4145 }, 4146 after(instance) { 4147 if (instance.syncHooks.length > 0) { 4148 if (instance.didChangeStore) { 4149 instance.didChangeStore = false; 4150 instance.subscribe = (onStoreChange) => { 4151 const stores = /* @__PURE__ */ new Set(); 4152 for (const hook of instance.syncHooks) { 4153 stores.add(hook.store); 4154 } 4155 const unsubscribes = []; 4156 for (const store2 of stores) { 4157 unsubscribes.push(store2.subscribe(onStoreChange)); 4158 } 4159 return () => { 4160 for (const unsubscribe of unsubscribes) { 4161 unsubscribe(); 4162 } 4163 }; 4164 }; 4165 } 4166 (0, import_shim.useSyncExternalStore)(instance.subscribe, instance.getSnapshot, instance.getSnapshot); 4167 } 4168 } 4169 }); 4170 function useStoreFast(store2, selector, a1, a2, a3) { 4171 const instance = getInstance(); 4172 if (!instance) { 4173 return useStoreR19(store2, selector, a1, a2, a3); 4174 } 4175 const index2 = instance.syncIndex; 4176 instance.syncIndex += 1; 4177 let hook; 4178 if (!instance.didInitialize) { 4179 hook = { 4180 store: store2, 4181 selector, 4182 a1, 4183 a2, 4184 a3, 4185 value: selector(store2.getSnapshot(), a1, a2, a3) 4186 }; 4187 instance.syncHooks.push(hook); 4188 } else { 4189 hook = instance.syncHooks[index2]; 4190 if (hook.store !== store2 || hook.selector !== selector || !Object.is(hook.a1, a1) || !Object.is(hook.a2, a2) || !Object.is(hook.a3, a3)) { 4191 if (hook.store !== store2) { 4192 instance.didChangeStore = true; 4193 } 4194 hook.store = store2; 4195 hook.selector = selector; 4196 hook.a1 = a1; 4197 hook.a2 = a2; 4198 hook.a3 = a3; 4199 hook.value = selector(store2.getSnapshot(), a1, a2, a3); 4200 } 4201 } 4202 return hook.value; 4203 } 4204 function useStoreLegacy(store2, selector, a1, a2, a3) { 4205 return (0, import_with_selector.useSyncExternalStoreWithSelector)(store2.subscribe, store2.getSnapshot, store2.getSnapshot, (state) => selector(state, a1, a2, a3)); 4206 } 4207 4208 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/store/Store.mjs 4209 var Store = class { 4210 /** 4211 * Creates a store with the given initial state, constructing the class it is called on. 4212 * Calling it on a generic base class (e.g. `ReactStore.create(...)`) constructs that 4213 * class but degrades the inferred instance type to `Store`; use `new` there instead. 4214 */ 4215 static create(state) { 4216 return new this(state); 4217 } 4218 /** 4219 * The current state of the store. 4220 * This property is updated immediately when the state changes as a result of calling {@link setState}, {@link update}, or {@link set}. 4221 * 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). 4222 * The values can be used directly (to avoid subscribing to the store) in effects or event handlers. 4223 * 4224 * Do not modify properties in state directly. Instead, use the provided methods to ensure proper state management and listener notification. 4225 */ 4226 // Internal state to handle recursive `setState()` calls 4227 constructor(state) { 4228 this.state = state; 4229 this.listeners = /* @__PURE__ */ new Set(); 4230 this.updateTick = 0; 4231 } 4232 /** 4233 * Registers a listener that will be called whenever the store's state changes. 4234 * 4235 * @param fn The listener function to be called on state changes. 4236 * @returns A function to unsubscribe the listener. 4237 */ 4238 subscribe = (fn) => { 4239 this.listeners.add(fn); 4240 return () => { 4241 this.listeners.delete(fn); 4242 }; 4243 }; 4244 /** 4245 * Returns the current state of the store. 4246 */ 4247 getSnapshot = () => { 4248 return this.state; 4249 }; 4250 /** 4251 * Updates the entire store's state and notifies all registered listeners. 4252 * 4253 * @param newState The new state to set for the store. 4254 */ 4255 setState(newState) { 4256 if (this.state === newState) { 4257 return; 4258 } 4259 this.state = newState; 4260 this.updateTick += 1; 4261 const currentTick = this.updateTick; 4262 for (const listener of this.listeners) { 4263 if (currentTick !== this.updateTick) { 4264 return; 4265 } 4266 listener(newState); 4267 } 4268 } 4269 /** 4270 * Merges the provided changes into the current state and notifies listeners if there are changes. 4271 * Each value must match its state key. Pass an exact known subset rather than a broad 4272 * `Partial<State>`, which may contain `undefined` for required state fields. 4273 * 4274 * @param changes An object containing the changes to apply to the current state. 4275 */ 4276 update(changes) { 4277 for (const key in changes) { 4278 if (!Object.is(this.state[key], changes[key])) { 4279 this.setState({ 4280 ...this.state, 4281 ...changes 4282 }); 4283 return; 4284 } 4285 } 4286 } 4287 /** 4288 * Sets a specific key in the store's state to a new value and notifies listeners if the value has changed. 4289 * 4290 * @param key The key in the store's state to update. 4291 * @param value The new value to set for the specified key. 4292 */ 4293 set(key, value) { 4294 if (!Object.is(this.state[key], value)) { 4295 this.setState({ 4296 ...this.state, 4297 [key]: value 4298 }); 4299 } 4300 } 4301 /** 4302 * Gives the state a new reference and updates all registered listeners. 4303 */ 4304 notifyAll() { 4305 const newState = { 4306 ...this.state 4307 }; 4308 this.setState(newState); 4309 } 4310 use(selector, a1, a2, a3) { 4311 return useStore(this, selector, a1, a2, a3); 4312 } 4313 }; 4314 4315 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/store/ReactStore.mjs 4316 var React25 = __toESM(require_react(), 1); 4317 var ReactStore = class extends Store { 4318 /** 4319 * Creates a new ReactStore instance. 4320 * 4321 * @param state Initial state of the store. 4322 * @param context Non-reactive context values. 4323 * @param selectors Optional selectors for use with `useState`. 4324 */ 4325 constructor(state, context = {}, selectors3) { 4326 super(state); 4327 this.context = context; 4328 this.selectors = selectors3; 4329 } 4330 /** 4331 * Non-reactive values such as refs, callbacks, etc. 4332 */ 4333 /** 4334 * Synchronizes a single external value into the store. 4335 * 4336 * Note that the while the value in `state` is updated immediately, the value returned 4337 * by `useState` is updated before the next render (similarly to React's `useState`). 4338 */ 4339 useSyncedValue(key, value) { 4340 React25.useDebugValue(key); 4341 const store2 = this; 4342 useIsoLayoutEffect(() => { 4343 if (store2.state[key] !== value) { 4344 store2.set(key, value); 4345 } 4346 }, [store2, key, value]); 4347 } 4348 /** 4349 * Synchronizes a single external value into the store and 4350 * cleans it up (sets to `undefined`) on unmount. 4351 * 4352 * Note that the while the value in `state` is updated immediately, the value returned 4353 * by `useState` is updated before the next render (similarly to React's `useState`). 4354 */ 4355 useSyncedValueWithCleanup(key, value) { 4356 const store2 = this; 4357 useIsoLayoutEffect(() => { 4358 if (store2.state[key] !== value) { 4359 store2.set(key, value); 4360 } 4361 return () => { 4362 store2.set(key, void 0); 4363 }; 4364 }, [store2, key, value]); 4365 } 4366 /** 4367 * Synchronizes multiple external values into the store. 4368 * Each value must match its state key. Pass an exact known subset rather than a broad 4369 * `Partial<State>`, which may contain `undefined` for required state fields. 4370 * 4371 * Note that the while the values in `state` are updated immediately, the values returned 4372 * by `useState` are updated before the next render (similarly to React's `useState`). 4373 * 4374 * @param statePart An exact subset of state fields to synchronize. Unknown keys are not accepted. 4375 */ 4376 useSyncedValues(statePart) { 4377 const store2 = this; 4378 if (true) { 4379 React25.useDebugValue(statePart, (p) => Object.keys(p)); 4380 const keys = React25.useRef(Object.keys(statePart)).current; 4381 const nextKeys = Object.keys(statePart); 4382 if (keys.length !== nextKeys.length || keys.some((key, index2) => key !== nextKeys[index2])) { 4383 console.error("ReactStore.useSyncedValues expects the same prop keys on every render. Keys should be stable."); 4384 } 4385 } 4386 const dependencies = Object.values(statePart); 4387 useIsoLayoutEffect(() => { 4388 store2.update(statePart); 4389 }, [store2, ...dependencies]); 4390 } 4391 /** 4392 * Registers a controllable prop pair (`controlled`, `defaultValue`) for a specific key. If `controlled` 4393 * is non-undefined, the store's state at `key` is updated to match `controlled`. 4394 */ 4395 useControlledProp(key, controlled) { 4396 React25.useDebugValue(key); 4397 const store2 = this; 4398 const isControlled = controlled !== void 0; 4399 useIsoLayoutEffect(() => { 4400 if (isControlled && !Object.is(store2.state[key], controlled)) { 4401 store2.setState({ 4402 ...store2.state, 4403 [key]: controlled 4404 }); 4405 } 4406 }, [store2, key, controlled, isControlled]); 4407 if (true) { 4408 const cache = this.controlledValues ??= /* @__PURE__ */ new Map(); 4409 if (!cache.has(key)) { 4410 cache.set(key, isControlled); 4411 } 4412 const previouslyControlled = cache.get(key); 4413 if (previouslyControlled !== void 0 && previouslyControlled !== isControlled) { 4414 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).`); 4415 } 4416 } 4417 } 4418 /** Gets the current value from the store using a selector with the provided key. 4419 * 4420 * @param key Key of the selector to use. 4421 */ 4422 select(key, a1, a2, a3) { 4423 const selector = this.selectors[key]; 4424 return selector(this.state, a1, a2, a3); 4425 } 4426 /** 4427 * Returns a value from the store's state using a selector function. 4428 * Used to subscribe to specific parts of the state. 4429 * This methods causes a rerender whenever the selected state changes. 4430 * 4431 * @param key Key of the selector to use. 4432 */ 4433 useState(key, a1, a2, a3) { 4434 React25.useDebugValue(key); 4435 return useStore(this, this.selectors[key], a1, a2, a3); 4436 } 4437 /** 4438 * Wraps a function with `useStableCallback` to ensure it has a stable reference 4439 * and assigns it to the context. 4440 * 4441 * @param key Key of the event callback. Must be a function in the context. 4442 * @param fn Function to assign. 4443 */ 4444 useContextCallback(key, fn) { 4445 React25.useDebugValue(key); 4446 const stableFunction = useStableCallback(fn ?? NOOP); 4447 this.context[key] = stableFunction; 4448 } 4449 /** 4450 * Returns a stable setter function for a specific key in the store's state. 4451 * It's commonly used to pass as a ref callback to React elements. 4452 * 4453 * @param key Key of the state to set. 4454 */ 4455 useStateSetter(key) { 4456 const ref = React25.useRef(void 0); 4457 if (ref.current === void 0) { 4458 ref.current = (value) => { 4459 this.set(key, value); 4460 }; 4461 } 4462 return ref.current; 4463 } 4464 /** 4465 * Observes changes derived from the store's selectors and calls the listener when the selected value changes. 4466 * 4467 * @param key Key of the selector to observe. 4468 * @param listener Listener function called when the selector result changes. 4469 */ 4470 observe(selector, listener) { 4471 let selectFn; 4472 if (typeof selector === "function") { 4473 selectFn = selector; 4474 } else { 4475 selectFn = this.selectors[selector]; 4476 } 4477 let prevValue = selectFn(this.state); 4478 listener(prevValue, prevValue, this); 4479 return this.subscribe((nextState) => { 4480 const nextValue = selectFn(nextState); 4481 if (!Object.is(prevValue, nextValue)) { 4482 const oldValue = prevValue; 4483 prevValue = nextValue; 4484 listener(nextValue, oldValue, this); 4485 } 4486 }); 4487 } 4488 }; 4489 4490 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingRootStore.mjs 4491 var selectors = { 4492 open: (state) => state.open, 4493 transitionStatus: (state) => state.transitionStatus, 4494 domReferenceElement: (state) => state.domReferenceElement, 4495 referenceElement: (state) => state.positionReference ?? state.referenceElement, 4496 floatingElement: (state) => state.floatingElement, 4497 floatingId: (state) => state.floatingId 4498 }; 4499 var FloatingRootStore = class extends ReactStore { 4500 constructor(options) { 4501 const { 4502 syncOnly, 4503 nested, 4504 onOpenChange, 4505 triggerElements, 4506 ...initialState 4507 } = options; 4508 super({ 4509 ...initialState, 4510 positionReference: initialState.referenceElement, 4511 domReferenceElement: initialState.referenceElement 4512 }, { 4513 onOpenChange, 4514 dataRef: { 4515 current: {} 4516 }, 4517 events: createEventEmitter(), 4518 nested, 4519 triggerElements 4520 }, selectors); 4521 this.syncOnly = syncOnly; 4522 } 4523 /** 4524 * Syncs the event used by hover logic to distinguish hover-open from click-like interaction. 4525 */ 4526 syncOpenEvent = (newOpen, event) => { 4527 if (!newOpen || !this.state.open || // Prevent a pending hover-open from overwriting a click-open event, while allowing 4528 // click events to upgrade a hover-open. 4529 event != null && isClickLikeEvent(event)) { 4530 this.context.dataRef.current.openEvent = newOpen ? event : void 0; 4531 } 4532 }; 4533 /** 4534 * Runs the root-owned side effects for an open state change. 4535 */ 4536 dispatchOpenChange = (newOpen, eventDetails) => { 4537 this.syncOpenEvent(newOpen, eventDetails.event); 4538 const details = { 4539 open: newOpen, 4540 reason: eventDetails.reason, 4541 nativeEvent: eventDetails.event, 4542 nested: this.context.nested, 4543 triggerElement: eventDetails.trigger 4544 }; 4545 this.context.events.emit("openchange", details); 4546 }; 4547 /** 4548 * Emits the `openchange` event through the internal event emitter and calls the `onOpenChange` handler with the provided arguments. 4549 * 4550 * @param newOpen The new open state. 4551 * @param eventDetails Details about the event that triggered the open state change. 4552 */ 4553 setOpen = (newOpen, eventDetails) => { 4554 if (this.syncOnly) { 4555 this.context.onOpenChange?.(newOpen, eventDetails); 4556 return; 4557 } 4558 this.dispatchOpenChange(newOpen, eventDetails); 4559 this.context.onOpenChange?.(newOpen, eventDetails); 4560 }; 4561 }; 4562 4563 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popups/store.mjs 4564 function createInitialPopupStoreState(triggerElements, floatingId, nested = false) { 4565 return { 4566 open: false, 4567 openProp: void 0, 4568 mounted: false, 4569 transitionStatus: void 0, 4570 floatingRootContext: new FloatingRootStore({ 4571 open: false, 4572 transitionStatus: void 0, 4573 floatingElement: null, 4574 referenceElement: null, 4575 triggerElements, 4576 floatingId, 4577 syncOnly: true, 4578 nested, 4579 onOpenChange: void 0 4580 }), 4581 floatingId, 4582 triggerCount: 0, 4583 preventUnmountingOnClose: false, 4584 payload: void 0, 4585 activeTriggerId: null, 4586 activeTriggerElement: null, 4587 openedWithoutTrigger: false, 4588 triggerIdProp: void 0, 4589 popupElement: null, 4590 positionerElement: null, 4591 activeTriggerProps: EMPTY_OBJECT, 4592 inactiveTriggerProps: EMPTY_OBJECT, 4593 popupProps: EMPTY_OBJECT 4594 }; 4595 } 4596 var activeTriggerIdSelector = (state) => state.triggerIdProp ?? state.activeTriggerId; 4597 var openSelector = (state) => state.openProp ?? state.open; 4598 var popupIdSelector = (state) => { 4599 const popupId = state.popupElement?.id ?? state.floatingId; 4600 return popupId || void 0; 4601 }; 4602 function triggerOwnsOpenPopup(state, triggerId) { 4603 return triggerId !== void 0 && openSelector(state) && activeTriggerIdSelector(state) === triggerId; 4604 } 4605 function triggerOwnsOpenPopupOrIsOnlyTrigger(state, triggerId) { 4606 if (triggerOwnsOpenPopup(state, triggerId)) { 4607 return true; 4608 } 4609 return triggerId !== void 0 && openSelector(state) && activeTriggerIdSelector(state) == null && !state.openedWithoutTrigger && state.triggerCount === 1; 4610 } 4611 var popupStoreSelectors = { 4612 open: openSelector, 4613 mounted: (state) => state.mounted, 4614 // `open` is written synchronously on an open change; `mounted`/`transitionStatus` sync in a 4615 // layout effect. Match useTransitionStatus so a retained popup does not miss its starting phase. 4616 transitionStatus: (state) => openSelector(state) && !state.mounted ? "starting" : state.transitionStatus, 4617 floatingRootContext: (state) => state.floatingRootContext, 4618 triggerCount: (state) => state.triggerCount, 4619 preventUnmountingOnClose: (state) => state.preventUnmountingOnClose, 4620 payload: (state) => state.payload, 4621 activeTriggerId: activeTriggerIdSelector, 4622 activeTriggerElement: (state) => state.mounted ? state.activeTriggerElement : null, 4623 popupId: popupIdSelector, 4624 /** 4625 * Whether the trigger with the given ID was used to open the popup. 4626 */ 4627 isTriggerActive: (state, triggerId) => triggerId !== void 0 && activeTriggerIdSelector(state) === triggerId, 4628 /** 4629 * Whether the popup is open and was activated by a trigger with the given ID. 4630 */ 4631 isOpenedByTrigger: (state, triggerId) => triggerOwnsOpenPopup(state, triggerId), 4632 /** 4633 * Whether the popup is mounted and was activated by a trigger with the given ID. 4634 */ 4635 isMountedByTrigger: (state, triggerId) => triggerId !== void 0 && activeTriggerIdSelector(state) === triggerId && state.mounted, 4636 triggerProps: (state, isActive) => isActive ? state.activeTriggerProps : state.inactiveTriggerProps, 4637 /** 4638 * Popup id for the trigger that currently owns the open popup. 4639 */ 4640 triggerPopupId: (state, triggerId) => triggerOwnsOpenPopupOrIsOnlyTrigger(state, triggerId) ? popupIdSelector(state) : void 0, 4641 popupProps: (state) => state.popupProps, 4642 popupElement: (state) => state.popupElement, 4643 positionerElement: (state) => state.positionerElement 4644 }; 4645 4646 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popups/usePopupHandleStore.mjs 4647 var React26 = __toESM(require_react(), 1); 4648 var import_shim2 = __toESM(require_shim(), 1); 4649 function usePopupHandleStore(handle) { 4650 const subscribe = React26.useCallback((listener) => { 4651 if (handle === void 0) { 4652 return NOOP; 4653 } 4654 return handle.subscribeStore(listener); 4655 }, [handle]); 4656 const getSnapshot = React26.useCallback(() => { 4657 return handle === void 0 ? void 0 : handle.store; 4658 }, [handle]); 4659 return (0, import_shim2.useSyncExternalStore)(subscribe, getSnapshot, () => handle?.serverStore); 4660 } 4661 4662 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useFocus.mjs 4663 var React27 = __toESM(require_react(), 1); 4664 var isMacSafari = parts_exports.os.mac && parts_exports.engine.webkit; 4665 function useFocus(store2, props = {}) { 4666 const { 4667 enabled = true, 4668 delay 4669 } = props; 4670 const { 4671 events, 4672 dataRef 4673 } = store2.context; 4674 const blockFocusRef = React27.useRef(false); 4675 const blockedReferenceRef = React27.useRef(null); 4676 const keyboardModalityRef = React27.useRef(true); 4677 const timeout = useTimeout(); 4678 React27.useEffect(() => { 4679 const domReference = store2.select("domReferenceElement"); 4680 if (!enabled) { 4681 return void 0; 4682 } 4683 const win = getWindow(domReference); 4684 function onBlur() { 4685 const currentDomReference = store2.select("domReferenceElement"); 4686 if (!store2.select("open") && isHTMLElement(currentDomReference) && currentDomReference === activeElement(ownerDocument(currentDomReference))) { 4687 blockFocusRef.current = true; 4688 blockedReferenceRef.current = currentDomReference; 4689 } 4690 } 4691 function onKeyDown() { 4692 keyboardModalityRef.current = true; 4693 } 4694 function onPointerDown() { 4695 keyboardModalityRef.current = false; 4696 } 4697 return mergeCleanups(addEventListener(win, "blur", onBlur), isMacSafari && addEventListener(win, "keydown", onKeyDown, true), isMacSafari && addEventListener(win, "pointerdown", onPointerDown, true)); 4698 }, [store2, enabled]); 4699 React27.useEffect(() => { 4700 if (!enabled) { 4701 return void 0; 4702 } 4703 function onOpenChangeLocal(details) { 4704 if (details.reason === reason_parts_exports.triggerPress || details.reason === reason_parts_exports.escapeKey) { 4705 const referenceElement = store2.select("domReferenceElement"); 4706 if (isElement(referenceElement)) { 4707 blockedReferenceRef.current = referenceElement; 4708 blockFocusRef.current = true; 4709 } 4710 } 4711 } 4712 events.on("openchange", onOpenChangeLocal); 4713 return () => { 4714 events.off("openchange", onOpenChangeLocal); 4715 }; 4716 }, [events, enabled, store2]); 4717 const reference = React27.useMemo(() => { 4718 function resetBlockedFocus() { 4719 blockFocusRef.current = false; 4720 blockedReferenceRef.current = null; 4721 } 4722 return { 4723 onMouseLeave() { 4724 resetBlockedFocus(); 4725 }, 4726 onFocus(event) { 4727 const focusTarget = event.currentTarget; 4728 if (blockFocusRef.current) { 4729 if (blockedReferenceRef.current === focusTarget) { 4730 return; 4731 } 4732 resetBlockedFocus(); 4733 } 4734 const target = getTarget(event.nativeEvent); 4735 if (isElement(target)) { 4736 if (isMacSafari && !event.relatedTarget) { 4737 if (!keyboardModalityRef.current && !isTypeableElement(target)) { 4738 return; 4739 } 4740 } else if (!matchesFocusVisible(target)) { 4741 return; 4742 } 4743 } 4744 const movedFromOtherEnabledTrigger = isTargetInsideEnabledTrigger(event.relatedTarget, store2.context.triggerElements); 4745 const { 4746 nativeEvent, 4747 currentTarget 4748 } = event; 4749 if (store2.select("open") && movedFromOtherEnabledTrigger || !delay) { 4750 store2.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerFocus, nativeEvent, currentTarget)); 4751 return; 4752 } 4753 timeout.start(delay, () => { 4754 if (blockFocusRef.current) { 4755 return; 4756 } 4757 store2.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerFocus, nativeEvent, currentTarget)); 4758 }); 4759 }, 4760 onBlur(event) { 4761 resetBlockedFocus(); 4762 const relatedTarget = event.relatedTarget; 4763 const nativeEvent = event.nativeEvent; 4764 const movedToFocusGuard = isElement(relatedTarget) && relatedTarget.hasAttribute(createAttribute("focus-guard")) && relatedTarget.getAttribute("data-type") === "outside"; 4765 timeout.start(0, () => { 4766 const domReference = store2.select("domReferenceElement"); 4767 const activeEl = activeElement(ownerDocument(domReference)); 4768 if (!relatedTarget && activeEl === domReference) { 4769 return; 4770 } 4771 if (contains(dataRef.current.floatingContext?.refs.floating.current, activeEl) || contains(domReference, activeEl) || movedToFocusGuard) { 4772 return; 4773 } 4774 const nextFocusedElement = relatedTarget ?? activeEl; 4775 if (isTargetInsideEnabledTrigger(nextFocusedElement, store2.context.triggerElements)) { 4776 return; 4777 } 4778 store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerFocus, nativeEvent)); 4779 }); 4780 } 4781 }; 4782 }, [dataRef, delay, store2, timeout]); 4783 return React27.useMemo(() => enabled ? { 4784 reference, 4785 trigger: reference 4786 } : {}, [enabled, reference]); 4787 } 4788 4789 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useHoverFloatingInteraction.mjs 4790 var React28 = __toESM(require_react(), 1); 4791 4792 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useHoverInteractionSharedState.mjs 4793 var HoverInteraction = class _HoverInteraction { 4794 pointerType = void 0; 4795 interactedInside = false; 4796 handler = void 0; 4797 blockMouseMove = true; 4798 performedPointerEventsMutation = false; 4799 pointerEventsScopeElement = null; 4800 pointerEventsReferenceElement = null; 4801 pointerEventsFloatingElement = null; 4802 restTimeoutPending = false; 4803 openChangeTimeout = new Timeout(); 4804 restTimeout = new Timeout(); 4805 handleCloseOptions = void 0; 4806 static create() { 4807 return new _HoverInteraction(); 4808 } 4809 dispose = () => { 4810 this.openChangeTimeout.clear(); 4811 this.restTimeout.clear(); 4812 }; 4813 disposeEffect = () => { 4814 return this.dispose; 4815 }; 4816 }; 4817 var pointerEventsMutationOwnerByScopeElement = /* @__PURE__ */ new WeakMap(); 4818 function clearSafePolygonPointerEventsMutation(instance) { 4819 if (!instance.performedPointerEventsMutation) { 4820 return; 4821 } 4822 const scopeElement = instance.pointerEventsScopeElement; 4823 if (scopeElement && pointerEventsMutationOwnerByScopeElement.get(scopeElement) === instance) { 4824 instance.pointerEventsScopeElement?.style.removeProperty("pointer-events"); 4825 instance.pointerEventsReferenceElement?.style.removeProperty("pointer-events"); 4826 instance.pointerEventsFloatingElement?.style.removeProperty("pointer-events"); 4827 pointerEventsMutationOwnerByScopeElement.delete(scopeElement); 4828 } 4829 instance.performedPointerEventsMutation = false; 4830 instance.pointerEventsScopeElement = null; 4831 instance.pointerEventsReferenceElement = null; 4832 instance.pointerEventsFloatingElement = null; 4833 } 4834 function applySafePolygonPointerEventsMutation(instance, options) { 4835 const { 4836 scopeElement, 4837 referenceElement, 4838 floatingElement 4839 } = options; 4840 const existingOwner = pointerEventsMutationOwnerByScopeElement.get(scopeElement); 4841 if (existingOwner && existingOwner !== instance) { 4842 clearSafePolygonPointerEventsMutation(existingOwner); 4843 } 4844 clearSafePolygonPointerEventsMutation(instance); 4845 instance.performedPointerEventsMutation = true; 4846 instance.pointerEventsScopeElement = scopeElement; 4847 instance.pointerEventsReferenceElement = referenceElement; 4848 instance.pointerEventsFloatingElement = floatingElement; 4849 pointerEventsMutationOwnerByScopeElement.set(scopeElement, instance); 4850 scopeElement.style.pointerEvents = "none"; 4851 referenceElement.style.pointerEvents = "auto"; 4852 floatingElement.style.pointerEvents = "auto"; 4853 } 4854 function useHoverInteractionSharedState(store2) { 4855 const data = store2.context.dataRef.current; 4856 const instance = useRefWithInit(() => data.hoverInteractionState ?? HoverInteraction.create()).current; 4857 if (!data.hoverInteractionState) { 4858 data.hoverInteractionState = instance; 4859 } 4860 useOnMount(data.hoverInteractionState.disposeEffect); 4861 return data.hoverInteractionState; 4862 } 4863 4864 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useHoverFloatingInteraction.mjs 4865 function useHoverFloatingInteraction(store2, parameters = {}) { 4866 const { 4867 enabled = true, 4868 closeDelay: closeDelayProp = 0, 4869 nodeId: nodeIdProp 4870 } = parameters; 4871 const open2 = store2.useState("open"); 4872 const floatingElement = store2.useState("floatingElement"); 4873 const domReferenceElement = store2.useState("domReferenceElement"); 4874 const { 4875 dataRef 4876 } = store2.context; 4877 const tree = useFloatingTree(); 4878 const parentId = useFloatingParentNodeId(); 4879 const instance = useHoverInteractionSharedState(store2); 4880 const childClosedTimeout = useTimeout(); 4881 const isClickLikeOpenEvent2 = useStableCallback(() => { 4882 return isClickLikeOpenEvent(dataRef.current.openEvent?.type, instance.interactedInside); 4883 }); 4884 const isHoverOpen = useStableCallback(() => { 4885 return isHoverOpenEvent(dataRef.current.openEvent?.type); 4886 }); 4887 const clearPointerEvents = useStableCallback(() => { 4888 clearSafePolygonPointerEventsMutation(instance); 4889 }); 4890 useIsoLayoutEffect(() => { 4891 if (!open2) { 4892 instance.pointerType = void 0; 4893 instance.restTimeoutPending = false; 4894 instance.interactedInside = false; 4895 clearPointerEvents(); 4896 } 4897 }, [open2, instance, clearPointerEvents]); 4898 React28.useEffect(() => { 4899 return clearPointerEvents; 4900 }, [clearPointerEvents]); 4901 useIsoLayoutEffect(() => { 4902 if (!enabled) { 4903 return void 0; 4904 } 4905 if (open2 && instance.handleCloseOptions?.blockPointerEvents && isHoverOpen() && isElement(domReferenceElement) && floatingElement) { 4906 const ref = domReferenceElement; 4907 const floatingEl = floatingElement; 4908 const doc = ownerDocument(floatingElement); 4909 const parentFloating = tree?.nodesRef.current.find((node) => node.id === parentId)?.context?.elements.floating; 4910 if (parentFloating) { 4911 parentFloating.style.pointerEvents = ""; 4912 } 4913 const cachedScopeElement = instance.pointerEventsScopeElement !== floatingEl ? instance.pointerEventsScopeElement : null; 4914 const parentScopeElement = parentFloating !== floatingEl ? parentFloating : null; 4915 const scopeElement = instance.handleCloseOptions?.getScope?.() ?? cachedScopeElement ?? parentScopeElement ?? closest(ref, "[data-rootownerid]") ?? doc.body; 4916 applySafePolygonPointerEventsMutation(instance, { 4917 scopeElement, 4918 referenceElement: ref, 4919 floatingElement: floatingEl 4920 }); 4921 return () => { 4922 clearPointerEvents(); 4923 }; 4924 } 4925 return void 0; 4926 }, [enabled, open2, domReferenceElement, floatingElement, instance, isHoverOpen, tree, parentId, clearPointerEvents]); 4927 React28.useEffect(() => { 4928 if (!enabled) { 4929 return void 0; 4930 } 4931 function hasParentChildren() { 4932 return !!(tree && parentId && getNodeChildren(tree.nodesRef.current, parentId).length > 0); 4933 } 4934 function closeWithDelay(event) { 4935 const closeDelay = getDelay(closeDelayProp, "close", instance.pointerType); 4936 const close = () => { 4937 store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event)); 4938 tree?.events.emit("floating.closed", event); 4939 }; 4940 if (closeDelay) { 4941 instance.openChangeTimeout.start(closeDelay, close); 4942 } else { 4943 instance.openChangeTimeout.clear(); 4944 close(); 4945 } 4946 } 4947 function handleInteractInside(event) { 4948 const target = getTarget(event); 4949 if (!isInteractiveElement(target)) { 4950 instance.interactedInside = false; 4951 return; 4952 } 4953 instance.interactedInside = closest(target, "[aria-haspopup]") != null; 4954 } 4955 function onFloatingMouseEnter() { 4956 instance.openChangeTimeout.clear(); 4957 childClosedTimeout.clear(); 4958 tree?.events.off("floating.closed", onNodeClosed); 4959 clearPointerEvents(); 4960 } 4961 function onFloatingMouseLeave(event) { 4962 if (hasParentChildren() && tree) { 4963 tree.events.on("floating.closed", onNodeClosed); 4964 return; 4965 } 4966 if (isTargetInsideEnabledTrigger(event.relatedTarget, store2.context.triggerElements)) { 4967 return; 4968 } 4969 const currentNodeId = dataRef.current.floatingContext?.nodeId ?? nodeIdProp; 4970 const relatedTarget = event.relatedTarget; 4971 const isMovingIntoDescendantFloating = tree && currentNodeId && isElement(relatedTarget) && getNodeChildren(tree.nodesRef.current, currentNodeId, false).some((node) => contains(node.context?.elements.floating, relatedTarget)); 4972 if (isMovingIntoDescendantFloating) { 4973 return; 4974 } 4975 if (instance.handler) { 4976 instance.handler(event); 4977 return; 4978 } 4979 clearPointerEvents(); 4980 if (isHoverOpen() && !isClickLikeOpenEvent2()) { 4981 closeWithDelay(event); 4982 } 4983 } 4984 function onNodeClosed(event) { 4985 if (!tree || !parentId || hasParentChildren()) { 4986 return; 4987 } 4988 childClosedTimeout.start(0, () => { 4989 tree.events.off("floating.closed", onNodeClosed); 4990 store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event)); 4991 tree.events.emit("floating.closed", event); 4992 }); 4993 } 4994 const floating = floatingElement; 4995 return mergeCleanups(floating && addEventListener(floating, "mouseenter", onFloatingMouseEnter), floating && addEventListener(floating, "mouseleave", onFloatingMouseLeave), floating && addEventListener(floating, "pointerdown", handleInteractInside, true), () => { 4996 tree?.events.off("floating.closed", onNodeClosed); 4997 }); 4998 }, [enabled, floatingElement, store2, dataRef, closeDelayProp, nodeIdProp, isHoverOpen, isClickLikeOpenEvent2, clearPointerEvents, instance, tree, parentId, childClosedTimeout]); 4999 } 5000 5001 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useHoverReferenceInteraction.mjs 5002 var React29 = __toESM(require_react(), 1); 5003 var ReactDOM4 = __toESM(require_react_dom(), 1); 5004 var EMPTY_REF = { 5005 current: null 5006 }; 5007 function useHoverReferenceInteraction(store2, props = {}) { 5008 const { 5009 enabled = true, 5010 delay = 0, 5011 handleClose = null, 5012 mouseOnly = false, 5013 restMs = 0, 5014 move = true, 5015 triggerElementRef = EMPTY_REF, 5016 externalTree, 5017 isActiveTrigger = true, 5018 getHandleCloseContext, 5019 isClosing, 5020 shouldOpen: shouldOpenProp, 5021 guardStaleOpen = false 5022 } = props; 5023 const { 5024 dataRef, 5025 events 5026 } = store2.context; 5027 const tree = useFloatingTree(externalTree); 5028 const instance = useHoverInteractionSharedState(store2); 5029 const isHoverCloseActiveRef = React29.useRef(false); 5030 const handleCloseRef = useValueAsRef(handleClose); 5031 const delayRef = useValueAsRef(delay); 5032 const restMsRef = useValueAsRef(restMs); 5033 const enabledRef = useValueAsRef(enabled); 5034 const shouldOpenRef = useValueAsRef(shouldOpenProp); 5035 const isClosingRef = useValueAsRef(isClosing); 5036 const isClickLikeOpenEvent2 = useStableCallback(() => { 5037 return isClickLikeOpenEvent(dataRef.current.openEvent?.type, instance.interactedInside); 5038 }); 5039 const checkShouldOpen = useStableCallback(() => { 5040 return shouldOpenRef.current?.() !== false; 5041 }); 5042 const isOverInactiveTrigger = useStableCallback((currentDomReference, currentTarget, target) => { 5043 const allTriggers = store2.context.triggerElements; 5044 if (allTriggers.hasElement(currentTarget)) { 5045 return !currentDomReference || !contains(currentDomReference, currentTarget); 5046 } 5047 if (!isElement(target)) { 5048 return false; 5049 } 5050 const targetElement = target; 5051 return allTriggers.hasMatchingElement((trigger) => contains(trigger, targetElement)) && (!currentDomReference || !contains(currentDomReference, targetElement)); 5052 }); 5053 const cleanupMouseMoveHandler = useStableCallback(() => { 5054 if (!instance.handler) { 5055 return; 5056 } 5057 const doc = ownerDocument(store2.select("domReferenceElement")); 5058 doc.removeEventListener("mousemove", instance.handler); 5059 instance.handler = void 0; 5060 }); 5061 const clearPointerEvents = useStableCallback(() => { 5062 clearSafePolygonPointerEventsMutation(instance); 5063 }); 5064 if (isActiveTrigger) { 5065 instance.handleCloseOptions = handleClose?.__options; 5066 } 5067 React29.useEffect(() => cleanupMouseMoveHandler, [cleanupMouseMoveHandler]); 5068 React29.useEffect(() => { 5069 if (!enabled) { 5070 return void 0; 5071 } 5072 function onOpenChangeLocal(details) { 5073 if (!details.open) { 5074 isHoverCloseActiveRef.current = details.reason === reason_parts_exports.triggerHover; 5075 cleanupMouseMoveHandler(); 5076 instance.openChangeTimeout.clear(); 5077 instance.restTimeout.clear(); 5078 instance.blockMouseMove = true; 5079 instance.restTimeoutPending = false; 5080 } else { 5081 isHoverCloseActiveRef.current = false; 5082 } 5083 } 5084 events.on("openchange", onOpenChangeLocal); 5085 return () => { 5086 events.off("openchange", onOpenChangeLocal); 5087 }; 5088 }, [enabled, events, instance, cleanupMouseMoveHandler]); 5089 React29.useEffect(() => { 5090 if (!enabled) { 5091 return void 0; 5092 } 5093 function closeWithDelay(event, runElseBranch = true) { 5094 const closeDelay = getDelay(delayRef.current, "close", instance.pointerType); 5095 if (closeDelay) { 5096 instance.openChangeTimeout.start(closeDelay, () => { 5097 store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event)); 5098 tree?.events.emit("floating.closed", event); 5099 }); 5100 } else if (runElseBranch) { 5101 instance.openChangeTimeout.clear(); 5102 store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event)); 5103 tree?.events.emit("floating.closed", event); 5104 } 5105 } 5106 const trigger = triggerElementRef.current ?? (isActiveTrigger ? store2.select("domReferenceElement") : null); 5107 if (!isElement(trigger)) { 5108 return void 0; 5109 } 5110 function onMouseEnter(event) { 5111 instance.openChangeTimeout.clear(); 5112 instance.blockMouseMove = false; 5113 if (mouseOnly && !isMouseLikePointerType(instance.pointerType)) { 5114 return; 5115 } 5116 const restMsValue = getRestMs(restMsRef.current); 5117 const openDelay = getDelay(delayRef.current, "open", instance.pointerType); 5118 const eventTarget = getTarget(event); 5119 const currentTarget = event.currentTarget ?? null; 5120 const currentDomReference = store2.select("domReferenceElement"); 5121 let triggerNode = currentTarget; 5122 if (isElement(eventTarget) && !store2.context.triggerElements.hasElement(eventTarget)) { 5123 for (const triggerElement of store2.context.triggerElements.elements()) { 5124 if (contains(triggerElement, eventTarget)) { 5125 triggerNode = triggerElement; 5126 break; 5127 } 5128 } 5129 } 5130 if (isElement(currentTarget) && isElement(currentDomReference) && !store2.context.triggerElements.hasElement(currentTarget) && contains(currentTarget, currentDomReference)) { 5131 triggerNode = currentDomReference; 5132 } 5133 const isOverInactive = triggerNode == null ? false : isOverInactiveTrigger(currentDomReference, triggerNode, eventTarget); 5134 const isOpen = store2.select("open"); 5135 const isInClosingTransition = isClosingRef.current?.() ?? store2.select("transitionStatus") === "ending"; 5136 const isHoverCloseTransition = !isOpen && isInClosingTransition && isHoverCloseActiveRef.current; 5137 const isReenteringSameTriggerDuringCloseTransition = !isOverInactive && isElement(triggerNode) && isElement(currentDomReference) && contains(currentDomReference, triggerNode) && isHoverCloseTransition; 5138 const isRestOnlyDelay = restMsValue > 0 && !openDelay; 5139 const shouldOpenImmediately = isOverInactive && (isOpen || isHoverCloseTransition) || isReenteringSameTriggerDuringCloseTransition; 5140 const shouldOpen = !isOpen || isOverInactive; 5141 if (shouldOpenImmediately) { 5142 if (checkShouldOpen()) { 5143 store2.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerNode)); 5144 } 5145 return; 5146 } 5147 if (isRestOnlyDelay) { 5148 return; 5149 } 5150 if (openDelay) { 5151 instance.openChangeTimeout.start(openDelay, () => { 5152 if (shouldOpen && checkShouldOpen()) { 5153 store2.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerNode)); 5154 } 5155 }); 5156 } else if (shouldOpen) { 5157 if (checkShouldOpen()) { 5158 store2.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerNode)); 5159 } 5160 } 5161 } 5162 function onMouseLeave(event) { 5163 if (isClickLikeOpenEvent2()) { 5164 clearPointerEvents(); 5165 return; 5166 } 5167 cleanupMouseMoveHandler(); 5168 const domReferenceElement = store2.select("domReferenceElement"); 5169 const doc = ownerDocument(domReferenceElement); 5170 instance.restTimeout.clear(); 5171 instance.restTimeoutPending = false; 5172 const handleCloseContextBase = dataRef.current.floatingContext ?? getHandleCloseContext?.(); 5173 if (isTargetInsideEnabledTrigger(event.relatedTarget, store2.context.triggerElements)) { 5174 return; 5175 } 5176 if (handleCloseRef.current && handleCloseContextBase) { 5177 if (!store2.select("open")) { 5178 instance.openChangeTimeout.clear(); 5179 } 5180 const currentTrigger = triggerElementRef.current; 5181 instance.handler = handleCloseRef.current({ 5182 ...handleCloseContextBase, 5183 tree, 5184 x: event.clientX, 5185 y: event.clientY, 5186 onClose() { 5187 clearPointerEvents(); 5188 cleanupMouseMoveHandler(); 5189 if (enabledRef.current && !isClickLikeOpenEvent2() && currentTrigger === store2.select("domReferenceElement")) { 5190 closeWithDelay(event, true); 5191 } 5192 } 5193 }); 5194 doc.addEventListener("mousemove", instance.handler); 5195 instance.handler(event); 5196 return; 5197 } 5198 const shouldClose = instance.pointerType === "touch" ? !contains(store2.select("floatingElement"), event.relatedTarget) : true; 5199 if (shouldClose) { 5200 closeWithDelay(event); 5201 } 5202 } 5203 function onMouseOut(event) { 5204 if (contains(trigger, event.relatedTarget)) { 5205 return; 5206 } 5207 instance.openChangeTimeout.clear(); 5208 instance.restTimeout.clear(); 5209 instance.restTimeoutPending = false; 5210 } 5211 const staleOpenGuard = guardStaleOpen ? addEventListener(trigger, "mouseout", onMouseOut) : void 0; 5212 if (move) { 5213 return mergeCleanups(addEventListener(trigger, "mousemove", onMouseEnter, { 5214 once: true 5215 }), addEventListener(trigger, "mouseenter", onMouseEnter), addEventListener(trigger, "mouseleave", onMouseLeave), staleOpenGuard); 5216 } 5217 return mergeCleanups(addEventListener(trigger, "mouseenter", onMouseEnter), addEventListener(trigger, "mouseleave", onMouseLeave), staleOpenGuard); 5218 }, [cleanupMouseMoveHandler, clearPointerEvents, dataRef, delayRef, store2, enabled, handleCloseRef, instance, isActiveTrigger, isOverInactiveTrigger, isClickLikeOpenEvent2, mouseOnly, move, restMsRef, triggerElementRef, tree, enabledRef, getHandleCloseContext, isClosingRef, checkShouldOpen, guardStaleOpen]); 5219 return React29.useMemo(() => { 5220 if (!enabled) { 5221 return void 0; 5222 } 5223 function setPointerRef(event) { 5224 instance.pointerType = event.pointerType; 5225 } 5226 return { 5227 onPointerDown: setPointerRef, 5228 onPointerEnter: setPointerRef, 5229 onMouseMove(event) { 5230 const { 5231 nativeEvent 5232 } = event; 5233 const trigger = event.currentTarget; 5234 const currentDomReference = store2.select("domReferenceElement"); 5235 const currentOpen = store2.select("open"); 5236 const isOverInactive = isOverInactiveTrigger(currentDomReference, trigger, event.target); 5237 if (mouseOnly && !isMouseLikePointerType(instance.pointerType)) { 5238 return; 5239 } 5240 if (currentOpen && isOverInactive && instance.handleCloseOptions?.blockPointerEvents) { 5241 const floatingElement = store2.select("floatingElement"); 5242 if (floatingElement) { 5243 const scopeElement = instance.handleCloseOptions?.getScope?.() ?? trigger.ownerDocument.body; 5244 applySafePolygonPointerEventsMutation(instance, { 5245 scopeElement, 5246 referenceElement: trigger, 5247 floatingElement 5248 }); 5249 } 5250 } 5251 const restMsValue = getRestMs(restMsRef.current); 5252 if (currentOpen && !isOverInactive || restMsValue === 0) { 5253 return; 5254 } 5255 if (!isOverInactive && instance.restTimeoutPending && event.movementX ** 2 + event.movementY ** 2 < 2) { 5256 return; 5257 } 5258 instance.restTimeout.clear(); 5259 function handleMouseMove() { 5260 instance.restTimeoutPending = false; 5261 if (isClickLikeOpenEvent2()) { 5262 return; 5263 } 5264 const latestOpen = store2.select("open"); 5265 if (!instance.blockMouseMove && (!latestOpen || isOverInactive) && checkShouldOpen()) { 5266 store2.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, nativeEvent, trigger)); 5267 } 5268 } 5269 if (instance.pointerType === "touch") { 5270 ReactDOM4.flushSync(() => { 5271 handleMouseMove(); 5272 }); 5273 } else if (isOverInactive && currentOpen) { 5274 handleMouseMove(); 5275 } else { 5276 instance.restTimeoutPending = true; 5277 instance.restTimeout.start(restMsValue, handleMouseMove); 5278 } 5279 } 5280 }; 5281 }, [enabled, instance, isClickLikeOpenEvent2, isOverInactiveTrigger, mouseOnly, store2, restMsRef, checkShouldOpen]); 5282 } 5283 5284 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/safePolygon.mjs 5285 var CURSOR_SPEED_THRESHOLD = 0.1; 5286 var CURSOR_SPEED_THRESHOLD_SQUARED = CURSOR_SPEED_THRESHOLD * CURSOR_SPEED_THRESHOLD; 5287 var POLYGON_BUFFER = 0.5; 5288 function hasIntersectingEdge(pointX, pointY, xi, yi, xj, yj) { 5289 return yi >= pointY !== yj >= pointY && pointX <= (xj - xi) * (pointY - yi) / (yj - yi) + xi; 5290 } 5291 function isPointInQuadrilateral(pointX, pointY, x1, y1, x2, y2, x3, y3, x4, y4) { 5292 let isInsideValue = false; 5293 if (hasIntersectingEdge(pointX, pointY, x1, y1, x2, y2)) { 5294 isInsideValue = !isInsideValue; 5295 } 5296 if (hasIntersectingEdge(pointX, pointY, x2, y2, x3, y3)) { 5297 isInsideValue = !isInsideValue; 5298 } 5299 if (hasIntersectingEdge(pointX, pointY, x3, y3, x4, y4)) { 5300 isInsideValue = !isInsideValue; 5301 } 5302 if (hasIntersectingEdge(pointX, pointY, x4, y4, x1, y1)) { 5303 isInsideValue = !isInsideValue; 5304 } 5305 return isInsideValue; 5306 } 5307 function isInsideRect(pointX, pointY, rect) { 5308 return pointX >= rect.x && pointX <= rect.x + rect.width && pointY >= rect.y && pointY <= rect.y + rect.height; 5309 } 5310 function isInsideAxisAlignedRect(pointX, pointY, x1, y1, x2, y2) { 5311 const minX = Math.min(x1, x2); 5312 const maxX = Math.max(x1, x2); 5313 const minY = Math.min(y1, y2); 5314 const maxY = Math.max(y1, y2); 5315 return pointX >= minX && pointX <= maxX && pointY >= minY && pointY <= maxY; 5316 } 5317 function safePolygon(options = {}) { 5318 const { 5319 blockPointerEvents = false 5320 } = options; 5321 const timeout = new Timeout(); 5322 const fn = ({ 5323 x, 5324 y, 5325 placement, 5326 elements, 5327 onClose, 5328 nodeId, 5329 tree 5330 }) => { 5331 const side = placement?.split("-")[0]; 5332 let hasLanded = false; 5333 let lastX = null; 5334 let lastY = null; 5335 let lastCursorTime = typeof performance !== "undefined" ? performance.now() : 0; 5336 function isCursorMovingSlowly(nextX, nextY) { 5337 const currentTime = performance.now(); 5338 const elapsedTime = currentTime - lastCursorTime; 5339 if (lastX === null || lastY === null || elapsedTime === 0) { 5340 lastX = nextX; 5341 lastY = nextY; 5342 lastCursorTime = currentTime; 5343 return false; 5344 } 5345 const deltaX = nextX - lastX; 5346 const deltaY = nextY - lastY; 5347 const distanceSquared = deltaX * deltaX + deltaY * deltaY; 5348 const thresholdSquared = elapsedTime * elapsedTime * CURSOR_SPEED_THRESHOLD_SQUARED; 5349 lastX = nextX; 5350 lastY = nextY; 5351 lastCursorTime = currentTime; 5352 return distanceSquared < thresholdSquared; 5353 } 5354 function close() { 5355 timeout.clear(); 5356 onClose(); 5357 } 5358 return function onMouseMove(event) { 5359 timeout.clear(); 5360 const domReference = elements.domReference; 5361 const floating = elements.floating; 5362 if (!domReference || !floating || side == null || x == null || y == null) { 5363 return void 0; 5364 } 5365 const { 5366 clientX, 5367 clientY 5368 } = event; 5369 const target = getTarget(event); 5370 const isLeave = event.type === "mouseleave"; 5371 const isOverFloatingEl = contains(floating, target); 5372 const isOverReferenceEl = contains(domReference, target); 5373 if (isOverFloatingEl) { 5374 hasLanded = true; 5375 if (!isLeave) { 5376 return void 0; 5377 } 5378 } 5379 if (isOverReferenceEl) { 5380 hasLanded = false; 5381 if (!isLeave) { 5382 hasLanded = true; 5383 return void 0; 5384 } 5385 } 5386 if (isLeave && isElement(event.relatedTarget) && contains(floating, event.relatedTarget)) { 5387 return void 0; 5388 } 5389 function hasOpenChildNode() { 5390 return Boolean(tree && getNodeChildren(tree.nodesRef.current, nodeId).length > 0); 5391 } 5392 function closeIfNoOpenChild() { 5393 if (!hasOpenChildNode()) { 5394 close(); 5395 } 5396 } 5397 if (hasOpenChildNode()) { 5398 return void 0; 5399 } 5400 const refRect = domReference.getBoundingClientRect(); 5401 const rect = floating.getBoundingClientRect(); 5402 const cursorLeaveFromRight = x > rect.right - rect.width / 2; 5403 const cursorLeaveFromBottom = y > rect.bottom - rect.height / 2; 5404 const isFloatingWider = rect.width > refRect.width; 5405 const isFloatingTaller = rect.height > refRect.height; 5406 const left = (isFloatingWider ? refRect : rect).left; 5407 const right = (isFloatingWider ? refRect : rect).right; 5408 const top = (isFloatingTaller ? refRect : rect).top; 5409 const bottom = (isFloatingTaller ? refRect : rect).bottom; 5410 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) { 5411 closeIfNoOpenChild(); 5412 return void 0; 5413 } 5414 let isInsideTroughRect = false; 5415 switch (side) { 5416 case "top": 5417 isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, left, refRect.top + 1, right, rect.bottom - 1); 5418 break; 5419 case "bottom": 5420 isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, left, rect.top + 1, right, refRect.bottom - 1); 5421 break; 5422 case "left": 5423 isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, rect.right - 1, bottom, refRect.left + 1, top); 5424 break; 5425 case "right": 5426 isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, refRect.right - 1, bottom, rect.left + 1, top); 5427 break; 5428 default: 5429 } 5430 if (isInsideTroughRect) { 5431 return void 0; 5432 } 5433 if (hasLanded && !isInsideRect(clientX, clientY, refRect)) { 5434 closeIfNoOpenChild(); 5435 return void 0; 5436 } 5437 if (!isLeave && isCursorMovingSlowly(clientX, clientY)) { 5438 closeIfNoOpenChild(); 5439 return void 0; 5440 } 5441 let isInsidePolygon = false; 5442 switch (side) { 5443 case "top": { 5444 const cursorXOffset = isFloatingWider ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4; 5445 const cursorPointOneX = isFloatingWider ? x + cursorXOffset : cursorLeaveFromRight ? x + cursorXOffset : x - cursorXOffset; 5446 const cursorPointTwoX = isFloatingWider ? x - cursorXOffset : cursorLeaveFromRight ? x + cursorXOffset : x - cursorXOffset; 5447 const cursorPointY = y + POLYGON_BUFFER + 1; 5448 const commonYLeft = cursorLeaveFromRight ? rect.bottom - POLYGON_BUFFER : isFloatingWider ? rect.bottom - POLYGON_BUFFER : rect.top; 5449 const commonYRight = cursorLeaveFromRight ? isFloatingWider ? rect.bottom - POLYGON_BUFFER : rect.top : rect.bottom - POLYGON_BUFFER; 5450 isInsidePolygon = isPointInQuadrilateral(clientX, clientY, cursorPointOneX, cursorPointY, cursorPointTwoX, cursorPointY, rect.left, commonYLeft, rect.right, commonYRight); 5451 break; 5452 } 5453 case "bottom": { 5454 const cursorXOffset = isFloatingWider ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4; 5455 const cursorPointOneX = isFloatingWider ? x + cursorXOffset : cursorLeaveFromRight ? x + cursorXOffset : x - cursorXOffset; 5456 const cursorPointTwoX = isFloatingWider ? x - cursorXOffset : cursorLeaveFromRight ? x + cursorXOffset : x - cursorXOffset; 5457 const cursorPointY = y - POLYGON_BUFFER; 5458 const commonYLeft = cursorLeaveFromRight ? rect.top + POLYGON_BUFFER : isFloatingWider ? rect.top + POLYGON_BUFFER : rect.bottom; 5459 const commonYRight = cursorLeaveFromRight ? isFloatingWider ? rect.top + POLYGON_BUFFER : rect.bottom : rect.top + POLYGON_BUFFER; 5460 isInsidePolygon = isPointInQuadrilateral(clientX, clientY, cursorPointOneX, cursorPointY, cursorPointTwoX, cursorPointY, rect.left, commonYLeft, rect.right, commonYRight); 5461 break; 5462 } 5463 case "left": { 5464 const cursorYOffset = isFloatingTaller ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4; 5465 const cursorPointOneY = isFloatingTaller ? y + cursorYOffset : cursorLeaveFromBottom ? y + cursorYOffset : y - cursorYOffset; 5466 const cursorPointTwoY = isFloatingTaller ? y - cursorYOffset : cursorLeaveFromBottom ? y + cursorYOffset : y - cursorYOffset; 5467 const cursorPointX = x + POLYGON_BUFFER + 1; 5468 const commonXTop = cursorLeaveFromBottom ? rect.right - POLYGON_BUFFER : isFloatingTaller ? rect.right - POLYGON_BUFFER : rect.left; 5469 const commonXBottom = cursorLeaveFromBottom ? isFloatingTaller ? rect.right - POLYGON_BUFFER : rect.left : rect.right - POLYGON_BUFFER; 5470 isInsidePolygon = isPointInQuadrilateral(clientX, clientY, commonXTop, rect.top, commonXBottom, rect.bottom, cursorPointX, cursorPointOneY, cursorPointX, cursorPointTwoY); 5471 break; 5472 } 5473 case "right": { 5474 const cursorYOffset = isFloatingTaller ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4; 5475 const cursorPointOneY = isFloatingTaller ? y + cursorYOffset : cursorLeaveFromBottom ? y + cursorYOffset : y - cursorYOffset; 5476 const cursorPointTwoY = isFloatingTaller ? y - cursorYOffset : cursorLeaveFromBottom ? y + cursorYOffset : y - cursorYOffset; 5477 const cursorPointX = x - POLYGON_BUFFER; 5478 const commonXTop = cursorLeaveFromBottom ? rect.left + POLYGON_BUFFER : isFloatingTaller ? rect.left + POLYGON_BUFFER : rect.right; 5479 const commonXBottom = cursorLeaveFromBottom ? isFloatingTaller ? rect.left + POLYGON_BUFFER : rect.right : rect.left + POLYGON_BUFFER; 5480 isInsidePolygon = isPointInQuadrilateral(clientX, clientY, cursorPointX, cursorPointOneY, cursorPointX, cursorPointTwoY, commonXTop, rect.top, commonXBottom, rect.bottom); 5481 break; 5482 } 5483 default: 5484 } 5485 if (!isInsidePolygon) { 5486 closeIfNoOpenChild(); 5487 } else if (!hasLanded) { 5488 timeout.start(40, closeIfNoOpenChild); 5489 } 5490 return void 0; 5491 }; 5492 }; 5493 fn.__options = { 5494 ...options, 5495 blockPointerEvents 5496 }; 5497 return fn; 5498 } 5499 5500 // node_modules/.store/@floating-ui/core@1.8.0-3V8aS7jJHHGcsCINjP9-5A/node_modules/@floating-ui/core/dist/floating-ui.core.mjs 5501 function computeCoordsFromPlacement(_ref, placement, rtl) { 5502 let { 5503 reference, 5504 floating 5505 } = _ref; 5506 const sideAxis = getSideAxis(placement); 5507 const alignmentAxis = getAlignmentAxis(placement); 5508 const alignLength = getAxisLength(alignmentAxis); 5509 const side = getSide(placement); 5510 const isVertical = sideAxis === "y"; 5511 const commonX = reference.x + reference.width / 2 - floating.width / 2; 5512 const commonY = reference.y + reference.height / 2 - floating.height / 2; 5513 const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2; 5514 let coords; 5515 switch (side) { 5516 case "top": 5517 coords = { 5518 x: commonX, 5519 y: reference.y - floating.height 5520 }; 5521 break; 5522 case "bottom": 5523 coords = { 5524 x: commonX, 5525 y: reference.y + reference.height 5526 }; 5527 break; 5528 case "right": 5529 coords = { 5530 x: reference.x + reference.width, 5531 y: commonY 5532 }; 5533 break; 5534 case "left": 5535 coords = { 5536 x: reference.x - floating.width, 5537 y: commonY 5538 }; 5539 break; 5540 default: 5541 coords = { 5542 x: reference.x, 5543 y: reference.y 5544 }; 5545 } 5546 const alignment = getAlignment(placement); 5547 if (alignment) { 5548 coords[alignmentAxis] += commonAlign * (alignment === "end" ? 1 : -1) * (rtl && isVertical ? -1 : 1); 5549 } 5550 return coords; 5551 } 5552 async function detectOverflow(state, options) { 5553 var _await$platform$isEle; 5554 if (options === void 0) { 5555 options = {}; 5556 } 5557 const { 5558 x, 5559 y, 5560 platform: platform3, 5561 rects, 5562 elements, 5563 strategy 5564 } = state; 5565 const { 5566 boundary = "clippingAncestors", 5567 rootBoundary = "viewport", 5568 elementContext = "floating", 5569 altBoundary = false, 5570 padding = 0 5571 } = evaluate(options, state); 5572 const paddingObject = getPaddingObject(padding); 5573 const altContext = elementContext === "floating" ? "reference" : "floating"; 5574 const element = elements[altBoundary ? altContext : elementContext]; 5575 const clippingClientRect = rectToClientRect(await platform3.getClippingRect({ 5576 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)), 5577 boundary, 5578 rootBoundary, 5579 strategy 5580 })); 5581 const rect = elementContext === "floating" ? { 5582 x, 5583 y, 5584 width: rects.floating.width, 5585 height: rects.floating.height 5586 } : rects.reference; 5587 const offsetParent = await (platform3.getOffsetParent == null ? void 0 : platform3.getOffsetParent(elements.floating)); 5588 const offsetScale = await (platform3.isElement == null ? void 0 : platform3.isElement(offsetParent)) && await (platform3.getScale == null ? void 0 : platform3.getScale(offsetParent)) || { 5589 x: 1, 5590 y: 1 5591 }; 5592 const elementClientRect = rectToClientRect(platform3.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform3.convertOffsetParentRelativeRectToViewportRelativeRect({ 5593 elements, 5594 rect, 5595 offsetParent, 5596 strategy 5597 }) : rect); 5598 return { 5599 top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y, 5600 bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y, 5601 left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x, 5602 right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x 5603 }; 5604 } 5605 var MAX_RESET_COUNT = 50; 5606 var computePosition = async (reference, floating, config) => { 5607 const { 5608 placement = "bottom", 5609 strategy = "absolute", 5610 middleware = [], 5611 platform: platform3 5612 } = config; 5613 const platformWithDetectOverflow = platform3.detectOverflow ? platform3 : { 5614 ...platform3, 5615 detectOverflow 5616 }; 5617 const rtl = await (platform3.isRTL == null ? void 0 : platform3.isRTL(floating)); 5618 let rects = await platform3.getElementRects({ 5619 reference, 5620 floating, 5621 strategy 5622 }); 5623 let { 5624 x, 5625 y 5626 } = computeCoordsFromPlacement(rects, placement, rtl); 5627 let statefulPlacement = placement; 5628 let resetCount = 0; 5629 const middlewareData = {}; 5630 for (let i = 0; i < middleware.length; i++) { 5631 const currentMiddleware = middleware[i]; 5632 if (!currentMiddleware) { 5633 continue; 5634 } 5635 const { 5636 name, 5637 fn 5638 } = currentMiddleware; 5639 const { 5640 x: nextX, 5641 y: nextY, 5642 data, 5643 reset 5644 } = await fn({ 5645 x, 5646 y, 5647 initialPlacement: placement, 5648 placement: statefulPlacement, 5649 strategy, 5650 middlewareData, 5651 rects, 5652 platform: platformWithDetectOverflow, 5653 elements: { 5654 reference, 5655 floating 5656 } 5657 }); 5658 x = nextX != null ? nextX : x; 5659 y = nextY != null ? nextY : y; 5660 middlewareData[name] = { 5661 ...middlewareData[name], 5662 ...data 5663 }; 5664 if (reset && resetCount < MAX_RESET_COUNT) { 5665 resetCount++; 5666 if (typeof reset === "object") { 5667 if (reset.placement) { 5668 statefulPlacement = reset.placement; 5669 } 5670 if (reset.rects) { 5671 rects = reset.rects === true ? await platform3.getElementRects({ 5672 reference, 5673 floating, 5674 strategy 5675 }) : reset.rects; 5676 } 5677 ({ 5678 x, 5679 y 5680 } = computeCoordsFromPlacement(rects, statefulPlacement, rtl)); 5681 } 5682 i = -1; 5683 } 5684 } 5685 return { 5686 x, 5687 y, 5688 placement: statefulPlacement, 5689 strategy, 5690 middlewareData 5691 }; 5692 }; 5693 var flip = function(options) { 5694 if (options === void 0) { 5695 options = {}; 5696 } 5697 return { 5698 name: "flip", 5699 options, 5700 async fn(state) { 5701 var _middlewareData$arrow, _middlewareData$flip; 5702 const { 5703 placement, 5704 middlewareData, 5705 rects, 5706 initialPlacement, 5707 platform: platform3, 5708 elements 5709 } = state; 5710 const { 5711 mainAxis: checkMainAxis = true, 5712 crossAxis: checkCrossAxis = true, 5713 fallbackPlacements: specifiedFallbackPlacements, 5714 fallbackStrategy = "bestFit", 5715 fallbackAxisSideDirection = "none", 5716 flipAlignment = true, 5717 ...detectOverflowOptions 5718 } = evaluate(options, state); 5719 if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) { 5720 return {}; 5721 } 5722 const side = getSide(placement); 5723 const initialSideAxis = getSideAxis(initialPlacement); 5724 const isBasePlacement = getSide(initialPlacement) === initialPlacement; 5725 const rtl = await (platform3.isRTL == null ? void 0 : platform3.isRTL(elements.floating)); 5726 const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement)); 5727 const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== "none"; 5728 if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) { 5729 fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl)); 5730 } 5731 const placements2 = [initialPlacement, ...fallbackPlacements]; 5732 const overflow = await platform3.detectOverflow(state, detectOverflowOptions); 5733 const overflows = []; 5734 let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || []; 5735 if (checkMainAxis) { 5736 overflows.push(overflow[side]); 5737 } 5738 if (checkCrossAxis) { 5739 const sides2 = getAlignmentSides(placement, rects, rtl); 5740 overflows.push(overflow[sides2[0]], overflow[sides2[1]]); 5741 } 5742 overflowsData = [...overflowsData, { 5743 placement, 5744 overflows 5745 }]; 5746 if (!overflows.every((side2) => side2 <= 0)) { 5747 var _middlewareData$flip2, _overflowsData$filter; 5748 const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1; 5749 const nextPlacement = placements2[nextIndex]; 5750 if (nextPlacement) { 5751 const ignoreCrossAxisOverflow = checkCrossAxis === "alignment" ? initialSideAxis !== getSideAxis(nextPlacement) : false; 5752 if (!ignoreCrossAxisOverflow || // We leave the current main axis only if every placement on that axis 5753 // overflows the main axis. 5754 overflowsData.every((d) => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) { 5755 return { 5756 data: { 5757 index: nextIndex, 5758 overflows: overflowsData 5759 }, 5760 reset: { 5761 placement: nextPlacement 5762 } 5763 }; 5764 } 5765 } 5766 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; 5767 if (!resetPlacement) { 5768 switch (fallbackStrategy) { 5769 case "bestFit": { 5770 var _overflowsData$filter2; 5771 const placement2 = (_overflowsData$filter2 = overflowsData.filter((d) => { 5772 if (hasFallbackAxisSideDirection) { 5773 const currentSideAxis = getSideAxis(d.placement); 5774 return currentSideAxis === initialSideAxis || // Create a bias to the `y` side axis due to horizontal 5775 // reading directions favoring greater width. 5776 currentSideAxis === "y"; 5777 } 5778 return true; 5779 }).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]; 5780 if (placement2) { 5781 resetPlacement = placement2; 5782 } 5783 break; 5784 } 5785 case "initialPlacement": 5786 resetPlacement = initialPlacement; 5787 break; 5788 } 5789 } 5790 if (placement !== resetPlacement) { 5791 return { 5792 reset: { 5793 placement: resetPlacement 5794 } 5795 }; 5796 } 5797 } 5798 return {}; 5799 } 5800 }; 5801 }; 5802 var originSides = /* @__PURE__ */ new Set(["left", "top"]); 5803 async function convertValueToCoords(state, options) { 5804 const { 5805 placement, 5806 platform: platform3, 5807 elements 5808 } = state; 5809 const rtl = await (platform3.isRTL == null ? void 0 : platform3.isRTL(elements.floating)); 5810 const side = getSide(placement); 5811 const alignment = getAlignment(placement); 5812 const isVertical = getSideAxis(placement) === "y"; 5813 const mainAxisMulti = originSides.has(side) ? -1 : 1; 5814 const crossAxisMulti = rtl && isVertical ? -1 : 1; 5815 const rawValue = evaluate(options, state); 5816 let { 5817 mainAxis, 5818 crossAxis, 5819 alignmentAxis 5820 } = typeof rawValue === "number" ? { 5821 mainAxis: rawValue, 5822 crossAxis: 0, 5823 alignmentAxis: null 5824 } : { 5825 mainAxis: rawValue.mainAxis || 0, 5826 crossAxis: rawValue.crossAxis || 0, 5827 alignmentAxis: rawValue.alignmentAxis 5828 }; 5829 if (alignment && typeof alignmentAxis === "number") { 5830 crossAxis = alignment === "end" ? alignmentAxis * -1 : alignmentAxis; 5831 } 5832 return isVertical ? { 5833 x: crossAxis * crossAxisMulti, 5834 y: mainAxis * mainAxisMulti 5835 } : { 5836 x: mainAxis * mainAxisMulti, 5837 y: crossAxis * crossAxisMulti 5838 }; 5839 } 5840 var offset = function(options) { 5841 if (options === void 0) { 5842 options = 0; 5843 } 5844 return { 5845 name: "offset", 5846 options, 5847 async fn(state) { 5848 var _middlewareData$offse, _middlewareData$arrow; 5849 const { 5850 x, 5851 y, 5852 placement, 5853 middlewareData 5854 } = state; 5855 const diffCoords = await convertValueToCoords(state, options); 5856 if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) { 5857 return {}; 5858 } 5859 return { 5860 x: x + diffCoords.x, 5861 y: y + diffCoords.y, 5862 data: { 5863 ...diffCoords, 5864 placement 5865 } 5866 }; 5867 } 5868 }; 5869 }; 5870 var shift = function(options) { 5871 if (options === void 0) { 5872 options = {}; 5873 } 5874 return { 5875 name: "shift", 5876 options, 5877 async fn(state) { 5878 const { 5879 x, 5880 y, 5881 placement, 5882 platform: platform3 5883 } = state; 5884 const { 5885 mainAxis: checkMainAxis = true, 5886 crossAxis: checkCrossAxis = false, 5887 limiter = { 5888 fn: (_ref) => { 5889 let { 5890 x: x2, 5891 y: y2 5892 } = _ref; 5893 return { 5894 x: x2, 5895 y: y2 5896 }; 5897 } 5898 }, 5899 ...detectOverflowOptions 5900 } = evaluate(options, state); 5901 const coords = { 5902 x, 5903 y 5904 }; 5905 const overflow = await platform3.detectOverflow(state, detectOverflowOptions); 5906 const crossAxis = getSideAxis(placement); 5907 const mainAxis = getOppositeAxis(crossAxis); 5908 let mainAxisCoord = coords[mainAxis]; 5909 let crossAxisCoord = coords[crossAxis]; 5910 const clampCoord = (axis, coord) => clamp(coord + overflow[axis === "y" ? "top" : "left"], coord, coord - overflow[axis === "y" ? "bottom" : "right"]); 5911 if (checkMainAxis) { 5912 mainAxisCoord = clampCoord(mainAxis, mainAxisCoord); 5913 } 5914 if (checkCrossAxis) { 5915 crossAxisCoord = clampCoord(crossAxis, crossAxisCoord); 5916 } 5917 const limitedCoords = limiter.fn({ 5918 ...state, 5919 [mainAxis]: mainAxisCoord, 5920 [crossAxis]: crossAxisCoord 5921 }); 5922 return { 5923 ...limitedCoords, 5924 data: { 5925 x: limitedCoords.x - x, 5926 y: limitedCoords.y - y, 5927 enabled: { 5928 [mainAxis]: checkMainAxis, 5929 [crossAxis]: checkCrossAxis 5930 } 5931 } 5932 }; 5933 } 5934 }; 5935 }; 5936 var limitShift = function(options) { 5937 if (options === void 0) { 5938 options = {}; 5939 } 5940 return { 5941 options, 5942 fn(state) { 5943 var _rawOffset$mainAxis, _rawOffset$crossAxis; 5944 const { 5945 x, 5946 y, 5947 placement, 5948 rects, 5949 middlewareData 5950 } = state; 5951 const { 5952 offset: offset4 = 0, 5953 mainAxis: checkMainAxis = true, 5954 crossAxis: checkCrossAxis = true 5955 } = evaluate(options, state); 5956 const coords = { 5957 x, 5958 y 5959 }; 5960 const crossAxis = getSideAxis(placement); 5961 const mainAxis = getOppositeAxis(crossAxis); 5962 let mainAxisCoord = coords[mainAxis]; 5963 let crossAxisCoord = coords[crossAxis]; 5964 const rawOffset = evaluate(offset4, state); 5965 const computedOffset = typeof rawOffset === "number" ? { 5966 mainAxis: rawOffset, 5967 crossAxis: 0 5968 } : { 5969 mainAxis: (_rawOffset$mainAxis = rawOffset.mainAxis) != null ? _rawOffset$mainAxis : 0, 5970 crossAxis: (_rawOffset$crossAxis = rawOffset.crossAxis) != null ? _rawOffset$crossAxis : 0 5971 }; 5972 if (checkMainAxis) { 5973 const len = mainAxis === "y" ? "height" : "width"; 5974 const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis; 5975 const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis; 5976 if (mainAxisCoord < limitMin) { 5977 mainAxisCoord = limitMin; 5978 } else if (mainAxisCoord > limitMax) { 5979 mainAxisCoord = limitMax; 5980 } 5981 } 5982 if (checkCrossAxis) { 5983 var _middlewareData$offse, _middlewareData$offse2; 5984 const len = mainAxis === "y" ? "width" : "height"; 5985 const isOriginSide = originSides.has(getSide(placement)); 5986 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); 5987 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); 5988 if (crossAxisCoord < limitMin) { 5989 crossAxisCoord = limitMin; 5990 } else if (crossAxisCoord > limitMax) { 5991 crossAxisCoord = limitMax; 5992 } 5993 } 5994 return { 5995 [mainAxis]: mainAxisCoord, 5996 [crossAxis]: crossAxisCoord 5997 }; 5998 } 5999 }; 6000 }; 6001 var size = function(options) { 6002 if (options === void 0) { 6003 options = {}; 6004 } 6005 return { 6006 name: "size", 6007 options, 6008 async fn(state) { 6009 const { 6010 placement, 6011 rects, 6012 platform: platform3, 6013 elements 6014 } = state; 6015 const { 6016 apply = () => { 6017 }, 6018 ...detectOverflowOptions 6019 } = evaluate(options, state); 6020 const overflow = await platform3.detectOverflow(state, detectOverflowOptions); 6021 const side = getSide(placement); 6022 const alignment = getAlignment(placement); 6023 const isYAxis = getSideAxis(placement) === "y"; 6024 const { 6025 width, 6026 height 6027 } = rects.floating; 6028 let heightSide; 6029 let widthSide; 6030 if (side === "top" || side === "bottom") { 6031 heightSide = side; 6032 widthSide = alignment === (await (platform3.isRTL == null ? void 0 : platform3.isRTL(elements.floating)) ? "start" : "end") ? "left" : "right"; 6033 } else { 6034 widthSide = side; 6035 heightSide = alignment === "end" ? "top" : "bottom"; 6036 } 6037 const maximumClippingHeight = height - overflow.top - overflow.bottom; 6038 const maximumClippingWidth = width - overflow.left - overflow.right; 6039 const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight); 6040 const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth); 6041 const shiftData = state.middlewareData.shift; 6042 const noShift = !shiftData; 6043 let availableHeight2 = overflowAvailableHeight; 6044 let availableWidth2 = overflowAvailableWidth; 6045 if (shiftData != null && shiftData.enabled.x) { 6046 availableWidth2 = maximumClippingWidth; 6047 } 6048 if (shiftData != null && shiftData.enabled.y) { 6049 availableHeight2 = maximumClippingHeight; 6050 } 6051 if (noShift && !alignment) { 6052 if (isYAxis) { 6053 availableWidth2 = width - 2 * max(overflow.left, overflow.right); 6054 } else { 6055 availableHeight2 = height - 2 * max(overflow.top, overflow.bottom); 6056 } 6057 } 6058 await apply({ 6059 ...state, 6060 availableWidth: availableWidth2, 6061 availableHeight: availableHeight2 6062 }); 6063 const nextDimensions = await platform3.getDimensions(elements.floating); 6064 if (width !== nextDimensions.width || height !== nextDimensions.height) { 6065 return { 6066 reset: { 6067 rects: true 6068 } 6069 }; 6070 } 6071 return {}; 6072 } 6073 }; 6074 }; 6075 6076 // node_modules/.store/@floating-ui/dom@1.8.0-vHXcr4FgWneV0cgwFw-d7A/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs 6077 function getCssDimensions(element) { 6078 const css = getComputedStyle2(element); 6079 let width = parseFloat(css.width) || 0; 6080 let height = parseFloat(css.height) || 0; 6081 const hasOffset = isHTMLElement(element); 6082 const offsetWidth = hasOffset ? element.offsetWidth : width; 6083 const offsetHeight = hasOffset ? element.offsetHeight : height; 6084 const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight; 6085 if (shouldFallback) { 6086 width = offsetWidth; 6087 height = offsetHeight; 6088 } 6089 return { 6090 width, 6091 height, 6092 $: shouldFallback 6093 }; 6094 } 6095 function unwrapElement(element) { 6096 return !isElement(element) ? element.contextElement : element; 6097 } 6098 function getScale(element) { 6099 const domElement = unwrapElement(element); 6100 if (!isHTMLElement(domElement)) { 6101 return createCoords(1); 6102 } 6103 const rect = domElement.getBoundingClientRect(); 6104 const { 6105 width, 6106 height, 6107 $ 6108 } = getCssDimensions(domElement); 6109 let x = ($ ? round(rect.width) : rect.width) / width; 6110 let y = ($ ? round(rect.height) : rect.height) / height; 6111 if (!x || !Number.isFinite(x)) { 6112 x = 1; 6113 } 6114 if (!y || !Number.isFinite(y)) { 6115 y = 1; 6116 } 6117 return { 6118 x, 6119 y 6120 }; 6121 } 6122 var noOffsets = /* @__PURE__ */ createCoords(0); 6123 function getVisualOffsets(element) { 6124 const win = getWindow(element); 6125 if (!isWebKit() || !win.visualViewport) { 6126 return noOffsets; 6127 } 6128 return { 6129 x: win.visualViewport.offsetLeft, 6130 y: win.visualViewport.offsetTop 6131 }; 6132 } 6133 function shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) { 6134 if (isFixed === void 0) { 6135 isFixed = false; 6136 } 6137 return !!floatingOffsetParent && isFixed && floatingOffsetParent === getWindow(element); 6138 } 6139 function getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) { 6140 if (includeScale === void 0) { 6141 includeScale = false; 6142 } 6143 if (isFixedStrategy === void 0) { 6144 isFixedStrategy = false; 6145 } 6146 const clientRect = element.getBoundingClientRect(); 6147 const domElement = unwrapElement(element); 6148 let scale = createCoords(1); 6149 if (includeScale) { 6150 if (offsetParent) { 6151 if (isElement(offsetParent)) { 6152 scale = getScale(offsetParent); 6153 } 6154 } else { 6155 scale = getScale(element); 6156 } 6157 } 6158 const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0); 6159 let x = (clientRect.left + visualOffsets.x) / scale.x; 6160 let y = (clientRect.top + visualOffsets.y) / scale.y; 6161 let width = clientRect.width / scale.x; 6162 let height = clientRect.height / scale.y; 6163 if (domElement && offsetParent) { 6164 const win = getWindow(domElement); 6165 const offsetWin = isElement(offsetParent) ? getWindow(offsetParent) : offsetParent; 6166 let currentWin = win; 6167 let currentIFrame = getFrameElement(currentWin); 6168 while (currentIFrame && offsetWin !== currentWin) { 6169 const iframeScale = getScale(currentIFrame); 6170 const iframeRect = currentIFrame.getBoundingClientRect(); 6171 const css = getComputedStyle2(currentIFrame); 6172 const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x; 6173 const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y; 6174 x *= iframeScale.x; 6175 y *= iframeScale.y; 6176 width *= iframeScale.x; 6177 height *= iframeScale.y; 6178 x += left; 6179 y += top; 6180 currentWin = getWindow(currentIFrame); 6181 currentIFrame = getFrameElement(currentWin); 6182 } 6183 } 6184 return rectToClientRect({ 6185 width, 6186 height, 6187 x, 6188 y 6189 }); 6190 } 6191 function getWindowScrollBarX(element, rect) { 6192 const leftScroll = getNodeScroll(element).scrollLeft; 6193 if (!rect) { 6194 return getBoundingClientRect(getDocumentElement(element)).left + leftScroll; 6195 } 6196 return rect.left + leftScroll; 6197 } 6198 function getHTMLOffset(documentElement, scroll) { 6199 const htmlRect = documentElement.getBoundingClientRect(); 6200 const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect); 6201 const y = htmlRect.top + scroll.scrollTop; 6202 return { 6203 x, 6204 y 6205 }; 6206 } 6207 function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) { 6208 let { 6209 elements, 6210 rect, 6211 offsetParent, 6212 strategy 6213 } = _ref; 6214 const isFixed = strategy === "fixed"; 6215 const documentElement = getDocumentElement(offsetParent); 6216 const topLayer = elements ? isTopLayer(elements.floating) : false; 6217 if (offsetParent === documentElement || topLayer && isFixed) { 6218 return rect; 6219 } 6220 let scroll = { 6221 scrollLeft: 0, 6222 scrollTop: 0 6223 }; 6224 let scale = createCoords(1); 6225 const offsets = createCoords(0); 6226 const isOffsetParentAnElement = isHTMLElement(offsetParent); 6227 if (isOffsetParentAnElement || !isFixed) { 6228 if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) { 6229 scroll = getNodeScroll(offsetParent); 6230 } 6231 if (isOffsetParentAnElement) { 6232 const offsetRect = getBoundingClientRect(offsetParent); 6233 scale = getScale(offsetParent); 6234 offsets.x = offsetRect.x + offsetParent.clientLeft; 6235 offsets.y = offsetRect.y + offsetParent.clientTop; 6236 } 6237 } 6238 const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0); 6239 return { 6240 width: rect.width * scale.x, 6241 height: rect.height * scale.y, 6242 x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x, 6243 y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y 6244 }; 6245 } 6246 function getClientRects(element) { 6247 return element.getClientRects ? Array.from(element.getClientRects()) : []; 6248 } 6249 function getDocumentRect(html) { 6250 const scroll = getNodeScroll(html); 6251 const body = html.ownerDocument.body; 6252 const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth); 6253 const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight); 6254 let x = -scroll.scrollLeft + getWindowScrollBarX(html); 6255 const y = -scroll.scrollTop; 6256 if (getComputedStyle2(body).direction === "rtl") { 6257 x += max(html.clientWidth, body.clientWidth) - width; 6258 } 6259 return { 6260 width, 6261 height, 6262 x, 6263 y 6264 }; 6265 } 6266 var SCROLLBAR_MAX = 25; 6267 function getViewportRect(element, strategy, rootBoundary) { 6268 if (rootBoundary === void 0) { 6269 rootBoundary = "viewport"; 6270 } 6271 const isLayoutViewport = rootBoundary === "layoutViewport"; 6272 const win = getWindow(element); 6273 const html = getDocumentElement(element); 6274 const visualViewport = win.visualViewport; 6275 let width = html.clientWidth; 6276 let height = html.clientHeight; 6277 let x = 0; 6278 let y = 0; 6279 if (visualViewport) { 6280 const layoutRelativeClientCoords = !isWebKit() || strategy === "fixed"; 6281 if (isLayoutViewport) { 6282 if (!layoutRelativeClientCoords) { 6283 x = -visualViewport.offsetLeft; 6284 y = -visualViewport.offsetTop; 6285 } 6286 } else { 6287 width = visualViewport.width; 6288 height = visualViewport.height; 6289 if (layoutRelativeClientCoords) { 6290 x = visualViewport.offsetLeft; 6291 y = visualViewport.offsetTop; 6292 } 6293 } 6294 } 6295 const windowScrollbarX = getWindowScrollBarX(html); 6296 if (windowScrollbarX <= 0) { 6297 const doc = html.ownerDocument; 6298 const body = doc.body; 6299 const bodyStyles = getComputedStyle(body); 6300 const bodyMarginInline = doc.compatMode === "CSS1Compat" ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0; 6301 const reservedWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline); 6302 const gutter = getComputedStyle(html).scrollbarGutter === "stable both-edges" ? reservedWidth / 2 : reservedWidth; 6303 if (gutter <= SCROLLBAR_MAX) { 6304 width -= gutter; 6305 } 6306 } 6307 return { 6308 width, 6309 height, 6310 x, 6311 y 6312 }; 6313 } 6314 function getInnerBoundingClientRect(element, strategy) { 6315 const clientRect = getBoundingClientRect(element, true, strategy === "fixed"); 6316 const top = clientRect.top + element.clientTop; 6317 const left = clientRect.left + element.clientLeft; 6318 const scale = getScale(element); 6319 const width = element.clientWidth * scale.x; 6320 const height = element.clientHeight * scale.y; 6321 const x = left * scale.x; 6322 const y = top * scale.y; 6323 return { 6324 width, 6325 height, 6326 x, 6327 y 6328 }; 6329 } 6330 function getClientRectFromClippingAncestor(element, clippingAncestor, strategy) { 6331 let rect; 6332 if (clippingAncestor === "viewport" || clippingAncestor === "layoutViewport") { 6333 rect = getViewportRect(element, strategy, clippingAncestor); 6334 } else if (clippingAncestor === "document") { 6335 rect = getDocumentRect(getDocumentElement(element)); 6336 } else if (isElement(clippingAncestor)) { 6337 rect = getInnerBoundingClientRect(clippingAncestor, strategy); 6338 } else { 6339 const visualOffsets = getVisualOffsets(element); 6340 rect = { 6341 x: clippingAncestor.x - visualOffsets.x, 6342 y: clippingAncestor.y - visualOffsets.y, 6343 width: clippingAncestor.width, 6344 height: clippingAncestor.height 6345 }; 6346 } 6347 return rectToClientRect(rect); 6348 } 6349 function getClippingElementAncestors(element, cache) { 6350 const cachedResult = cache.get(element); 6351 if (cachedResult) { 6352 return cachedResult; 6353 } 6354 let result = getOverflowAncestors(element, [], false).filter((el) => isElement(el) && getNodeName(el) !== "body"); 6355 let lastKeptComputedStyle = null; 6356 const elementIsFixed = getComputedStyle2(element).position === "fixed"; 6357 let currentNode = elementIsFixed ? getParentNode(element) : element; 6358 while (isElement(currentNode) && !isLastTraversableNode(currentNode)) { 6359 const computedStyle = getComputedStyle2(currentNode); 6360 const currentNodeIsContaining = isContainingBlock(currentNode); 6361 const lastPosition = lastKeptComputedStyle ? lastKeptComputedStyle.position : elementIsFixed ? "fixed" : ""; 6362 const shouldDropCurrentNode = !currentNodeIsContaining && (lastPosition === "fixed" || lastPosition === "absolute" && computedStyle.position === "static"); 6363 if (shouldDropCurrentNode) { 6364 result = result.filter((ancestor) => ancestor !== currentNode); 6365 } else { 6366 lastKeptComputedStyle = computedStyle; 6367 } 6368 currentNode = getParentNode(currentNode); 6369 } 6370 cache.set(element, result); 6371 return result; 6372 } 6373 function getClippingRect(_ref) { 6374 let { 6375 element, 6376 boundary, 6377 rootBoundary, 6378 strategy 6379 } = _ref; 6380 const elementClippingAncestors = boundary === "clippingAncestors" ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary); 6381 const clippingAncestors = [...elementClippingAncestors, rootBoundary]; 6382 const firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy); 6383 let top = firstRect.top; 6384 let right = firstRect.right; 6385 let bottom = firstRect.bottom; 6386 let left = firstRect.left; 6387 for (let i = 1; i < clippingAncestors.length; i++) { 6388 const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i], strategy); 6389 top = max(rect.top, top); 6390 right = min(rect.right, right); 6391 bottom = min(rect.bottom, bottom); 6392 left = max(rect.left, left); 6393 } 6394 return { 6395 width: right - left, 6396 height: bottom - top, 6397 x: left, 6398 y: top 6399 }; 6400 } 6401 function getDimensions(element) { 6402 const { 6403 width, 6404 height 6405 } = getCssDimensions(element); 6406 return { 6407 width, 6408 height 6409 }; 6410 } 6411 function getRectRelativeToOffsetParent(element, offsetParent, strategy) { 6412 const isOffsetParentAnElement = isHTMLElement(offsetParent); 6413 const documentElement = getDocumentElement(offsetParent); 6414 const isFixed = strategy === "fixed"; 6415 const rect = getBoundingClientRect(element, true, isFixed, offsetParent); 6416 let scroll = { 6417 scrollLeft: 0, 6418 scrollTop: 0 6419 }; 6420 const offsets = createCoords(0); 6421 if (isOffsetParentAnElement || !isFixed) { 6422 if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) { 6423 scroll = getNodeScroll(offsetParent); 6424 } 6425 if (isOffsetParentAnElement) { 6426 const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent); 6427 offsets.x = offsetRect.x + offsetParent.clientLeft; 6428 offsets.y = offsetRect.y + offsetParent.clientTop; 6429 } 6430 } 6431 if (!isOffsetParentAnElement && documentElement) { 6432 offsets.x = getWindowScrollBarX(documentElement); 6433 } 6434 const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0); 6435 const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x; 6436 const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y; 6437 return { 6438 x, 6439 y, 6440 width: rect.width, 6441 height: rect.height 6442 }; 6443 } 6444 function isStaticPositioned(element) { 6445 return getComputedStyle2(element).position === "static"; 6446 } 6447 function getTrueOffsetParent(element, polyfill) { 6448 if (!isHTMLElement(element) || getComputedStyle2(element).position === "fixed") { 6449 return null; 6450 } 6451 if (polyfill) { 6452 return polyfill(element); 6453 } 6454 let rawOffsetParent = element.offsetParent; 6455 if (getDocumentElement(element) === rawOffsetParent) { 6456 rawOffsetParent = rawOffsetParent.ownerDocument.body; 6457 } 6458 return rawOffsetParent; 6459 } 6460 function getOffsetParent(element, polyfill) { 6461 const win = getWindow(element); 6462 if (isTopLayer(element)) { 6463 return win; 6464 } 6465 if (!isHTMLElement(element)) { 6466 let svgOffsetParent = getParentNode(element); 6467 while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) { 6468 if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) { 6469 return svgOffsetParent; 6470 } 6471 svgOffsetParent = getParentNode(svgOffsetParent); 6472 } 6473 return win; 6474 } 6475 let offsetParent = getTrueOffsetParent(element, polyfill); 6476 while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) { 6477 offsetParent = getTrueOffsetParent(offsetParent, polyfill); 6478 } 6479 if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) { 6480 return win; 6481 } 6482 return offsetParent || getContainingBlock(element) || win; 6483 } 6484 var getElementRects = async function(data) { 6485 const getOffsetParentFn = this.getOffsetParent || getOffsetParent; 6486 const getDimensionsFn = this.getDimensions; 6487 const floatingDimensions = await getDimensionsFn(data.floating); 6488 return { 6489 reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy), 6490 floating: { 6491 x: 0, 6492 y: 0, 6493 width: floatingDimensions.width, 6494 height: floatingDimensions.height 6495 } 6496 }; 6497 }; 6498 function isRTL(element) { 6499 return getComputedStyle2(element).direction === "rtl"; 6500 } 6501 var platform2 = { 6502 convertOffsetParentRelativeRectToViewportRelativeRect, 6503 getDocumentElement, 6504 getClippingRect, 6505 getOffsetParent, 6506 getElementRects, 6507 getClientRects, 6508 getDimensions, 6509 getScale, 6510 isElement, 6511 isRTL 6512 }; 6513 function rectsAreEqual(a, b) { 6514 return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height; 6515 } 6516 function observeMove(element, onMove, ancestorResize) { 6517 let io = null; 6518 let timeoutId; 6519 const root = getDocumentElement(element); 6520 function cleanup() { 6521 var _io; 6522 clearTimeout(timeoutId); 6523 (_io = io) == null || _io.disconnect(); 6524 io = null; 6525 } 6526 function refresh(skip, threshold) { 6527 if (skip === void 0) { 6528 skip = false; 6529 } 6530 if (threshold === void 0) { 6531 threshold = 1; 6532 } 6533 cleanup(); 6534 const elementRectForRootMargin = element.getBoundingClientRect(); 6535 const { 6536 left, 6537 top, 6538 width, 6539 height 6540 } = elementRectForRootMargin; 6541 if (!skip) { 6542 onMove(); 6543 } 6544 if (!width || !height) { 6545 return; 6546 } 6547 const insetTop = floor(top); 6548 const insetRight = floor(root.clientWidth - (left + width)); 6549 const insetBottom = floor(root.clientHeight - (top + height)); 6550 const insetLeft = floor(left); 6551 const rootMargin = -insetTop + "px " + -insetRight + "px " + -insetBottom + "px " + -insetLeft + "px"; 6552 const options = { 6553 rootMargin, 6554 threshold: max(0, min(1, threshold)) || 1 6555 }; 6556 let isFirstUpdate = true; 6557 function handleObserve(entries) { 6558 const ratio = entries[0].intersectionRatio; 6559 if (!rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) { 6560 return refresh(); 6561 } 6562 if (ratio !== threshold) { 6563 if (!isFirstUpdate) { 6564 return refresh(); 6565 } 6566 if (!ratio) { 6567 timeoutId = setTimeout(() => { 6568 refresh(false, 1e-7); 6569 }, 1e3); 6570 } else { 6571 refresh(false, ratio); 6572 } 6573 } 6574 isFirstUpdate = false; 6575 } 6576 try { 6577 io = new IntersectionObserver(handleObserve, { 6578 ...options, 6579 // Handle <iframe>s 6580 root: root.ownerDocument 6581 }); 6582 } catch (_e) { 6583 io = new IntersectionObserver(handleObserve, options); 6584 } 6585 io.observe(element); 6586 } 6587 const win = getWindow(element); 6588 const handleResize = () => refresh(ancestorResize); 6589 win.addEventListener("resize", handleResize); 6590 refresh(true); 6591 return () => { 6592 win.removeEventListener("resize", handleResize); 6593 cleanup(); 6594 }; 6595 } 6596 function autoUpdate(reference, floating, update2, options) { 6597 if (options === void 0) { 6598 options = {}; 6599 } 6600 const { 6601 ancestorScroll = true, 6602 ancestorResize = true, 6603 elementResize = typeof ResizeObserver === "function", 6604 layoutShift = typeof IntersectionObserver === "function", 6605 animationFrame = false 6606 } = options; 6607 const referenceEl = unwrapElement(reference); 6608 const ancestors = ancestorScroll || ancestorResize ? [...referenceEl ? getOverflowAncestors(referenceEl) : [], ...floating ? getOverflowAncestors(floating) : []] : []; 6609 ancestors.forEach((ancestor) => { 6610 ancestorScroll && ancestor.addEventListener("scroll", update2); 6611 ancestorResize && ancestor.addEventListener("resize", update2); 6612 }); 6613 const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update2, ancestorResize) : null; 6614 let reobserveFrame = -1; 6615 let resizeObserver = null; 6616 if (elementResize) { 6617 resizeObserver = new ResizeObserver((_ref) => { 6618 let [firstEntry] = _ref; 6619 if (firstEntry && firstEntry.target === referenceEl && resizeObserver && floating) { 6620 resizeObserver.unobserve(floating); 6621 cancelAnimationFrame(reobserveFrame); 6622 reobserveFrame = requestAnimationFrame(() => { 6623 var _resizeObserver; 6624 (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating); 6625 }); 6626 } 6627 update2(); 6628 }); 6629 if (referenceEl && !animationFrame) { 6630 resizeObserver.observe(referenceEl); 6631 } 6632 if (floating) { 6633 resizeObserver.observe(floating); 6634 } 6635 } 6636 let frameId; 6637 let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null; 6638 if (animationFrame) { 6639 frameLoop(); 6640 } 6641 function frameLoop() { 6642 const nextRefRect = getBoundingClientRect(reference); 6643 if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) { 6644 update2(); 6645 } 6646 prevRefRect = nextRefRect; 6647 frameId = requestAnimationFrame(frameLoop); 6648 } 6649 update2(); 6650 return () => { 6651 var _resizeObserver2; 6652 ancestors.forEach((ancestor) => { 6653 ancestorScroll && ancestor.removeEventListener("scroll", update2); 6654 ancestorResize && ancestor.removeEventListener("resize", update2); 6655 }); 6656 cleanupIo == null || cleanupIo(); 6657 (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect(); 6658 resizeObserver = null; 6659 if (animationFrame) { 6660 cancelAnimationFrame(frameId); 6661 } 6662 }; 6663 } 6664 var offset2 = offset; 6665 var shift2 = shift; 6666 var flip2 = flip; 6667 var size2 = size; 6668 var limitShift2 = limitShift; 6669 var computePosition2 = (reference, floating, options) => { 6670 const cache = /* @__PURE__ */ new Map(); 6671 const mergedOptions = options != null ? options : {}; 6672 const platformWithCache = { 6673 ...platform2, 6674 ...mergedOptions.platform, 6675 _c: cache 6676 }; 6677 return computePosition(reference, floating, { 6678 ...mergedOptions, 6679 platform: platformWithCache 6680 }); 6681 }; 6682 6683 // node_modules/.store/@floating-ui/react-dom@2.1.9-AxWcAwqlMfOrAFOinFKSVg/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs 6684 var React30 = __toESM(require_react(), 1); 6685 var import_react2 = __toESM(require_react(), 1); 6686 var ReactDOM5 = __toESM(require_react_dom(), 1); 6687 var isClient = typeof document !== "undefined"; 6688 var noop2 = function noop3() { 6689 }; 6690 var index = isClient ? import_react2.useLayoutEffect : noop2; 6691 function deepEqual(a, b) { 6692 if (a === b) { 6693 return true; 6694 } 6695 if (typeof a !== typeof b) { 6696 return false; 6697 } 6698 if (typeof a === "function" && a.toString() === b.toString()) { 6699 return true; 6700 } 6701 let length; 6702 let i; 6703 let keys; 6704 if (a && b && typeof a === "object") { 6705 if (Array.isArray(a)) { 6706 length = a.length; 6707 if (length !== b.length) return false; 6708 for (i = length; i-- !== 0; ) { 6709 if (!deepEqual(a[i], b[i])) { 6710 return false; 6711 } 6712 } 6713 return true; 6714 } 6715 keys = Object.keys(a); 6716 length = keys.length; 6717 if (length !== Object.keys(b).length) { 6718 return false; 6719 } 6720 for (i = length; i-- !== 0; ) { 6721 if (!{}.hasOwnProperty.call(b, keys[i])) { 6722 return false; 6723 } 6724 } 6725 for (i = length; i-- !== 0; ) { 6726 const key = keys[i]; 6727 if (key === "_owner" && a.$$typeof) { 6728 continue; 6729 } 6730 if (!deepEqual(a[key], b[key])) { 6731 return false; 6732 } 6733 } 6734 return true; 6735 } 6736 return a !== a && b !== b; 6737 } 6738 function getDPR(element) { 6739 if (typeof window === "undefined") { 6740 return 1; 6741 } 6742 const win = element.ownerDocument.defaultView || window; 6743 return win.devicePixelRatio || 1; 6744 } 6745 function roundByDPR(element, value) { 6746 const dpr = getDPR(element); 6747 return Math.round(value * dpr) / dpr; 6748 } 6749 function useLatestRef(value) { 6750 const ref = React30.useRef(value); 6751 index(() => { 6752 ref.current = value; 6753 }); 6754 return ref; 6755 } 6756 function useFloating(options) { 6757 if (options === void 0) { 6758 options = {}; 6759 } 6760 const { 6761 placement = "bottom", 6762 strategy = "absolute", 6763 middleware = [], 6764 platform: platform3, 6765 elements: { 6766 reference: externalReference, 6767 floating: externalFloating 6768 } = {}, 6769 transform = true, 6770 whileElementsMounted, 6771 open: open2 6772 } = options; 6773 const [data, setData] = React30.useState({ 6774 x: 0, 6775 y: 0, 6776 strategy, 6777 placement, 6778 middlewareData: {}, 6779 isPositioned: false 6780 }); 6781 const [latestMiddleware, setLatestMiddleware] = React30.useState(middleware); 6782 if (!deepEqual(latestMiddleware, middleware)) { 6783 setLatestMiddleware(middleware); 6784 } 6785 const [_reference, _setReference] = React30.useState(null); 6786 const [_floating, _setFloating] = React30.useState(null); 6787 const setReference = React30.useCallback((node) => { 6788 if (node !== referenceRef.current) { 6789 referenceRef.current = node; 6790 _setReference(node); 6791 } 6792 }, []); 6793 const setFloating = React30.useCallback((node) => { 6794 if (node !== floatingRef.current) { 6795 floatingRef.current = node; 6796 _setFloating(node); 6797 } 6798 }, []); 6799 const referenceEl = externalReference || _reference; 6800 const floatingEl = externalFloating || _floating; 6801 const referenceRef = React30.useRef(null); 6802 const floatingRef = React30.useRef(null); 6803 const dataRef = React30.useRef(data); 6804 const hasWhileElementsMounted = whileElementsMounted != null; 6805 const whileElementsMountedRef = useLatestRef(whileElementsMounted); 6806 const platformRef = useLatestRef(platform3); 6807 const openRef = useLatestRef(open2); 6808 const update2 = React30.useCallback(() => { 6809 if (!referenceRef.current || !floatingRef.current) { 6810 return; 6811 } 6812 const config = { 6813 placement, 6814 strategy, 6815 middleware: latestMiddleware 6816 }; 6817 if (platformRef.current) { 6818 config.platform = platformRef.current; 6819 } 6820 computePosition2(referenceRef.current, floatingRef.current, config).then((data2) => { 6821 const fullData = { 6822 ...data2, 6823 // The floating element's position may be recomputed while it's closed 6824 // but still mounted (such as when transitioning out). To ensure 6825 // `isPositioned` will be `false` initially on the next open, avoid 6826 // setting it to `true` when `open === false` (must be specified). 6827 isPositioned: openRef.current !== false 6828 }; 6829 if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) { 6830 dataRef.current = fullData; 6831 ReactDOM5.flushSync(() => { 6832 setData(fullData); 6833 }); 6834 } 6835 }); 6836 }, [latestMiddleware, placement, strategy, platformRef, openRef]); 6837 index(() => { 6838 if (open2 === false && dataRef.current.isPositioned) { 6839 dataRef.current.isPositioned = false; 6840 setData((data2) => ({ 6841 ...data2, 6842 isPositioned: false 6843 })); 6844 } 6845 }, [open2]); 6846 const isMountedRef = React30.useRef(false); 6847 index(() => { 6848 isMountedRef.current = true; 6849 return () => { 6850 isMountedRef.current = false; 6851 }; 6852 }, []); 6853 index(() => { 6854 if (referenceEl) referenceRef.current = referenceEl; 6855 if (floatingEl) floatingRef.current = floatingEl; 6856 if (referenceEl && floatingEl) { 6857 if (whileElementsMountedRef.current) { 6858 return whileElementsMountedRef.current(referenceEl, floatingEl, update2); 6859 } 6860 update2(); 6861 } 6862 }, [referenceEl, floatingEl, update2, whileElementsMountedRef, hasWhileElementsMounted]); 6863 const refs = React30.useMemo(() => ({ 6864 reference: referenceRef, 6865 floating: floatingRef, 6866 setReference, 6867 setFloating 6868 }), [setReference, setFloating]); 6869 const elements = React30.useMemo(() => ({ 6870 reference: referenceEl, 6871 floating: floatingEl 6872 }), [referenceEl, floatingEl]); 6873 const floatingStyles = React30.useMemo(() => { 6874 const initialStyles = { 6875 position: strategy, 6876 left: 0, 6877 top: 0 6878 }; 6879 if (!elements.floating) { 6880 return initialStyles; 6881 } 6882 const x = roundByDPR(elements.floating, data.x); 6883 const y = roundByDPR(elements.floating, data.y); 6884 if (transform) { 6885 return { 6886 ...initialStyles, 6887 transform: "translate(" + x + "px, " + y + "px)", 6888 ...getDPR(elements.floating) >= 1.5 && { 6889 willChange: "transform" 6890 } 6891 }; 6892 } 6893 return { 6894 position: strategy, 6895 left: x, 6896 top: y 6897 }; 6898 }, [strategy, transform, elements.floating, data.x, data.y]); 6899 return React30.useMemo(() => ({ 6900 ...data, 6901 update: update2, 6902 refs, 6903 elements, 6904 floatingStyles 6905 }), [data, update2, refs, elements, floatingStyles]); 6906 } 6907 var offset3 = (options, deps) => { 6908 const result = offset2(options); 6909 return { 6910 name: result.name, 6911 fn: result.fn, 6912 options: [options, deps] 6913 }; 6914 }; 6915 var shift3 = (options, deps) => { 6916 const result = shift2(options); 6917 return { 6918 name: result.name, 6919 fn: result.fn, 6920 options: [options, deps] 6921 }; 6922 }; 6923 var limitShift3 = (options, deps) => { 6924 const result = limitShift2(options); 6925 return { 6926 fn: result.fn, 6927 options: [options, deps] 6928 }; 6929 }; 6930 var flip3 = (options, deps) => { 6931 const result = flip2(options); 6932 return { 6933 name: result.name, 6934 fn: result.fn, 6935 options: [options, deps] 6936 }; 6937 }; 6938 var size3 = (options, deps) => { 6939 const result = size2(options); 6940 return { 6941 name: result.name, 6942 fn: result.fn, 6943 options: [options, deps] 6944 }; 6945 }; 6946 6947 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/NullStore.mjs 6948 var NullStore = class extends ReactStore { 6949 // `update`/`set`/`notifyAll` funnel through `setState` in the base `Store`, so overriding 6950 // `setState` alone would neutralize them today. They are overridden explicitly so the store stays 6951 // inert even if a future base-class change stops routing a mutator through `setState`. 6952 setState(_newState) { 6953 } 6954 update(_changes) { 6955 } 6956 set(_key, _value) { 6957 } 6958 notifyAll() { 6959 } 6960 }; 6961 6962 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/inertValue.mjs 6963 function inertValue(value) { 6964 if (isReactVersionAtLeast(19)) { 6965 return value; 6966 } 6967 return value ? "true" : void 0; 6968 } 6969 6970 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/direction-context/DirectionContext.mjs 6971 var React31 = __toESM(require_react(), 1); 6972 var DirectionContext = /* @__PURE__ */ React31.createContext(void 0); 6973 if (true) DirectionContext.displayName = "DirectionContext"; 6974 function useDirection() { 6975 const context = React31.useContext(DirectionContext); 6976 return context?.direction ?? "ltr"; 6977 } 6978 6979 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useAnchorPositioning.mjs 6980 var React33 = __toESM(require_react(), 1); 6981 6982 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useFloating.mjs 6983 var React32 = __toESM(require_react(), 1); 6984 function useBaseUIFloating(options) { 6985 const { 6986 nodeId, 6987 externalTree, 6988 rootContext: store2 6989 } = options; 6990 const referenceElement = store2.useState("referenceElement"); 6991 const floatingElement = store2.useState("floatingElement"); 6992 const domReferenceElement = store2.useState("domReferenceElement"); 6993 const open2 = store2.useState("open"); 6994 const floatingId = store2.useState("floatingId"); 6995 const [positionReference, setPositionReferenceRaw] = React32.useState(null); 6996 const domReferenceRef = React32.useRef(null); 6997 const tree = useFloatingTree(externalTree); 6998 const storeElements = React32.useMemo(() => ({ 6999 reference: referenceElement, 7000 floating: floatingElement, 7001 domReference: domReferenceElement 7002 }), [referenceElement, floatingElement, domReferenceElement]); 7003 const position = useFloating({ 7004 ...options, 7005 elements: { 7006 ...storeElements, 7007 ...positionReference && { 7008 reference: positionReference 7009 } 7010 } 7011 }); 7012 const setPositionReference = React32.useCallback((node) => { 7013 const computedPositionReference = isElement(node) ? { 7014 getBoundingClientRect: () => node.getBoundingClientRect(), 7015 getClientRects: () => node.getClientRects(), 7016 contextElement: node 7017 } : node; 7018 setPositionReferenceRaw(computedPositionReference); 7019 position.refs.setReference(computedPositionReference); 7020 }, [position.refs]); 7021 const refs = React32.useMemo(() => ({ 7022 ...position.refs, 7023 setPositionReference, 7024 domReference: domReferenceRef 7025 }), [position.refs, setPositionReference]); 7026 const elements = React32.useMemo(() => ({ 7027 ...position.elements, 7028 domReference: domReferenceElement 7029 }), [position.elements, domReferenceElement]); 7030 const context = React32.useMemo(() => ({ 7031 ...position, 7032 dataRef: store2.context.dataRef, 7033 open: open2, 7034 onOpenChange: store2.setOpen, 7035 events: store2.context.events, 7036 floatingId, 7037 refs, 7038 elements, 7039 nodeId, 7040 rootStore: store2 7041 }), [position, refs, elements, nodeId, store2, open2, floatingId]); 7042 useIsoLayoutEffect(() => { 7043 if (domReferenceElement) { 7044 domReferenceRef.current = domReferenceElement; 7045 } 7046 }, [domReferenceElement]); 7047 useIsoLayoutEffect(() => { 7048 store2.context.dataRef.current.floatingContext = context; 7049 const node = tree?.nodesRef.current.find((n) => n.id === nodeId); 7050 if (node) { 7051 node.context = context; 7052 } 7053 }); 7054 return React32.useMemo(() => ({ 7055 ...position, 7056 context, 7057 refs, 7058 elements, 7059 rootStore: store2 7060 }), [position, refs, elements, context, store2]); 7061 } 7062 7063 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/middleware/arrow.mjs 7064 var baseArrow = (options) => ({ 7065 name: "arrow", 7066 options, 7067 async fn(state) { 7068 const { 7069 x, 7070 y, 7071 placement, 7072 rects, 7073 platform: platform3, 7074 elements, 7075 middlewareData 7076 } = state; 7077 const { 7078 element, 7079 padding = 0 7080 } = evaluate(options, state) || {}; 7081 if (element == null) { 7082 return {}; 7083 } 7084 const paddingObject = getPaddingObject(padding); 7085 const coords = { 7086 x, 7087 y 7088 }; 7089 const axis = getAlignmentAxis(placement); 7090 const length = getAxisLength(axis); 7091 const arrowDimensions = await platform3.getDimensions(element); 7092 const isYAxis = axis === "y"; 7093 const minProp = isYAxis ? "top" : "left"; 7094 const maxProp = isYAxis ? "bottom" : "right"; 7095 const clientProp = isYAxis ? "clientHeight" : "clientWidth"; 7096 const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length]; 7097 const startDiff = coords[axis] - rects.reference[axis]; 7098 const clientSize = elements.floating[clientProp] || rects.floating[length]; 7099 const centerToReference = endDiff / 2 - startDiff / 2; 7100 const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1; 7101 const minPadding = Math.min(paddingObject[minProp], largestPossiblePadding); 7102 const maxPadding = Math.min(paddingObject[maxProp], largestPossiblePadding); 7103 const min2 = minPadding; 7104 const max2 = clientSize - arrowDimensions[length] - maxPadding; 7105 const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference; 7106 const offset4 = clamp(min2, center, max2); 7107 const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset4 && rects.reference[length] / 2 - (center < min2 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0; 7108 const alignmentOffset = shouldAddOffset ? center < min2 ? center - min2 : center - max2 : 0; 7109 return { 7110 [axis]: coords[axis] + alignmentOffset, 7111 data: { 7112 [axis]: offset4, 7113 centerOffset: center - offset4 - alignmentOffset, 7114 ...shouldAddOffset && { 7115 alignmentOffset 7116 } 7117 }, 7118 reset: shouldAddOffset 7119 }; 7120 } 7121 }); 7122 var arrow4 = (options, deps) => { 7123 const { 7124 name, 7125 fn 7126 } = baseArrow(options); 7127 return { 7128 name, 7129 fn, 7130 options: [options, deps] 7131 }; 7132 }; 7133 7134 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/hideMiddleware.mjs 7135 var hide4 = { 7136 name: "hide", 7137 async fn(state) { 7138 const { 7139 width, 7140 height, 7141 x, 7142 y 7143 } = state.rects.reference; 7144 const anchorHidden2 = width === 0 && height === 0 && x === 0 && y === 0; 7145 const overflow = await state.platform.detectOverflow(state, { 7146 elementContext: "reference" 7147 }); 7148 const referenceHidden = overflow.top - height >= 0 || overflow.right - width >= 0 || overflow.bottom - height >= 0 || overflow.left - width >= 0; 7149 return { 7150 data: { 7151 referenceHidden: referenceHidden || anchorHidden2 7152 } 7153 }; 7154 } 7155 }; 7156 7157 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/adaptiveOriginConstants.mjs 7158 var DEFAULT_SIDES = { 7159 sideX: "left", 7160 sideY: "top" 7161 }; 7162 7163 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/CommonPositionerCssVars.mjs 7164 var availableWidth = "--available-width"; 7165 var availableHeight = "--available-height"; 7166 var anchorWidth = "--anchor-width"; 7167 var anchorHeight = "--anchor-height"; 7168 var transformOrigin = "--transform-origin"; 7169 var positionerWidth = "--positioner-width"; 7170 var positionerHeight = "--positioner-height"; 7171 7172 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useAnchorPositioning.mjs 7173 var AVAILABLE_WIDTH_VAR = availableWidth; 7174 var AVAILABLE_HEIGHT_VAR = availableHeight; 7175 function getLogicalSide(sideParam, renderedSide, isRtl) { 7176 const isLogicalSideParam = sideParam === "inline-start" || sideParam === "inline-end"; 7177 const logicalRight = isRtl ? "inline-start" : "inline-end"; 7178 const logicalLeft = isRtl ? "inline-end" : "inline-start"; 7179 return { 7180 top: "top", 7181 right: isLogicalSideParam ? logicalRight : "right", 7182 bottom: "bottom", 7183 left: isLogicalSideParam ? logicalLeft : "left" 7184 }[renderedSide]; 7185 } 7186 function getOffsetData(state, sideParam, isRtl) { 7187 const { 7188 rects, 7189 placement 7190 } = state; 7191 const data = { 7192 side: getLogicalSide(sideParam, getSide(placement), isRtl), 7193 align: getAlignment(placement) || "center", 7194 anchor: { 7195 width: rects.reference.width, 7196 height: rects.reference.height 7197 }, 7198 positioner: { 7199 width: rects.floating.width, 7200 height: rects.floating.height 7201 } 7202 }; 7203 return data; 7204 } 7205 function useAnchorPositioning(params) { 7206 return useAnchorPositioningWithHook(params, useBaseUIFloating); 7207 } 7208 function useAnchorPositioningWithHook(params, useFloatingHook) { 7209 const { 7210 // Public parameters 7211 anchor, 7212 positionMethod = "absolute", 7213 side: sideParam = "bottom", 7214 sideOffset = 0, 7215 align = "center", 7216 alignOffset = 0, 7217 collisionBoundary, 7218 collisionPadding: collisionPaddingParam = 5, 7219 sticky = false, 7220 arrowPadding = 5, 7221 disableAnchorTracking = false, 7222 inline: inlineMiddleware, 7223 // Private parameters 7224 keepMounted = false, 7225 floatingRootContext, 7226 mounted, 7227 collisionAvoidance, 7228 shift: shift4, 7229 nodeId, 7230 adaptiveOrigin: adaptiveOrigin2, 7231 lazyFlip = false, 7232 externalTree 7233 } = params; 7234 const collisionAvoidanceSide = collisionAvoidance.side || "flip"; 7235 const collisionAvoidanceAlign = collisionAvoidance.align || "flip"; 7236 const collisionAvoidanceFallbackAxisSide = collisionAvoidance.fallbackAxisSide || "end"; 7237 const shiftCrossAxis = shift4?.crossAxis ?? false; 7238 const shiftRootBoundary = shift4?.rootBoundary; 7239 const anchorFn = typeof anchor === "function" ? anchor : void 0; 7240 const anchorFnCallback = useStableCallback(anchorFn); 7241 const anchorDep = anchorFn ? anchorFnCallback : anchor; 7242 const anchorValueRef = useValueAsRef(anchor); 7243 const mountedRef = useValueAsRef(mounted); 7244 const direction = useDirection(); 7245 const isRtl = direction === "rtl"; 7246 const [mountPlacement, setMountPlacement] = React33.useState(null); 7247 if (!mounted && mountPlacement !== null) { 7248 setMountPlacement(null); 7249 } 7250 const lockAlign = lazyFlip === "placement"; 7251 const mountSide = mountPlacement ? getSide(mountPlacement) : null; 7252 const mountAlign = mountPlacement && lockAlign ? getAlignment(mountPlacement) || "center" : null; 7253 const side = mountSide || { 7254 top: "top", 7255 right: "right", 7256 bottom: "bottom", 7257 left: "left", 7258 "inline-end": isRtl ? "left" : "right", 7259 "inline-start": isRtl ? "right" : "left" 7260 }[sideParam]; 7261 const placementAlign = mountAlign || align; 7262 const placement = placementAlign === "center" ? side : `$side}-$placementAlign}`; 7263 let collisionPadding = collisionPaddingParam; 7264 if (typeof collisionPadding === "number") { 7265 collisionPadding = { 7266 top: collisionPadding, 7267 right: collisionPadding, 7268 bottom: collisionPadding, 7269 left: collisionPadding 7270 }; 7271 } else if (collisionPadding) { 7272 collisionPadding = { 7273 top: collisionPadding.top || 0, 7274 right: collisionPadding.right || 0, 7275 bottom: collisionPadding.bottom || 0, 7276 left: collisionPadding.left || 0 7277 }; 7278 } 7279 const bias = 1; 7280 const biasTop = sideParam === "bottom" ? bias : 0; 7281 const biasBottom = sideParam === "top" ? bias : 0; 7282 const biasLeft = sideParam === "right" ? bias : 0; 7283 const biasRight = sideParam === "left" ? bias : 0; 7284 const commonCollisionProps = { 7285 boundary: collisionBoundary === "clipping-ancestors" ? "clippingAncestors" : collisionBoundary, 7286 padding: collisionPadding 7287 }; 7288 const arrowRef = React33.useRef(null); 7289 const sideOffsetRef = useValueAsRef(sideOffset); 7290 const alignOffsetRef = useValueAsRef(alignOffset); 7291 const sideOffsetDep = typeof sideOffset !== "function" ? sideOffset : 0; 7292 const alignOffsetDep = typeof alignOffset !== "function" ? alignOffset : 0; 7293 const middleware = []; 7294 if (inlineMiddleware) { 7295 middleware.push(inlineMiddleware); 7296 } 7297 middleware.push(offset3((state) => { 7298 const data = getOffsetData(state, sideParam, isRtl); 7299 const sideAxis = typeof sideOffsetRef.current === "function" ? sideOffsetRef.current(data) : sideOffsetRef.current; 7300 const alignAxis = typeof alignOffsetRef.current === "function" ? alignOffsetRef.current(data) : alignOffsetRef.current; 7301 return { 7302 mainAxis: sideAxis, 7303 crossAxis: alignAxis, 7304 alignmentAxis: alignAxis 7305 }; 7306 }, [sideOffsetDep, alignOffsetDep, isRtl, sideParam])); 7307 const shiftDisabled = collisionAvoidanceAlign === "none" && collisionAvoidanceSide !== "shift"; 7308 const crossAxisShiftEnabled = !shiftDisabled && (sticky || shiftCrossAxis || collisionAvoidanceSide === "shift"); 7309 const flipMiddleware = collisionAvoidanceSide === "none" ? null : flip3({ 7310 ...commonCollisionProps, 7311 // Ensure the popup flips if it's been limited by its --available-height and it resizes. 7312 // Since the size() padding is smaller than the flip() padding, flip() will take precedence. 7313 padding: { 7314 top: collisionPadding.top + bias + biasTop, 7315 right: collisionPadding.right + bias + biasRight, 7316 bottom: collisionPadding.bottom + bias + biasBottom, 7317 left: collisionPadding.left + bias + biasLeft 7318 }, 7319 mainAxis: !shiftCrossAxis && collisionAvoidanceSide === "flip", 7320 crossAxis: collisionAvoidanceAlign === "flip" ? "alignment" : false, 7321 fallbackAxisSideDirection: collisionAvoidanceFallbackAxisSide 7322 }); 7323 const shiftMiddleware = shiftDisabled ? null : shift3({ 7324 ...commonCollisionProps, 7325 // Use the Layout Viewport to avoid shifting around when pinch-zooming. 7326 rootBoundary: shiftRootBoundary, 7327 mainAxis: collisionAvoidanceAlign !== "none", 7328 crossAxis: crossAxisShiftEnabled, 7329 limiter: sticky || shiftCrossAxis ? void 0 : limitShift3((limitData) => { 7330 if (!arrowRef.current) { 7331 return {}; 7332 } 7333 const { 7334 width, 7335 height 7336 } = arrowRef.current.getBoundingClientRect(); 7337 const sideAxis = getSideAxis(getSide(limitData.placement)); 7338 const arrowSize = sideAxis === "y" ? width : height; 7339 const offsetAmount = sideAxis === "y" ? collisionPadding.left + collisionPadding.right : collisionPadding.top + collisionPadding.bottom; 7340 return { 7341 offset: arrowSize / 2 + offsetAmount / 2 7342 }; 7343 }) 7344 }, [commonCollisionProps, sticky, shiftCrossAxis, shiftRootBoundary, collisionPadding, collisionAvoidanceAlign]); 7345 if (collisionAvoidanceSide === "shift" || collisionAvoidanceAlign === "shift" || placementAlign === "center") { 7346 middleware.push(shiftMiddleware, flipMiddleware); 7347 } else { 7348 middleware.push(flipMiddleware, shiftMiddleware); 7349 } 7350 middleware.push(size3({ 7351 ...commonCollisionProps, 7352 apply({ 7353 elements: { 7354 floating 7355 }, 7356 availableWidth: availableWidth2, 7357 availableHeight: availableHeight2, 7358 rects 7359 }) { 7360 if (!mountedRef.current) { 7361 return; 7362 } 7363 const floatingStyle = floating.style; 7364 floatingStyle.setProperty(AVAILABLE_WIDTH_VAR, `$availableWidth2}px`); 7365 floatingStyle.setProperty(AVAILABLE_HEIGHT_VAR, `$availableHeight2}px`); 7366 const dpr = getWindow(floating).devicePixelRatio || 1; 7367 const { 7368 x: x2, 7369 y: y2, 7370 width, 7371 height 7372 } = rects.reference; 7373 const anchorWidth2 = (Math.round((x2 + width) * dpr) - Math.round(x2 * dpr)) / dpr; 7374 const anchorHeight2 = (Math.round((y2 + height) * dpr) - Math.round(y2 * dpr)) / dpr; 7375 floatingStyle.setProperty(anchorWidth, `$anchorWidth2}px`); 7376 floatingStyle.setProperty(anchorHeight, `$anchorHeight2}px`); 7377 } 7378 }), arrow4((state) => ({ 7379 // `transform-origin` calculations rely on an element existing. If the arrow hasn't been set, 7380 // we'll create a fake element. 7381 element: arrowRef.current || ownerDocument(state.elements.floating).createElement("div"), 7382 // No padding for the fake arrow: it would displace aligned popups on narrow anchors. 7383 padding: arrowRef.current ? arrowPadding : 0 7384 }), [arrowPadding]), { 7385 name: "transformOrigin", 7386 fn(state) { 7387 const { 7388 elements: { 7389 floating 7390 }, 7391 middlewareData: middlewareData2, 7392 placement: renderedPlacement2, 7393 platform: platform3, 7394 rects, 7395 y: y2 7396 } = state; 7397 const renderedSide2 = getSide(renderedPlacement2); 7398 const renderedAlign2 = getAlignment(renderedPlacement2); 7399 const isVertical = getSideAxis(renderedSide2) === "y"; 7400 const arrowEl = arrowRef.current; 7401 const sideOffsetValue = typeof sideOffset === "function" ? sideOffset(getOffsetData(state, sideParam, isRtl)) : sideOffset; 7402 let crossOrigin; 7403 if (!arrowEl && renderedAlign2 && Math.abs(isVertical ? middlewareData2.shift?.x || 0 : middlewareData2.shift?.y || 0) <= 1) { 7404 crossOrigin = renderedAlign2 === "start" === (isVertical && platform3.isRTL?.(floating) === true) ? "100%" : "0%"; 7405 } else { 7406 const arrowOffset = isVertical ? middlewareData2.arrow?.x || 0 : middlewareData2.arrow?.y || 0; 7407 const arrowSize = isVertical ? arrowEl?.clientWidth || 0 : arrowEl?.clientHeight || 0; 7408 crossOrigin = `$arrowOffset + arrowSize / 2}px`; 7409 } 7410 let sideOrigin = renderedSide2 === "top" || renderedSide2 === "left" ? `calc(100% + $sideOffsetValue}px)` : `${-sideOffsetValue}px`; 7411 if (crossAxisShiftEnabled && isVertical && Math.abs(middlewareData2.shift?.y || 0) > sideOffsetValue) { 7412 sideOrigin = `$rects.reference.y + rects.reference.height / 2 - y2}px`; 7413 } 7414 floating.style.setProperty(transformOrigin, isVertical ? `$crossOrigin} $sideOrigin}` : `$sideOrigin} $crossOrigin}`); 7415 return {}; 7416 } 7417 }, hide4, adaptiveOrigin2); 7418 useIsoLayoutEffect(() => { 7419 if (!mounted && floatingRootContext) { 7420 floatingRootContext.update({ 7421 referenceElement: null, 7422 floatingElement: null, 7423 domReferenceElement: null, 7424 positionReference: null 7425 }); 7426 } 7427 }, [mounted, floatingRootContext]); 7428 const autoUpdateOptions = React33.useMemo(() => ({ 7429 ancestorScroll: !disableAnchorTracking, 7430 elementResize: !disableAnchorTracking && typeof ResizeObserver !== "undefined", 7431 layoutShift: !disableAnchorTracking && typeof IntersectionObserver !== "undefined" 7432 }), [disableAnchorTracking]); 7433 const { 7434 refs, 7435 elements, 7436 x, 7437 y, 7438 middlewareData, 7439 update: update2, 7440 placement: renderedPlacement, 7441 context, 7442 isPositioned, 7443 floatingStyles: originalFloatingStyles 7444 } = useFloatingHook({ 7445 rootContext: floatingRootContext, 7446 open: keepMounted ? mounted : void 0, 7447 placement, 7448 middleware, 7449 strategy: positionMethod, 7450 whileElementsMounted: keepMounted ? void 0 : (...args) => autoUpdate(...args, autoUpdateOptions), 7451 nodeId, 7452 externalTree 7453 }); 7454 const { 7455 sideX, 7456 sideY 7457 } = middlewareData.adaptiveOrigin || DEFAULT_SIDES; 7458 const resolvedPosition = isPositioned ? positionMethod : "fixed"; 7459 const floatingStyles = React33.useMemo(() => { 7460 let base; 7461 if (!isPositioned) { 7462 base = { 7463 position: resolvedPosition, 7464 top: 0, 7465 left: 0 7466 }; 7467 } else if (adaptiveOrigin2) { 7468 base = { 7469 position: resolvedPosition, 7470 [sideX]: x, 7471 [sideY]: y 7472 }; 7473 } else { 7474 base = { 7475 ...originalFloatingStyles, 7476 position: resolvedPosition 7477 }; 7478 } 7479 base[AVAILABLE_WIDTH_VAR] = "100vw"; 7480 base[AVAILABLE_HEIGHT_VAR] = "100vh"; 7481 if (!isPositioned) { 7482 base.opacity = 0; 7483 } 7484 return base; 7485 }, [adaptiveOrigin2, resolvedPosition, sideX, x, sideY, y, originalFloatingStyles, isPositioned]); 7486 const registeredPositionReferenceRef = React33.useRef(null); 7487 useIsoLayoutEffect(() => { 7488 if (!mounted) { 7489 return; 7490 } 7491 const anchorValue = anchorValueRef.current; 7492 const resolvedAnchor = typeof anchorValue === "function" ? anchorValue() : anchorValue; 7493 const unwrappedElement = (isRef(resolvedAnchor) ? resolvedAnchor.current : resolvedAnchor) || null; 7494 const finalAnchor = unwrappedElement || null; 7495 if (finalAnchor !== registeredPositionReferenceRef.current) { 7496 refs.setPositionReference(finalAnchor); 7497 registeredPositionReferenceRef.current = finalAnchor; 7498 } 7499 }, [mounted, refs, anchorDep, anchorValueRef]); 7500 React33.useEffect(() => { 7501 if (!mounted) { 7502 return; 7503 } 7504 const anchorValue = anchorValueRef.current; 7505 if (typeof anchorValue === "function") { 7506 return; 7507 } 7508 if (isRef(anchorValue) && anchorValue.current !== registeredPositionReferenceRef.current) { 7509 refs.setPositionReference(anchorValue.current); 7510 registeredPositionReferenceRef.current = anchorValue.current; 7511 } 7512 }, [mounted, refs, anchorDep, anchorValueRef]); 7513 React33.useEffect(() => { 7514 if (keepMounted && mounted && elements.reference && elements.floating) { 7515 return autoUpdate(elements.reference, elements.floating, update2, autoUpdateOptions); 7516 } 7517 return void 0; 7518 }, [keepMounted, mounted, elements, update2, autoUpdateOptions]); 7519 const renderedSide = getSide(renderedPlacement); 7520 const logicalRenderedSide = getLogicalSide(sideParam, renderedSide, isRtl); 7521 const renderedAlign = getAlignment(renderedPlacement) || "center"; 7522 const anchorHidden2 = Boolean(middlewareData.hide?.referenceHidden); 7523 useIsoLayoutEffect(() => { 7524 if (lazyFlip && mounted && isPositioned && (renderedSide !== side || lockAlign && renderedAlign !== placementAlign)) { 7525 setMountPlacement(renderedPlacement); 7526 } 7527 }, [lazyFlip, lockAlign, mounted, isPositioned, renderedPlacement, renderedSide, renderedAlign, side, placementAlign]); 7528 const arrowStyles = React33.useMemo(() => ({ 7529 position: "absolute", 7530 top: middlewareData.arrow?.y, 7531 left: middlewareData.arrow?.x 7532 }), [middlewareData.arrow]); 7533 const arrowUncentered = middlewareData.arrow?.centerOffset !== 0; 7534 return React33.useMemo(() => ({ 7535 positionerStyles: floatingStyles, 7536 arrowStyles, 7537 arrowRef, 7538 arrowUncentered, 7539 side: logicalRenderedSide, 7540 align: renderedAlign, 7541 physicalSide: renderedSide, 7542 anchorHidden: anchorHidden2, 7543 refs, 7544 context, 7545 isPositioned, 7546 update: update2 7547 }), [floatingStyles, arrowStyles, arrowRef, arrowUncentered, logicalRenderedSide, renderedAlign, renderedSide, anchorHidden2, refs, context, isPositioned, update2]); 7548 } 7549 function isRef(param) { 7550 return param != null && "current" in param; 7551 } 7552 7553 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/getDisabledMountTransitionStyles.mjs 7554 function getDisabledMountTransitionStyles(transitionStatus) { 7555 return transitionStatus === "starting" ? DISABLED_TRANSITIONS_STYLE : EMPTY_OBJECT; 7556 } 7557 7558 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/usePositioner.mjs 7559 function usePositioner(componentProps, state, { 7560 styles, 7561 transitionStatus, 7562 props, 7563 refs, 7564 hidden, 7565 inert = false 7566 }) { 7567 const style = { 7568 ...styles 7569 }; 7570 if (inert) { 7571 style.pointerEvents = "none"; 7572 } 7573 return useRenderElement("div", componentProps, { 7574 state, 7575 ref: refs, 7576 props: [{ 7577 role: "presentation", 7578 hidden, 7579 style 7580 }, getDisabledMountTransitionStyles(transitionStatus), props], 7581 stateAttributesMapping: popupStateMapping 7582 }); 7583 } 7584 7585 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/button/Button.mjs 7586 var React34 = __toESM(require_react(), 1); 7587 var Button = /* @__PURE__ */ React34.forwardRef(function Button2(componentProps, forwardedRef) { 7588 const { 7589 render, 7590 className, 7591 disabled: disabled2 = false, 7592 focusableWhenDisabled = false, 7593 nativeButton = true, 7594 style, 7595 ...elementProps 7596 } = componentProps; 7597 const { 7598 getButtonProps, 7599 buttonRef 7600 } = useButton({ 7601 disabled: disabled2, 7602 focusableWhenDisabled, 7603 native: nativeButton 7604 }); 7605 const state = { 7606 disabled: disabled2 7607 }; 7608 return useRenderElement("button", componentProps, { 7609 state, 7610 ref: [forwardedRef, buttonRef], 7611 props: [elementProps, getButtonProps] 7612 }); 7613 }); 7614 if (true) Button.displayName = "Button"; 7615 7616 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/usePopupViewport.mjs 7617 var React38 = __toESM(require_react(), 1); 7618 var ReactDOM6 = __toESM(require_react_dom(), 1); 7619 7620 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/usePreviousValue.mjs 7621 var React35 = __toESM(require_react(), 1); 7622 function usePreviousValue(value) { 7623 const [state, setState] = React35.useState({ 7624 current: value, 7625 previous: null 7626 }); 7627 if (!Object.is(value, state.current)) { 7628 setState({ 7629 current: value, 7630 previous: state.current 7631 }); 7632 } 7633 return state.previous; 7634 } 7635 7636 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/usePopupAutoResize.mjs 7637 var React36 = __toESM(require_react(), 1); 7638 7639 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/getCssDimensions.mjs 7640 function getCssDimensions2(element) { 7641 const css = getComputedStyle2(element); 7642 let width = parseFloat(css.width) || 0; 7643 let height = parseFloat(css.height) || 0; 7644 const hasOffset = isHTMLElement(element); 7645 const offsetWidth = hasOffset ? element.offsetWidth : width; 7646 const offsetHeight = hasOffset ? element.offsetHeight : height; 7647 const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight; 7648 if (shouldFallback) { 7649 width = offsetWidth; 7650 height = offsetHeight; 7651 } 7652 return { 7653 width, 7654 height 7655 }; 7656 } 7657 7658 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/CommonPopupCssVars.mjs 7659 var popupWidth = "--popup-width"; 7660 var popupHeight = "--popup-height"; 7661 7662 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/usePopupAutoResize.mjs 7663 function usePopupAutoResize(parameters) { 7664 const { 7665 popupElement, 7666 positionerElement, 7667 content, 7668 mounted, 7669 onMeasureLayout: onMeasureLayoutParam, 7670 onMeasureLayoutComplete: onMeasureLayoutCompleteParam, 7671 side, 7672 direction 7673 } = parameters; 7674 const runOnceAnimationsFinish = useAnimationsFinished(popupElement, true); 7675 const animationFrame = useAnimationFrame(); 7676 const committedDimensionsRef = React36.useRef(null); 7677 const onMeasureLayout = useStableCallback(onMeasureLayoutParam); 7678 const onMeasureLayoutComplete = useStableCallback(onMeasureLayoutCompleteParam); 7679 const anchoringStyles = React36.useMemo(() => getPopupAnchoringStyles(side, direction), [side, direction]); 7680 useIsoLayoutEffect(() => { 7681 if (!mounted) { 7682 committedDimensionsRef.current = null; 7683 return void 0; 7684 } 7685 if (!popupElement || !positionerElement) { 7686 return void 0; 7687 } 7688 const restoreAnchoringStyles = applyElementStyles(popupElement, anchoringStyles); 7689 setPopupCssSize(popupElement, "auto"); 7690 const restorePopupPosition = overrideElementStyle(popupElement, "position", "static"); 7691 const restorePopupTransform = overrideElementStyle(popupElement, "transform", "none"); 7692 const restorePopupScale = overrideElementStyle(popupElement, "scale", "1"); 7693 const restorePositionerAvailableSize = applyElementStyles(positionerElement, { 7694 [availableWidth]: "max-content", 7695 [availableHeight]: "max-content" 7696 }); 7697 function restoreMeasurementOverrides() { 7698 restorePopupPosition(); 7699 restorePopupTransform(); 7700 restorePositionerAvailableSize(); 7701 restorePopupScale(); 7702 } 7703 onMeasureLayout?.(); 7704 if (committedDimensionsRef.current === null) { 7705 setPositionerCssSize(positionerElement, "max-content"); 7706 const dimensions = getCssDimensions2(popupElement); 7707 committedDimensionsRef.current = dimensions; 7708 setPositionerCssSize(positionerElement, dimensions); 7709 restoreMeasurementOverrides(); 7710 onMeasureLayoutComplete?.(null, dimensions); 7711 return restoreAnchoringStyles; 7712 } 7713 setPositionerCssSize(positionerElement, "max-content"); 7714 const previousDimensions = committedDimensionsRef.current; 7715 const newDimensions = getCssDimensions2(popupElement); 7716 committedDimensionsRef.current = newDimensions; 7717 setPopupCssSize(popupElement, previousDimensions); 7718 restoreMeasurementOverrides(); 7719 onMeasureLayoutComplete?.(previousDimensions, newDimensions); 7720 setPositionerCssSize(positionerElement, newDimensions); 7721 const abortController = new AbortController(); 7722 animationFrame.request(() => { 7723 setPopupCssSize(popupElement, newDimensions); 7724 runOnceAnimationsFinish(() => { 7725 popupElement.style.setProperty(popupWidth, "auto"); 7726 popupElement.style.setProperty(popupHeight, "auto"); 7727 }, abortController.signal); 7728 }); 7729 return () => { 7730 abortController.abort(); 7731 animationFrame.cancel(); 7732 restoreAnchoringStyles(); 7733 }; 7734 }, [content, popupElement, positionerElement, runOnceAnimationsFinish, animationFrame, mounted, onMeasureLayout, onMeasureLayoutComplete, anchoringStyles]); 7735 } 7736 function getPopupAnchoringStyles(side, direction) { 7737 const isPhysicalTop = side === "top"; 7738 const isPhysicalLeft = side === "left" || side === (direction === "rtl" ? "inline-end" : "inline-start"); 7739 if (!isPhysicalTop && !isPhysicalLeft) { 7740 return EMPTY_OBJECT; 7741 } 7742 return { 7743 position: "absolute", 7744 [isPhysicalTop ? "bottom" : "top"]: "0", 7745 [isPhysicalLeft ? "right" : "left"]: "0" 7746 }; 7747 } 7748 function overrideElementStyle(element, property, value) { 7749 const originalValue = element.style.getPropertyValue(property); 7750 element.style.setProperty(property, value); 7751 return () => { 7752 element.style.setProperty(property, originalValue); 7753 }; 7754 } 7755 function applyElementStyles(element, styles) { 7756 const restorers = []; 7757 for (const [key, value] of Object.entries(styles)) { 7758 restorers.push(overrideElementStyle(element, key, value)); 7759 } 7760 return restorers.length ? () => { 7761 restorers.forEach((restore) => restore()); 7762 } : NOOP; 7763 } 7764 function setPopupCssSize(popupElement, size4) { 7765 const width = size4 === "auto" ? "auto" : `$size4.width}px`; 7766 const height = size4 === "auto" ? "auto" : `$size4.height}px`; 7767 popupElement.style.setProperty(popupWidth, width); 7768 popupElement.style.setProperty(popupHeight, height); 7769 } 7770 function setPositionerCssSize(positionerElement, size4) { 7771 const width = size4 === "max-content" ? "max-content" : `$size4.width}px`; 7772 const height = size4 === "max-content" ? "max-content" : `$size4.height}px`; 7773 positionerElement.style.setProperty(positionerWidth, width); 7774 positionerElement.style.setProperty(positionerHeight, height); 7775 } 7776 7777 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/direction-provider/DirectionProvider.mjs 7778 var React37 = __toESM(require_react(), 1); 7779 var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1); 7780 var DirectionProvider = function DirectionProvider2(props) { 7781 const { 7782 direction = "ltr" 7783 } = props; 7784 const contextValue = React37.useMemo(() => ({ 7785 direction 7786 }), [direction]); 7787 return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(DirectionContext.Provider, { 7788 value: contextValue, 7789 children: props.children 7790 }); 7791 }; 7792 if (true) DirectionProvider.displayName = "DirectionProvider"; 7793 7794 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/adaptiveOriginMiddleware.mjs 7795 var adaptiveOrigin = { 7796 name: "adaptiveOrigin", 7797 async fn(state) { 7798 const { 7799 x: rawX, 7800 y: rawY, 7801 rects: { 7802 floating: floatRect 7803 }, 7804 elements: { 7805 floating 7806 }, 7807 platform: platform3, 7808 strategy, 7809 placement 7810 } = state; 7811 const win = getWindow(floating); 7812 const styles = win.getComputedStyle(floating); 7813 const hasTransition = styles.transitionDuration !== "0s" && styles.transitionDuration !== ""; 7814 if (!hasTransition) { 7815 return { 7816 x: rawX, 7817 y: rawY, 7818 data: DEFAULT_SIDES 7819 }; 7820 } 7821 const offsetParent = await platform3.getOffsetParent?.(floating); 7822 let offsetDimensions = { 7823 width: 0, 7824 height: 0 7825 }; 7826 if (strategy === "fixed" && win?.visualViewport) { 7827 offsetDimensions = { 7828 width: win.visualViewport.width, 7829 height: win.visualViewport.height 7830 }; 7831 } else if (offsetParent === win) { 7832 const doc = ownerDocument(floating); 7833 offsetDimensions = { 7834 width: doc.documentElement.clientWidth, 7835 height: doc.documentElement.clientHeight 7836 }; 7837 } else if (await platform3.isElement?.(offsetParent)) { 7838 offsetDimensions = await platform3.getDimensions(offsetParent); 7839 } 7840 const currentSide = getSide(placement); 7841 let x = rawX; 7842 let y = rawY; 7843 if (currentSide === "left") { 7844 x = offsetDimensions.width - (rawX + floatRect.width); 7845 } 7846 if (currentSide === "top") { 7847 y = offsetDimensions.height - (rawY + floatRect.height); 7848 } 7849 const sideX = currentSide === "left" ? "right" : DEFAULT_SIDES.sideX; 7850 const sideY = currentSide === "top" ? "bottom" : DEFAULT_SIDES.sideY; 7851 return { 7852 x, 7853 y, 7854 data: { 7855 sideX, 7856 sideY 7857 } 7858 }; 7859 } 7860 }; 7861 7862 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/CommonViewportDataAttributes.mjs 7863 var activationDirection = "data-activation-direction"; 7864 7865 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/usePopupViewport.mjs 7866 var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1); 7867 var popupViewportStateMapping = { 7868 activationDirection: (value) => value ? { 7869 [activationDirection]: value 7870 } : null 7871 }; 7872 function usePopupViewport(parameters) { 7873 const { 7874 store: store2, 7875 side, 7876 children 7877 } = parameters; 7878 const direction = useDirection(); 7879 const activeTrigger = store2.useState("activeTriggerElement"); 7880 const activeTriggerId = store2.useState("activeTriggerId"); 7881 const open2 = store2.useState("open"); 7882 const payload = store2.useState("payload"); 7883 const mounted = store2.useState("mounted"); 7884 const popupElement = store2.useState("popupElement"); 7885 const positionerElement = store2.useState("positionerElement"); 7886 const previousActiveTrigger = usePreviousValue(open2 ? activeTrigger : null); 7887 const currentContentKey = usePopupContentKey(activeTriggerId, payload); 7888 const capturedNodeRef = React38.useRef(null); 7889 const [previousContentNode, setPreviousContentNode] = React38.useState(null); 7890 const [newTriggerOffset, setNewTriggerOffset] = React38.useState(null); 7891 const currentContainerRef = React38.useRef(null); 7892 const previousContainerRef = React38.useRef(null); 7893 const onAnimationsFinished = useAnimationsFinished(currentContainerRef, true); 7894 const cleanupFrame = useAnimationFrame(); 7895 const cleanupControllerRef = React38.useRef(null); 7896 const [previousContentDimensions, setPreviousContentDimensions] = React38.useState(null); 7897 const [showStartingStyleAttribute, setShowStartingStyleAttribute] = React38.useState(false); 7898 useIsoLayoutEffect(() => { 7899 store2.set("adaptiveOrigin", adaptiveOrigin); 7900 return () => { 7901 store2.set("adaptiveOrigin", void 0); 7902 }; 7903 }, [store2]); 7904 const handleMeasureLayout = useStableCallback(() => { 7905 currentContainerRef.current?.style.setProperty("animation", "none"); 7906 currentContainerRef.current?.style.setProperty("transition", "none"); 7907 previousContainerRef.current?.style.setProperty("display", "none"); 7908 }); 7909 const handleMeasureLayoutComplete = useStableCallback((previousDimensions) => { 7910 currentContainerRef.current?.style.removeProperty("animation"); 7911 currentContainerRef.current?.style.removeProperty("transition"); 7912 previousContainerRef.current?.style.removeProperty("display"); 7913 if (previousDimensions) { 7914 setPreviousContentDimensions(previousDimensions); 7915 } 7916 }); 7917 const armViewportCleanup = useStableCallback(() => { 7918 cleanupControllerRef.current?.abort(); 7919 const controller = new AbortController(); 7920 cleanupControllerRef.current = controller; 7921 onAnimationsFinished(() => { 7922 setPreviousContentNode(null); 7923 setPreviousContentDimensions(null); 7924 capturedNodeRef.current = null; 7925 }, controller.signal); 7926 }); 7927 const lastHandledTriggerRef = React38.useRef(null); 7928 useIsoLayoutEffect(() => { 7929 if (!open2 || !mounted) { 7930 lastHandledTriggerRef.current = null; 7931 } 7932 }, [open2, mounted]); 7933 useIsoLayoutEffect(() => { 7934 if (open2 && activeTrigger && previousActiveTrigger && activeTrigger !== previousActiveTrigger && lastHandledTriggerRef.current !== activeTrigger && capturedNodeRef.current) { 7935 setPreviousContentNode(capturedNodeRef.current); 7936 setShowStartingStyleAttribute(true); 7937 const offset4 = calculateRelativePosition(previousActiveTrigger, activeTrigger); 7938 setNewTriggerOffset(offset4); 7939 lastHandledTriggerRef.current = activeTrigger; 7940 } 7941 }, [open2, activeTrigger, previousActiveTrigger]); 7942 useIsoLayoutEffect(() => { 7943 if (previousContentNode == null) { 7944 return; 7945 } 7946 cleanupControllerRef.current?.abort(); 7947 setShowStartingStyleAttribute(true); 7948 cleanupFrame.request(() => { 7949 ReactDOM6.flushSync(() => { 7950 setShowStartingStyleAttribute(false); 7951 }); 7952 armViewportCleanup(); 7953 }); 7954 }, [currentContentKey, previousContentNode, armViewportCleanup, cleanupFrame]); 7955 useIsoLayoutEffect(() => { 7956 const source = currentContainerRef.current; 7957 if (!source) { 7958 return; 7959 } 7960 const wrapper = ownerDocument(source).createElement("div"); 7961 for (const child of Array.from(source.childNodes)) { 7962 wrapper.appendChild(child.cloneNode(true)); 7963 } 7964 capturedNodeRef.current = wrapper; 7965 }); 7966 const isTransitioning = previousContentNode != null; 7967 let childrenToRender; 7968 if (!isTransitioning) { 7969 childrenToRender = /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { 7970 "data-current": true, 7971 ref: currentContainerRef, 7972 children 7973 }, currentContentKey); 7974 } else { 7975 childrenToRender = /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(React38.Fragment, { 7976 children: [/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { 7977 "data-previous": true, 7978 inert: inertValue(true), 7979 ref: previousContainerRef, 7980 style: { 7981 ...previousContentDimensions ? { 7982 [popupWidth]: `$previousContentDimensions.width}px`, 7983 [popupHeight]: `$previousContentDimensions.height}px` 7984 } : null, 7985 position: "absolute" 7986 }, 7987 "data-ending-style": showStartingStyleAttribute ? void 0 : "" 7988 }, "previous"), /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { 7989 "data-current": true, 7990 ref: currentContainerRef, 7991 "data-starting-style": showStartingStyleAttribute ? "" : void 0, 7992 children 7993 }, currentContentKey)] 7994 }); 7995 } 7996 useIsoLayoutEffect(() => { 7997 const container = previousContainerRef.current; 7998 if (!container || !previousContentNode) { 7999 return; 8000 } 8001 container.replaceChildren(...Array.from(previousContentNode.childNodes)); 8002 }, [previousContentNode]); 8003 usePopupAutoResize({ 8004 popupElement, 8005 positionerElement, 8006 mounted, 8007 content: payload, 8008 onMeasureLayout: handleMeasureLayout, 8009 onMeasureLayoutComplete: handleMeasureLayoutComplete, 8010 side, 8011 direction 8012 }); 8013 const state = { 8014 activationDirection: getActivationDirection(newTriggerOffset), 8015 transitioning: isTransitioning 8016 }; 8017 return { 8018 children: childrenToRender, 8019 state 8020 }; 8021 } 8022 function getActivationDirection(offset4) { 8023 if (!offset4) { 8024 return void 0; 8025 } 8026 return `$getValueWithTolerance(offset4.horizontal, 5, "right", "left")} $getValueWithTolerance(offset4.vertical, 5, "down", "up")}`; 8027 } 8028 function getValueWithTolerance(value, tolerance, positiveLabel, negativeLabel) { 8029 if (value > tolerance) { 8030 return positiveLabel; 8031 } 8032 if (value < -tolerance) { 8033 return negativeLabel; 8034 } 8035 return ""; 8036 } 8037 function calculateRelativePosition(from, to) { 8038 const fromRect = from.getBoundingClientRect(); 8039 const toRect = to.getBoundingClientRect(); 8040 const fromCenter = { 8041 x: fromRect.left + fromRect.width / 2, 8042 y: fromRect.top + fromRect.height / 2 8043 }; 8044 const toCenter = { 8045 x: toRect.left + toRect.width / 2, 8046 y: toRect.top + toRect.height / 2 8047 }; 8048 return { 8049 horizontal: toCenter.x - fromCenter.x, 8050 vertical: toCenter.y - fromCenter.y 8051 }; 8052 } 8053 function usePopupContentKey(activeTriggerId, payload) { 8054 const [contentKey, setContentKey] = React38.useState(0); 8055 const previousActiveTriggerIdRef = React38.useRef(activeTriggerId); 8056 const previousPayloadRef = React38.useRef(payload); 8057 const pendingPayloadUpdateRef = React38.useRef(false); 8058 useIsoLayoutEffect(() => { 8059 const previousActiveTriggerId = previousActiveTriggerIdRef.current; 8060 const previousPayload = previousPayloadRef.current; 8061 const triggerIdChanged = activeTriggerId !== previousActiveTriggerId; 8062 const payloadChanged = payload !== previousPayload; 8063 if (triggerIdChanged) { 8064 setContentKey((value) => value + 1); 8065 pendingPayloadUpdateRef.current = !payloadChanged; 8066 } else if (pendingPayloadUpdateRef.current && payloadChanged) { 8067 setContentKey((value) => value + 1); 8068 pendingPayloadUpdateRef.current = false; 8069 } 8070 previousActiveTriggerIdRef.current = activeTriggerId; 8071 previousPayloadRef.current = payload; 8072 }, [activeTriggerId, payload]); 8073 return `$activeTriggerId ?? "current"}-$contentKey}`; 8074 } 8075 8076 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/FloatingPortalLite.mjs 8077 var React39 = __toESM(require_react(), 1); 8078 var ReactDOM7 = __toESM(require_react_dom(), 1); 8079 var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1); 8080 var FloatingPortalLite = /* @__PURE__ */ React39.forwardRef(function FloatingPortalLite2(componentProps, forwardedRef) { 8081 const { 8082 children, 8083 container, 8084 className, 8085 render, 8086 style, 8087 ...elementProps 8088 } = componentProps; 8089 const { 8090 node: portalNode, 8091 subtree: portalSubtree 8092 } = useFloatingPortalNode({ 8093 container, 8094 ref: forwardedRef, 8095 componentProps, 8096 elementProps 8097 }); 8098 if (!portalSubtree && !portalNode) { 8099 return null; 8100 } 8101 return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(React39.Fragment, { 8102 children: [portalSubtree, portalNode && /* @__PURE__ */ ReactDOM7.createPortal(children, portalNode)] 8103 }); 8104 }); 8105 if (true) FloatingPortalLite.displayName = "FloatingPortalLite"; 8106 8107 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/index.parts.mjs 8108 var index_parts_exports = {}; 8109 __export(index_parts_exports, { 8110 Arrow: () => TooltipArrow, 8111 Handle: () => TooltipHandle, 8112 Popup: () => TooltipPopup, 8113 Portal: () => TooltipPortal, 8114 Positioner: () => TooltipPositioner, 8115 Provider: () => TooltipProvider, 8116 Root: () => TooltipRoot, 8117 Trigger: () => TooltipTrigger, 8118 Viewport: () => TooltipViewport, 8119 createHandle: () => createTooltipHandle 8120 }); 8121 8122 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/root/TooltipRoot.mjs 8123 var React42 = __toESM(require_react(), 1); 8124 8125 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/root/TooltipRootContext.mjs 8126 var React40 = __toESM(require_react(), 1); 8127 var TooltipRootContext = /* @__PURE__ */ React40.createContext(void 0); 8128 if (true) TooltipRootContext.displayName = "TooltipRootContext"; 8129 function useTooltipRootContext(optional) { 8130 const context = React40.useContext(TooltipRootContext); 8131 if (context === void 0 && !optional) { 8132 throw new Error(true ? "Base UI: TooltipRootContext is missing. Tooltip parts must be placed within <Tooltip.Root>." : formatErrorMessage_default(72)); 8133 } 8134 return context; 8135 } 8136 8137 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/store/TooltipStore.mjs 8138 var React41 = __toESM(require_react(), 1); 8139 var selectors2 = { 8140 ...popupStoreSelectors, 8141 disabled: (state) => state.disabled, 8142 instantType: (state) => state.instantType, 8143 isInstantPhase: (state) => state.isInstantPhase, 8144 trackCursorAxis: (state) => state.trackCursorAxis, 8145 disableHoverablePopup: (state) => state.disableHoverablePopup, 8146 lastOpenChangeReason: (state) => state.openChangeReason, 8147 closeOnClick: (state) => state.closeOnClick, 8148 // Active and inactive trigger props are the same object, so a constant for triggers that discard 8149 // them keeps those triggers from re-rendering when the props change. 8150 appliedTriggerProps: (state, apply) => apply ? state.activeTriggerProps : void 0, 8151 closeDelay: (state) => state.closeDelay, 8152 adaptiveOrigin: (state) => state.adaptiveOrigin 8153 }; 8154 var TooltipStore = class extends ReactStore { 8155 constructor(initialState, floatingId, nested) { 8156 const triggerElements = new PopupTriggerMap(); 8157 super(createInitialState(initialState, triggerElements, floatingId, nested), createInitialContext(triggerElements), selectors2); 8158 } 8159 setOpen = (nextOpen, eventDetails) => { 8160 applyPopupOpenChange(this, nextOpen, eventDetails, { 8161 extraState: { 8162 openChangeReason: eventDetails.reason 8163 } 8164 }); 8165 }; 8166 // Used by trigger clicks to clear a delayed hover open without reporting a public open-state change. 8167 cancelPendingOpen(event) { 8168 this.state.floatingRootContext.dispatchOpenChange(false, createChangeEventDetails(reason_parts_exports.triggerPress, event)); 8169 } 8170 }; 8171 function createNullTooltipStore() { 8172 const triggerElements = new PopupTriggerMap(); 8173 const store2 = new NullStore(Object.freeze(createInitialState(void 0, triggerElements)), Object.freeze(createInitialContext(triggerElements)), selectors2); 8174 return Object.assign(store2, { 8175 setOpen: NOOP, 8176 cancelPendingOpen: NOOP 8177 }); 8178 } 8179 function createInitialState(initialState, triggerElements, floatingId, nested = false) { 8180 const state = { 8181 ...createInitialPopupStoreState(triggerElements, floatingId, nested), 8182 disabled: false, 8183 instantType: void 0, 8184 isInstantPhase: false, 8185 trackCursorAxis: "none", 8186 disableHoverablePopup: false, 8187 openChangeReason: null, 8188 closeOnClick: true, 8189 closeDelay: 0, 8190 adaptiveOrigin: void 0, 8191 ...initialState 8192 }; 8193 return state; 8194 } 8195 function createInitialContext(triggerElements) { 8196 return { 8197 popupRef: /* @__PURE__ */ React41.createRef(), 8198 onOpenChange: void 0, 8199 onOpenChangeComplete: void 0, 8200 triggerElements 8201 }; 8202 } 8203 8204 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/root/TooltipRoot.mjs 8205 var import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1); 8206 var TooltipRoot = fastComponent(function TooltipRoot2(props) { 8207 const { 8208 disabled: disabled2 = false, 8209 defaultOpen = false, 8210 open: openProp, 8211 disableHoverablePopup = false, 8212 trackCursorAxis = "none", 8213 actionsRef, 8214 onOpenChange, 8215 onOpenChangeComplete, 8216 handle, 8217 triggerId: triggerIdProp, 8218 defaultTriggerId: defaultTriggerIdProp = null, 8219 children 8220 } = props; 8221 const store2 = usePopupRootStore((floatingId, nested) => new TooltipStore({ 8222 open: defaultOpen, 8223 openProp, 8224 activeTriggerId: defaultTriggerIdProp, 8225 triggerIdProp 8226 }, floatingId, nested)); 8227 store2.useControlledProp("openProp", openProp); 8228 store2.useControlledProp("triggerIdProp", triggerIdProp); 8229 store2.useContextCallback("onOpenChange", onOpenChange); 8230 store2.useContextCallback("onOpenChangeComplete", onOpenChangeComplete); 8231 const openState = store2.useState("open"); 8232 const open2 = !disabled2 && openState; 8233 const activeTriggerId = store2.useState("activeTriggerId"); 8234 const mounted = store2.useState("mounted"); 8235 const payload = store2.useState("payload"); 8236 store2.useSyncedValues({ 8237 trackCursorAxis, 8238 disableHoverablePopup, 8239 disabled: disabled2 8240 }); 8241 useImplicitActiveTrigger(store2, { 8242 closeOnActiveTriggerUnmount: true 8243 }); 8244 const { 8245 forceUnmount, 8246 transitionStatus 8247 } = useOpenStateTransitions(open2, store2); 8248 const isInstantPhase = store2.useState("isInstantPhase"); 8249 const instantType = store2.useState("instantType"); 8250 const lastOpenChangeReason = store2.useState("lastOpenChangeReason"); 8251 const previousInstantTypeRef = React42.useRef(null); 8252 useIsoLayoutEffect(() => { 8253 if (openState && disabled2) { 8254 store2.setOpen(false, createChangeEventDetails(reason_parts_exports.disabled)); 8255 } 8256 }, [openState, disabled2, store2]); 8257 useIsoLayoutEffect(() => { 8258 if (transitionStatus === "ending" && lastOpenChangeReason === reason_parts_exports.none || transitionStatus !== "ending" && isInstantPhase) { 8259 if (instantType !== "delay") { 8260 previousInstantTypeRef.current = instantType; 8261 } 8262 store2.set("instantType", "delay"); 8263 } else if (previousInstantTypeRef.current !== null) { 8264 store2.set("instantType", previousInstantTypeRef.current); 8265 previousInstantTypeRef.current = null; 8266 } 8267 }, [transitionStatus, isInstantPhase, lastOpenChangeReason, instantType, store2]); 8268 useIsoLayoutEffect(() => { 8269 if (open2) { 8270 if (activeTriggerId == null) { 8271 store2.set("payload", void 0); 8272 } 8273 } 8274 }, [store2, activeTriggerId, open2]); 8275 React42.useImperativeHandle(actionsRef, () => ({ 8276 unmount: forceUnmount, 8277 close: () => store2.setOpen(false, createChangeEventDetails(reason_parts_exports.imperativeAction)) 8278 }), [forceUnmount, store2]); 8279 const shouldRenderInteractions = open2 || mounted || !disabled2 && trackCursorAxis !== "none"; 8280 return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(TooltipRootContext.Provider, { 8281 value: store2, 8282 children: [handle && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(PopupHandleAttachment, { 8283 handle, 8284 store: store2 8285 }), shouldRenderInteractions && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(TooltipInteractions, { 8286 store: store2, 8287 disabled: disabled2, 8288 trackCursorAxis 8289 }), typeof children === "function" ? children({ 8290 payload 8291 }) : children] 8292 }); 8293 }); 8294 if (true) TooltipRoot.displayName = "TooltipRoot"; 8295 function TooltipInteractions({ 8296 store: store2, 8297 disabled: disabled2, 8298 trackCursorAxis 8299 }) { 8300 const floatingRootContext = store2.useState("floatingRootContext"); 8301 const dismiss = useDismiss(floatingRootContext, { 8302 enabled: !disabled2, 8303 referencePress: () => store2.select("closeOnClick") 8304 }); 8305 const clientPoint = useClientPoint(floatingRootContext, { 8306 enabled: !disabled2 && trackCursorAxis !== "none", 8307 axis: trackCursorAxis === "none" ? void 0 : trackCursorAxis 8308 }); 8309 const triggerProps = React42.useMemo(() => mergeProps(clientPoint.reference, dismiss.reference), [clientPoint.reference, dismiss.reference]); 8310 usePopupInteractionProps(store2, { 8311 activeTriggerProps: triggerProps, 8312 inactiveTriggerProps: triggerProps, 8313 popupProps: dismiss.floating ?? EMPTY_OBJECT 8314 }); 8315 return null; 8316 } 8317 8318 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/trigger/TooltipTrigger.mjs 8319 var React44 = __toESM(require_react(), 1); 8320 8321 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/provider/TooltipProviderContext.mjs 8322 var React43 = __toESM(require_react(), 1); 8323 var TooltipProviderContext = /* @__PURE__ */ React43.createContext(void 0); 8324 if (true) TooltipProviderContext.displayName = "TooltipProviderContext"; 8325 function useTooltipProviderContext() { 8326 return React43.useContext(TooltipProviderContext); 8327 } 8328 8329 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/utils/constants.mjs 8330 var OPEN_DELAY = 600; 8331 8332 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/trigger/TooltipTrigger.mjs 8333 var TOOLTIP_TRIGGER_IDENTIFIER = "data-base-ui-tooltip-trigger"; 8334 function getTargetElement(event) { 8335 const target = getTarget(event); 8336 return isElement(target) ? target : null; 8337 } 8338 var TooltipTrigger = fastComponentRef(function TooltipTrigger2(componentProps, forwardedRef) { 8339 const { 8340 render, 8341 className, 8342 style, 8343 handle, 8344 payload, 8345 disabled: disabledProp, 8346 delay, 8347 closeOnClick = true, 8348 closeDelay, 8349 id: idProp, 8350 ...elementProps 8351 } = componentProps; 8352 const rootContext = useTooltipRootContext(true); 8353 const handleStore = usePopupHandleStore(handle); 8354 const store2 = handleStore ?? rootContext; 8355 if (!store2) { 8356 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)); 8357 } 8358 const thisTriggerId = useBaseUiId(idProp); 8359 const isTriggerActive = store2.useState("isTriggerActive", thisTriggerId); 8360 const isOpenedByThisTrigger = store2.useState("isOpenedByTrigger", thisTriggerId); 8361 const floatingRootContext = store2.useState("floatingRootContext"); 8362 const triggerElementRef = React44.useRef(null); 8363 const closeDelayWithDefault = closeDelay ?? 0; 8364 const { 8365 registerTrigger, 8366 isMountedByThisTrigger 8367 } = useTriggerDataForwarding(thisTriggerId, triggerElementRef, store2, { 8368 payload, 8369 closeOnClick, 8370 closeDelay: closeDelayWithDefault 8371 }); 8372 const providerDelay = useTooltipProviderContext(); 8373 const { 8374 activeIdRef, 8375 delayRef, 8376 isInstantPhase, 8377 hasProvider 8378 } = useDelayGroup(floatingRootContext, { 8379 open: isOpenedByThisTrigger 8380 }); 8381 const hoverInteraction = useHoverInteractionSharedState(floatingRootContext); 8382 store2.useSyncedValue("isInstantPhase", isInstantPhase); 8383 const rootDisabled = store2.useState("disabled"); 8384 const disabled2 = disabledProp ?? rootDisabled; 8385 const disabledRef = useValueAsRef(disabled2); 8386 const trackCursorAxis = store2.useState("trackCursorAxis"); 8387 const disableHoverablePopup = store2.useState("disableHoverablePopup"); 8388 const isNestedTriggerHoveredRef = React44.useRef(false); 8389 const nestedTriggerOpenTimeout = useTimeout(); 8390 const pointerTypeRef = React44.useRef(void 0); 8391 function getOpenDelay() { 8392 if (hasProvider && activeIdRef.current != null) { 8393 return 0; 8394 } 8395 return delay ?? providerDelay ?? OPEN_DELAY; 8396 } 8397 function isEnabledNestedTriggerTarget(target) { 8398 const triggerEl = triggerElementRef.current; 8399 if (!triggerEl || !target) { 8400 return false; 8401 } 8402 const nearestTrigger = closest(target, `[$TOOLTIP_TRIGGER_IDENTIFIER}]`); 8403 return nearestTrigger !== null && nearestTrigger !== triggerEl && contains(triggerEl, nearestTrigger); 8404 } 8405 function detectNestedTriggerHover(target) { 8406 const nestedTriggerHovered = isEnabledNestedTriggerTarget(target); 8407 isNestedTriggerHoveredRef.current = nestedTriggerHovered; 8408 if (nestedTriggerHovered) { 8409 hoverInteraction.openChangeTimeout.clear(); 8410 hoverInteraction.restTimeout.clear(); 8411 hoverInteraction.restTimeoutPending = false; 8412 nestedTriggerOpenTimeout.clear(); 8413 } 8414 return nestedTriggerHovered; 8415 } 8416 const hoverProps = useHoverReferenceInteraction(floatingRootContext, { 8417 enabled: !disabled2, 8418 mouseOnly: true, 8419 move: false, 8420 handleClose: !disableHoverablePopup && trackCursorAxis !== "both" ? safePolygon() : null, 8421 restMs: getOpenDelay, 8422 delay() { 8423 if (closeDelay == null && hasProvider) { 8424 return { 8425 close: getDelay(delayRef.current, "close") 8426 }; 8427 } 8428 return { 8429 close: closeDelayWithDefault 8430 }; 8431 }, 8432 triggerElementRef, 8433 isActiveTrigger: isTriggerActive, 8434 isClosing: () => store2.select("transitionStatus") === "ending", 8435 shouldOpen() { 8436 return !isNestedTriggerHoveredRef.current; 8437 } 8438 }); 8439 const focusProps = useFocus(floatingRootContext, { 8440 enabled: !disabled2 8441 }).reference; 8442 const handleNestedTriggerHover = (event) => { 8443 const wasNestedTriggerHovered = isNestedTriggerHoveredRef.current; 8444 const target = getTargetElement(event); 8445 const nestedTriggerHovered = detectNestedTriggerHover(target); 8446 const triggerEl = triggerElementRef.current; 8447 const targetInsideTrigger = triggerEl && target && contains(triggerEl, target); 8448 if (nestedTriggerHovered && store2.select("open") && store2.select("lastOpenChangeReason") === reason_parts_exports.triggerHover) { 8449 store2.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event)); 8450 return; 8451 } 8452 if (wasNestedTriggerHovered && !nestedTriggerHovered && targetInsideTrigger && !disabledRef.current && !store2.select("open") && triggerEl && // Match the hover hook's non-strict mouse fallback for mouse-only event sequences. 8453 isMouseLikePointerType(pointerTypeRef.current)) { 8454 const open2 = () => { 8455 if (!isNestedTriggerHoveredRef.current && !disabledRef.current && !store2.select("open")) { 8456 store2.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerEl)); 8457 } 8458 }; 8459 const openDelay = getOpenDelay(); 8460 if (openDelay === 0) { 8461 nestedTriggerOpenTimeout.clear(); 8462 open2(); 8463 } else { 8464 nestedTriggerOpenTimeout.start(openDelay, open2); 8465 } 8466 } 8467 }; 8468 const rootTriggerProps = store2.useState("appliedTriggerProps", isMountedByThisTrigger || trackCursorAxis !== "none"); 8469 const state = { 8470 open: isOpenedByThisTrigger 8471 }; 8472 const element = useRenderElement("button", componentProps, { 8473 state, 8474 ref: [forwardedRef, registerTrigger, triggerElementRef], 8475 props: [hoverProps, focusProps, rootTriggerProps, { 8476 onMouseOver(event) { 8477 handleNestedTriggerHover(event.nativeEvent); 8478 }, 8479 onFocus(event) { 8480 if (isEnabledNestedTriggerTarget(getTargetElement(event.nativeEvent))) { 8481 event.preventBaseUIHandler(); 8482 } 8483 }, 8484 onMouseLeave() { 8485 isNestedTriggerHoveredRef.current = false; 8486 nestedTriggerOpenTimeout.clear(); 8487 pointerTypeRef.current = void 0; 8488 }, 8489 onPointerEnter(event) { 8490 pointerTypeRef.current = event.pointerType; 8491 }, 8492 onPointerDown(event) { 8493 pointerTypeRef.current = event.pointerType; 8494 store2.set("closeOnClick", closeOnClick); 8495 if (closeOnClick && !store2.select("open")) { 8496 store2.cancelPendingOpen(event.nativeEvent); 8497 } 8498 }, 8499 onClick(event) { 8500 if (closeOnClick && !store2.select("open")) { 8501 store2.cancelPendingOpen(event.nativeEvent); 8502 } 8503 }, 8504 id: thisTriggerId, 8505 [triggerDisabled]: disabled2 ? "" : void 0, 8506 [TOOLTIP_TRIGGER_IDENTIFIER]: disabled2 ? void 0 : "" 8507 }, elementProps], 8508 stateAttributesMapping: triggerOpenStateMapping 8509 }); 8510 return element; 8511 }); 8512 if (true) TooltipTrigger.displayName = "TooltipTrigger"; 8513 8514 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/portal/TooltipPortal.mjs 8515 var React46 = __toESM(require_react(), 1); 8516 8517 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/portal/TooltipPortalContext.mjs 8518 var React45 = __toESM(require_react(), 1); 8519 var TooltipPortalContext = /* @__PURE__ */ React45.createContext(void 0); 8520 if (true) TooltipPortalContext.displayName = "TooltipPortalContext"; 8521 function useTooltipPortalContext() { 8522 const value = React45.useContext(TooltipPortalContext); 8523 if (value === void 0) { 8524 throw new Error(true ? "Base UI: <Tooltip.Portal> is missing." : formatErrorMessage_default(70)); 8525 } 8526 return value; 8527 } 8528 8529 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/portal/TooltipPortal.mjs 8530 var import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1); 8531 var TooltipPortal = /* @__PURE__ */ React46.forwardRef(function TooltipPortal2(props, forwardedRef) { 8532 const { 8533 keepMounted = false, 8534 ...portalProps 8535 } = props; 8536 const store2 = useTooltipRootContext(); 8537 const mounted = store2.useState("mounted"); 8538 const shouldRender = mounted || keepMounted; 8539 if (!shouldRender) { 8540 return null; 8541 } 8542 return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(TooltipPortalContext.Provider, { 8543 value: keepMounted, 8544 children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(FloatingPortalLite, { 8545 ref: forwardedRef, 8546 ...portalProps 8547 }) 8548 }); 8549 }); 8550 if (true) TooltipPortal.displayName = "TooltipPortal"; 8551 8552 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/positioner/TooltipPositioner.mjs 8553 var React48 = __toESM(require_react(), 1); 8554 8555 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/positioner/TooltipPositionerContext.mjs 8556 var React47 = __toESM(require_react(), 1); 8557 var TooltipPositionerContext = /* @__PURE__ */ React47.createContext(void 0); 8558 if (true) TooltipPositionerContext.displayName = "TooltipPositionerContext"; 8559 function useTooltipPositionerContext() { 8560 const context = React47.useContext(TooltipPositionerContext); 8561 if (context === void 0) { 8562 throw new Error(true ? "Base UI: TooltipPositionerContext is missing. TooltipPositioner parts must be placed within <Tooltip.Positioner>." : formatErrorMessage_default(71)); 8563 } 8564 return context; 8565 } 8566 8567 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/positioner/TooltipPositioner.mjs 8568 var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1); 8569 var TooltipPositioner = /* @__PURE__ */ React48.forwardRef(function TooltipPositioner2(componentProps, forwardedRef) { 8570 const { 8571 render, 8572 className, 8573 anchor, 8574 positionMethod = "absolute", 8575 side = "top", 8576 align = "center", 8577 sideOffset = 0, 8578 alignOffset = 0, 8579 collisionBoundary = "clipping-ancestors", 8580 collisionPadding = 5, 8581 arrowPadding = 5, 8582 sticky = false, 8583 disableAnchorTracking = false, 8584 collisionAvoidance = POPUP_COLLISION_AVOIDANCE, 8585 style, 8586 ...elementProps 8587 } = componentProps; 8588 const store2 = useTooltipRootContext(); 8589 const keepMounted = useTooltipPortalContext(); 8590 const open2 = store2.useState("open"); 8591 const mounted = store2.useState("mounted"); 8592 const trackCursorAxis = store2.useState("trackCursorAxis"); 8593 const disableHoverablePopup = store2.useState("disableHoverablePopup"); 8594 const floatingRootContext = store2.useState("floatingRootContext"); 8595 const instantType = store2.useState("instantType"); 8596 const transitionStatus = store2.useState("transitionStatus"); 8597 const adaptiveOrigin2 = store2.useState("adaptiveOrigin"); 8598 const positioning = useAnchorPositioning({ 8599 anchor, 8600 positionMethod, 8601 floatingRootContext, 8602 mounted, 8603 side, 8604 sideOffset, 8605 align, 8606 alignOffset, 8607 collisionBoundary, 8608 collisionPadding, 8609 sticky, 8610 arrowPadding, 8611 disableAnchorTracking, 8612 keepMounted, 8613 collisionAvoidance, 8614 adaptiveOrigin: adaptiveOrigin2 8615 }); 8616 const state = React48.useMemo(() => ({ 8617 open: open2, 8618 side: positioning.side, 8619 align: positioning.align, 8620 anchorHidden: positioning.anchorHidden, 8621 instant: trackCursorAxis !== "none" ? "tracking-cursor" : instantType 8622 }), [open2, positioning.side, positioning.align, positioning.anchorHidden, trackCursorAxis, instantType]); 8623 const element = usePositioner(componentProps, state, { 8624 styles: positioning.positionerStyles, 8625 transitionStatus, 8626 props: elementProps, 8627 refs: [forwardedRef, store2.useStateSetter("positionerElement")], 8628 hidden: !mounted, 8629 inert: !open2 || trackCursorAxis === "both" || disableHoverablePopup 8630 }); 8631 return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(TooltipPositionerContext.Provider, { 8632 value: positioning, 8633 children: element 8634 }); 8635 }); 8636 if (true) TooltipPositioner.displayName = "TooltipPositioner"; 8637 8638 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/popup/TooltipPopup.mjs 8639 var React49 = __toESM(require_react(), 1); 8640 var TooltipPopup = /* @__PURE__ */ React49.forwardRef(function TooltipPopup2(componentProps, forwardedRef) { 8641 const { 8642 render, 8643 className, 8644 style, 8645 ...elementProps 8646 } = componentProps; 8647 const store2 = useTooltipRootContext(); 8648 const { 8649 side, 8650 align 8651 } = useTooltipPositionerContext(); 8652 const open2 = store2.useState("open"); 8653 const instantType = store2.useState("instantType"); 8654 const transitionStatus = store2.useState("transitionStatus"); 8655 const popupProps = store2.useState("popupProps"); 8656 const floatingContext = store2.useState("floatingRootContext"); 8657 const disabled2 = store2.useState("disabled"); 8658 const closeDelay = store2.useState("closeDelay"); 8659 useOpenChangeComplete({ 8660 open: open2, 8661 ref: store2.context.popupRef, 8662 onComplete() { 8663 if (open2) { 8664 store2.context.onOpenChangeComplete?.(true); 8665 } 8666 } 8667 }); 8668 useHoverFloatingInteraction(floatingContext, { 8669 enabled: !disabled2, 8670 closeDelay 8671 }); 8672 const setPopupElement = store2.useStateSetter("popupElement"); 8673 const state = { 8674 open: open2, 8675 side, 8676 align, 8677 instant: instantType, 8678 transitionStatus 8679 }; 8680 const element = useRenderElement("div", componentProps, { 8681 state, 8682 ref: [forwardedRef, store2.context.popupRef, setPopupElement], 8683 props: [FOCUSABLE_POPUP_PROPS, popupProps, getDisabledMountTransitionStyles(transitionStatus), elementProps], 8684 stateAttributesMapping: popupTransitionStateMapping 8685 }); 8686 return element; 8687 }); 8688 if (true) TooltipPopup.displayName = "TooltipPopup"; 8689 8690 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/arrow/TooltipArrow.mjs 8691 var React50 = __toESM(require_react(), 1); 8692 var TooltipArrow = /* @__PURE__ */ React50.forwardRef(function TooltipArrow2(componentProps, forwardedRef) { 8693 const { 8694 render, 8695 className, 8696 style, 8697 ...elementProps 8698 } = componentProps; 8699 const store2 = useTooltipRootContext(); 8700 const { 8701 arrowRef, 8702 side, 8703 align, 8704 arrowUncentered, 8705 arrowStyles 8706 } = useTooltipPositionerContext(); 8707 const open2 = store2.useState("open"); 8708 const instantType = store2.useState("instantType"); 8709 const state = { 8710 open: open2, 8711 side, 8712 align, 8713 uncentered: arrowUncentered, 8714 instant: instantType 8715 }; 8716 const element = useRenderElement("div", componentProps, { 8717 state, 8718 ref: [forwardedRef, arrowRef], 8719 props: [{ 8720 style: arrowStyles, 8721 "aria-hidden": true 8722 }, elementProps], 8723 stateAttributesMapping: popupStateMapping 8724 }); 8725 return element; 8726 }); 8727 if (true) TooltipArrow.displayName = "TooltipArrow"; 8728 8729 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/provider/TooltipProvider.mjs 8730 var React51 = __toESM(require_react(), 1); 8731 var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1); 8732 var TooltipProvider = function TooltipProvider2(props) { 8733 const { 8734 delay, 8735 closeDelay, 8736 timeout = 400 8737 } = props; 8738 const delayValue = React51.useMemo(() => ({ 8739 open: delay, 8740 close: closeDelay 8741 }), [delay, closeDelay]); 8742 return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(TooltipProviderContext.Provider, { 8743 value: delay, 8744 children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(FloatingDelayGroup, { 8745 delay: delayValue, 8746 timeoutMs: timeout, 8747 children: props.children 8748 }) 8749 }); 8750 }; 8751 if (true) TooltipProvider.displayName = "TooltipProvider"; 8752 8753 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/viewport/TooltipViewport.mjs 8754 var React52 = __toESM(require_react(), 1); 8755 var TooltipViewport = /* @__PURE__ */ React52.forwardRef(function TooltipViewport2(componentProps, forwardedRef) { 8756 const { 8757 render, 8758 className, 8759 style, 8760 children, 8761 ...elementProps 8762 } = componentProps; 8763 const store2 = useTooltipRootContext(); 8764 const positioner = useTooltipPositionerContext(); 8765 const instantType = store2.useState("instantType"); 8766 const { 8767 children: childrenToRender, 8768 state: viewportState 8769 } = usePopupViewport({ 8770 store: store2, 8771 side: positioner.side, 8772 children 8773 }); 8774 const state = { 8775 activationDirection: viewportState.activationDirection, 8776 transitioning: viewportState.transitioning, 8777 instant: instantType 8778 }; 8779 return useRenderElement("div", componentProps, { 8780 state, 8781 ref: forwardedRef, 8782 props: [elementProps, { 8783 children: childrenToRender 8784 }], 8785 stateAttributesMapping: popupViewportStateMapping 8786 }); 8787 }); 8788 if (true) TooltipViewport.displayName = "TooltipViewport"; 8789 8790 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/store/TooltipHandle.mjs 8791 var TooltipHandle = class extends BasePopupHandle { 8792 constructor() { 8793 super(createNullTooltipStore(), "Tooltip"); 8794 } 8795 /** 8796 * Opens the tooltip and associates it with the trigger with the given id. 8797 * 8798 * This method should only be called in an event handler or an effect (not during rendering). 8799 * 8800 * @param triggerId ID of the trigger to associate with the tooltip. The trigger must be a matching 8801 * `Tooltip.Trigger` with this handle passed as a prop. 8802 */ 8803 open(triggerId) { 8804 this.openByTrigger(triggerId); 8805 } 8806 /** 8807 * Closes the tooltip. 8808 * 8809 * This method should only be called in an event handler or an effect (not during rendering). 8810 */ 8811 close() { 8812 this.closePopup(); 8813 } 8814 /** 8815 * Whether the tooltip is currently open. Returns `false` while no root is attached to the handle. 8816 */ 8817 get isOpen() { 8818 return this.attachedStore?.select("open") ?? false; 8819 } 8820 }; 8821 function createTooltipHandle() { 8822 return new TooltipHandle(); 8823 } 8824 8825 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/use-render/useRender.mjs 8826 function useRender(params) { 8827 return useRenderElement(params.defaultTagName ?? "div", params, params); 8828 } 8829 8830 // packages/ui/build-module/badge/badge.mjs 8831 var import_element12 = __toESM(require_element(), 1); 8832 8833 // packages/ui/build-module/text/text.mjs 8834 var import_element11 = __toESM(require_element(), 1); 8835 var STYLE_HASH_ATTRIBUTE = "data-wp-hash"; 8836 function getRuntime() { 8837 const globalScope = globalThis; 8838 if (globalScope.__wpStyleRuntime) { 8839 return globalScope.__wpStyleRuntime; 8840 } 8841 globalScope.__wpStyleRuntime = { 8842 documents: /* @__PURE__ */ new Map(), 8843 styles: /* @__PURE__ */ new Map(), 8844 injectedStyles: /* @__PURE__ */ new WeakMap() 8845 }; 8846 if (typeof document !== "undefined") { 8847 registerDocument(document); 8848 } 8849 return globalScope.__wpStyleRuntime; 8850 } 8851 function documentContainsStyleHash(targetDocument, hash) { 8852 if (!targetDocument.head) { 8853 return false; 8854 } 8855 for (const style of targetDocument.head.querySelectorAll( 8856 `style[$STYLE_HASH_ATTRIBUTE}]` 8857 )) { 8858 if (style.getAttribute(STYLE_HASH_ATTRIBUTE) === hash) { 8859 return true; 8860 } 8861 } 8862 return false; 8863 } 8864 function injectStyle(targetDocument, hash, css) { 8865 if (!targetDocument.head) { 8866 return; 8867 } 8868 const runtime = getRuntime(); 8869 let injectedStyles = runtime.injectedStyles.get(targetDocument); 8870 if (!injectedStyles) { 8871 injectedStyles = /* @__PURE__ */ new Set(); 8872 runtime.injectedStyles.set(targetDocument, injectedStyles); 8873 } 8874 if (injectedStyles.has(hash)) { 8875 return; 8876 } 8877 if (documentContainsStyleHash(targetDocument, hash)) { 8878 injectedStyles.add(hash); 8879 return; 8880 } 8881 const style = targetDocument.createElement("style"); 8882 style.setAttribute(STYLE_HASH_ATTRIBUTE, hash); 8883 style.appendChild(targetDocument.createTextNode(css)); 8884 targetDocument.head.appendChild(style); 8885 injectedStyles.add(hash); 8886 } 8887 function registerDocument(targetDocument) { 8888 const runtime = getRuntime(); 8889 runtime.documents.set( 8890 targetDocument, 8891 (runtime.documents.get(targetDocument) ?? 0) + 1 8892 ); 8893 for (const [hash, css] of runtime.styles) { 8894 injectStyle(targetDocument, hash, css); 8895 } 8896 return () => { 8897 const count = runtime.documents.get(targetDocument); 8898 if (count === void 0) { 8899 return; 8900 } 8901 if (count <= 1) { 8902 runtime.documents.delete(targetDocument); 8903 return; 8904 } 8905 runtime.documents.set(targetDocument, count - 1); 8906 }; 8907 } 8908 function registerStyle(hash, css) { 8909 const runtime = getRuntime(); 8910 runtime.styles.set(hash, css); 8911 for (const targetDocument of runtime.documents.keys()) { 8912 injectStyle(targetDocument, hash, css); 8913 } 8914 } 8915 if (typeof process === "undefined" || true) { 8916 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)}}}'); 8917 } 8918 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" }; 8919 if (typeof process === "undefined" || true) { 8920 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)}"); 8921 } 8922 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" }; 8923 var Text = (0, import_element11.forwardRef)( 8924 function UnforwardedText({ variant = "body-md", render, className, ...props }, ref) { 8925 const element = useRender({ 8926 render, 8927 defaultTagName: "span", 8928 ref, 8929 props: mergeProps(props, { 8930 className: clsx_default( 8931 style_default.text, 8932 global_css_defense_default.heading, 8933 global_css_defense_default.p, 8934 style_default[variant], 8935 className 8936 ) 8937 }) 8938 }); 8939 return element; 8940 } 8941 ); 8942 8943 // packages/ui/build-module/badge/badge.mjs 8944 var import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1); 8945 var STYLE_HASH_ATTRIBUTE2 = "data-wp-hash"; 8946 function getRuntime2() { 8947 const globalScope = globalThis; 8948 if (globalScope.__wpStyleRuntime) { 8949 return globalScope.__wpStyleRuntime; 8950 } 8951 globalScope.__wpStyleRuntime = { 8952 documents: /* @__PURE__ */ new Map(), 8953 styles: /* @__PURE__ */ new Map(), 8954 injectedStyles: /* @__PURE__ */ new WeakMap() 8955 }; 8956 if (typeof document !== "undefined") { 8957 registerDocument2(document); 8958 } 8959 return globalScope.__wpStyleRuntime; 8960 } 8961 function documentContainsStyleHash2(targetDocument, hash) { 8962 if (!targetDocument.head) { 8963 return false; 8964 } 8965 for (const style of targetDocument.head.querySelectorAll( 8966 `style[$STYLE_HASH_ATTRIBUTE2}]` 8967 )) { 8968 if (style.getAttribute(STYLE_HASH_ATTRIBUTE2) === hash) { 8969 return true; 8970 } 8971 } 8972 return false; 8973 } 8974 function injectStyle2(targetDocument, hash, css) { 8975 if (!targetDocument.head) { 8976 return; 8977 } 8978 const runtime = getRuntime2(); 8979 let injectedStyles = runtime.injectedStyles.get(targetDocument); 8980 if (!injectedStyles) { 8981 injectedStyles = /* @__PURE__ */ new Set(); 8982 runtime.injectedStyles.set(targetDocument, injectedStyles); 8983 } 8984 if (injectedStyles.has(hash)) { 8985 return; 8986 } 8987 if (documentContainsStyleHash2(targetDocument, hash)) { 8988 injectedStyles.add(hash); 8989 return; 8990 } 8991 const style = targetDocument.createElement("style"); 8992 style.setAttribute(STYLE_HASH_ATTRIBUTE2, hash); 8993 style.appendChild(targetDocument.createTextNode(css)); 8994 targetDocument.head.appendChild(style); 8995 injectedStyles.add(hash); 8996 } 8997 function registerDocument2(targetDocument) { 8998 const runtime = getRuntime2(); 8999 runtime.documents.set( 9000 targetDocument, 9001 (runtime.documents.get(targetDocument) ?? 0) + 1 9002 ); 9003 for (const [hash, css] of runtime.styles) { 9004 injectStyle2(targetDocument, hash, css); 9005 } 9006 return () => { 9007 const count = runtime.documents.get(targetDocument); 9008 if (count === void 0) { 9009 return; 9010 } 9011 if (count <= 1) { 9012 runtime.documents.delete(targetDocument); 9013 return; 9014 } 9015 runtime.documents.set(targetDocument, count - 1); 9016 }; 9017 } 9018 function registerStyle2(hash, css) { 9019 const runtime = getRuntime2(); 9020 runtime.styles.set(hash, css); 9021 for (const targetDocument of runtime.documents.keys()) { 9022 injectStyle2(targetDocument, hash, css); 9023 } 9024 } 9025 if (typeof process === "undefined" || true) { 9026 registerStyle2("40ea4a6382", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._96e6251aad1a6136__badge{border-radius:var(--wpds-border-radius-lg,8px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wpds-dimension-padding-sm,8px)}._99f7158cb520f750__is-high-intent{background-color:var(--wpds-color-background-surface-error,#fae5e1);color:var(--wpds-color-foreground-content-error,#470000)}.c20ebef2365bc8b7__is-medium-intent{background-color:var(--wpds-color-background-surface-warning,#fde6be);color:var(--wpds-color-foreground-content-warning,#2e1900)}._365e1626c6202e52__is-low-intent{background-color:var(--wpds-color-background-surface-caution,#fee995);color:var(--wpds-color-foreground-content-caution,#281d00)}._33f8198127ddf4ef__is-stable-intent{background-color:var(--wpds-color-background-surface-success,#c2f8ca);color:var(--wpds-color-foreground-content-success,#002900)}._04c1aca8fc449412__is-informational-intent{background-color:var(--wpds-color-background-surface-info,#deebfa);color:var(--wpds-color-foreground-content-info,#001b4f)}._90726e69d495ec19__is-draft-intent{background-color:var(--wpds-color-background-surface-neutral-weak,#f4f4f4);color:var(--wpds-color-foreground-content-neutral,#1e1e1e)}._898f4a544993bd39__is-none-intent{background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);padding-block:calc(var(--wpds-dimension-padding-xs, 4px) - var(--wpds-border-width-xs, 1px));padding-inline:calc(var(--wpds-dimension-padding-sm, 8px) - var(--wpds-border-width-xs, 1px))}}}"); 9027 } 9028 var style_default2 = { "badge": "_96e6251aad1a6136__badge", "is-high-intent": "_99f7158cb520f750__is-high-intent", "is-medium-intent": "c20ebef2365bc8b7__is-medium-intent", "is-low-intent": "_365e1626c6202e52__is-low-intent", "is-stable-intent": "_33f8198127ddf4ef__is-stable-intent", "is-informational-intent": "_04c1aca8fc449412__is-informational-intent", "is-draft-intent": "_90726e69d495ec19__is-draft-intent", "is-none-intent": "_898f4a544993bd39__is-none-intent" }; 9029 var Badge = (0, import_element12.forwardRef)( 9030 function UnforwardedBadge({ intent = "none", className, ...props }, ref) { 9031 return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)( 9032 Text, 9033 { 9034 ref, 9035 className: clsx_default( 9036 style_default2.badge, 9037 style_default2[`is-$intent}-intent`], 9038 className 9039 ), 9040 ...props, 9041 variant: "body-sm" 9042 } 9043 ); 9044 } 9045 ); 9046 9047 // packages/ui/build-module/button/button.mjs 9048 var import_element14 = __toESM(require_element(), 1); 9049 var import_i18n = __toESM(require_i18n(), 1); 9050 import { speak } from "@wordpress/a11y"; 9051 9052 // packages/ui/build-module/spinner/spinner.mjs 9053 var import_element13 = __toESM(require_element(), 1); 9054 var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1); 9055 var STYLE_HASH_ATTRIBUTE3 = "data-wp-hash"; 9056 function getRuntime3() { 9057 const globalScope = globalThis; 9058 if (globalScope.__wpStyleRuntime) { 9059 return globalScope.__wpStyleRuntime; 9060 } 9061 globalScope.__wpStyleRuntime = { 9062 documents: /* @__PURE__ */ new Map(), 9063 styles: /* @__PURE__ */ new Map(), 9064 injectedStyles: /* @__PURE__ */ new WeakMap() 9065 }; 9066 if (typeof document !== "undefined") { 9067 registerDocument3(document); 9068 } 9069 return globalScope.__wpStyleRuntime; 9070 } 9071 function documentContainsStyleHash3(targetDocument, hash) { 9072 if (!targetDocument.head) { 9073 return false; 9074 } 9075 for (const style of targetDocument.head.querySelectorAll( 9076 `style[$STYLE_HASH_ATTRIBUTE3}]` 9077 )) { 9078 if (style.getAttribute(STYLE_HASH_ATTRIBUTE3) === hash) { 9079 return true; 9080 } 9081 } 9082 return false; 9083 } 9084 function injectStyle3(targetDocument, hash, css) { 9085 if (!targetDocument.head) { 9086 return; 9087 } 9088 const runtime = getRuntime3(); 9089 let injectedStyles = runtime.injectedStyles.get(targetDocument); 9090 if (!injectedStyles) { 9091 injectedStyles = /* @__PURE__ */ new Set(); 9092 runtime.injectedStyles.set(targetDocument, injectedStyles); 9093 } 9094 if (injectedStyles.has(hash)) { 9095 return; 9096 } 9097 if (documentContainsStyleHash3(targetDocument, hash)) { 9098 injectedStyles.add(hash); 9099 return; 9100 } 9101 const style = targetDocument.createElement("style"); 9102 style.setAttribute(STYLE_HASH_ATTRIBUTE3, hash); 9103 style.appendChild(targetDocument.createTextNode(css)); 9104 targetDocument.head.appendChild(style); 9105 injectedStyles.add(hash); 9106 } 9107 function registerDocument3(targetDocument) { 9108 const runtime = getRuntime3(); 9109 runtime.documents.set( 9110 targetDocument, 9111 (runtime.documents.get(targetDocument) ?? 0) + 1 9112 ); 9113 for (const [hash, css] of runtime.styles) { 9114 injectStyle3(targetDocument, hash, css); 9115 } 9116 return () => { 9117 const count = runtime.documents.get(targetDocument); 9118 if (count === void 0) { 9119 return; 9120 } 9121 if (count <= 1) { 9122 runtime.documents.delete(targetDocument); 9123 return; 9124 } 9125 runtime.documents.set(targetDocument, count - 1); 9126 }; 9127 } 9128 function registerStyle3(hash, css) { 9129 const runtime = getRuntime3(); 9130 runtime.styles.set(hash, css); 9131 for (const targetDocument of runtime.documents.keys()) { 9132 injectStyle3(targetDocument, hash, css); 9133 } 9134 } 9135 if (typeof process === "undefined" || true) { 9136 registerStyle3("dbe7fd6094", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.ab4d64c07c0ba587__spinner{background-color:transparent;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:inline-block;height:var(--wpds-dimension-size-2xs,16px);opacity:1;overflow:visible;position:relative;width:var(--wpds-dimension-size-2xs,16px)}.a7654e10245bb7d2__indicator{fill:transparent;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;transform-origin:50% 50%;@media (forced-colors:active){stroke:CanvasText}animation:_02322d973909703c__spinner-spin 1.4s linear infinite both}@keyframes _02322d973909703c__spinner-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}}}"); 9137 } 9138 var style_default3 = { "spinner": "ab4d64c07c0ba587__spinner", "indicator": "a7654e10245bb7d2__indicator", "spinner-spin": "_02322d973909703c__spinner-spin" }; 9139 var Spinner = (0, import_element13.forwardRef)( 9140 function UnforwardedSpinner({ className, color, style, ...props }, ref) { 9141 return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)( 9142 "svg", 9143 { 9144 className: clsx_default(style_default3.spinner, className), 9145 style: color === void 0 ? style : { ...style, color }, 9146 viewBox: "0 0 24 24", 9147 xmlns: "http://www.w3.org/2000/svg", 9148 role: "presentation", 9149 focusable: "false", 9150 ...props, 9151 ref, 9152 children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)( 9153 "path", 9154 { 9155 className: style_default3.indicator, 9156 d: "m 12 0 a 12 12 0 0 1 0 24" 9157 } 9158 ) 9159 } 9160 ); 9161 } 9162 ); 9163 9164 // packages/ui/build-module/button/button.mjs 9165 var import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1); 9166 var STYLE_HASH_ATTRIBUTE4 = "data-wp-hash"; 9167 function getRuntime4() { 9168 const globalScope = globalThis; 9169 if (globalScope.__wpStyleRuntime) { 9170 return globalScope.__wpStyleRuntime; 9171 } 9172 globalScope.__wpStyleRuntime = { 9173 documents: /* @__PURE__ */ new Map(), 9174 styles: /* @__PURE__ */ new Map(), 9175 injectedStyles: /* @__PURE__ */ new WeakMap() 9176 }; 9177 if (typeof document !== "undefined") { 9178 registerDocument4(document); 9179 } 9180 return globalScope.__wpStyleRuntime; 9181 } 9182 function documentContainsStyleHash4(targetDocument, hash) { 9183 if (!targetDocument.head) { 9184 return false; 9185 } 9186 for (const style of targetDocument.head.querySelectorAll( 9187 `style[$STYLE_HASH_ATTRIBUTE4}]` 9188 )) { 9189 if (style.getAttribute(STYLE_HASH_ATTRIBUTE4) === hash) { 9190 return true; 9191 } 9192 } 9193 return false; 9194 } 9195 function injectStyle4(targetDocument, hash, css) { 9196 if (!targetDocument.head) { 9197 return; 9198 } 9199 const runtime = getRuntime4(); 9200 let injectedStyles = runtime.injectedStyles.get(targetDocument); 9201 if (!injectedStyles) { 9202 injectedStyles = /* @__PURE__ */ new Set(); 9203 runtime.injectedStyles.set(targetDocument, injectedStyles); 9204 } 9205 if (injectedStyles.has(hash)) { 9206 return; 9207 } 9208 if (documentContainsStyleHash4(targetDocument, hash)) { 9209 injectedStyles.add(hash); 9210 return; 9211 } 9212 const style = targetDocument.createElement("style"); 9213 style.setAttribute(STYLE_HASH_ATTRIBUTE4, hash); 9214 style.appendChild(targetDocument.createTextNode(css)); 9215 targetDocument.head.appendChild(style); 9216 injectedStyles.add(hash); 9217 } 9218 function registerDocument4(targetDocument) { 9219 const runtime = getRuntime4(); 9220 runtime.documents.set( 9221 targetDocument, 9222 (runtime.documents.get(targetDocument) ?? 0) + 1 9223 ); 9224 for (const [hash, css] of runtime.styles) { 9225 injectStyle4(targetDocument, hash, css); 9226 } 9227 return () => { 9228 const count = runtime.documents.get(targetDocument); 9229 if (count === void 0) { 9230 return; 9231 } 9232 if (count <= 1) { 9233 runtime.documents.delete(targetDocument); 9234 return; 9235 } 9236 runtime.documents.set(targetDocument, count - 1); 9237 }; 9238 } 9239 function registerStyle4(hash, css) { 9240 const runtime = getRuntime4(); 9241 runtime.styles.set(hash, css); 9242 for (const targetDocument of runtime.documents.keys()) { 9243 injectStyle4(targetDocument, hash, css); 9244 } 9245 } 9246 if (typeof process === "undefined" || true) { 9247 registerStyle4("1052986a11", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._97b0fc33c028be1a__button,.abbb272e2ce49bd6__is-unstyled{appearance:none;padding:0}._97b0fc33c028be1a__button{--wp-ui-button-font-weight:var(--wpds-typography-font-weight-emphasis,600);--wp-ui-button-background-color:var(--wpds-color-background-interactive-brand-strong,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-brand-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-brand-strong,#fff);--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-brand-strong-disabled,#8d8d8d);--wp-ui-button-padding-block:var(--wpds-dimension-padding-xs,4px);--wp-ui-button-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-button-height:var(--wpds-dimension-size-lg,40px);--wp-ui-button-aspect-ratio:auto;--wp-ui-button-font-size:var(--wpds-typography-font-size-md,13px);--wp-ui-button-min-width:calc(4ch + var(--wp-ui-button-padding-inline)*2);--wp-ui-button-icon-margin:calc((var(--wpds-dimension-size-2xs, 16px) - var(--wpds-dimension-size-sm, 24px))/2);--wp-ui-button-border-color:var(--wp-ui-button-background-color);--wp-ui-button-border-color-active:var(--wp-ui-button-background-color-active);--wp-ui-button-border-color-disabled:var(--wp-ui-button-background-color-disabled);--_gcd-button-font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);--_gcd-button-font-size:var(--wp-ui-button-font-size);--_gcd-button-font-weight:var(--wp-ui-button-font-weight);align-items:center;aspect-ratio:var(--wp-ui-button-aspect-ratio);background-clip:border-box;background-color:var(--wp-ui-button-background-color);border-color:var(--wp-ui-button-border-color);border-radius:var(--wpds-border-radius-sm,2px);border-style:solid;border-width:1px;color:var(--wp-ui-button-foreground-color);display:inline-flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wp-ui-button-font-size);font-weight:var(--wp-ui-button-font-weight);gap:var(--wpds-dimension-gap-sm,8px);justify-content:center;line-height:var(--wpds-typography-line-height-sm,20px);max-width:100%;min-height:var(--wp-ui-button-height);min-width:var(--wp-ui-button-min-width);overflow-wrap:anywhere;padding-block:var(--wp-ui-button-padding-block);padding-inline:var(--wp-ui-button-padding-inline);position:relative;text-align:center;text-decoration:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}@media not (prefers-reduced-motion){transition:color .1s ease-out;*{transition:opacity .1s ease-out}}&[href]{cursor:pointer}[href]{color:inherit;text-decoration:inherit}&:not([data-disabled]):is(:hover,:active,:focus){background-color:var(--wp-ui-button-background-color-active);border-color:var(--wp-ui-button-border-color-active);color:var(--wp-ui-button-foreground-color-active)}&[data-disabled]:not(._914b42f315c0e580__is-loading){background-color:var(--wp-ui-button-background-color-disabled);border-color:var(--wp-ui-button-border-color-disabled);color:var(--wp-ui-button-foreground-color-disabled);@media (forced-colors:active){border-bottom-color:GrayText;border-left-color:GrayText;border-right-color:GrayText;border-top-color:GrayText;color:GrayText}}}._908205475f9f2a92__is-small{--wp-ui-button-padding-block:0px;--wp-ui-button-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-button-height:var(--wpds-dimension-size-sm,24px)}._9f6fc6553aeb36fe__icon{margin:var(--wp-ui-button-icon-margin)}.dd460c965226cc77__is-brand{&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 52%,#000));--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-brand-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-background-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 85%,#000));--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-brand-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-background-color:var(--wpds-color-background-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-brand-weak-disabled,#0000)}}.e722a8f96726aa99__is-neutral{&.ad0619a3217c6a5b__is-minimal[aria-pressed=true],&.b50b3358c5fb4d0b__is-solid{--wp-ui-button-background-color:var(--wpds-color-background-interactive-neutral-strong,#2d2d2d);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-neutral-strong-active,#1e1e1e);--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-neutral-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-neutral-strong,#f0f0f0);--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-neutral-strong-active,#f0f0f0);--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-neutral-strong-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal:not([aria-pressed=true]){--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-neutral-active,#1e1e1e);--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-background-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d);--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-neutral-active,#6e6e6e);--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal:not([aria-pressed=true]){--wp-ui-button-background-color:var(--wpds-color-background-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000)}}.abbb272e2ce49bd6__is-unstyled{background:none;border:none;min-width:unset}.cf59cf1b69629838__is-compact{--wp-ui-button-height:var(--wpds-dimension-size-md,32px)}._914b42f315c0e580__is-loading:not(.abbb272e2ce49bd6__is-unstyled){color:transparent;&:not([data-disabled]):is(:hover,:active,:focus){color:transparent}@media (forced-colors:active){color:ButtonFace}>:not(._1322fe375ff021a3__spinner){opacity:0}}}@layer compositions{._1322fe375ff021a3__spinner{color:var(--wp-ui-button-foreground-color);height:var(--wp-ui-button-font-size);inset:0;margin:auto;pointer-events:none;position:absolute;width:var(--wp-ui-button-font-size);>*{stroke-width:2.75}@media (prefers-reduced-motion){>*{animation:none}}@media (forced-colors:active){>*{stroke:ButtonText}}}}}'); 9248 } 9249 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" }; 9250 if (typeof process === "undefined" || true) { 9251 registerStyle4("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 9252 } 9253 var resets_default = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; 9254 if (typeof process === "undefined" || true) { 9255 registerStyle4("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))}}}"); 9256 } 9257 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" }; 9258 if (typeof process === "undefined" || true) { 9259 registerStyle4("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)}"); 9260 } 9261 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" }; 9262 var Button3 = (0, import_element14.forwardRef)( 9263 function UnforwardedButton({ 9264 tone = "brand", 9265 variant = "solid", 9266 size: size4 = "default", 9267 className, 9268 focusableWhenDisabled = true, 9269 disabled: disabled2, 9270 loading, 9271 loadingAnnouncement = (0, import_i18n.__)("Loading"), 9272 children, 9273 ...props 9274 }, ref) { 9275 const mergedClassName = clsx_default( 9276 global_css_defense_default2.button, 9277 resets_default["box-sizing"], 9278 focus_module_default["outset-ring--focus-except-active"], 9279 variant !== "unstyled" && style_default4.button, 9280 style_default4[`is-$tone}`], 9281 style_default4[`is-$variant}`], 9282 style_default4[`is-$size4}`], 9283 loading && style_default4["is-loading"], 9284 className 9285 ); 9286 (0, import_element14.useEffect)(() => { 9287 if (loading && loadingAnnouncement) { 9288 speak(loadingAnnouncement); 9289 } 9290 }, [loading, loadingAnnouncement]); 9291 return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)( 9292 Button, 9293 { 9294 ref, 9295 className: mergedClassName, 9296 focusableWhenDisabled, 9297 disabled: disabled2 ?? loading, 9298 ...props, 9299 children: [ 9300 children, 9301 loading && variant !== "unstyled" && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Spinner, { className: style_default4.spinner }) 9302 ] 9303 } 9304 ); 9305 } 9306 ); 9307 9308 // packages/ui/build-module/button/icon.mjs 9309 var import_element15 = __toESM(require_element(), 1); 9310 var import_jsx_runtime16 = __toESM(require_jsx_runtime(), 1); 9311 var STYLE_HASH_ATTRIBUTE5 = "data-wp-hash"; 9312 function getRuntime5() { 9313 const globalScope = globalThis; 9314 if (globalScope.__wpStyleRuntime) { 9315 return globalScope.__wpStyleRuntime; 9316 } 9317 globalScope.__wpStyleRuntime = { 9318 documents: /* @__PURE__ */ new Map(), 9319 styles: /* @__PURE__ */ new Map(), 9320 injectedStyles: /* @__PURE__ */ new WeakMap() 9321 }; 9322 if (typeof document !== "undefined") { 9323 registerDocument5(document); 9324 } 9325 return globalScope.__wpStyleRuntime; 9326 } 9327 function documentContainsStyleHash5(targetDocument, hash) { 9328 if (!targetDocument.head) { 9329 return false; 9330 } 9331 for (const style of targetDocument.head.querySelectorAll( 9332 `style[$STYLE_HASH_ATTRIBUTE5}]` 9333 )) { 9334 if (style.getAttribute(STYLE_HASH_ATTRIBUTE5) === hash) { 9335 return true; 9336 } 9337 } 9338 return false; 9339 } 9340 function injectStyle5(targetDocument, hash, css) { 9341 if (!targetDocument.head) { 9342 return; 9343 } 9344 const runtime = getRuntime5(); 9345 let injectedStyles = runtime.injectedStyles.get(targetDocument); 9346 if (!injectedStyles) { 9347 injectedStyles = /* @__PURE__ */ new Set(); 9348 runtime.injectedStyles.set(targetDocument, injectedStyles); 9349 } 9350 if (injectedStyles.has(hash)) { 9351 return; 9352 } 9353 if (documentContainsStyleHash5(targetDocument, hash)) { 9354 injectedStyles.add(hash); 9355 return; 9356 } 9357 const style = targetDocument.createElement("style"); 9358 style.setAttribute(STYLE_HASH_ATTRIBUTE5, hash); 9359 style.appendChild(targetDocument.createTextNode(css)); 9360 targetDocument.head.appendChild(style); 9361 injectedStyles.add(hash); 9362 } 9363 function registerDocument5(targetDocument) { 9364 const runtime = getRuntime5(); 9365 runtime.documents.set( 9366 targetDocument, 9367 (runtime.documents.get(targetDocument) ?? 0) + 1 9368 ); 9369 for (const [hash, css] of runtime.styles) { 9370 injectStyle5(targetDocument, hash, css); 9371 } 9372 return () => { 9373 const count = runtime.documents.get(targetDocument); 9374 if (count === void 0) { 9375 return; 9376 } 9377 if (count <= 1) { 9378 runtime.documents.delete(targetDocument); 9379 return; 9380 } 9381 runtime.documents.set(targetDocument, count - 1); 9382 }; 9383 } 9384 function registerStyle5(hash, css) { 9385 const runtime = getRuntime5(); 9386 runtime.styles.set(hash, css); 9387 for (const targetDocument of runtime.documents.keys()) { 9388 injectStyle5(targetDocument, hash, css); 9389 } 9390 } 9391 if (typeof process === "undefined" || true) { 9392 registerStyle5("1052986a11", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._97b0fc33c028be1a__button,.abbb272e2ce49bd6__is-unstyled{appearance:none;padding:0}._97b0fc33c028be1a__button{--wp-ui-button-font-weight:var(--wpds-typography-font-weight-emphasis,600);--wp-ui-button-background-color:var(--wpds-color-background-interactive-brand-strong,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-brand-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-brand-strong,#fff);--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-brand-strong-disabled,#8d8d8d);--wp-ui-button-padding-block:var(--wpds-dimension-padding-xs,4px);--wp-ui-button-padding-inline:var(--wpds-dimension-padding-md,12px);--wp-ui-button-height:var(--wpds-dimension-size-lg,40px);--wp-ui-button-aspect-ratio:auto;--wp-ui-button-font-size:var(--wpds-typography-font-size-md,13px);--wp-ui-button-min-width:calc(4ch + var(--wp-ui-button-padding-inline)*2);--wp-ui-button-icon-margin:calc((var(--wpds-dimension-size-2xs, 16px) - var(--wpds-dimension-size-sm, 24px))/2);--wp-ui-button-border-color:var(--wp-ui-button-background-color);--wp-ui-button-border-color-active:var(--wp-ui-button-background-color-active);--wp-ui-button-border-color-disabled:var(--wp-ui-button-background-color-disabled);--_gcd-button-font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);--_gcd-button-font-size:var(--wp-ui-button-font-size);--_gcd-button-font-weight:var(--wp-ui-button-font-weight);align-items:center;aspect-ratio:var(--wp-ui-button-aspect-ratio);background-clip:border-box;background-color:var(--wp-ui-button-background-color);border-color:var(--wp-ui-button-border-color);border-radius:var(--wpds-border-radius-sm,2px);border-style:solid;border-width:1px;color:var(--wp-ui-button-foreground-color);display:inline-flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wp-ui-button-font-size);font-weight:var(--wp-ui-button-font-weight);gap:var(--wpds-dimension-gap-sm,8px);justify-content:center;line-height:var(--wpds-typography-line-height-sm,20px);max-width:100%;min-height:var(--wp-ui-button-height);min-width:var(--wp-ui-button-min-width);overflow-wrap:anywhere;padding-block:var(--wp-ui-button-padding-block);padding-inline:var(--wp-ui-button-padding-inline);position:relative;text-align:center;text-decoration:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}@media not (prefers-reduced-motion){transition:color .1s ease-out;*{transition:opacity .1s ease-out}}&[href]{cursor:pointer}[href]{color:inherit;text-decoration:inherit}&:not([data-disabled]):is(:hover,:active,:focus){background-color:var(--wp-ui-button-background-color-active);border-color:var(--wp-ui-button-border-color-active);color:var(--wp-ui-button-foreground-color-active)}&[data-disabled]:not(._914b42f315c0e580__is-loading){background-color:var(--wp-ui-button-background-color-disabled);border-color:var(--wp-ui-button-border-color-disabled);color:var(--wp-ui-button-foreground-color-disabled);@media (forced-colors:active){border-bottom-color:GrayText;border-left-color:GrayText;border-right-color:GrayText;border-top-color:GrayText;color:GrayText}}}._908205475f9f2a92__is-small{--wp-ui-button-padding-block:0px;--wp-ui-button-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-button-height:var(--wpds-dimension-size-sm,24px)}._9f6fc6553aeb36fe__icon{margin:var(--wp-ui-button-icon-margin)}.dd460c965226cc77__is-brand{&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 52%,#000));--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-brand-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-background-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-brand,var(--wp-admin-theme-color,#3858e9));--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 85%,#000));--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-brand-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal{--wp-ui-button-background-color:var(--wpds-color-background-interactive-brand-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-brand-weak-disabled,#0000)}}.e722a8f96726aa99__is-neutral{&.ad0619a3217c6a5b__is-minimal[aria-pressed=true],&.b50b3358c5fb4d0b__is-solid{--wp-ui-button-background-color:var(--wpds-color-background-interactive-neutral-strong,#2d2d2d);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-neutral-strong-active,#1e1e1e);--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-neutral-strong-disabled,#e6e6e6);--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-neutral-strong,#f0f0f0);--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-neutral-strong-active,#f0f0f0);--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-neutral-strong-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline,&.ad0619a3217c6a5b__is-minimal:not([aria-pressed=true]){--wp-ui-button-foreground-color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);--wp-ui-button-foreground-color-active:var(--wpds-color-foreground-interactive-neutral-active,#1e1e1e);--wp-ui-button-foreground-color-disabled:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d)}&._62d5a778b7b258ee__is-outline{--wp-ui-button-background-color:var(--wpds-color-background-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);--wp-ui-button-border-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d);--wp-ui-button-border-color-active:var(--wpds-color-stroke-interactive-neutral-active,#6e6e6e);--wp-ui-button-border-color-disabled:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb)}&.ad0619a3217c6a5b__is-minimal:not([aria-pressed=true]){--wp-ui-button-background-color:var(--wpds-color-background-interactive-neutral-weak,#0000);--wp-ui-button-background-color-active:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);--wp-ui-button-background-color-disabled:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000)}}.abbb272e2ce49bd6__is-unstyled{background:none;border:none;min-width:unset}.cf59cf1b69629838__is-compact{--wp-ui-button-height:var(--wpds-dimension-size-md,32px)}._914b42f315c0e580__is-loading:not(.abbb272e2ce49bd6__is-unstyled){color:transparent;&:not([data-disabled]):is(:hover,:active,:focus){color:transparent}@media (forced-colors:active){color:ButtonFace}>:not(._1322fe375ff021a3__spinner){opacity:0}}}@layer compositions{._1322fe375ff021a3__spinner{color:var(--wp-ui-button-foreground-color);height:var(--wp-ui-button-font-size);inset:0;margin:auto;pointer-events:none;position:absolute;width:var(--wp-ui-button-font-size);>*{stroke-width:2.75}@media (prefers-reduced-motion){>*{animation:none}}@media (forced-colors:active){>*{stroke:ButtonText}}}}}'); 9393 } 9394 var style_default5 = { "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" }; 9395 var ButtonIcon = (0, import_element15.forwardRef)( 9396 function UnforwardedButtonIcon({ className, icon, ...props }, ref) { 9397 return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)( 9398 Icon, 9399 { 9400 ref, 9401 icon, 9402 className: clsx_default(style_default5.icon, className), 9403 size: 24, 9404 ...props 9405 } 9406 ); 9407 } 9408 ); 9409 9410 // packages/ui/build-module/button/index.mjs 9411 ButtonIcon.displayName = "Button.Icon"; 9412 var Button4 = Object.assign(Button3, { 9413 /** 9414 * An icon component specifically designed to work well when rendered inside 9415 * a `Button` component. 9416 */ 9417 Icon: ButtonIcon 9418 }); 9419 9420 // packages/icons/build-module/library/caution.mjs 9421 var import_primitives2 = __toESM(require_primitives(), 1); 9422 var import_jsx_runtime17 = __toESM(require_jsx_runtime(), 1); 9423 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" }) }); 9424 9425 // packages/icons/build-module/library/close-small.mjs 9426 var import_primitives3 = __toESM(require_primitives(), 1); 9427 var import_jsx_runtime18 = __toESM(require_jsx_runtime(), 1); 9428 var close_small_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.75 16.25L16.25 7.75M16.25 16.25L7.75 7.75" }) }); 9429 9430 // packages/icons/build-module/library/error.mjs 9431 var import_primitives4 = __toESM(require_primitives(), 1); 9432 var import_jsx_runtime19 = __toESM(require_jsx_runtime(), 1); 9433 var error_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: "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" }) }); 9434 9435 // packages/icons/build-module/library/info.mjs 9436 var import_primitives5 = __toESM(require_primitives(), 1); 9437 var import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1); 9438 var info_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 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" }) }); 9439 9440 // packages/icons/build-module/library/published.mjs 9441 var import_primitives6 = __toESM(require_primitives(), 1); 9442 var import_jsx_runtime21 = __toESM(require_jsx_runtime(), 1); 9443 var published_default = /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_primitives6.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [ 9444 /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_primitives6.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" }), 9445 /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_primitives6.Path, { d: "M9 12L11 14L15 10" }) 9446 ] }); 9447 9448 // packages/ui/build-module/utils/keyboard-shortcut.mjs 9449 var import_element17 = __toESM(require_element(), 1); 9450 var import_i18n2 = __toESM(require_i18n(), 1); 9451 9452 // packages/ui/build-module/visually-hidden/visually-hidden.mjs 9453 var import_element16 = __toESM(require_element(), 1); 9454 var STYLE_HASH_ATTRIBUTE6 = "data-wp-hash"; 9455 function getRuntime6() { 9456 const globalScope = globalThis; 9457 if (globalScope.__wpStyleRuntime) { 9458 return globalScope.__wpStyleRuntime; 9459 } 9460 globalScope.__wpStyleRuntime = { 9461 documents: /* @__PURE__ */ new Map(), 9462 styles: /* @__PURE__ */ new Map(), 9463 injectedStyles: /* @__PURE__ */ new WeakMap() 9464 }; 9465 if (typeof document !== "undefined") { 9466 registerDocument6(document); 9467 } 9468 return globalScope.__wpStyleRuntime; 9469 } 9470 function documentContainsStyleHash6(targetDocument, hash) { 9471 if (!targetDocument.head) { 9472 return false; 9473 } 9474 for (const style of targetDocument.head.querySelectorAll( 9475 `style[$STYLE_HASH_ATTRIBUTE6}]` 9476 )) { 9477 if (style.getAttribute(STYLE_HASH_ATTRIBUTE6) === hash) { 9478 return true; 9479 } 9480 } 9481 return false; 9482 } 9483 function injectStyle6(targetDocument, hash, css) { 9484 if (!targetDocument.head) { 9485 return; 9486 } 9487 const runtime = getRuntime6(); 9488 let injectedStyles = runtime.injectedStyles.get(targetDocument); 9489 if (!injectedStyles) { 9490 injectedStyles = /* @__PURE__ */ new Set(); 9491 runtime.injectedStyles.set(targetDocument, injectedStyles); 9492 } 9493 if (injectedStyles.has(hash)) { 9494 return; 9495 } 9496 if (documentContainsStyleHash6(targetDocument, hash)) { 9497 injectedStyles.add(hash); 9498 return; 9499 } 9500 const style = targetDocument.createElement("style"); 9501 style.setAttribute(STYLE_HASH_ATTRIBUTE6, hash); 9502 style.appendChild(targetDocument.createTextNode(css)); 9503 targetDocument.head.appendChild(style); 9504 injectedStyles.add(hash); 9505 } 9506 function registerDocument6(targetDocument) { 9507 const runtime = getRuntime6(); 9508 runtime.documents.set( 9509 targetDocument, 9510 (runtime.documents.get(targetDocument) ?? 0) + 1 9511 ); 9512 for (const [hash, css] of runtime.styles) { 9513 injectStyle6(targetDocument, hash, css); 9514 } 9515 return () => { 9516 const count = runtime.documents.get(targetDocument); 9517 if (count === void 0) { 9518 return; 9519 } 9520 if (count <= 1) { 9521 runtime.documents.delete(targetDocument); 9522 return; 9523 } 9524 runtime.documents.set(targetDocument, count - 1); 9525 }; 9526 } 9527 function registerStyle6(hash, css) { 9528 const runtime = getRuntime6(); 9529 runtime.styles.set(hash, css); 9530 for (const targetDocument of runtime.documents.keys()) { 9531 injectStyle6(targetDocument, hash, css); 9532 } 9533 } 9534 if (typeof process === "undefined" || true) { 9535 registerStyle6("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}"); 9536 } 9537 var style_default6 = { "visually-hidden": "f37b9e2e191ebd66__visually-hidden" }; 9538 var VisuallyHidden = (0, import_element16.forwardRef)( 9539 function UnforwardedVisuallyHidden({ render, ...restProps }, ref) { 9540 const element = useRender({ 9541 render, 9542 ref, 9543 props: mergeProps( 9544 { className: style_default6["visually-hidden"] }, 9545 restProps, 9546 { 9547 // @ts-expect-error Arbitrary data-* attributes aren't indexable on the typed div props. Kept hardcoded so consumers can't change or remove it. 9548 "data-visually-hidden": "" 9549 } 9550 ) 9551 }); 9552 return element; 9553 } 9554 ); 9555 9556 // packages/ui/build-module/utils/keyboard-shortcut.mjs 9557 var import_jsx_runtime22 = __toESM(require_jsx_runtime(), 1); 9558 function useKeyboardShortcutProps({ 9559 "aria-describedby": ariaDescribedBy, 9560 "aria-keyshortcuts": ariaKeyShortcuts, 9561 shortcut 9562 }) { 9563 const generatedDescriptionId = (0, import_element17.useId)(); 9564 const descriptionId = shortcut ? generatedDescriptionId : void 0; 9565 const describedBy = [ariaDescribedBy, descriptionId].filter(Boolean).join(" "); 9566 return { 9567 descriptionId, 9568 targetProps: { 9569 "aria-describedby": describedBy || void 0, 9570 "aria-keyshortcuts": shortcut?.ariaKeyShortcut ?? ariaKeyShortcuts 9571 } 9572 }; 9573 } 9574 var KeyboardShortcutDescription = (0, import_element17.forwardRef)(function UnforwardedKeyboardShortcutDescription({ descriptionId, shortcut }, ref) { 9575 return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)( 9576 VisuallyHidden, 9577 { 9578 id: descriptionId, 9579 "aria-hidden": "true", 9580 render: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { ref }), 9581 children: (0, import_i18n2.sprintf)( 9582 /* translators: %s: keyboard shortcut. */ 9583 (0, import_i18n2.__)("Keyboard shortcut: %s"), 9584 shortcut.label ?? shortcut.ariaKeyShortcut 9585 ) 9586 } 9587 ); 9588 }); 9589 var KeyboardShortcutDisplay = (0, import_element17.forwardRef)(function UnforwardedKeyboardShortcutDisplay({ className, shortcut }, ref) { 9590 return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { ref, "aria-hidden": "true", className, dir: "ltr", children: shortcut.displayShortcut }); 9591 }); 9592 9593 // packages/ui/build-module/utils/render-slot-with-children.mjs 9594 var import_element18 = __toESM(require_element(), 1); 9595 function renderSlotWithChildren(slot, defaultSlot, children) { 9596 return (0, import_element18.cloneElement)( 9597 slot ?? defaultSlot, 9598 { children } 9599 ); 9600 } 9601 9602 // packages/ui/build-module/utils/wp-compat-overlay-slot.mjs 9603 var STYLE_HASH_ATTRIBUTE7 = "data-wp-hash"; 9604 function getRuntime7() { 9605 const globalScope = globalThis; 9606 if (globalScope.__wpStyleRuntime) { 9607 return globalScope.__wpStyleRuntime; 9608 } 9609 globalScope.__wpStyleRuntime = { 9610 documents: /* @__PURE__ */ new Map(), 9611 styles: /* @__PURE__ */ new Map(), 9612 injectedStyles: /* @__PURE__ */ new WeakMap() 9613 }; 9614 if (typeof document !== "undefined") { 9615 registerDocument7(document); 9616 } 9617 return globalScope.__wpStyleRuntime; 9618 } 9619 function documentContainsStyleHash7(targetDocument, hash) { 9620 if (!targetDocument.head) { 9621 return false; 9622 } 9623 for (const style of targetDocument.head.querySelectorAll( 9624 `style[$STYLE_HASH_ATTRIBUTE7}]` 9625 )) { 9626 if (style.getAttribute(STYLE_HASH_ATTRIBUTE7) === hash) { 9627 return true; 9628 } 9629 } 9630 return false; 9631 } 9632 function injectStyle7(targetDocument, hash, css) { 9633 if (!targetDocument.head) { 9634 return; 9635 } 9636 const runtime = getRuntime7(); 9637 let injectedStyles = runtime.injectedStyles.get(targetDocument); 9638 if (!injectedStyles) { 9639 injectedStyles = /* @__PURE__ */ new Set(); 9640 runtime.injectedStyles.set(targetDocument, injectedStyles); 9641 } 9642 if (injectedStyles.has(hash)) { 9643 return; 9644 } 9645 if (documentContainsStyleHash7(targetDocument, hash)) { 9646 injectedStyles.add(hash); 9647 return; 9648 } 9649 const style = targetDocument.createElement("style"); 9650 style.setAttribute(STYLE_HASH_ATTRIBUTE7, hash); 9651 style.appendChild(targetDocument.createTextNode(css)); 9652 targetDocument.head.appendChild(style); 9653 injectedStyles.add(hash); 9654 } 9655 function registerDocument7(targetDocument) { 9656 const runtime = getRuntime7(); 9657 runtime.documents.set( 9658 targetDocument, 9659 (runtime.documents.get(targetDocument) ?? 0) + 1 9660 ); 9661 for (const [hash, css] of runtime.styles) { 9662 injectStyle7(targetDocument, hash, css); 9663 } 9664 return () => { 9665 const count = runtime.documents.get(targetDocument); 9666 if (count === void 0) { 9667 return; 9668 } 9669 if (count <= 1) { 9670 runtime.documents.delete(targetDocument); 9671 return; 9672 } 9673 runtime.documents.set(targetDocument, count - 1); 9674 }; 9675 } 9676 function registerStyle7(hash, css) { 9677 const runtime = getRuntime7(); 9678 runtime.styles.set(hash, css); 9679 for (const targetDocument of runtime.documents.keys()) { 9680 injectStyle7(targetDocument, hash, css); 9681 } 9682 } 9683 if (typeof process === "undefined" || true) { 9684 registerStyle7("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}}}"); 9685 } 9686 var wp_compat_overlay_slot_default = { "slot": "_11fc52b637ff8a7e__slot" }; 9687 var WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE = "data-wp-compat-overlay-slot"; 9688 function resolveOwnerDocument() { 9689 return typeof document === "undefined" ? null : document; 9690 } 9691 function isInWordPressEnvironment() { 9692 let topWp; 9693 try { 9694 topWp = window.top?.wp; 9695 } catch { 9696 } 9697 const wp = topWp ?? window.wp; 9698 return typeof wp?.components === "object" && wp.components !== null; 9699 } 9700 var cachedSlot = null; 9701 function ensureSlotIsAccessible(element) { 9702 element.setAttribute("aria-hidden", "false"); 9703 return element; 9704 } 9705 function createSlot(ownerDocument2) { 9706 const element = ownerDocument2.createElement("div"); 9707 element.setAttribute(WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE, ""); 9708 if (wp_compat_overlay_slot_default.slot) { 9709 element.classList.add(wp_compat_overlay_slot_default.slot); 9710 } 9711 ownerDocument2.body.appendChild(element); 9712 return element; 9713 } 9714 function getWpCompatOverlaySlot() { 9715 if (typeof window === "undefined") { 9716 return void 0; 9717 } 9718 if (!isInWordPressEnvironment() && window.__wpUiCompatOverlaySlotEnabled !== true) { 9719 return void 0; 9720 } 9721 const ownerDocument2 = resolveOwnerDocument(); 9722 if (!ownerDocument2 || !ownerDocument2.body) { 9723 return void 0; 9724 } 9725 if (cachedSlot && cachedSlot.ownerDocument === ownerDocument2 && cachedSlot.isConnected) { 9726 return ensureSlotIsAccessible(cachedSlot); 9727 } 9728 const existing = ownerDocument2.querySelector( 9729 `[$WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE}]` 9730 ); 9731 if (existing instanceof HTMLDivElement) { 9732 cachedSlot = ensureSlotIsAccessible(existing); 9733 return cachedSlot; 9734 } 9735 if (cachedSlot?.isConnected) { 9736 cachedSlot.remove(); 9737 } 9738 cachedSlot = ensureSlotIsAccessible(createSlot(ownerDocument2)); 9739 return cachedSlot; 9740 } 9741 9742 // packages/ui/build-module/utils/direction-provider.mjs 9743 var import_i18n3 = __toESM(require_i18n(), 1); 9744 var import_jsx_runtime23 = __toESM(require_jsx_runtime(), 1); 9745 function DirectionProvider3({ children }) { 9746 return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(DirectionProvider, { direction: (0, import_i18n3.isRTL)() ? "rtl" : "ltr", children }); 9747 } 9748 9749 // packages/ui/build-module/tooltip/popup.mjs 9750 var import_element21 = __toESM(require_element(), 1); 9751 9752 // packages/ui/build-module/tooltip/portal.mjs 9753 var import_element19 = __toESM(require_element(), 1); 9754 var import_jsx_runtime24 = __toESM(require_jsx_runtime(), 1); 9755 var Portal = (0, import_element19.forwardRef)( 9756 function TooltipPortal3({ container, ...restProps }, ref) { 9757 return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)( 9758 index_parts_exports.Portal, 9759 { 9760 container: container === void 0 ? getWpCompatOverlaySlot() : container, 9761 ...restProps, 9762 ref 9763 } 9764 ); 9765 } 9766 ); 9767 9768 // packages/ui/build-module/tooltip/positioner.mjs 9769 var import_element20 = __toESM(require_element(), 1); 9770 var import_jsx_runtime25 = __toESM(require_jsx_runtime(), 1); 9771 var STYLE_HASH_ATTRIBUTE8 = "data-wp-hash"; 9772 function getRuntime8() { 9773 const globalScope = globalThis; 9774 if (globalScope.__wpStyleRuntime) { 9775 return globalScope.__wpStyleRuntime; 9776 } 9777 globalScope.__wpStyleRuntime = { 9778 documents: /* @__PURE__ */ new Map(), 9779 styles: /* @__PURE__ */ new Map(), 9780 injectedStyles: /* @__PURE__ */ new WeakMap() 9781 }; 9782 if (typeof document !== "undefined") { 9783 registerDocument8(document); 9784 } 9785 return globalScope.__wpStyleRuntime; 9786 } 9787 function documentContainsStyleHash8(targetDocument, hash) { 9788 if (!targetDocument.head) { 9789 return false; 9790 } 9791 for (const style of targetDocument.head.querySelectorAll( 9792 `style[$STYLE_HASH_ATTRIBUTE8}]` 9793 )) { 9794 if (style.getAttribute(STYLE_HASH_ATTRIBUTE8) === hash) { 9795 return true; 9796 } 9797 } 9798 return false; 9799 } 9800 function injectStyle8(targetDocument, hash, css) { 9801 if (!targetDocument.head) { 9802 return; 9803 } 9804 const runtime = getRuntime8(); 9805 let injectedStyles = runtime.injectedStyles.get(targetDocument); 9806 if (!injectedStyles) { 9807 injectedStyles = /* @__PURE__ */ new Set(); 9808 runtime.injectedStyles.set(targetDocument, injectedStyles); 9809 } 9810 if (injectedStyles.has(hash)) { 9811 return; 9812 } 9813 if (documentContainsStyleHash8(targetDocument, hash)) { 9814 injectedStyles.add(hash); 9815 return; 9816 } 9817 const style = targetDocument.createElement("style"); 9818 style.setAttribute(STYLE_HASH_ATTRIBUTE8, hash); 9819 style.appendChild(targetDocument.createTextNode(css)); 9820 targetDocument.head.appendChild(style); 9821 injectedStyles.add(hash); 9822 } 9823 function registerDocument8(targetDocument) { 9824 const runtime = getRuntime8(); 9825 runtime.documents.set( 9826 targetDocument, 9827 (runtime.documents.get(targetDocument) ?? 0) + 1 9828 ); 9829 for (const [hash, css] of runtime.styles) { 9830 injectStyle8(targetDocument, hash, css); 9831 } 9832 return () => { 9833 const count = runtime.documents.get(targetDocument); 9834 if (count === void 0) { 9835 return; 9836 } 9837 if (count <= 1) { 9838 runtime.documents.delete(targetDocument); 9839 return; 9840 } 9841 runtime.documents.set(targetDocument, count - 1); 9842 }; 9843 } 9844 function registerStyle8(hash, css) { 9845 const runtime = getRuntime8(); 9846 runtime.styles.set(hash, css); 9847 for (const targetDocument of runtime.documents.keys()) { 9848 injectStyle8(targetDocument, hash, css); 9849 } 9850 } 9851 if (typeof process === "undefined" || true) { 9852 registerStyle8("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 9853 } 9854 var resets_default2 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; 9855 if (typeof process === "undefined" || true) { 9856 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}}}}'); 9857 } 9858 var style_default7 = { "positioner": "_480b748dd3510e64__positioner", "popup": "_50096b232db7709d__popup" }; 9859 var Positioner = (0, import_element20.forwardRef)( 9860 function TooltipPositioner3({ align = "center", className, side = "top", sideOffset = 4, ...props }, ref) { 9861 return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)( 9862 index_parts_exports.Positioner, 9863 { 9864 ref, 9865 align, 9866 side, 9867 sideOffset, 9868 ...props, 9869 className: clsx_default( 9870 resets_default2["box-sizing"], 9871 style_default7.positioner, 9872 className 9873 ) 9874 } 9875 ); 9876 } 9877 ); 9878 9879 // packages/ui/build-module/utils/theme-provider.mjs 9880 var theme = __toESM(require_theme(), 1); 9881 9882 // packages/ui/build-module/lock-unlock.mjs 9883 var import_private_apis = __toESM(require_private_apis(), 1); 9884 var { lock, unlock } = (0, import_private_apis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)( 9885 "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.", 9886 "@wordpress/ui" 9887 ); 9888 9889 // packages/ui/build-module/utils/theme-provider.mjs 9890 function getThemeProvider() { 9891 const themePackage = theme; 9892 if (themePackage.ThemeProvider) { 9893 return themePackage.ThemeProvider; 9894 } 9895 if (!themePackage.privateApis) { 9896 throw new Error( 9897 "@wordpress/ui: @wordpress/theme must expose `ThemeProvider` or `privateApis.ThemeProvider`." 9898 ); 9899 } 9900 return unlock( 9901 themePackage.privateApis 9902 ).ThemeProvider; 9903 } 9904 var ThemeProvider = getThemeProvider(); 9905 9906 // packages/ui/build-module/tooltip/popup.mjs 9907 var import_jsx_runtime26 = __toESM(require_jsx_runtime(), 1); 9908 var STYLE_HASH_ATTRIBUTE9 = "data-wp-hash"; 9909 function getRuntime9() { 9910 const globalScope = globalThis; 9911 if (globalScope.__wpStyleRuntime) { 9912 return globalScope.__wpStyleRuntime; 9913 } 9914 globalScope.__wpStyleRuntime = { 9915 documents: /* @__PURE__ */ new Map(), 9916 styles: /* @__PURE__ */ new Map(), 9917 injectedStyles: /* @__PURE__ */ new WeakMap() 9918 }; 9919 if (typeof document !== "undefined") { 9920 registerDocument9(document); 9921 } 9922 return globalScope.__wpStyleRuntime; 9923 } 9924 function documentContainsStyleHash9(targetDocument, hash) { 9925 if (!targetDocument.head) { 9926 return false; 9927 } 9928 for (const style of targetDocument.head.querySelectorAll( 9929 `style[$STYLE_HASH_ATTRIBUTE9}]` 9930 )) { 9931 if (style.getAttribute(STYLE_HASH_ATTRIBUTE9) === hash) { 9932 return true; 9933 } 9934 } 9935 return false; 9936 } 9937 function injectStyle9(targetDocument, hash, css) { 9938 if (!targetDocument.head) { 9939 return; 9940 } 9941 const runtime = getRuntime9(); 9942 let injectedStyles = runtime.injectedStyles.get(targetDocument); 9943 if (!injectedStyles) { 9944 injectedStyles = /* @__PURE__ */ new Set(); 9945 runtime.injectedStyles.set(targetDocument, injectedStyles); 9946 } 9947 if (injectedStyles.has(hash)) { 9948 return; 9949 } 9950 if (documentContainsStyleHash9(targetDocument, hash)) { 9951 injectedStyles.add(hash); 9952 return; 9953 } 9954 const style = targetDocument.createElement("style"); 9955 style.setAttribute(STYLE_HASH_ATTRIBUTE9, hash); 9956 style.appendChild(targetDocument.createTextNode(css)); 9957 targetDocument.head.appendChild(style); 9958 injectedStyles.add(hash); 9959 } 9960 function registerDocument9(targetDocument) { 9961 const runtime = getRuntime9(); 9962 runtime.documents.set( 9963 targetDocument, 9964 (runtime.documents.get(targetDocument) ?? 0) + 1 9965 ); 9966 for (const [hash, css] of runtime.styles) { 9967 injectStyle9(targetDocument, hash, css); 9968 } 9969 return () => { 9970 const count = runtime.documents.get(targetDocument); 9971 if (count === void 0) { 9972 return; 9973 } 9974 if (count <= 1) { 9975 runtime.documents.delete(targetDocument); 9976 return; 9977 } 9978 runtime.documents.set(targetDocument, count - 1); 9979 }; 9980 } 9981 function registerStyle9(hash, css) { 9982 const runtime = getRuntime9(); 9983 runtime.styles.set(hash, css); 9984 for (const targetDocument of runtime.documents.keys()) { 9985 injectStyle9(targetDocument, hash, css); 9986 } 9987 } 9988 if (typeof process === "undefined" || true) { 9989 registerStyle9("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}}}}'); 9990 } 9991 var style_default8 = { "positioner": "_480b748dd3510e64__positioner", "popup": "_50096b232db7709d__popup" }; 9992 var POPUP_COLOR = { background: "#1e1e1e" }; 9993 var Popup = (0, import_element21.forwardRef)(function TooltipPopup3({ portal, positioner, children, className, ...props }, ref) { 9994 const popupContent = /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(ThemeProvider, { color: POPUP_COLOR, children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)( 9995 index_parts_exports.Popup, 9996 { 9997 ref, 9998 className: clsx_default(style_default8.popup, className), 9999 ...props, 10000 children 10001 } 10002 ) }); 10003 const positionedPopup = renderSlotWithChildren( 10004 positioner, 10005 /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Positioner, {}), 10006 popupContent 10007 ); 10008 return renderSlotWithChildren(portal, /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Portal, {}), positionedPopup); 10009 }); 10010 10011 // packages/ui/build-module/tooltip/trigger.mjs 10012 var import_element22 = __toESM(require_element(), 1); 10013 var import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1); 10014 var Trigger = (0, import_element22.forwardRef)( 10015 function TooltipTrigger3(props, ref) { 10016 return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(index_parts_exports.Trigger, { ref, ...props }); 10017 } 10018 ); 10019 10020 // packages/ui/build-module/tooltip/root.mjs 10021 var import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1); 10022 function Root(props) { 10023 return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(DirectionProvider3, { children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(index_parts_exports.Root, { ...props }) }); 10024 } 10025 10026 // packages/ui/build-module/link/link.mjs 10027 var import_element23 = __toESM(require_element(), 1); 10028 var import_i18n4 = __toESM(require_i18n(), 1); 10029 var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1); 10030 var STYLE_HASH_ATTRIBUTE10 = "data-wp-hash"; 10031 function getRuntime10() { 10032 const globalScope = globalThis; 10033 if (globalScope.__wpStyleRuntime) { 10034 return globalScope.__wpStyleRuntime; 10035 } 10036 globalScope.__wpStyleRuntime = { 10037 documents: /* @__PURE__ */ new Map(), 10038 styles: /* @__PURE__ */ new Map(), 10039 injectedStyles: /* @__PURE__ */ new WeakMap() 10040 }; 10041 if (typeof document !== "undefined") { 10042 registerDocument10(document); 10043 } 10044 return globalScope.__wpStyleRuntime; 10045 } 10046 function documentContainsStyleHash10(targetDocument, hash) { 10047 if (!targetDocument.head) { 10048 return false; 10049 } 10050 for (const style of targetDocument.head.querySelectorAll( 10051 `style[$STYLE_HASH_ATTRIBUTE10}]` 10052 )) { 10053 if (style.getAttribute(STYLE_HASH_ATTRIBUTE10) === hash) { 10054 return true; 10055 } 10056 } 10057 return false; 10058 } 10059 function injectStyle10(targetDocument, hash, css) { 10060 if (!targetDocument.head) { 10061 return; 10062 } 10063 const runtime = getRuntime10(); 10064 let injectedStyles = runtime.injectedStyles.get(targetDocument); 10065 if (!injectedStyles) { 10066 injectedStyles = /* @__PURE__ */ new Set(); 10067 runtime.injectedStyles.set(targetDocument, injectedStyles); 10068 } 10069 if (injectedStyles.has(hash)) { 10070 return; 10071 } 10072 if (documentContainsStyleHash10(targetDocument, hash)) { 10073 injectedStyles.add(hash); 10074 return; 10075 } 10076 const style = targetDocument.createElement("style"); 10077 style.setAttribute(STYLE_HASH_ATTRIBUTE10, hash); 10078 style.appendChild(targetDocument.createTextNode(css)); 10079 targetDocument.head.appendChild(style); 10080 injectedStyles.add(hash); 10081 } 10082 function registerDocument10(targetDocument) { 10083 const runtime = getRuntime10(); 10084 runtime.documents.set( 10085 targetDocument, 10086 (runtime.documents.get(targetDocument) ?? 0) + 1 10087 ); 10088 for (const [hash, css] of runtime.styles) { 10089 injectStyle10(targetDocument, hash, css); 10090 } 10091 return () => { 10092 const count = runtime.documents.get(targetDocument); 10093 if (count === void 0) { 10094 return; 10095 } 10096 if (count <= 1) { 10097 runtime.documents.delete(targetDocument); 10098 return; 10099 } 10100 runtime.documents.set(targetDocument, count - 1); 10101 }; 10102 } 10103 function registerStyle10(hash, css) { 10104 const runtime = getRuntime10(); 10105 runtime.styles.set(hash, css); 10106 for (const targetDocument of runtime.documents.keys()) { 10107 injectStyle10(targetDocument, hash, css); 10108 } 10109 } 10110 if (typeof process === "undefined" || true) { 10111 registerStyle10("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 10112 } 10113 var resets_default3 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; 10114 if (typeof process === "undefined" || true) { 10115 registerStyle10("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))}}}"); 10116 } 10117 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" }; 10118 if (typeof process === "undefined" || true) { 10119 registerStyle10("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"}}}'); 10120 } 10121 var style_default9 = { "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" }; 10122 if (typeof process === "undefined" || true) { 10123 registerStyle10("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)}"); 10124 } 10125 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" }; 10126 var Link = (0, import_element23.forwardRef)( 10127 function UnforwardedLink({ 10128 children, 10129 variant = "default", 10130 tone = "brand", 10131 openInNewTab = false, 10132 target, 10133 render, 10134 className, 10135 ...props 10136 }, ref) { 10137 const shouldShowNewTabIndicator = openInNewTab || /^_blank$/i.test(target ?? ""); 10138 const element = useRender({ 10139 render, 10140 defaultTagName: "a", 10141 ref, 10142 props: mergeProps(props, { 10143 className: clsx_default( 10144 global_css_defense_default3.a, 10145 resets_default3["box-sizing"], 10146 focus_module_default2["outset-ring--focus-except-active"], 10147 variant !== "unstyled" && style_default9.link, 10148 variant !== "unstyled" && shouldShowNewTabIndicator && style_default9["link-with-icon"], 10149 variant !== "unstyled" && style_default9[`is-$tone}`], 10150 variant === "unstyled" && style_default9["is-unstyled"], 10151 className 10152 ), 10153 target: target ?? (openInNewTab ? "_blank" : void 0), 10154 children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_jsx_runtime29.Fragment, { children: [ 10155 shouldShowNewTabIndicator && variant !== "unstyled" ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: style_default9["link-contents"], children }) : children, 10156 shouldShowNewTabIndicator && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)( 10157 "span", 10158 { 10159 className: style_default9["link-icon"], 10160 role: "img", 10161 "aria-label": ( 10162 /* translators: accessibility text appended to link text */ 10163 (0, import_i18n4.__)("(opens in a new tab)") 10164 ) 10165 } 10166 ) 10167 ] }) 10168 }) 10169 }); 10170 return element; 10171 } 10172 ); 10173 10174 // packages/ui/build-module/icon-button/icon-button.mjs 10175 var import_element24 = __toESM(require_element(), 1); 10176 var import_jsx_runtime30 = __toESM(require_jsx_runtime(), 1); 10177 var STYLE_HASH_ATTRIBUTE11 = "data-wp-hash"; 10178 function getRuntime11() { 10179 const globalScope = globalThis; 10180 if (globalScope.__wpStyleRuntime) { 10181 return globalScope.__wpStyleRuntime; 10182 } 10183 globalScope.__wpStyleRuntime = { 10184 documents: /* @__PURE__ */ new Map(), 10185 styles: /* @__PURE__ */ new Map(), 10186 injectedStyles: /* @__PURE__ */ new WeakMap() 10187 }; 10188 if (typeof document !== "undefined") { 10189 registerDocument11(document); 10190 } 10191 return globalScope.__wpStyleRuntime; 10192 } 10193 function documentContainsStyleHash11(targetDocument, hash) { 10194 if (!targetDocument.head) { 10195 return false; 10196 } 10197 for (const style of targetDocument.head.querySelectorAll( 10198 `style[$STYLE_HASH_ATTRIBUTE11}]` 10199 )) { 10200 if (style.getAttribute(STYLE_HASH_ATTRIBUTE11) === hash) { 10201 return true; 10202 } 10203 } 10204 return false; 10205 } 10206 function injectStyle11(targetDocument, hash, css) { 10207 if (!targetDocument.head) { 10208 return; 10209 } 10210 const runtime = getRuntime11(); 10211 let injectedStyles = runtime.injectedStyles.get(targetDocument); 10212 if (!injectedStyles) { 10213 injectedStyles = /* @__PURE__ */ new Set(); 10214 runtime.injectedStyles.set(targetDocument, injectedStyles); 10215 } 10216 if (injectedStyles.has(hash)) { 10217 return; 10218 } 10219 if (documentContainsStyleHash11(targetDocument, hash)) { 10220 injectedStyles.add(hash); 10221 return; 10222 } 10223 const style = targetDocument.createElement("style"); 10224 style.setAttribute(STYLE_HASH_ATTRIBUTE11, hash); 10225 style.appendChild(targetDocument.createTextNode(css)); 10226 targetDocument.head.appendChild(style); 10227 injectedStyles.add(hash); 10228 } 10229 function registerDocument11(targetDocument) { 10230 const runtime = getRuntime11(); 10231 runtime.documents.set( 10232 targetDocument, 10233 (runtime.documents.get(targetDocument) ?? 0) + 1 10234 ); 10235 for (const [hash, css] of runtime.styles) { 10236 injectStyle11(targetDocument, hash, css); 10237 } 10238 return () => { 10239 const count = runtime.documents.get(targetDocument); 10240 if (count === void 0) { 10241 return; 10242 } 10243 if (count <= 1) { 10244 runtime.documents.delete(targetDocument); 10245 return; 10246 } 10247 runtime.documents.set(targetDocument, count - 1); 10248 }; 10249 } 10250 function registerStyle11(hash, css) { 10251 const runtime = getRuntime11(); 10252 runtime.styles.set(hash, css); 10253 for (const targetDocument of runtime.documents.keys()) { 10254 injectStyle11(targetDocument, hash, css); 10255 } 10256 } 10257 if (typeof process === "undefined" || true) { 10258 registerStyle11("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}}}"); 10259 } 10260 var style_default10 = { "icon-button": "_28cfdc260e755391__icon-button", "icon": "f1c70d719989a85a__icon" }; 10261 var IconButton = (0, import_element24.forwardRef)( 10262 function UnforwardedIconButton({ 10263 label, 10264 className, 10265 // Prevent accidental forwarding of `children` 10266 children: _children, 10267 disabled: disabled2, 10268 focusableWhenDisabled = true, 10269 icon, 10270 size: size4, 10271 shortcut, 10272 positioner, 10273 "aria-describedby": ariaDescribedBy, 10274 "aria-keyshortcuts": ariaKeyShortcuts, 10275 ...restProps 10276 }, ref) { 10277 const classes = clsx_default(style_default10["icon-button"], className); 10278 const { descriptionId, targetProps } = useKeyboardShortcutProps({ 10279 "aria-describedby": ariaDescribedBy, 10280 "aria-keyshortcuts": ariaKeyShortcuts, 10281 shortcut 10282 }); 10283 return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(Root, { children: [ 10284 /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)( 10285 Trigger, 10286 { 10287 ref, 10288 ...targetProps, 10289 disabled: disabled2 && !focusableWhenDisabled, 10290 render: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)( 10291 Button4, 10292 { 10293 ...restProps, 10294 size: size4, 10295 "aria-label": label, 10296 disabled: disabled2, 10297 focusableWhenDisabled 10298 } 10299 ), 10300 className: classes, 10301 children: [ 10302 /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Icon, { icon, size: 24, className: style_default10.icon }), 10303 shortcut && descriptionId && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)( 10304 KeyboardShortcutDescription, 10305 { 10306 descriptionId, 10307 shortcut 10308 } 10309 ) 10310 ] 10311 } 10312 ), 10313 /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(Popup, { positioner, children: [ 10314 label, 10315 shortcut && /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_jsx_runtime30.Fragment, { children: [ 10316 " ", 10317 /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(KeyboardShortcutDisplay, { shortcut }) 10318 ] }) 10319 ] }) 10320 ] }); 10321 } 10322 ); 10323 10324 // packages/ui/build-module/stack/stack.mjs 10325 var import_element25 = __toESM(require_element(), 1); 10326 var STYLE_HASH_ATTRIBUTE12 = "data-wp-hash"; 10327 function getRuntime12() { 10328 const globalScope = globalThis; 10329 if (globalScope.__wpStyleRuntime) { 10330 return globalScope.__wpStyleRuntime; 10331 } 10332 globalScope.__wpStyleRuntime = { 10333 documents: /* @__PURE__ */ new Map(), 10334 styles: /* @__PURE__ */ new Map(), 10335 injectedStyles: /* @__PURE__ */ new WeakMap() 10336 }; 10337 if (typeof document !== "undefined") { 10338 registerDocument12(document); 10339 } 10340 return globalScope.__wpStyleRuntime; 10341 } 10342 function documentContainsStyleHash12(targetDocument, hash) { 10343 if (!targetDocument.head) { 10344 return false; 10345 } 10346 for (const style of targetDocument.head.querySelectorAll( 10347 `style[$STYLE_HASH_ATTRIBUTE12}]` 10348 )) { 10349 if (style.getAttribute(STYLE_HASH_ATTRIBUTE12) === hash) { 10350 return true; 10351 } 10352 } 10353 return false; 10354 } 10355 function injectStyle12(targetDocument, hash, css) { 10356 if (!targetDocument.head) { 10357 return; 10358 } 10359 const runtime = getRuntime12(); 10360 let injectedStyles = runtime.injectedStyles.get(targetDocument); 10361 if (!injectedStyles) { 10362 injectedStyles = /* @__PURE__ */ new Set(); 10363 runtime.injectedStyles.set(targetDocument, injectedStyles); 10364 } 10365 if (injectedStyles.has(hash)) { 10366 return; 10367 } 10368 if (documentContainsStyleHash12(targetDocument, hash)) { 10369 injectedStyles.add(hash); 10370 return; 10371 } 10372 const style = targetDocument.createElement("style"); 10373 style.setAttribute(STYLE_HASH_ATTRIBUTE12, hash); 10374 style.appendChild(targetDocument.createTextNode(css)); 10375 targetDocument.head.appendChild(style); 10376 injectedStyles.add(hash); 10377 } 10378 function registerDocument12(targetDocument) { 10379 const runtime = getRuntime12(); 10380 runtime.documents.set( 10381 targetDocument, 10382 (runtime.documents.get(targetDocument) ?? 0) + 1 10383 ); 10384 for (const [hash, css] of runtime.styles) { 10385 injectStyle12(targetDocument, hash, css); 10386 } 10387 return () => { 10388 const count = runtime.documents.get(targetDocument); 10389 if (count === void 0) { 10390 return; 10391 } 10392 if (count <= 1) { 10393 runtime.documents.delete(targetDocument); 10394 return; 10395 } 10396 runtime.documents.set(targetDocument, count - 1); 10397 }; 10398 } 10399 function registerStyle12(hash, css) { 10400 const runtime = getRuntime12(); 10401 runtime.styles.set(hash, css); 10402 for (const targetDocument of runtime.documents.keys()) { 10403 injectStyle12(targetDocument, hash, css); 10404 } 10405 } 10406 if (typeof process === "undefined" || true) { 10407 registerStyle12("32aba35fe1", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._19ce0419607e1896__stack{display:flex}}}"); 10408 } 10409 var style_default11 = { "stack": "_19ce0419607e1896__stack" }; 10410 var gapTokens = { 10411 xs: "var(--wpds-dimension-gap-xs, 4px)", 10412 sm: "var(--wpds-dimension-gap-sm, 8px)", 10413 md: "var(--wpds-dimension-gap-md, 12px)", 10414 lg: "var(--wpds-dimension-gap-lg, 16px)", 10415 xl: "var(--wpds-dimension-gap-xl, 24px)", 10416 "2xl": "var(--wpds-dimension-gap-2xl, 32px)", 10417 "3xl": "var(--wpds-dimension-gap-3xl, 40px)" 10418 }; 10419 var Stack = (0, import_element25.forwardRef)( 10420 function UnforwardedStack({ direction, gap, align, justify, wrap, render, ...props }, ref) { 10421 const style = { 10422 gap: gap && gapTokens[gap], 10423 alignItems: align, 10424 justifyContent: justify, 10425 flexDirection: direction, 10426 flexWrap: wrap 10427 }; 10428 const element = useRender({ 10429 render, 10430 ref, 10431 props: mergeProps(props, { 10432 style, 10433 className: style_default11.stack 10434 }) 10435 }); 10436 return element; 10437 } 10438 ); 10439 10440 // packages/ui/build-module/notice/index.mjs 10441 var notice_exports = {}; 10442 __export(notice_exports, { 10443 ActionButton: () => ActionButton, 10444 ActionLink: () => ActionLink, 10445 Actions: () => Actions, 10446 CloseIconButton: () => CloseIconButton, 10447 Description: () => Description, 10448 Root: () => Root2, 10449 Title: () => Title 10450 }); 10451 10452 // packages/ui/build-module/notice/root.mjs 10453 var import_element26 = __toESM(require_element(), 1); 10454 var import_jsx_runtime31 = __toESM(require_jsx_runtime(), 1); 10455 var STYLE_HASH_ATTRIBUTE13 = "data-wp-hash"; 10456 function getRuntime13() { 10457 const globalScope = globalThis; 10458 if (globalScope.__wpStyleRuntime) { 10459 return globalScope.__wpStyleRuntime; 10460 } 10461 globalScope.__wpStyleRuntime = { 10462 documents: /* @__PURE__ */ new Map(), 10463 styles: /* @__PURE__ */ new Map(), 10464 injectedStyles: /* @__PURE__ */ new WeakMap() 10465 }; 10466 if (typeof document !== "undefined") { 10467 registerDocument13(document); 10468 } 10469 return globalScope.__wpStyleRuntime; 10470 } 10471 function documentContainsStyleHash13(targetDocument, hash) { 10472 if (!targetDocument.head) { 10473 return false; 10474 } 10475 for (const style of targetDocument.head.querySelectorAll( 10476 `style[$STYLE_HASH_ATTRIBUTE13}]` 10477 )) { 10478 if (style.getAttribute(STYLE_HASH_ATTRIBUTE13) === hash) { 10479 return true; 10480 } 10481 } 10482 return false; 10483 } 10484 function injectStyle13(targetDocument, hash, css) { 10485 if (!targetDocument.head) { 10486 return; 10487 } 10488 const runtime = getRuntime13(); 10489 let injectedStyles = runtime.injectedStyles.get(targetDocument); 10490 if (!injectedStyles) { 10491 injectedStyles = /* @__PURE__ */ new Set(); 10492 runtime.injectedStyles.set(targetDocument, injectedStyles); 10493 } 10494 if (injectedStyles.has(hash)) { 10495 return; 10496 } 10497 if (documentContainsStyleHash13(targetDocument, hash)) { 10498 injectedStyles.add(hash); 10499 return; 10500 } 10501 const style = targetDocument.createElement("style"); 10502 style.setAttribute(STYLE_HASH_ATTRIBUTE13, hash); 10503 style.appendChild(targetDocument.createTextNode(css)); 10504 targetDocument.head.appendChild(style); 10505 injectedStyles.add(hash); 10506 } 10507 function registerDocument13(targetDocument) { 10508 const runtime = getRuntime13(); 10509 runtime.documents.set( 10510 targetDocument, 10511 (runtime.documents.get(targetDocument) ?? 0) + 1 10512 ); 10513 for (const [hash, css] of runtime.styles) { 10514 injectStyle13(targetDocument, hash, css); 10515 } 10516 return () => { 10517 const count = runtime.documents.get(targetDocument); 10518 if (count === void 0) { 10519 return; 10520 } 10521 if (count <= 1) { 10522 runtime.documents.delete(targetDocument); 10523 return; 10524 } 10525 runtime.documents.set(targetDocument, count - 1); 10526 }; 10527 } 10528 function registerStyle13(hash, css) { 10529 const runtime = getRuntime13(); 10530 runtime.styles.set(hash, css); 10531 for (const targetDocument of runtime.documents.keys()) { 10532 injectStyle13(targetDocument, hash, css); 10533 } 10534 } 10535 if (typeof process === "undefined" || true) { 10536 registerStyle13("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 10537 } 10538 var resets_default4 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; 10539 if (typeof process === "undefined" || true) { 10540 registerStyle13("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}}}}"); 10541 } 10542 var style_default12 = { "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" }; 10543 var icons = { 10544 neutral: null, 10545 info: info_default, 10546 warning: caution_default, 10547 success: published_default, 10548 error: error_default 10549 }; 10550 var Root2 = (0, import_element26.forwardRef)(function Notice({ intent = "neutral", children, icon, render, ...restProps }, ref) { 10551 const iconElement = icon === null ? null : icon ?? icons[intent]; 10552 const mergedClassName = clsx_default( 10553 style_default12.notice, 10554 style_default12[`is-$intent}`], 10555 resets_default4["box-sizing"] 10556 ); 10557 const element = useRender({ 10558 defaultTagName: "div", 10559 render, 10560 ref, 10561 props: mergeProps( 10562 { 10563 className: mergedClassName, 10564 children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_jsx_runtime31.Fragment, { children: [ 10565 children, 10566 iconElement && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( 10567 Icon, 10568 { 10569 className: style_default12.icon, 10570 icon: iconElement 10571 } 10572 ) 10573 ] }) 10574 }, 10575 restProps 10576 ) 10577 }); 10578 return element; 10579 }); 10580 10581 // packages/ui/build-module/notice/title.mjs 10582 var import_element27 = __toESM(require_element(), 1); 10583 var import_jsx_runtime32 = __toESM(require_jsx_runtime(), 1); 10584 var STYLE_HASH_ATTRIBUTE14 = "data-wp-hash"; 10585 function getRuntime14() { 10586 const globalScope = globalThis; 10587 if (globalScope.__wpStyleRuntime) { 10588 return globalScope.__wpStyleRuntime; 10589 } 10590 globalScope.__wpStyleRuntime = { 10591 documents: /* @__PURE__ */ new Map(), 10592 styles: /* @__PURE__ */ new Map(), 10593 injectedStyles: /* @__PURE__ */ new WeakMap() 10594 }; 10595 if (typeof document !== "undefined") { 10596 registerDocument14(document); 10597 } 10598 return globalScope.__wpStyleRuntime; 10599 } 10600 function documentContainsStyleHash14(targetDocument, hash) { 10601 if (!targetDocument.head) { 10602 return false; 10603 } 10604 for (const style of targetDocument.head.querySelectorAll( 10605 `style[$STYLE_HASH_ATTRIBUTE14}]` 10606 )) { 10607 if (style.getAttribute(STYLE_HASH_ATTRIBUTE14) === hash) { 10608 return true; 10609 } 10610 } 10611 return false; 10612 } 10613 function injectStyle14(targetDocument, hash, css) { 10614 if (!targetDocument.head) { 10615 return; 10616 } 10617 const runtime = getRuntime14(); 10618 let injectedStyles = runtime.injectedStyles.get(targetDocument); 10619 if (!injectedStyles) { 10620 injectedStyles = /* @__PURE__ */ new Set(); 10621 runtime.injectedStyles.set(targetDocument, injectedStyles); 10622 } 10623 if (injectedStyles.has(hash)) { 10624 return; 10625 } 10626 if (documentContainsStyleHash14(targetDocument, hash)) { 10627 injectedStyles.add(hash); 10628 return; 10629 } 10630 const style = targetDocument.createElement("style"); 10631 style.setAttribute(STYLE_HASH_ATTRIBUTE14, hash); 10632 style.appendChild(targetDocument.createTextNode(css)); 10633 targetDocument.head.appendChild(style); 10634 injectedStyles.add(hash); 10635 } 10636 function registerDocument14(targetDocument) { 10637 const runtime = getRuntime14(); 10638 runtime.documents.set( 10639 targetDocument, 10640 (runtime.documents.get(targetDocument) ?? 0) + 1 10641 ); 10642 for (const [hash, css] of runtime.styles) { 10643 injectStyle14(targetDocument, hash, css); 10644 } 10645 return () => { 10646 const count = runtime.documents.get(targetDocument); 10647 if (count === void 0) { 10648 return; 10649 } 10650 if (count <= 1) { 10651 runtime.documents.delete(targetDocument); 10652 return; 10653 } 10654 runtime.documents.set(targetDocument, count - 1); 10655 }; 10656 } 10657 function registerStyle14(hash, css) { 10658 const runtime = getRuntime14(); 10659 runtime.styles.set(hash, css); 10660 for (const targetDocument of runtime.documents.keys()) { 10661 injectStyle14(targetDocument, hash, css); 10662 } 10663 } 10664 if (typeof process === "undefined" || true) { 10665 registerStyle14("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}}}}"); 10666 } 10667 var style_default13 = { "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" }; 10668 var Title = (0, import_element27.forwardRef)( 10669 function NoticeTitle({ className, ...props }, ref) { 10670 return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)( 10671 Text, 10672 { 10673 ref, 10674 variant: "heading-md", 10675 className: clsx_default(style_default13.title, className), 10676 ...props 10677 } 10678 ); 10679 } 10680 ); 10681 10682 // packages/ui/build-module/notice/description.mjs 10683 var import_element28 = __toESM(require_element(), 1); 10684 var import_jsx_runtime33 = __toESM(require_jsx_runtime(), 1); 10685 var STYLE_HASH_ATTRIBUTE15 = "data-wp-hash"; 10686 function getRuntime15() { 10687 const globalScope = globalThis; 10688 if (globalScope.__wpStyleRuntime) { 10689 return globalScope.__wpStyleRuntime; 10690 } 10691 globalScope.__wpStyleRuntime = { 10692 documents: /* @__PURE__ */ new Map(), 10693 styles: /* @__PURE__ */ new Map(), 10694 injectedStyles: /* @__PURE__ */ new WeakMap() 10695 }; 10696 if (typeof document !== "undefined") { 10697 registerDocument15(document); 10698 } 10699 return globalScope.__wpStyleRuntime; 10700 } 10701 function documentContainsStyleHash15(targetDocument, hash) { 10702 if (!targetDocument.head) { 10703 return false; 10704 } 10705 for (const style of targetDocument.head.querySelectorAll( 10706 `style[$STYLE_HASH_ATTRIBUTE15}]` 10707 )) { 10708 if (style.getAttribute(STYLE_HASH_ATTRIBUTE15) === hash) { 10709 return true; 10710 } 10711 } 10712 return false; 10713 } 10714 function injectStyle15(targetDocument, hash, css) { 10715 if (!targetDocument.head) { 10716 return; 10717 } 10718 const runtime = getRuntime15(); 10719 let injectedStyles = runtime.injectedStyles.get(targetDocument); 10720 if (!injectedStyles) { 10721 injectedStyles = /* @__PURE__ */ new Set(); 10722 runtime.injectedStyles.set(targetDocument, injectedStyles); 10723 } 10724 if (injectedStyles.has(hash)) { 10725 return; 10726 } 10727 if (documentContainsStyleHash15(targetDocument, hash)) { 10728 injectedStyles.add(hash); 10729 return; 10730 } 10731 const style = targetDocument.createElement("style"); 10732 style.setAttribute(STYLE_HASH_ATTRIBUTE15, hash); 10733 style.appendChild(targetDocument.createTextNode(css)); 10734 targetDocument.head.appendChild(style); 10735 injectedStyles.add(hash); 10736 } 10737 function registerDocument15(targetDocument) { 10738 const runtime = getRuntime15(); 10739 runtime.documents.set( 10740 targetDocument, 10741 (runtime.documents.get(targetDocument) ?? 0) + 1 10742 ); 10743 for (const [hash, css] of runtime.styles) { 10744 injectStyle15(targetDocument, hash, css); 10745 } 10746 return () => { 10747 const count = runtime.documents.get(targetDocument); 10748 if (count === void 0) { 10749 return; 10750 } 10751 if (count <= 1) { 10752 runtime.documents.delete(targetDocument); 10753 return; 10754 } 10755 runtime.documents.set(targetDocument, count - 1); 10756 }; 10757 } 10758 function registerStyle15(hash, css) { 10759 const runtime = getRuntime15(); 10760 runtime.styles.set(hash, css); 10761 for (const targetDocument of runtime.documents.keys()) { 10762 injectStyle15(targetDocument, hash, css); 10763 } 10764 } 10765 if (typeof process === "undefined" || true) { 10766 registerStyle15("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}}}}"); 10767 } 10768 var style_default14 = { "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" }; 10769 var Description = (0, import_element28.forwardRef)( 10770 function NoticeDescription({ className, ...props }, ref) { 10771 return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( 10772 Text, 10773 { 10774 ref, 10775 variant: "body-md", 10776 className: clsx_default(style_default14.description, className), 10777 ...props 10778 } 10779 ); 10780 } 10781 ); 10782 10783 // packages/ui/build-module/notice/actions.mjs 10784 var import_element29 = __toESM(require_element(), 1); 10785 var STYLE_HASH_ATTRIBUTE16 = "data-wp-hash"; 10786 function getRuntime16() { 10787 const globalScope = globalThis; 10788 if (globalScope.__wpStyleRuntime) { 10789 return globalScope.__wpStyleRuntime; 10790 } 10791 globalScope.__wpStyleRuntime = { 10792 documents: /* @__PURE__ */ new Map(), 10793 styles: /* @__PURE__ */ new Map(), 10794 injectedStyles: /* @__PURE__ */ new WeakMap() 10795 }; 10796 if (typeof document !== "undefined") { 10797 registerDocument16(document); 10798 } 10799 return globalScope.__wpStyleRuntime; 10800 } 10801 function documentContainsStyleHash16(targetDocument, hash) { 10802 if (!targetDocument.head) { 10803 return false; 10804 } 10805 for (const style of targetDocument.head.querySelectorAll( 10806 `style[$STYLE_HASH_ATTRIBUTE16}]` 10807 )) { 10808 if (style.getAttribute(STYLE_HASH_ATTRIBUTE16) === hash) { 10809 return true; 10810 } 10811 } 10812 return false; 10813 } 10814 function injectStyle16(targetDocument, hash, css) { 10815 if (!targetDocument.head) { 10816 return; 10817 } 10818 const runtime = getRuntime16(); 10819 let injectedStyles = runtime.injectedStyles.get(targetDocument); 10820 if (!injectedStyles) { 10821 injectedStyles = /* @__PURE__ */ new Set(); 10822 runtime.injectedStyles.set(targetDocument, injectedStyles); 10823 } 10824 if (injectedStyles.has(hash)) { 10825 return; 10826 } 10827 if (documentContainsStyleHash16(targetDocument, hash)) { 10828 injectedStyles.add(hash); 10829 return; 10830 } 10831 const style = targetDocument.createElement("style"); 10832 style.setAttribute(STYLE_HASH_ATTRIBUTE16, hash); 10833 style.appendChild(targetDocument.createTextNode(css)); 10834 targetDocument.head.appendChild(style); 10835 injectedStyles.add(hash); 10836 } 10837 function registerDocument16(targetDocument) { 10838 const runtime = getRuntime16(); 10839 runtime.documents.set( 10840 targetDocument, 10841 (runtime.documents.get(targetDocument) ?? 0) + 1 10842 ); 10843 for (const [hash, css] of runtime.styles) { 10844 injectStyle16(targetDocument, hash, css); 10845 } 10846 return () => { 10847 const count = runtime.documents.get(targetDocument); 10848 if (count === void 0) { 10849 return; 10850 } 10851 if (count <= 1) { 10852 runtime.documents.delete(targetDocument); 10853 return; 10854 } 10855 runtime.documents.set(targetDocument, count - 1); 10856 }; 10857 } 10858 function registerStyle16(hash, css) { 10859 const runtime = getRuntime16(); 10860 runtime.styles.set(hash, css); 10861 for (const targetDocument of runtime.documents.keys()) { 10862 injectStyle16(targetDocument, hash, css); 10863 } 10864 } 10865 if (typeof process === "undefined" || true) { 10866 registerStyle16("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}}}}"); 10867 } 10868 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" }; 10869 var Actions = (0, import_element29.forwardRef)( 10870 function NoticeActions({ render, ...props }, ref) { 10871 const element = useRender({ 10872 defaultTagName: "div", 10873 render, 10874 ref, 10875 props: mergeProps( 10876 { 10877 className: style_default15.actions 10878 }, 10879 props 10880 ) 10881 }); 10882 return element; 10883 } 10884 ); 10885 10886 // packages/ui/build-module/notice/close-icon-button.mjs 10887 var import_element30 = __toESM(require_element(), 1); 10888 var import_i18n5 = __toESM(require_i18n(), 1); 10889 var import_jsx_runtime34 = __toESM(require_jsx_runtime(), 1); 10890 var STYLE_HASH_ATTRIBUTE17 = "data-wp-hash"; 10891 function getRuntime17() { 10892 const globalScope = globalThis; 10893 if (globalScope.__wpStyleRuntime) { 10894 return globalScope.__wpStyleRuntime; 10895 } 10896 globalScope.__wpStyleRuntime = { 10897 documents: /* @__PURE__ */ new Map(), 10898 styles: /* @__PURE__ */ new Map(), 10899 injectedStyles: /* @__PURE__ */ new WeakMap() 10900 }; 10901 if (typeof document !== "undefined") { 10902 registerDocument17(document); 10903 } 10904 return globalScope.__wpStyleRuntime; 10905 } 10906 function documentContainsStyleHash17(targetDocument, hash) { 10907 if (!targetDocument.head) { 10908 return false; 10909 } 10910 for (const style of targetDocument.head.querySelectorAll( 10911 `style[$STYLE_HASH_ATTRIBUTE17}]` 10912 )) { 10913 if (style.getAttribute(STYLE_HASH_ATTRIBUTE17) === hash) { 10914 return true; 10915 } 10916 } 10917 return false; 10918 } 10919 function injectStyle17(targetDocument, hash, css) { 10920 if (!targetDocument.head) { 10921 return; 10922 } 10923 const runtime = getRuntime17(); 10924 let injectedStyles = runtime.injectedStyles.get(targetDocument); 10925 if (!injectedStyles) { 10926 injectedStyles = /* @__PURE__ */ new Set(); 10927 runtime.injectedStyles.set(targetDocument, injectedStyles); 10928 } 10929 if (injectedStyles.has(hash)) { 10930 return; 10931 } 10932 if (documentContainsStyleHash17(targetDocument, hash)) { 10933 injectedStyles.add(hash); 10934 return; 10935 } 10936 const style = targetDocument.createElement("style"); 10937 style.setAttribute(STYLE_HASH_ATTRIBUTE17, hash); 10938 style.appendChild(targetDocument.createTextNode(css)); 10939 targetDocument.head.appendChild(style); 10940 injectedStyles.add(hash); 10941 } 10942 function registerDocument17(targetDocument) { 10943 const runtime = getRuntime17(); 10944 runtime.documents.set( 10945 targetDocument, 10946 (runtime.documents.get(targetDocument) ?? 0) + 1 10947 ); 10948 for (const [hash, css] of runtime.styles) { 10949 injectStyle17(targetDocument, hash, css); 10950 } 10951 return () => { 10952 const count = runtime.documents.get(targetDocument); 10953 if (count === void 0) { 10954 return; 10955 } 10956 if (count <= 1) { 10957 runtime.documents.delete(targetDocument); 10958 return; 10959 } 10960 runtime.documents.set(targetDocument, count - 1); 10961 }; 10962 } 10963 function registerStyle17(hash, css) { 10964 const runtime = getRuntime17(); 10965 runtime.styles.set(hash, css); 10966 for (const targetDocument of runtime.documents.keys()) { 10967 injectStyle17(targetDocument, hash, css); 10968 } 10969 } 10970 if (typeof process === "undefined" || true) { 10971 registerStyle17("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}}}}"); 10972 } 10973 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" }; 10974 var CloseIconButton = (0, import_element30.forwardRef)(function NoticeCloseIconButton({ className, icon = close_small_default, label = (0, import_i18n5.__)("Dismiss"), ...props }, ref) { 10975 return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)( 10976 IconButton, 10977 { 10978 ...props, 10979 ref, 10980 className: clsx_default(style_default16["close-icon"], className), 10981 variant: "minimal", 10982 size: "small", 10983 tone: "neutral", 10984 icon, 10985 label 10986 } 10987 ); 10988 }); 10989 10990 // packages/ui/build-module/notice/action-button.mjs 10991 var import_element31 = __toESM(require_element(), 1); 10992 var import_jsx_runtime35 = __toESM(require_jsx_runtime(), 1); 10993 var STYLE_HASH_ATTRIBUTE18 = "data-wp-hash"; 10994 function getRuntime18() { 10995 const globalScope = globalThis; 10996 if (globalScope.__wpStyleRuntime) { 10997 return globalScope.__wpStyleRuntime; 10998 } 10999 globalScope.__wpStyleRuntime = { 11000 documents: /* @__PURE__ */ new Map(), 11001 styles: /* @__PURE__ */ new Map(), 11002 injectedStyles: /* @__PURE__ */ new WeakMap() 11003 }; 11004 if (typeof document !== "undefined") { 11005 registerDocument18(document); 11006 } 11007 return globalScope.__wpStyleRuntime; 11008 } 11009 function documentContainsStyleHash18(targetDocument, hash) { 11010 if (!targetDocument.head) { 11011 return false; 11012 } 11013 for (const style of targetDocument.head.querySelectorAll( 11014 `style[$STYLE_HASH_ATTRIBUTE18}]` 11015 )) { 11016 if (style.getAttribute(STYLE_HASH_ATTRIBUTE18) === hash) { 11017 return true; 11018 } 11019 } 11020 return false; 11021 } 11022 function injectStyle18(targetDocument, hash, css) { 11023 if (!targetDocument.head) { 11024 return; 11025 } 11026 const runtime = getRuntime18(); 11027 let injectedStyles = runtime.injectedStyles.get(targetDocument); 11028 if (!injectedStyles) { 11029 injectedStyles = /* @__PURE__ */ new Set(); 11030 runtime.injectedStyles.set(targetDocument, injectedStyles); 11031 } 11032 if (injectedStyles.has(hash)) { 11033 return; 11034 } 11035 if (documentContainsStyleHash18(targetDocument, hash)) { 11036 injectedStyles.add(hash); 11037 return; 11038 } 11039 const style = targetDocument.createElement("style"); 11040 style.setAttribute(STYLE_HASH_ATTRIBUTE18, hash); 11041 style.appendChild(targetDocument.createTextNode(css)); 11042 targetDocument.head.appendChild(style); 11043 injectedStyles.add(hash); 11044 } 11045 function registerDocument18(targetDocument) { 11046 const runtime = getRuntime18(); 11047 runtime.documents.set( 11048 targetDocument, 11049 (runtime.documents.get(targetDocument) ?? 0) + 1 11050 ); 11051 for (const [hash, css] of runtime.styles) { 11052 injectStyle18(targetDocument, hash, css); 11053 } 11054 return () => { 11055 const count = runtime.documents.get(targetDocument); 11056 if (count === void 0) { 11057 return; 11058 } 11059 if (count <= 1) { 11060 runtime.documents.delete(targetDocument); 11061 return; 11062 } 11063 runtime.documents.set(targetDocument, count - 1); 11064 }; 11065 } 11066 function registerStyle18(hash, css) { 11067 const runtime = getRuntime18(); 11068 runtime.styles.set(hash, css); 11069 for (const targetDocument of runtime.documents.keys()) { 11070 injectStyle18(targetDocument, hash, css); 11071 } 11072 } 11073 if (typeof process === "undefined" || true) { 11074 registerStyle18("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}}}}"); 11075 } 11076 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" }; 11077 var ActionButton = (0, import_element31.forwardRef)( 11078 function NoticeActionButton({ className, loading, loadingAnnouncement, variant, ...props }, ref) { 11079 const loadingProps = loading !== void 0 ? { loading, loadingAnnouncement: loadingAnnouncement ?? "" } : {}; 11080 return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( 11081 Button4, 11082 { 11083 ...props, 11084 ...loadingProps, 11085 ref, 11086 size: "compact", 11087 tone: "neutral", 11088 variant, 11089 className: clsx_default( 11090 style_default17["action-button"], 11091 style_default17[`is-action-button-$variant}`], 11092 className 11093 ) 11094 } 11095 ); 11096 } 11097 ); 11098 11099 // packages/ui/build-module/notice/action-link.mjs 11100 var import_element32 = __toESM(require_element(), 1); 11101 var import_jsx_runtime36 = __toESM(require_jsx_runtime(), 1); 11102 var STYLE_HASH_ATTRIBUTE19 = "data-wp-hash"; 11103 function getRuntime19() { 11104 const globalScope = globalThis; 11105 if (globalScope.__wpStyleRuntime) { 11106 return globalScope.__wpStyleRuntime; 11107 } 11108 globalScope.__wpStyleRuntime = { 11109 documents: /* @__PURE__ */ new Map(), 11110 styles: /* @__PURE__ */ new Map(), 11111 injectedStyles: /* @__PURE__ */ new WeakMap() 11112 }; 11113 if (typeof document !== "undefined") { 11114 registerDocument19(document); 11115 } 11116 return globalScope.__wpStyleRuntime; 11117 } 11118 function documentContainsStyleHash19(targetDocument, hash) { 11119 if (!targetDocument.head) { 11120 return false; 11121 } 11122 for (const style of targetDocument.head.querySelectorAll( 11123 `style[$STYLE_HASH_ATTRIBUTE19}]` 11124 )) { 11125 if (style.getAttribute(STYLE_HASH_ATTRIBUTE19) === hash) { 11126 return true; 11127 } 11128 } 11129 return false; 11130 } 11131 function injectStyle19(targetDocument, hash, css) { 11132 if (!targetDocument.head) { 11133 return; 11134 } 11135 const runtime = getRuntime19(); 11136 let injectedStyles = runtime.injectedStyles.get(targetDocument); 11137 if (!injectedStyles) { 11138 injectedStyles = /* @__PURE__ */ new Set(); 11139 runtime.injectedStyles.set(targetDocument, injectedStyles); 11140 } 11141 if (injectedStyles.has(hash)) { 11142 return; 11143 } 11144 if (documentContainsStyleHash19(targetDocument, hash)) { 11145 injectedStyles.add(hash); 11146 return; 11147 } 11148 const style = targetDocument.createElement("style"); 11149 style.setAttribute(STYLE_HASH_ATTRIBUTE19, hash); 11150 style.appendChild(targetDocument.createTextNode(css)); 11151 targetDocument.head.appendChild(style); 11152 injectedStyles.add(hash); 11153 } 11154 function registerDocument19(targetDocument) { 11155 const runtime = getRuntime19(); 11156 runtime.documents.set( 11157 targetDocument, 11158 (runtime.documents.get(targetDocument) ?? 0) + 1 11159 ); 11160 for (const [hash, css] of runtime.styles) { 11161 injectStyle19(targetDocument, hash, css); 11162 } 11163 return () => { 11164 const count = runtime.documents.get(targetDocument); 11165 if (count === void 0) { 11166 return; 11167 } 11168 if (count <= 1) { 11169 runtime.documents.delete(targetDocument); 11170 return; 11171 } 11172 runtime.documents.set(targetDocument, count - 1); 11173 }; 11174 } 11175 function registerStyle19(hash, css) { 11176 const runtime = getRuntime19(); 11177 runtime.styles.set(hash, css); 11178 for (const targetDocument of runtime.documents.keys()) { 11179 injectStyle19(targetDocument, hash, css); 11180 } 11181 } 11182 if (typeof process === "undefined" || true) { 11183 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}}}}"); 11184 } 11185 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" }; 11186 var ActionLink = (0, import_element32.forwardRef)( 11187 function NoticeActionLink({ className, render, ...props }, ref) { 11188 return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( 11189 Text, 11190 { 11191 ref, 11192 className: clsx_default(style_default18["action-link"], className), 11193 ...props, 11194 variant: "body-md", 11195 render: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Link, { tone: "neutral", variant: "default", render }) 11196 } 11197 ); 11198 } 11199 ); 11200 11201 // packages/admin-ui/build-module/navigable-region/index.mjs 11202 var import_element33 = __toESM(require_element(), 1); 11203 var import_jsx_runtime37 = __toESM(require_jsx_runtime(), 1); 11204 var NavigableRegion = (0, import_element33.forwardRef)( 11205 ({ children, className, ariaLabel, as: Tag = "div", ...props }, ref) => { 11206 return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( 11207 Tag, 11208 { 11209 ref, 11210 className: clsx_default("admin-ui-navigable-region", className), 11211 "aria-label": ariaLabel, 11212 role: "region", 11213 tabIndex: "-1", 11214 ...props, 11215 children 11216 } 11217 ); 11218 } 11219 ); 11220 NavigableRegion.displayName = "NavigableRegion"; 11221 var navigable_region_default = NavigableRegion; 11222 11223 // packages/admin-ui/build-module/navigation/index.mjs 11224 var import_i18n6 = __toESM(require_i18n(), 1); 11225 var import_jsx_runtime38 = __toESM(require_jsx_runtime(), 1); 11226 var STYLE_HASH_ATTRIBUTE20 = "data-wp-hash"; 11227 function getRuntime20() { 11228 const globalScope = globalThis; 11229 if (globalScope.__wpStyleRuntime) { 11230 return globalScope.__wpStyleRuntime; 11231 } 11232 globalScope.__wpStyleRuntime = { 11233 documents: /* @__PURE__ */ new Map(), 11234 styles: /* @__PURE__ */ new Map(), 11235 injectedStyles: /* @__PURE__ */ new WeakMap() 11236 }; 11237 if (typeof document !== "undefined") { 11238 registerDocument20(document); 11239 } 11240 return globalScope.__wpStyleRuntime; 11241 } 11242 function documentContainsStyleHash20(targetDocument, hash) { 11243 if (!targetDocument.head) { 11244 return false; 11245 } 11246 for (const style of targetDocument.head.querySelectorAll( 11247 `style[$STYLE_HASH_ATTRIBUTE20}]` 11248 )) { 11249 if (style.getAttribute(STYLE_HASH_ATTRIBUTE20) === hash) { 11250 return true; 11251 } 11252 } 11253 return false; 11254 } 11255 function injectStyle20(targetDocument, hash, css) { 11256 if (!targetDocument.head) { 11257 return; 11258 } 11259 const runtime = getRuntime20(); 11260 let injectedStyles = runtime.injectedStyles.get(targetDocument); 11261 if (!injectedStyles) { 11262 injectedStyles = /* @__PURE__ */ new Set(); 11263 runtime.injectedStyles.set(targetDocument, injectedStyles); 11264 } 11265 if (injectedStyles.has(hash)) { 11266 return; 11267 } 11268 if (documentContainsStyleHash20(targetDocument, hash)) { 11269 injectedStyles.add(hash); 11270 return; 11271 } 11272 const style = targetDocument.createElement("style"); 11273 style.setAttribute(STYLE_HASH_ATTRIBUTE20, hash); 11274 style.appendChild(targetDocument.createTextNode(css)); 11275 targetDocument.head.appendChild(style); 11276 injectedStyles.add(hash); 11277 } 11278 function registerDocument20(targetDocument) { 11279 const runtime = getRuntime20(); 11280 runtime.documents.set( 11281 targetDocument, 11282 (runtime.documents.get(targetDocument) ?? 0) + 1 11283 ); 11284 for (const [hash, css] of runtime.styles) { 11285 injectStyle20(targetDocument, hash, css); 11286 } 11287 return () => { 11288 const count = runtime.documents.get(targetDocument); 11289 if (count === void 0) { 11290 return; 11291 } 11292 if (count <= 1) { 11293 runtime.documents.delete(targetDocument); 11294 return; 11295 } 11296 runtime.documents.set(targetDocument, count - 1); 11297 }; 11298 } 11299 function registerStyle20(hash, css) { 11300 const runtime = getRuntime20(); 11301 runtime.styles.set(hash, css); 11302 for (const targetDocument of runtime.documents.keys()) { 11303 injectStyle20(targetDocument, hash, css); 11304 } 11305 } 11306 if (typeof process === "undefined" || true) { 11307 registerStyle20("72ef022400", ".bfb5a2dd8cceebd3__list{--focus-ring-size:calc(var(--wpds-border-width-focus, var(--wp-admin-border-width-focus, 2px))*2);list-style:none;margin:calc(var(--focus-ring-size)*-1);overflow-x:auto;padding:var(--focus-ring-size);scroll-padding:var(--focus-ring-size)}.a4759b4cb2c8bd92__li{flex-shrink:0}._07da506d3f2d9afe__item{align-items:center;color:var(--wpds-color-foreground-interactive-neutral-weak,#707070);display:flex;font-weight:var(--wpds-typography-font-weight-default,400);min-block-size:44px;min-inline-size:44px;text-decoration:none}._07da506d3f2d9afe__item:hover,._07da506d3f2d9afe__item[aria-current=page]{color:var(--wpds-color-foreground-interactive-neutral-weak-active,#1e1e1e)}._07da506d3f2d9afe__item[aria-current=page]{font-weight:var(--wpds-typography-font-weight-emphasis,600)}"); 11308 } 11309 var style_default19 = { "list": "bfb5a2dd8cceebd3__list", "li": "a4759b4cb2c8bd92__li", "item": "_07da506d3f2d9afe__item" }; 11310 var Navigation = ({ 11311 items, 11312 currentHref, 11313 ariaLabel = (0, import_i18n6.__)("Sections"), 11314 linkComponent, 11315 className 11316 }) => { 11317 if (!items.length) { 11318 return null; 11319 } 11320 const LinkComponent = linkComponent ?? "a"; 11321 if (true) { 11322 const invalidItem = items.find( 11323 (item) => typeof item.href !== "string" 11324 ); 11325 if (invalidItem) { 11326 throw new Error( 11327 `Navigation: item "$invalidItem.label}" is missing an \`href\` prop.` 11328 ); 11329 } 11330 const duplicate = items.find( 11331 (item, index2) => items.findIndex((other) => other.href === item.href) !== index2 11332 ); 11333 if (duplicate) { 11334 throw new Error( 11335 `Navigation: duplicate \`href\` "$duplicate.href}". Each item must have a unique \`href\` so a single item receives \`aria-current="page"\`.` 11336 ); 11337 } 11338 } 11339 return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("nav", { "aria-label": ariaLabel, className, children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( 11340 Stack, 11341 { 11342 render: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("ul", { role: "list" }), 11343 direction: "row", 11344 align: "center", 11345 gap: "md", 11346 className: style_default19.list, 11347 children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("li", { className: style_default19.li, children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( 11348 Text, 11349 { 11350 variant: "body-md", 11351 className: style_default19.item, 11352 render: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( 11353 Link, 11354 { 11355 variant: "unstyled", 11356 "aria-current": item.href === currentHref ? "page" : void 0, 11357 render: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(LinkComponent, { href: item.href }) 11358 } 11359 ), 11360 children: item.label 11361 } 11362 ) }, item.href)) 11363 } 11364 ) }); 11365 }; 11366 var navigation_default = Navigation; 11367 11368 // packages/admin-ui/build-module/page/sidebar-toggle-slot.mjs 11369 var import_components = __toESM(require_components(), 1); 11370 var { Fill: SidebarToggleFill, Slot: SidebarToggleSlot } = (0, import_components.createSlotFill)("SidebarToggle"); 11371 11372 // packages/admin-ui/build-module/page/header.mjs 11373 var import_jsx_runtime39 = __toESM(require_jsx_runtime(), 1); 11374 var STYLE_HASH_ATTRIBUTE21 = "data-wp-hash"; 11375 function getRuntime21() { 11376 const globalScope = globalThis; 11377 if (globalScope.__wpStyleRuntime) { 11378 return globalScope.__wpStyleRuntime; 11379 } 11380 globalScope.__wpStyleRuntime = { 11381 documents: /* @__PURE__ */ new Map(), 11382 styles: /* @__PURE__ */ new Map(), 11383 injectedStyles: /* @__PURE__ */ new WeakMap() 11384 }; 11385 if (typeof document !== "undefined") { 11386 registerDocument21(document); 11387 } 11388 return globalScope.__wpStyleRuntime; 11389 } 11390 function documentContainsStyleHash21(targetDocument, hash) { 11391 if (!targetDocument.head) { 11392 return false; 11393 } 11394 for (const style of targetDocument.head.querySelectorAll( 11395 `style[$STYLE_HASH_ATTRIBUTE21}]` 11396 )) { 11397 if (style.getAttribute(STYLE_HASH_ATTRIBUTE21) === hash) { 11398 return true; 11399 } 11400 } 11401 return false; 11402 } 11403 function injectStyle21(targetDocument, hash, css) { 11404 if (!targetDocument.head) { 11405 return; 11406 } 11407 const runtime = getRuntime21(); 11408 let injectedStyles = runtime.injectedStyles.get(targetDocument); 11409 if (!injectedStyles) { 11410 injectedStyles = /* @__PURE__ */ new Set(); 11411 runtime.injectedStyles.set(targetDocument, injectedStyles); 11412 } 11413 if (injectedStyles.has(hash)) { 11414 return; 11415 } 11416 if (documentContainsStyleHash21(targetDocument, hash)) { 11417 injectedStyles.add(hash); 11418 return; 11419 } 11420 const style = targetDocument.createElement("style"); 11421 style.setAttribute(STYLE_HASH_ATTRIBUTE21, hash); 11422 style.appendChild(targetDocument.createTextNode(css)); 11423 targetDocument.head.appendChild(style); 11424 injectedStyles.add(hash); 11425 } 11426 function registerDocument21(targetDocument) { 11427 const runtime = getRuntime21(); 11428 runtime.documents.set( 11429 targetDocument, 11430 (runtime.documents.get(targetDocument) ?? 0) + 1 11431 ); 11432 for (const [hash, css] of runtime.styles) { 11433 injectStyle21(targetDocument, hash, css); 11434 } 11435 return () => { 11436 const count = runtime.documents.get(targetDocument); 11437 if (count === void 0) { 11438 return; 11439 } 11440 if (count <= 1) { 11441 runtime.documents.delete(targetDocument); 11442 return; 11443 } 11444 runtime.documents.set(targetDocument, count - 1); 11445 }; 11446 } 11447 function registerStyle21(hash, css) { 11448 const runtime = getRuntime21(); 11449 runtime.styles.set(hash, css); 11450 for (const targetDocument of runtime.documents.keys()) { 11451 injectStyle21(targetDocument, hash, css); 11452 } 11453 } 11454 if (typeof process === "undefined" || true) { 11455 registerStyle21("1f3750277d", "._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-background-surface-neutral,#fcfcfc);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-background-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:var(--wpds-dimension-size-md,32px)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8bcd33103b451f30__header-lockup{min-width:0}._8113be94e7caf73c__header-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:var(--wpds-dimension-size-sm,24px);width:var(--wpds-dimension-size-sm,24px);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-foreground-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}._0625b55e82a0d93d__header._4b0f17e503d11619__has-navigation,._0625b55e82a0d93d__header._4b0f17e503d11619__has-navigation ._60fea2f6bf5319cd__header-subtitle{padding-block-end:0}._673c99dcbfb58211__header-navigation{margin-block-start:var(--wpds-dimension-gap-md,12px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}"); 11456 } 11457 var style_default20 = { "page": "_956b6df0898efed0__page", "header": "_0625b55e82a0d93d__header", "header-content": "a43c44d5ae28b2e8__header-content", "header-actions": "b7cb5b9daf3a3b25__header-actions", "header-lockup": "_8bcd33103b451f30__header-lockup", "header-title": "_8113be94e7caf73c__header-title", "header-visual": "_9a776c7f70996f61__header-visual", "sidebar-toggle-slot": "d5e0920cd15d35bc__sidebar-toggle-slot", "header-subtitle": "_60fea2f6bf5319cd__header-subtitle", "has-navigation": "_4b0f17e503d11619__has-navigation", "header-navigation": "_673c99dcbfb58211__header-navigation", "content": "be5e57d029ec4036__content", "has-padding": "_128806d0b26e3a50__has-padding" }; 11458 function Header({ 11459 headingLevel = 1, 11460 breadcrumbs, 11461 badges, 11462 visual, 11463 title, 11464 subTitle, 11465 actions, 11466 navigation, 11467 components, 11468 showSidebarToggle = true 11469 }) { 11470 const HeadingTag = `h$headingLevel}`; 11471 const hasNavigation = !!navigation?.items?.length; 11472 return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)( 11473 Stack, 11474 { 11475 direction: "column", 11476 className: clsx_default( 11477 style_default20.header, 11478 hasNavigation && style_default20["has-navigation"] 11479 ), 11480 children: [ 11481 /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)( 11482 Stack, 11483 { 11484 className: style_default20["header-content"], 11485 direction: "row", 11486 gap: "sm", 11487 justify: "space-between", 11488 children: [ 11489 /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)( 11490 Stack, 11491 { 11492 direction: "row", 11493 gap: "sm", 11494 align: "center", 11495 justify: "start", 11496 className: style_default20["header-lockup"], 11497 children: [ 11498 showSidebarToggle && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( 11499 SidebarToggleSlot, 11500 { 11501 bubblesVirtually: true, 11502 className: style_default20["sidebar-toggle-slot"] 11503 } 11504 ), 11505 visual && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( 11506 "div", 11507 { 11508 className: style_default20["header-visual"], 11509 "aria-hidden": "true", 11510 children: visual 11511 } 11512 ), 11513 title && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( 11514 Text, 11515 { 11516 className: style_default20["header-title"], 11517 render: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(HeadingTag, {}), 11518 variant: "heading-lg", 11519 children: title 11520 } 11521 ), 11522 breadcrumbs, 11523 badges 11524 ] 11525 } 11526 ), 11527 actions && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( 11528 Stack, 11529 { 11530 align: "center", 11531 className: style_default20["header-actions"], 11532 direction: "row", 11533 gap: "sm", 11534 children: actions 11535 } 11536 ) 11537 ] 11538 } 11539 ), 11540 subTitle && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( 11541 Text, 11542 { 11543 render: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("p", {}), 11544 variant: "body-md", 11545 className: style_default20["header-subtitle"], 11546 children: subTitle 11547 } 11548 ), 11549 hasNavigation && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( 11550 navigation_default, 11551 { 11552 ...navigation, 11553 linkComponent: components?.link, 11554 className: style_default20["header-navigation"] 11555 } 11556 ) 11557 ] 11558 } 11559 ); 11560 } 11561 11562 // packages/admin-ui/build-module/page/index.mjs 11563 var import_jsx_runtime40 = __toESM(require_jsx_runtime(), 1); 11564 var STYLE_HASH_ATTRIBUTE22 = "data-wp-hash"; 11565 function getRuntime22() { 11566 const globalScope = globalThis; 11567 if (globalScope.__wpStyleRuntime) { 11568 return globalScope.__wpStyleRuntime; 11569 } 11570 globalScope.__wpStyleRuntime = { 11571 documents: /* @__PURE__ */ new Map(), 11572 styles: /* @__PURE__ */ new Map(), 11573 injectedStyles: /* @__PURE__ */ new WeakMap() 11574 }; 11575 if (typeof document !== "undefined") { 11576 registerDocument22(document); 11577 } 11578 return globalScope.__wpStyleRuntime; 11579 } 11580 function documentContainsStyleHash22(targetDocument, hash) { 11581 if (!targetDocument.head) { 11582 return false; 11583 } 11584 for (const style of targetDocument.head.querySelectorAll( 11585 `style[$STYLE_HASH_ATTRIBUTE22}]` 11586 )) { 11587 if (style.getAttribute(STYLE_HASH_ATTRIBUTE22) === hash) { 11588 return true; 11589 } 11590 } 11591 return false; 11592 } 11593 function injectStyle22(targetDocument, hash, css) { 11594 if (!targetDocument.head) { 11595 return; 11596 } 11597 const runtime = getRuntime22(); 11598 let injectedStyles = runtime.injectedStyles.get(targetDocument); 11599 if (!injectedStyles) { 11600 injectedStyles = /* @__PURE__ */ new Set(); 11601 runtime.injectedStyles.set(targetDocument, injectedStyles); 11602 } 11603 if (injectedStyles.has(hash)) { 11604 return; 11605 } 11606 if (documentContainsStyleHash22(targetDocument, hash)) { 11607 injectedStyles.add(hash); 11608 return; 11609 } 11610 const style = targetDocument.createElement("style"); 11611 style.setAttribute(STYLE_HASH_ATTRIBUTE22, hash); 11612 style.appendChild(targetDocument.createTextNode(css)); 11613 targetDocument.head.appendChild(style); 11614 injectedStyles.add(hash); 11615 } 11616 function registerDocument22(targetDocument) { 11617 const runtime = getRuntime22(); 11618 runtime.documents.set( 11619 targetDocument, 11620 (runtime.documents.get(targetDocument) ?? 0) + 1 11621 ); 11622 for (const [hash, css] of runtime.styles) { 11623 injectStyle22(targetDocument, hash, css); 11624 } 11625 return () => { 11626 const count = runtime.documents.get(targetDocument); 11627 if (count === void 0) { 11628 return; 11629 } 11630 if (count <= 1) { 11631 runtime.documents.delete(targetDocument); 11632 return; 11633 } 11634 runtime.documents.set(targetDocument, count - 1); 11635 }; 11636 } 11637 function registerStyle22(hash, css) { 11638 const runtime = getRuntime22(); 11639 runtime.styles.set(hash, css); 11640 for (const targetDocument of runtime.documents.keys()) { 11641 injectStyle22(targetDocument, hash, css); 11642 } 11643 } 11644 if (typeof process === "undefined" || true) { 11645 registerStyle22("1f3750277d", "._956b6df0898efed0__page{text-wrap:pretty;background-color:var(--wpds-color-background-surface-neutral,#fcfcfc);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);display:flex;flex-flow:column;height:100%;position:relative;z-index:1}._0625b55e82a0d93d__header{background:var(--wpds-color-background-surface-neutral-strong,#fff);border-block-end:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);inset-block-start:0;padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px);position:sticky;z-index:1}.a43c44d5ae28b2e8__header-content{min-height:var(--wpds-dimension-size-md,32px)}.b7cb5b9daf3a3b25__header-actions{flex-shrink:0}._8bcd33103b451f30__header-lockup{min-width:0}._8113be94e7caf73c__header-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._9a776c7f70996f61__header-visual{display:grid;flex-shrink:0;grid-template-columns:1fr;grid-template-rows:1fr;height:var(--wpds-dimension-size-sm,24px);width:var(--wpds-dimension-size-sm,24px);>*{grid-column:1/-1;grid-row:1/-1;max-height:100%;max-width:100%}}.d5e0920cd15d35bc__sidebar-toggle-slot:empty{display:none}._60fea2f6bf5319cd__header-subtitle{color:var(--wpds-color-foreground-content-neutral-weak,#707070);padding-block-end:var(--wpds-dimension-padding-xs,4px)}._0625b55e82a0d93d__header._4b0f17e503d11619__has-navigation,._0625b55e82a0d93d__header._4b0f17e503d11619__has-navigation ._60fea2f6bf5319cd__header-subtitle{padding-block-end:0}._673c99dcbfb58211__header-navigation{margin-block-start:var(--wpds-dimension-gap-md,12px)}.be5e57d029ec4036__content{display:flex;flex-direction:column;flex-grow:1;overflow:auto;&._128806d0b26e3a50__has-padding{padding:var(--wpds-dimension-padding-lg,16px) var(--wpds-dimension-padding-2xl,24px)}}"); 11646 } 11647 var style_default21 = { "page": "_956b6df0898efed0__page", "header": "_0625b55e82a0d93d__header", "header-content": "a43c44d5ae28b2e8__header-content", "header-actions": "b7cb5b9daf3a3b25__header-actions", "header-lockup": "_8bcd33103b451f30__header-lockup", "header-title": "_8113be94e7caf73c__header-title", "header-visual": "_9a776c7f70996f61__header-visual", "sidebar-toggle-slot": "d5e0920cd15d35bc__sidebar-toggle-slot", "header-subtitle": "_60fea2f6bf5319cd__header-subtitle", "has-navigation": "_4b0f17e503d11619__has-navigation", "header-navigation": "_673c99dcbfb58211__header-navigation", "content": "be5e57d029ec4036__content", "has-padding": "_128806d0b26e3a50__has-padding" }; 11648 function Page({ 11649 headingLevel, 11650 breadcrumbs, 11651 badges, 11652 visual, 11653 title, 11654 subTitle, 11655 children, 11656 className, 11657 actions, 11658 navigation, 11659 components, 11660 ariaLabel, 11661 hasPadding = false, 11662 showSidebarToggle = true 11663 }) { 11664 const classes = clsx_default(style_default21.page, className); 11665 const effectiveAriaLabel = ariaLabel ?? (typeof title === "string" ? title : ""); 11666 return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(navigable_region_default, { className: classes, ariaLabel: effectiveAriaLabel, children: [ 11667 (title || breadcrumbs || badges || actions || visual || !!navigation?.items?.length) && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)( 11668 Header, 11669 { 11670 headingLevel, 11671 breadcrumbs, 11672 badges, 11673 visual, 11674 title, 11675 subTitle, 11676 actions, 11677 navigation, 11678 components, 11679 showSidebarToggle 11680 } 11681 ), 11682 hasPadding ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)( 11683 "div", 11684 { 11685 className: clsx_default( 11686 style_default21.content, 11687 style_default21["has-padding"] 11688 ), 11689 children 11690 } 11691 ) : children 11692 ] }); 11693 } 11694 Page.SidebarToggleFill = SidebarToggleFill; 11695 var page_default = Page; 11696 11697 // routes/connectors-home/stage.tsx 11698 var import_components4 = __toESM(require_components()); 11699 var import_data4 = __toESM(require_data()); 11700 var import_element37 = __toESM(require_element()); 11701 var import_i18n10 = __toESM(require_i18n()); 11702 var import_core_data3 = __toESM(require_core_data()); 11703 import { 11704 privateApis as connectorsPrivateApis2 11705 } from "@wordpress/connectors"; 11706 11707 // routes/lock-unlock/index.ts 11708 var import_private_apis2 = __toESM(require_private_apis()); 11709 var { lock: lock2, unlock: unlock2 } = (0, import_private_apis2.__dangerousOptInToUnstableAPIsOnlyForCoreModules)( 11710 "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.", 11711 "@wordpress/routes" 11712 ); 11713 11714 // routes/connectors-home/style.scss 11715 if (typeof document !== "undefined" && (typeof process === "undefined" || true) && !document.head.querySelector("style[data-wp-hash='87cd95b244']")) { 11716 const style = document.createElement("style"); 11717 style.setAttribute("data-wp-hash", "87cd95b244"); 11718 style.appendChild(document.createTextNode(".connectors-page{box-sizing:border-box;margin:0 auto;max-width:680px;padding:24px;width:100%}.connectors-page .components-item{background:#fff;border:1px solid #ddd;border-radius:8px;overflow:hidden;padding:20px;scroll-margin-top:120px}.connectors-page .connector-settings__error{color:#cc1818}.connectors-page .connector-settings .components-text-control__input{font-family:monospace;scroll-margin-top:120px}.connectors-page__file-mods-notice{margin-bottom:16px}.connectors-page--empty{align-items:center;display:flex;flex-direction:column;flex-grow:1;gap:32px;justify-content:center;text-align:center}.connectors-page .ai-plugin-callout{background-color:#e7d4e4;background-image:radial-gradient(ellipse 70% 120% at 18% 115%,rgba(202,158,198,.75) 0,rgba(202,158,198,0) 60%),radial-gradient(ellipse 55% 110% at 92% -15%,rgba(208,175,217,.7) 0,rgba(208,175,217,0) 65%),radial-gradient(ellipse 40% 85% at 58% -10%,rgba(170,130,184,.45) 0,rgba(170,130,184,0) 70%);border-radius:8px;overflow:hidden;padding:24px;padding-inline-end:150px;position:relative}[dir=rtl] .connectors-page .ai-plugin-callout{background-image:radial-gradient(ellipse 70% 120% at 82% 115%,rgba(202,158,198,.75) 0,rgba(202,158,198,0) 60%),radial-gradient(ellipse 55% 110% at 8% -15%,rgba(208,175,217,.7) 0,rgba(208,175,217,0) 65%),radial-gradient(ellipse 40% 85% at 42% -10%,rgba(170,130,184,.45) 0,rgba(170,130,184,0) 70%)}.connectors-page .ai-plugin-callout__content{align-items:flex-start;display:flex;flex-direction:column;gap:12px;padding-top:2px}.connectors-page .ai-plugin-callout__content p{font-size:13px;line-height:20px;margin:0}.connectors-page .ai-plugin-callout__decoration{height:110px;inset-inline-end:16px;position:absolute;top:12px;width:110px}.connectors-page__help-text{color:#2f2f2f}@media (max-width:680px){.connectors-page .ai-plugin-callout{padding:12px;padding-inline-end:100px}.connectors-page .ai-plugin-callout__decoration{height:75px;inset-inline-end:8px;top:8px;width:75px}}@media (max-width:480px){.connectors-page{padding:8px}.connectors-page .ai-plugin-callout{padding-inline-end:130px}.connectors-page .components-item{padding:12px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child svg{height:32px;width:32px}.connectors-page .components-item>.components-v-stack>.components-h-stack:first-child>.components-h-stack:last-child{align-items:flex-end;flex-direction:column}}")); 11719 document.head.appendChild(style); 11720 } 11721 11722 // routes/connectors-home/ai-plugin-callout.tsx 11723 var import_components3 = __toESM(require_components()); 11724 var import_core_data2 = __toESM(require_core_data()); 11725 var import_data3 = __toESM(require_data()); 11726 var import_element36 = __toESM(require_element()); 11727 var import_i18n9 = __toESM(require_i18n()); 11728 var import_notices2 = __toESM(require_notices()); 11729 var import_url = __toESM(require_url()); 11730 11731 // routes/connectors-home/default-connectors.tsx 11732 var import_components2 = __toESM(require_components()); 11733 var import_element35 = __toESM(require_element()); 11734 var import_data2 = __toESM(require_data()); 11735 var import_i18n8 = __toESM(require_i18n()); 11736 import { 11737 __experimentalRegisterConnector as registerConnector, 11738 __experimentalConnectorItem as ConnectorItem, 11739 __experimentalDefaultConnectorSettings as DefaultConnectorSettings, 11740 __experimentalApplicationPasswordConnectorSettings as ApplicationPasswordConnectorSettings, 11741 privateApis as connectorsPrivateApis 11742 } from "@wordpress/connectors"; 11743 11744 // routes/connectors-home/use-connector-plugin.ts 11745 var import_core_data = __toESM(require_core_data()); 11746 var import_data = __toESM(require_data()); 11747 var import_element34 = __toESM(require_element()); 11748 var import_i18n7 = __toESM(require_i18n()); 11749 var import_notices = __toESM(require_notices()); 11750 function useConnectorPlugin({ 11751 file: pluginFileFromServer, 11752 settingName, 11753 connectorName, 11754 isInstalled, 11755 isActivated, 11756 keySource = "none", 11757 initialIsConnected = false 11758 }) { 11759 const [isExpanded, setIsExpanded] = (0, import_element34.useState)(false); 11760 const [isBusy, setIsBusy] = (0, import_element34.useState)(false); 11761 const [connectedState, setConnectedState] = (0, import_element34.useState)(initialIsConnected); 11762 const [pluginStatusOverride, setPluginStatusOverride] = (0, import_element34.useState)(null); 11763 const pluginBasename = pluginFileFromServer?.replace(/\.php$/, ""); 11764 const pluginSlug = pluginBasename?.includes("/") ? pluginBasename.split("/")[0] : pluginBasename; 11765 const { 11766 derivedPluginStatus, 11767 canManagePlugins, 11768 currentApiKey, 11769 currentUsername, 11770 hasStoredCredentials, 11771 hasResolvedSettings, 11772 canInstallPlugins 11773 } = (0, import_data.useSelect)( 11774 (select2) => { 11775 const store2 = select2(import_core_data.store); 11776 const siteSettings = store2.getEntityRecord("root", "site"); 11777 const settingValue = siteSettings?.[settingName]; 11778 const apiKey = typeof settingValue === "string" ? settingValue : ""; 11779 const credentials = typeof settingValue === "object" && settingValue !== null ? settingValue : void 0; 11780 const credentialsExist = credentials !== void 0 ? !!credentials.username && !!credentials.password : !!apiKey; 11781 const settingsResolved = store2.hasFinishedResolution( 11782 "getEntityRecord", 11783 ["root", "site"] 11784 ); 11785 const canCreate = !!store2.canUser("create", { 11786 kind: "root", 11787 name: "plugin" 11788 }); 11789 const common = { 11790 currentApiKey: apiKey, 11791 currentUsername: credentials?.username ?? "", 11792 hasStoredCredentials: credentialsExist, 11793 hasResolvedSettings: settingsResolved, 11794 canInstallPlugins: canCreate 11795 }; 11796 if (!pluginFileFromServer) { 11797 return { 11798 ...common, 11799 derivedPluginStatus: settingsResolved ? "active" : "checking", 11800 canManagePlugins: void 0 11801 }; 11802 } 11803 const plugin = store2.getEntityRecord( 11804 "root", 11805 "plugin", 11806 pluginBasename 11807 ); 11808 const hasFinished = store2.hasFinishedResolution( 11809 "getEntityRecord", 11810 ["root", "plugin", pluginBasename] 11811 ); 11812 if (!hasFinished) { 11813 return { 11814 ...common, 11815 derivedPluginStatus: "checking", 11816 canManagePlugins: void 0 11817 }; 11818 } 11819 if (plugin) { 11820 const isPluginActive = plugin.status === "active" || plugin.status === "network-active"; 11821 return { 11822 ...common, 11823 derivedPluginStatus: isPluginActive ? "active" : "inactive", 11824 canManagePlugins: true 11825 }; 11826 } 11827 let status = "not-installed"; 11828 if (isActivated) { 11829 status = "active"; 11830 } else if (isInstalled) { 11831 status = "inactive"; 11832 } 11833 return { 11834 ...common, 11835 derivedPluginStatus: status, 11836 canManagePlugins: false 11837 }; 11838 }, 11839 [ 11840 pluginFileFromServer, 11841 pluginBasename, 11842 settingName, 11843 isInstalled, 11844 isActivated 11845 ] 11846 ); 11847 const pluginStatus = pluginStatusOverride ?? derivedPluginStatus; 11848 const canActivatePlugins = canManagePlugins; 11849 const isConnected = pluginStatus === "active" && connectedState || // After install/activate, if settings re-fetch reveals stored credentials, 11850 // update connected state (mirrors what the server would report on page load). 11851 pluginStatusOverride === "active" && hasStoredCredentials; 11852 const { saveEntityRecord, invalidateResolution } = (0, import_data.useDispatch)(import_core_data.store); 11853 const { createSuccessNotice, createErrorNotice } = (0, import_data.useDispatch)(import_notices.store); 11854 const saveConnectorSetting = (value) => saveEntityRecord( 11855 "root", 11856 "site", 11857 { [settingName]: value }, 11858 { throwOnError: true } 11859 ); 11860 const createConnectedNotice = () => { 11861 createSuccessNotice( 11862 (0, import_i18n7.sprintf)( 11863 /* translators: %s: Name of the connector (e.g. "OpenAI"). */ 11864 (0, import_i18n7.__)("%s connected successfully."), 11865 connectorName 11866 ), 11867 { 11868 id: "connector-connect-success", 11869 type: "snackbar" 11870 } 11871 ); 11872 }; 11873 const createDisconnectedNotice = () => { 11874 createSuccessNotice( 11875 (0, import_i18n7.sprintf)( 11876 /* translators: %s: Name of the connector (e.g. "OpenAI"). */ 11877 (0, import_i18n7.__)("%s disconnected."), 11878 connectorName 11879 ), 11880 { 11881 id: "connector-disconnect-success", 11882 type: "snackbar" 11883 } 11884 ); 11885 }; 11886 const createDisconnectErrorNotice = () => { 11887 createErrorNotice( 11888 (0, import_i18n7.sprintf)( 11889 /* translators: %s: Name of the connector (e.g. "OpenAI"). */ 11890 (0, import_i18n7.__)("Failed to disconnect %s."), 11891 connectorName 11892 ), 11893 { 11894 id: "connector-disconnect-error", 11895 type: "snackbar" 11896 } 11897 ); 11898 }; 11899 const installPlugin = async () => { 11900 if (!pluginSlug) { 11901 return; 11902 } 11903 setIsBusy(true); 11904 try { 11905 await saveEntityRecord( 11906 "root", 11907 "plugin", 11908 { slug: pluginSlug, status: "active" }, 11909 { throwOnError: true } 11910 ); 11911 setPluginStatusOverride("active"); 11912 invalidateResolution("getEntityRecord", ["root", "site"]); 11913 setIsExpanded(true); 11914 createSuccessNotice( 11915 (0, import_i18n7.sprintf)( 11916 /* translators: %s: Name of the connector (e.g. "OpenAI"). */ 11917 (0, import_i18n7.__)("Plugin for %s installed and activated successfully."), 11918 connectorName 11919 ), 11920 { 11921 id: "connector-plugin-install-success", 11922 type: "snackbar" 11923 } 11924 ); 11925 } catch { 11926 createErrorNotice( 11927 (0, import_i18n7.sprintf)( 11928 /* translators: %s: Name of the connector (e.g. "OpenAI"). */ 11929 (0, import_i18n7.__)("Failed to install plugin for %s."), 11930 connectorName 11931 ), 11932 { 11933 id: "connector-plugin-install-error", 11934 type: "snackbar" 11935 } 11936 ); 11937 } finally { 11938 setIsBusy(false); 11939 } 11940 }; 11941 const activatePlugin = async () => { 11942 if (!pluginFileFromServer) { 11943 return; 11944 } 11945 setIsBusy(true); 11946 try { 11947 await saveEntityRecord( 11948 "root", 11949 "plugin", 11950 { 11951 plugin: pluginBasename, 11952 status: "active" 11953 }, 11954 { throwOnError: true } 11955 ); 11956 setPluginStatusOverride("active"); 11957 invalidateResolution("getEntityRecord", ["root", "site"]); 11958 setIsExpanded(true); 11959 createSuccessNotice( 11960 (0, import_i18n7.sprintf)( 11961 /* translators: %s: Name of the connector (e.g. "OpenAI"). */ 11962 (0, import_i18n7.__)("Plugin for %s activated successfully."), 11963 connectorName 11964 ), 11965 { 11966 id: "connector-plugin-activate-success", 11967 type: "snackbar" 11968 } 11969 ); 11970 } catch { 11971 createErrorNotice( 11972 (0, import_i18n7.sprintf)( 11973 /* translators: %s: Name of the connector (e.g. "OpenAI"). */ 11974 (0, import_i18n7.__)("Failed to activate plugin for %s."), 11975 connectorName 11976 ), 11977 { 11978 id: "connector-plugin-activate-error", 11979 type: "snackbar" 11980 } 11981 ); 11982 } finally { 11983 setIsBusy(false); 11984 } 11985 }; 11986 const handleButtonClick = () => { 11987 if (pluginStatus === "not-installed") { 11988 if (canInstallPlugins === false) { 11989 return; 11990 } 11991 installPlugin(); 11992 } else if (pluginStatus === "inactive") { 11993 if (canActivatePlugins === false) { 11994 return; 11995 } 11996 activatePlugin(); 11997 } else { 11998 setIsExpanded(!isExpanded); 11999 } 12000 }; 12001 const getButtonLabel = () => { 12002 if (isBusy) { 12003 return pluginStatus === "not-installed" ? (0, import_i18n7.__)("Installing\u2026") : (0, import_i18n7.__)("Activating\u2026"); 12004 } 12005 if (isExpanded) { 12006 return (0, import_i18n7.__)("Cancel"); 12007 } 12008 if (isConnected) { 12009 return (0, import_i18n7.__)("Edit"); 12010 } 12011 switch (pluginStatus) { 12012 case "checking": 12013 return (0, import_i18n7.__)("Checking\u2026"); 12014 case "not-installed": 12015 return (0, import_i18n7.__)("Install"); 12016 case "inactive": 12017 return (0, import_i18n7.__)("Activate"); 12018 case "active": 12019 return (0, import_i18n7.__)("Set up"); 12020 } 12021 }; 12022 const saveApiKey = async (apiKey) => { 12023 const previousApiKey = currentApiKey; 12024 try { 12025 const updatedRecord = await saveConnectorSetting(apiKey); 12026 const record = updatedRecord; 12027 const returnedKey = record?.[settingName]; 12028 if (apiKey && (returnedKey === previousApiKey || !returnedKey)) { 12029 throw new Error( 12030 "It was not possible to connect to the provider using this key." 12031 ); 12032 } 12033 setConnectedState(true); 12034 createConnectedNotice(); 12035 } catch (error2) { 12036 console.error("Failed to save API key:", error2); 12037 throw error2; 12038 } 12039 }; 12040 const saveCredentials = async ({ 12041 username, 12042 applicationPassword 12043 }) => { 12044 try { 12045 const updatedRecord = await saveConnectorSetting({ 12046 username, 12047 password: applicationPassword 12048 }); 12049 const record = updatedRecord; 12050 const credentials = record?.[settingName]; 12051 if (!credentials?.username || !credentials?.password) { 12052 throw new Error( 12053 (0, import_i18n7.__)("It was not possible to save these credentials.") 12054 ); 12055 } 12056 setConnectedState(true); 12057 createConnectedNotice(); 12058 } catch (error2) { 12059 console.error("Failed to save credentials:", error2); 12060 throw error2; 12061 } 12062 }; 12063 const removeApiKey = async () => { 12064 try { 12065 await saveConnectorSetting(""); 12066 setConnectedState(false); 12067 createDisconnectedNotice(); 12068 } catch (error2) { 12069 console.error("Failed to remove API key:", error2); 12070 createDisconnectErrorNotice(); 12071 } 12072 }; 12073 const removeCredentials = async () => { 12074 try { 12075 await saveConnectorSetting({ 12076 username: "", 12077 password: "" 12078 }); 12079 setConnectedState(false); 12080 createDisconnectedNotice(); 12081 } catch (error2) { 12082 console.error("Failed to remove credentials:", error2); 12083 createDisconnectErrorNotice(); 12084 } 12085 }; 12086 return { 12087 pluginStatus, 12088 canInstallPlugins, 12089 canActivatePlugins, 12090 isExpanded, 12091 setIsExpanded, 12092 isBusy, 12093 isConnected, 12094 currentApiKey, 12095 currentUsername, 12096 hasResolvedSettings, 12097 keySource, 12098 handleButtonClick, 12099 getButtonLabel, 12100 saveApiKey, 12101 removeApiKey, 12102 saveCredentials, 12103 removeCredentials 12104 }; 12105 } 12106 12107 // routes/connectors-home/logos.tsx 12108 var import_jsx_runtime41 = __toESM(require_jsx_runtime()); 12109 var OpenAILogo = () => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( 12110 "svg", 12111 { 12112 width: "40", 12113 height: "40", 12114 viewBox: "0 0 24 24", 12115 fill: "none", 12116 xmlns: "http://www.w3.org/2000/svg", 12117 "aria-hidden": "true", 12118 children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( 12119 "path", 12120 { 12121 d: "M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364l2.0201-1.1685a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.4043-.6813zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z", 12122 fill: "currentColor" 12123 } 12124 ) 12125 } 12126 ); 12127 var ClaudeLogo = () => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( 12128 "svg", 12129 { 12130 width: "40", 12131 height: "40", 12132 viewBox: "0 0 32 32", 12133 fill: "none", 12134 xmlns: "http://www.w3.org/2000/svg", 12135 "aria-hidden": "true", 12136 children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( 12137 "path", 12138 { 12139 d: "M6.2 21.024L12.416 17.536L12.52 17.232L12.416 17.064H12.112L11.072 17L7.52 16.904L4.44 16.776L1.456 16.616L0.704 16.456L0 15.528L0.072 15.064L0.704 14.64L1.608 14.72L3.608 14.856L6.608 15.064L8.784 15.192L12.008 15.528H12.52L12.592 15.32L12.416 15.192L12.28 15.064L9.176 12.96L5.816 10.736L4.056 9.456L3.104 8.808L2.624 8.2L2.416 6.872L3.28 5.92L4.44 6L4.736 6.08L5.912 6.984L8.424 8.928L11.704 11.344L12.184 11.744L12.376 11.608L12.4 11.512L12.184 11.152L10.4 7.928L8.496 4.648L7.648 3.288L7.424 2.472C7.344 2.136 7.288 1.856 7.288 1.512L8.272 0.176L8.816 0L10.128 0.176L10.68 0.656L11.496 2.52L12.816 5.456L14.864 9.448L15.464 10.632L15.784 11.728L15.904 12.064H16.112V11.872L16.28 9.624L16.592 6.864L16.896 3.312L17 2.312L17.496 1.112L18.48 0.464L19.248 0.832L19.88 1.736L19.792 2.32L19.416 4.76L18.68 8.584L18.2 11.144H18.48L18.8 10.824L20.096 9.104L22.272 6.384L23.232 5.304L24.352 4.112L25.072 3.544H26.432L27.432 5.032L26.984 6.568L25.584 8.344L24.424 9.848L22.76 12.088L21.72 13.88L21.816 14.024L22.064 14L25.824 13.2L27.856 12.832L30.28 12.416L31.376 12.928L31.496 13.448L31.064 14.512L28.472 15.152L25.432 15.76L20.904 16.832L20.848 16.872L20.912 16.952L22.952 17.144L23.824 17.192H25.96L29.936 17.488L30.976 18.176L31.6 19.016L31.496 19.656L29.896 20.472L27.736 19.96L22.696 18.76L20.968 18.328H20.728V18.472L22.168 19.88L24.808 22.264L28.112 25.336L28.28 26.096L27.856 26.696L27.408 26.632L24.504 24.448L23.384 23.464L20.848 21.328H20.68V21.552L21.264 22.408L24.352 27.048L24.512 28.472L24.288 28.936L23.488 29.216L22.608 29.056L20.8 26.52L18.936 23.664L17.432 21.104L17.248 21.208L16.36 30.768L15.944 31.256L14.984 31.624L14.184 31.016L13.76 30.032L14.184 28.088L14.696 25.552L15.112 23.536L15.488 21.032L15.712 20.2L15.696 20.144L15.512 20.168L13.624 22.76L10.752 26.64L8.48 29.072L7.936 29.288L6.992 28.8L7.08 27.928L7.608 27.152L10.752 23.152L12.648 20.672L13.872 19.24L13.864 19.032H13.792L5.44 24.456L3.952 24.648L3.312 24.048L3.392 23.064L3.696 22.744L6.208 21.016L6.2 21.024Z", 12140 fill: "#D97757" 12141 } 12142 ) 12143 } 12144 ); 12145 var DefaultConnectorLogo = () => /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)( 12146 "svg", 12147 { 12148 width: "40", 12149 height: "40", 12150 viewBox: "0 0 32 32", 12151 fill: "none", 12152 xmlns: "http://www.w3.org/2000/svg", 12153 "aria-hidden": "true", 12154 children: [ 12155 /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( 12156 "path", 12157 { 12158 d: "M0 4C0 1.79086 1.79086 0 4 0H28C30.2091 0 32 1.79086 32 4V28C32 30.2091 30.2091 32 28 32H4C1.79086 32 0 30.2091 0 28V4Z", 12159 fill: "#F0F0F0" 12160 } 12161 ), 12162 /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( 12163 "path", 12164 { 12165 d: "M14.5 8V12H17.5V8H19V12H20.5C20.7652 12 21.0196 12.1054 21.2071 12.2929C21.3946 12.4804 21.5 12.7348 21.5 13V17L18.5 21V23C18.5 23.2652 18.3946 23.5196 18.2071 23.7071C18.0196 23.8946 17.7652 24 17.5 24H14.5C14.2348 24 13.9804 23.8946 13.7929 23.7071C13.6054 23.5196 13.5 23.2652 13.5 23V21L10.5 17V13C10.5 12.7348 10.6054 12.4804 10.7929 12.2929C10.9804 12.1054 11.2348 12 11.5 12H13V8H14.5ZM15 20.5V22.5H17V20.5L20 16.5V13.5H12V16.5L15 20.5Z", 12166 fill: "#949494" 12167 } 12168 ) 12169 ] 12170 } 12171 ); 12172 var AkismetLogo = () => /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)( 12173 "svg", 12174 { 12175 width: "40", 12176 height: "40", 12177 viewBox: "0 0 44 44", 12178 fill: "none", 12179 xmlns: "http://www.w3.org/2000/svg", 12180 "aria-hidden": "true", 12181 children: [ 12182 /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("rect", { width: "44", height: "44", fill: "#357B49", rx: "6" }), 12183 /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( 12184 "path", 12185 { 12186 fill: "#fff", 12187 fillRule: "evenodd", 12188 d: "m29.746 28.31-6.392-16.797c-.152-.397-.305-.672-.789-.675-.673 0-1.408.611-1.746 1.316l-7.378 16.154c-.072.16-.143.311-.214.454-.5.995-1.045 1.546-2.357 1.626a.399.399 0 0 0-.16.033l-.01.004a.399.399 0 0 0-.23.392v.01c0 .054.01.106.03.155l.004.01a.416.416 0 0 0 .394.252h6.212a.417.417 0 0 0 .307-.12.416.416 0 0 0 .124-.305.398.398 0 0 0-.105-.302.399.399 0 0 0-.294-.127c-.757 0-2.197-.062-2.197-1.164.02-.318.103-.63.245-.916l1.399-3.152c.52-1.163 1.654-1.163 2.572-1.163h5.843c.023 0 .044 0 .062.003.13.014.16.081.214.242l1.534 4.07a2.857 2.857 0 0 1 .216 1.04c0 .054-.003.104-.01.153-.09.726-.831.887-1.49.887a.4.4 0 0 0-.294.127l-.007.008-.007.008a.401.401 0 0 0-.092.286v.01c0 .054.01.106.03.155l.005.01a.42.42 0 0 0 .395.252h7.011a.413.413 0 0 0 .279-.13.412.412 0 0 0 .11-.297.387.387 0 0 0-.09-.294.388.388 0 0 0-.277-.135c-1.448-.122-2.295-.643-2.847-2.08Zm-11.985-5.844 2.847-6.304c.361-.728.659-1.486.889-2.265 0-.06.03-.092.06-.092s.061.032.061.091c.02.122.045.247.073.374.197.888.584 1.878.914 2.723l.176.453 1.684 4.529a.927.927 0 0 1 .092.4.473.473 0 0 1-.009.094c-.041.202-.228.272-.602.272h-6.063c-.122 0-.184-.03-.184-.092a.36.36 0 0 1 .062-.183Zm17.107-.721c0 .786-.446 1.231-1.25 1.231-.806 0-1.125-.409-1.125-1.034 0-.786.465-1.231 1.25-1.231.785 0 1.125.427 1.125 1.034ZM9.629 23.002c.803 0 1.25-.447 1.25-1.231 0-.607-.343-1.036-1.128-1.036-.785 0-1.25.447-1.25 1.231 0 .625.325 1.036 1.128 1.036Z", 12189 clipRule: "evenodd" 12190 } 12191 ) 12192 ] 12193 } 12194 ); 12195 var GeminiLogo = () => /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)( 12196 "svg", 12197 { 12198 width: "40", 12199 height: "40", 12200 style: { flex: "none", lineHeight: 1 }, 12201 viewBox: "0 0 24 24", 12202 xmlns: "http://www.w3.org/2000/svg", 12203 "aria-hidden": "true", 12204 children: [ 12205 /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( 12206 "path", 12207 { 12208 d: "M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z", 12209 fill: "#3186FF" 12210 } 12211 ), 12212 /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( 12213 "path", 12214 { 12215 d: "M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z", 12216 fill: "url(#lobe-icons-gemini-fill-0)" 12217 } 12218 ), 12219 /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( 12220 "path", 12221 { 12222 d: "M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z", 12223 fill: "url(#lobe-icons-gemini-fill-1)" 12224 } 12225 ), 12226 /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( 12227 "path", 12228 { 12229 d: "M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z", 12230 fill: "url(#lobe-icons-gemini-fill-2)" 12231 } 12232 ), 12233 /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("defs", { children: [ 12234 /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)( 12235 "linearGradient", 12236 { 12237 gradientUnits: "userSpaceOnUse", 12238 id: "lobe-icons-gemini-fill-0", 12239 x1: "7", 12240 x2: "11", 12241 y1: "15.5", 12242 y2: "12", 12243 children: [ 12244 /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("stop", { stopColor: "#08B962" }), 12245 /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("stop", { offset: "1", stopColor: "#08B962", stopOpacity: "0" }) 12246 ] 12247 } 12248 ), 12249 /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)( 12250 "linearGradient", 12251 { 12252 gradientUnits: "userSpaceOnUse", 12253 id: "lobe-icons-gemini-fill-1", 12254 x1: "8", 12255 x2: "11.5", 12256 y1: "5.5", 12257 y2: "11", 12258 children: [ 12259 /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("stop", { stopColor: "#F94543" }), 12260 /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("stop", { offset: "1", stopColor: "#F94543", stopOpacity: "0" }) 12261 ] 12262 } 12263 ), 12264 /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)( 12265 "linearGradient", 12266 { 12267 gradientUnits: "userSpaceOnUse", 12268 id: "lobe-icons-gemini-fill-2", 12269 x1: "3.5", 12270 x2: "17.5", 12271 y1: "13.5", 12272 y2: "12", 12273 children: [ 12274 /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("stop", { stopColor: "#FABC12" }), 12275 /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("stop", { offset: ".46", stopColor: "#FABC12", stopOpacity: "0" }) 12276 ] 12277 } 12278 ) 12279 ] }) 12280 ] 12281 } 12282 ); 12283 12284 // routes/connectors-home/default-connectors.tsx 12285 var import_jsx_runtime42 = __toESM(require_jsx_runtime()); 12286 var { store: connectorsStore } = unlock2(connectorsPrivateApis); 12287 function getConnectorScriptModuleData() { 12288 try { 12289 const script = document.querySelector( 12290 'script[id="wp-script-module-data-options-connectors-wp-admin"]' 12291 ); 12292 if (script instanceof HTMLScriptElement) { 12293 return JSON.parse(script.text); 12294 } 12295 } catch { 12296 } 12297 return {}; 12298 } 12299 function getConnectorData() { 12300 return getConnectorScriptModuleData().connectors ?? {}; 12301 } 12302 function getIsFileModDisabled() { 12303 return !!getConnectorScriptModuleData().isFileModDisabled; 12304 } 12305 var CONNECTOR_LOGOS = { 12306 google: GeminiLogo, 12307 openai: OpenAILogo, 12308 anthropic: ClaudeLogo, 12309 akismet: AkismetLogo 12310 }; 12311 function getConnectorLogo(connectorId, logoUrl) { 12312 if (logoUrl) { 12313 return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("img", { src: logoUrl, alt: "", width: 40, height: 40 }); 12314 } 12315 const Logo = CONNECTOR_LOGOS[connectorId]; 12316 if (Logo) { 12317 return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Logo, {}); 12318 } 12319 return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(DefaultConnectorLogo, {}); 12320 } 12321 var ConnectedBadge = () => /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( 12322 "span", 12323 { 12324 style: { 12325 color: "#345b37", 12326 backgroundColor: "#eff8f0", 12327 padding: "4px 12px", 12328 borderRadius: "2px", 12329 fontSize: "13px", 12330 fontWeight: "var(--wpds-typography-font-weight-emphasis)", 12331 whiteSpace: "nowrap" 12332 }, 12333 children: (0, import_i18n8.__)("Connected") 12334 } 12335 ); 12336 var PluginDirectoryLink = ({ slug }) => /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( 12337 Link, 12338 { 12339 href: (0, import_i18n8.sprintf)( 12340 /* translators: %s: plugin slug. */ 12341 (0, import_i18n8.__)("https://wordpress.org/plugins/%s/"), 12342 slug 12343 ), 12344 openInNewTab: true, 12345 children: (0, import_i18n8.__)("Learn more") 12346 } 12347 ); 12348 var UnavailableActionBadge = () => /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Badge, { children: (0, import_i18n8.__)("Not available") }); 12349 function ConnectorActionArea({ 12350 isConnected, 12351 showUnavailableBadge, 12352 pluginSlug, 12353 isExpanded, 12354 isBusy, 12355 pluginStatus, 12356 actionButtonRef, 12357 handleButtonClick, 12358 getButtonLabel 12359 }) { 12360 return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(import_components2.__experimentalHStack, { spacing: 3, expanded: false, children: [ 12361 isConnected && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(ConnectedBadge, {}), 12362 showUnavailableBadge && (pluginSlug ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(PluginDirectoryLink, { slug: pluginSlug }) : /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(UnavailableActionBadge, {})), 12363 !showUnavailableBadge && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( 12364 import_components2.Button, 12365 { 12366 ref: actionButtonRef, 12367 variant: isExpanded || isConnected ? "tertiary" : "secondary", 12368 size: "compact", 12369 onClick: handleButtonClick, 12370 disabled: pluginStatus === "checking" || isBusy, 12371 isBusy, 12372 accessibleWhenDisabled: true, 12373 children: getButtonLabel() 12374 } 12375 ) 12376 ] }); 12377 } 12378 function getPluginSlug(pluginFile) { 12379 const pluginBasename = pluginFile?.replace(/\.php$/, ""); 12380 return pluginBasename?.includes("/") ? pluginBasename.split("/")[0] : pluginBasename; 12381 } 12382 function ApiKeyConnector({ 12383 name, 12384 description, 12385 logo, 12386 authentication, 12387 plugin 12388 }) { 12389 const auth = authentication?.method === "api_key" ? authentication : void 0; 12390 const settingName = auth?.settingName ?? ""; 12391 const helpUrl = auth?.credentialsUrl ?? void 0; 12392 const pluginSlug = getPluginSlug(plugin?.file); 12393 const { 12394 pluginStatus, 12395 canInstallPlugins, 12396 canActivatePlugins, 12397 isExpanded, 12398 setIsExpanded, 12399 isBusy, 12400 isConnected, 12401 currentApiKey, 12402 hasResolvedSettings, 12403 keySource, 12404 handleButtonClick, 12405 getButtonLabel, 12406 saveApiKey, 12407 removeApiKey 12408 } = useConnectorPlugin({ 12409 file: plugin?.file, 12410 settingName, 12411 connectorName: name, 12412 isInstalled: plugin?.isInstalled, 12413 isActivated: plugin?.isActivated, 12414 keySource: auth?.keySource, 12415 initialIsConnected: auth?.isConnected 12416 }); 12417 const isExternallyConfigured = keySource === "env" || keySource === "constant"; 12418 const isReadOnly = isConnected || isExternallyConfigured || !!currentApiKey; 12419 const showUnavailableBadge = pluginStatus === "not-installed" && canInstallPlugins === false || pluginStatus === "inactive" && canActivatePlugins === false; 12420 const actionButtonRef = (0, import_element35.useRef)(null); 12421 return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( 12422 ConnectorItem, 12423 { 12424 className: pluginSlug ? `connector-item--$pluginSlug}` : void 0, 12425 logo, 12426 name, 12427 description, 12428 actionArea: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( 12429 ConnectorActionArea, 12430 { 12431 isConnected, 12432 showUnavailableBadge, 12433 pluginSlug, 12434 isExpanded, 12435 isBusy, 12436 pluginStatus, 12437 actionButtonRef, 12438 handleButtonClick, 12439 getButtonLabel 12440 } 12441 ), 12442 children: isExpanded && pluginStatus === "active" && hasResolvedSettings && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( 12443 DefaultConnectorSettings, 12444 { 12445 initialValue: isExternallyConfigured ? "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022" : currentApiKey, 12446 helpUrl, 12447 readOnly: isReadOnly, 12448 keySource, 12449 onRemove: isExternallyConfigured ? void 0 : async () => { 12450 await removeApiKey(); 12451 actionButtonRef.current?.focus(); 12452 }, 12453 onSave: async (apiKey) => { 12454 await saveApiKey(apiKey); 12455 setIsExpanded(false); 12456 actionButtonRef.current?.focus(); 12457 } 12458 }, 12459 isReadOnly ? "read-only" : "setup" 12460 ) 12461 } 12462 ); 12463 } 12464 function ApplicationPasswordConnector({ 12465 name, 12466 description, 12467 logo, 12468 authentication, 12469 plugin 12470 }) { 12471 const auth = authentication?.method === "application_password" ? authentication : void 0; 12472 const settingName = auth?.settingName ?? ""; 12473 const helpUrl = auth?.credentialsUrl ?? void 0; 12474 const pluginSlug = getPluginSlug(plugin?.file); 12475 const { 12476 pluginStatus, 12477 canInstallPlugins, 12478 canActivatePlugins, 12479 isExpanded, 12480 setIsExpanded, 12481 isBusy, 12482 isConnected, 12483 currentUsername, 12484 hasResolvedSettings, 12485 keySource, 12486 handleButtonClick, 12487 getButtonLabel, 12488 saveCredentials, 12489 removeCredentials 12490 } = useConnectorPlugin({ 12491 file: plugin?.file, 12492 settingName, 12493 connectorName: name, 12494 isInstalled: plugin?.isInstalled, 12495 isActivated: plugin?.isActivated, 12496 keySource: auth?.keySource, 12497 initialIsConnected: auth?.isConnected 12498 }); 12499 const isExternallyConfigured = keySource === "env" || keySource === "constant"; 12500 const actionButtonRef = (0, import_element35.useRef)(null); 12501 const showUnavailableBadge = pluginStatus === "not-installed" && canInstallPlugins === false || pluginStatus === "inactive" && canActivatePlugins === false; 12502 return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( 12503 ConnectorItem, 12504 { 12505 className: pluginSlug ? `connector-item--$pluginSlug}` : void 0, 12506 logo, 12507 name, 12508 description, 12509 actionArea: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( 12510 ConnectorActionArea, 12511 { 12512 isConnected, 12513 showUnavailableBadge, 12514 pluginSlug, 12515 isExpanded, 12516 isBusy, 12517 pluginStatus, 12518 actionButtonRef, 12519 handleButtonClick, 12520 getButtonLabel 12521 } 12522 ), 12523 children: isExpanded && pluginStatus === "active" && hasResolvedSettings && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( 12524 ApplicationPasswordConnectorSettings, 12525 { 12526 initialUsername: isExternallyConfigured ? "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022" : currentUsername, 12527 helpUrl, 12528 readOnly: isConnected || isExternallyConfigured, 12529 keySource, 12530 onRemove: isExternallyConfigured ? void 0 : async () => { 12531 await removeCredentials(); 12532 actionButtonRef.current?.focus(); 12533 }, 12534 onSave: async (credentials) => { 12535 await saveCredentials(credentials); 12536 setIsExpanded(false); 12537 actionButtonRef.current?.focus(); 12538 } 12539 }, 12540 isConnected ? "connected" : "setup" 12541 ) 12542 } 12543 ); 12544 } 12545 function registerDefaultConnectors() { 12546 const connectors = getConnectorData(); 12547 const sanitize = (s) => s.replace(/[^a-z0-9-_]/gi, "-"); 12548 for (const [connectorId, data] of Object.entries(connectors)) { 12549 if (connectorId === "akismet" && !data.plugin?.isInstalled) { 12550 continue; 12551 } 12552 const { authentication } = data; 12553 const connectorName = sanitize(connectorId); 12554 const args = { 12555 name: data.name, 12556 description: data.description, 12557 type: data.type, 12558 logo: getConnectorLogo(connectorId, data.logoUrl), 12559 authentication, 12560 plugin: data.plugin 12561 }; 12562 const existing = unlock2((0, import_data2.select)(connectorsStore)).getConnector( 12563 connectorName 12564 ); 12565 if (authentication.method === "api_key" && !existing?.render) { 12566 args.render = ApiKeyConnector; 12567 } else if (authentication.method === "application_password" && !existing?.render) { 12568 args.render = ApplicationPasswordConnector; 12569 } 12570 registerConnector(connectorName, args); 12571 } 12572 } 12573 12574 // routes/connectors-home/wp-logo-decoration.tsx 12575 var import_jsx_runtime43 = __toESM(require_jsx_runtime()); 12576 function WpLogoDecoration() { 12577 return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { className: "ai-plugin-callout__decoration", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( 12578 "svg", 12579 { 12580 viewBox: "0 0 248 248", 12581 xmlns: "http://www.w3.org/2000/svg", 12582 xmlnsXlink: "http://www.w3.org/1999/xlink", 12583 focusable: "false", 12584 style: { width: "100%", height: "100%" }, 12585 children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( 12586 "image", 12587 { 12588 href: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAYAAAB5fY51AAAQAElEQVR4AezdC3ojWW5tYflOzPbIbI/M9sh8+WdrdZ+KpiiKL5FB5KedwN7AeSFIpHRYmfX/PubXVGAqMBV4kQpMw3qRBzXbnApMBT4+pmHNq2AqMBV4mQpMw3qZR3X9RmeGqcCrV2Aa1qs/wdn/VOCNKjAN640e9hx1KvDqFZiG9epPcPY/FThWgZ1q07B2+mDnWFOBPVZgGtYen+qcaSqw0wpMw9rpg51jTQX2WIFpWMee6mhTganAU1ZgGtZTPpbZ1FRgKnCsAtOwjlVltKnAVOApKzAN6ykfy2zqcRWYlV6pAtOwXulpzV6nAm9egWlYb/4CmONPBV6pAtOwXulpve9e//Nw9P/7xL8d7Hy9aQWubFhvWrU59qMr8D+HBcPBna93rcA0rHd98q91bs3q3w9bBv7Bna93rMA0rHd86nPmqcCLVmAa1os+uF/Y9m8u6Q7rvw8bgLnDOhTiXb+mYb3rk3+tc//rYbsaVTjQP18amct4+h9hftt3BaZh7fv57v107rNg7+ec831WYBrWZyHGPHUF/vewu//6xNqg+HMRfyjMrb+edb5pWM/6ZGZfawX86Bc0qTU2/htVYBrWGz3sOepU4NUrMA3r1Z/g7H8q8EYVmIZ1h4c9U04FpgL3qcA0rPvUdWadCkwF7lCBaVh3KOpMORWYCtynAtOw7lPXmfVdKjDnfGgFpmE9tNyz2FRgKnBNBaZhXVO9GTsVmAo8tALTsB5a7llsKjAVuKYCv9uwrtn5jJ0KTAXergLTsN7ukc+BpwKvW4FpWK/77GbnU4G3q8A0rLd75L914Fl3KnB9BaZhXV/DmWEqMBV4UAWmYT2o0LPMVGAqcH0FpmFdX8OZYSowFfhrBe7GpmHdrbQz8VRgKnDrCkzDunVFZ76pwFTgbhWYhnW30s7EU4GpwK0rMA3r1hW9fr6ZYSowFfiiAtOwvijMyFOBqcDzVWAa1vM9k9nRVGAq8EUFpmF9UZiRpwKPqMCs8bMKTMP6Wb0meyowFfjFCkzD+sXiz9JTganAzyowDetn9ZrsqcBU4Bcr8NIN6xfrNktPBaYCv1CBaVi/UPRZciowFbisAtOwLqvbjJoKTAV+oQLTsH6h6LPkBRWYIVOBQwWmYR2KMF9TganAa1RgGtZrPKfZ5VRgKnCowDSsQxHmayowFXimCny9l2lYX9dmIlOBqcCTVWAa1pM9kNnOVGAq8HUFpmF9XZuJTAWmAk9WgWlYT/ZArt/OzDAV2G8FpmHt99nOyaYCu6vANKzdPdK7HOjfDrP+9yf4B/fP138efoeDma+pwP0rMA3r/jXewwqaVFjP8x8HAmIHd74eXIG3W24a1ts98pse+H8Os8HBzNdU4P4VmIZ1/xrvYQU/9v3L4SCwNqh/P2iwagdpvqYC96nANKz71HVmnQpMBe5QgXduWHco526n9B3W9tJ91fi7Pfwc7HkqMA3reZ7FM+/kXw+bc7EeDvTPV1z8jzC/TQXuWYFpWPes7sw9FZgK3LQC07BuWs7dTva/h5P91ye6YGfT2EP4eb9mZ/uowDSsfTzHe5/CHVXQqKzHbjX6YCpwtwpMw7pbaX808f8dsoN7oQOdr6nAVGBbgWlY24o8hvvEzXcnp1YTl3cq51ExTdRe7GldE6ev2vhTgbtV4KyGdbfV33diDeC7T9bE5T1LlezFntb94PRVG38qcLcKTMO6W2lPTuy/GPdfiJfED+6G6Lg8/m/Dnuxne7lOe5Y9/naNZv0HVGAa1gOKfMYSGkI4I/1XUp59f79SlFn0sRWYhvXYereaex/3PyunQT9iiePlPMbOKlOBJ67ANKzfeTiakvufVsdDmjgtPnYq8PYVmIb1Oy8B9z7uf06tLi7vVM7EpgJvVYFpWM/xuF1mB3dFz7Gr2cXOK/B6x5uG9RzPzH1VeI4dzS6mAk9YgWlYT/hQZktTganA8QpMwzpel1GnAlOBJ6zANKyLH8oMnApMBR5dgWlYj674rDcVmApcXIFpWBeXbgZOBaYCj67ANKxHV3zWe8UKzJ6fpALTsJ7kQcw2pgJTge8rMA3r+xpNxlRgKvAkFZiG9SQPYrYxFZgKfF+BRzSs73cxGVOBqcBU4IwKTMM6o0iTMhWYCjxHBaZhPcdzmF1MBaYCZ1RgGtYZRXrSFP9Wln/gD/htEwd/mTqNT4Nyj2ny+7/3sDgYh4NxNBYHcdrH4Tc8HOifL/E044hsmjgN0tj2Ko6DcfLE8EADcfmAg1w64IMXrcA0rNd5cN6Y3njrjnE4pvkHANP58iCNxQO+B3x11v84HA6c9+DO1ytWYBrW6zw1/6Df/FtZlz8vtYPLZ5iRv16BaVi//gjO3sD2zYb7F0mB30Q4aHBpfBqU68cjHPjl4iHNPy5oDljH4yBeLh7SxNN+Mr7cY+PFmpNtLf52/2suv9yx11TgF8ZOw/qFor/gkt7kKzrCJZox9xzf3GN3WIFpWK/xUN27hHbsuyIXyyBGZ/FAgzgrh7aO59PE5AQaiKfJ2WriNCiPPZabxsqBa8ebw9rAD9agmX+r0QcvVoFpWK/xwLzxvOFcGq87pof0OHtKE5MDLqpxwAMO4mksDfggjgMecBBPY2lsEKdBGouDOB5oEGdx4Ac8pLFpY1+sAtOwfuuBXb+uN/H1s9x2hm0zWH/8u+1KM9tbVmAa1ms8dj/SuEh2odyOXUSHtTGksadyjZETjuWm/e/BKc+4A/1g09iPw69j2kH+OHe8XHMF89GOjaeXx+LAD41nt5rcwYtVYBrWiz2wZbvehBoZ8IVYPNAgzuKw5vK32prLD8dy08xRHosDP5TLbrVtLg7lscbRWDzQIM7isObyaYMXrMA0rBd8aN9s2Y9lodQ4m/ZK1r7Duu80Np0f0n7ZzvK3qsA0rFtV8vHzeFP6r9+Bbwesy/lAgzgrh8YaC+t3I3SclRdoEGflbDU6TYwfaBBn5Ww1fN2nPB820ECcZiweaLDmyqGBcSunDV6sAtOwXuyBPWC73tTe9NulaNuLfhqsuY1nV13eOeONMRb4t4Q93HK+mevBFZiG9eCC33i5ay+S3efAui3fibjc3+o06625OH3VjKOZZ9V9aCB/1XC5q2YczTyrfq7vgt5YWMc076qN/2IVeIGG9WIVfdx2vSG9CaFVaRpDSI+zcuisxgDrHMXYFfLhO018m0eDrY6D2AoapNmjvUN7FcdDueLyQU762B1UYBrWDh7iHGEq8C4VmIa1vyfdJbTvNDqdi/Ww3g3JgfKe1TpT+2+/zpHGtne6HEgbu5MKTMPayYNcjuENC9sL7iXl765LaPi78MvOLZZ3dmc65/y3WG/meGAFpmE9sNhPuJQ7HhffT7i1i7fkTODy/eJJZuBzVmAa1nM+l2t21SW0S+fm4Qdv5lV/hR+dNNXt/p0jje1M6a9wrvY89swKTMM6s1AvnuZNHF7xKO092xnibNrYF6nAJduchnVJ1Z57jO8sQjt1aR3c8aS/inWe7f6dI43tLPSQNnYnFZiGtZMHuRzDhTOsl869gdkl9cOna7Bqz+g7i72H9hhnV00DU4O0sTupwDSsnTzIOcZU4B0qMA3rRZ/yiW27gAYX1aXxw3rf0wV9ec9qfeJ3bP9pbHv346NzqUHa2J1UYBrWTh7kcgwNKSR7E4e0V7LtnXU2e2fxQBvsvALTsHb+gD+P544nfEovZdo7u24cD6s+/k4rMA1rfw/WJTq4eO50/OANvtXjz2pdoLd/31HZp3OksTQQx1n89TEn+HsFpmH9vRRv6XjTw94O70w+Wdzbud7+PNOw9vcScLcDLqq/O52Lafgu75Xizu5M60X8K+1/9nqiAtOwThTnRUPerLD+SORTs+AN3dH4EH9W6zztv3PZdxrb3ukhbexOKrD/hrWTBzXHmApMBT4+pmHt71Xgwhn6TsQJXcIH9zs04AP/meE87b9z2Xca2/7pciBt7E4qMA1rJw9yOYY3LJxz6awRwDL85V1n96niOed/+cO+2wGmYb3bE//reXd21/PncJ3pnA8d/gyY316nAtOwXudZnbvTfzkkgovqg/vnix+8of+Ih9/SDu5Tf/nEr722fzaN7QDp8yNhFdmRnYa1o4d54ijexOFE2tOG2nu2jcbZtLE7rsA0rP09XN9ZhE7nniq440l/Fes82/07Rxr7KmeZfV5RgaVhXTHLDH2mCrhwhvXS2Zs7rHutEazaM/rO0v7Z9sgPac7kU8NpYlVkR3Ya1o4e5hzlLxWYS/e/lGMfZBrWPp7jeoouqNl0fljve3w3sl5Yl/9sVvM5tv80tj07kw8d2LSxO6nANKydPMjlGN6omhIk0wLt1dDe2c7F4uHVzjT7vaAC07AuKNoLDumeh33B7X/Yd/hYfqWxizzuXiswDWt/T9aFM6yXzvywvrnTnr0KPkRor76jsl/nSGNpII6z+GBHFZiGtaOHecFRvOnhgqFPPcSZfLL41Jt81Ob2tM40rD09zb+dxd0OuKj+m/L17y7c4euM14v4zsqZ1ov41zvF7PhoBaZhHS3LS4verOCN20F8ahY0s3Q+xJ/VOk/771z2ncauexeDVRt/BxWYhrWDhzhHmAq8SwWmYX3zpF8w7MIZ+k7EEVzCB/c7NOAD/5nhPO2/c9l3Gtv+6XIgbexOKjANaycPcjmGNyycc+msEcAy/OVdZ/ep4jnnf/nDvtsBpmG92xP/63nd88Bf1ddmzgPnfOjw2id9w91Pw9rfQ3cBDS6qOx0/eDNv9fizWp/4bffvHGlse0//+Y+EzTD2aSswDetpH81NN+ZNHG468YMma+/Zlo2zaWN3XIFpWPt7uL6zCJ0uzrrjSX+Utaa1gW9dFg+0r7Dm8strLJs2dscVmIa1v4frwhnWS2c8rCf26Rqs2j381mZrOCwO617pPghg24uckM6mseVqXs5kjrSxO6nA7RrWTgoyx3iaCmhIT7OZ2chzVGAa1nM8h1vuwgV1aN44u973uJyH8u5lfWJnbWh9Fg+tTXeJ7jultGPjxRrL4mCcM5kDH+yoAtOwdvQwP4/iDQve+J/SBx4+fuFXa7Pti8WBf2pbckK5bBp7avzEdlKBaVg7eZDfHMOPV+Gb1HPCP85pbbbB/BXpx+xXeV/px+YYbQcVmIa1g4e4OYILZ1gvnfnBm7wh8mDVil1jfcezzulSvPXFzC2eJk4DcTqLgzgN0tfxdHkgjrP4YEcVmIa1o4f5w6N4w/9wyFnp5tVgzkr+Iskc6yeHX6R9KV87/suJJ/C7FZiG9bv1v8fq7nbARfWp+eW4rIZTeT+NmdeFN/vTsfKNsyfAf4prx/90vb3nP9X5pmE91eO4yWY0C1h/JPKpWfCGbiE5sGrFrrHb+eyn9a1nbjZNnAbGirE4iJcrRhNPY2lAl8Pigx1VYBrWjh7mHGUqsPcKTMPa3xN24Qy+y+h0LtaD+x06Kwfwe8Ia9gTWtRaLgzjtK8hpoPtu7gAAEABJREFU/+Uan8Y2li4H0sbupALTsO77IH9jdm9YOOfS2uU4yL/3Xq0B6zo4nLPXddwp33zOdMs5T603sQdWYBrWA4s9Sz2kAu6u4LsPHR6ymVnkthWYhnXbej7DbC6gwUV1++EHb2Y6Kw/4tHvBj2fWgdZi29N3nwiKl2ucfbJpLA3SrYkPdlSBaVg7epgnjuJNHE6kPTzUnthTi4uvKPeYVuzhdha8fwWmYd2/xo9ewR0OrN9h8INYe+JD/FmtPR7bfxr7rHuffd2wAtOwbljMJ5nKJ2qwXjq7hA5tUxOQB/z0Z7TtnW2vLB7at+blU0PnShu7kwpMw9rJg5xjTAXeoQJP07DeodgPOqML6tCSx+56aC6rgV/uM1qf+NkjrPvDQ7rvsJxJDdLG7qQC07B28iCXY3jDgjdysjdwWHU+lPes1nnaP98+7TuNpQUxiI/dSQWmYe3kQX5zDPc94ZvUpwy3d3bdIB5WffydVmAa1v4erAtnWC+d+cEb3KlZecCnPQY/X8XFevvvOyx7TmObVRxn08bupALTsHbyIOcYf6mAZrZ+SvqX4JDXrcA0rNd9dl/t3N0NuKj+Kocux8U04HvBXs+1l+dz1TmmYV1Vvqcc7AIa1h+J/JWY4A3dxuXAqhV7Jus87d9+7c2e01ga0OWw+OBXK3Dbxadh3baeM9tUYCpwxwpMw7pjcR8wtbsaaCm+S/SQHmflpL+K9R2Ti3Ro/6zzhM4iJ8hJH7uDCkzDeu2H2Bvz0lNoBHDp+EeO03zCqXXLYU/lTewFKzAN66kf2rebc08D3yZ+kaBZXTP+i2lHngrcpwLTsO5T10fN6jIaWk/zwUN6nJWTzm457dmgsdo7tF8WD+05zspJH7uDCkzD2sFD3BzBmzQUirNpr2btPbT3OHtKKzb2xSswDet1H6A7Gt95AL+T4CFNPKTtwXZOtvPwgzNv9VUr9gx29nBGBaZhnVGkJ03xxvNXVoBvmyweaEC/9oLePM8EZ+qc63/Vnsa2Xw0MB+PSx75YBaZhvdgDm+1OBd65AtOwXvfpu7cJ6ynS2HTfYbiEhrQ9WH+tKHQe515Bx8vj0wYvWIG9NKwXLP3VW/bG04BAQzLhqtFpQQzir26dxbmB33mcO6SJywN++tgXq8A0rBd7YMt23cWERf5IYz/u+Mv8K1rqmFbsEfbY+se0R+xl1rhxBaZh3bigd5rOhfn2r6B4E9LBdw6WXjU67RZo3tYxZ5p1XGbTAA84GNf+jaMBH/iXwFhzs41vbTadxUF+uXScTRv7xBWYhvXED+fJtuZNvX4ad4vtmVMT+dFcS7Lxa7NcQme5144/a5FJul0FpmHdrpb3nMm/beXuBe65zqm5u7Q+lXMqZu+w5vjuZv2nYdbYOb753Fex5+Rvc6x/zfjtfMPvXIFpWHcu8I2m743lzdWUNG924NO9cfFAuwXMaw22+fDWWfeVxq65cmCdo/il1lywjrduKLbulb/ml7Nq4z9pBaZhPemDmW1NBaYCHx8fmyJMw9oU5AmoexXfBbBtpwtrNl2O+x9IK/8aay5Y57CGtcG6YiwO4jTAAw7iacbRrEGHNPq1MJc5oblop9Zfcxsz9gkrMA3r+R6KS2Twhv5ud3JCubg3aPyn1nhvYPanY3+abw245WW+ucwJ3+1HTvgud+JPUIFpWE/wEDZb6IJ9I59N3cnA2QM2ica6YGc3oaFTgd+twDSs363/sdV9d+Rymi2OhxqJ+FYr/285sZ9ZY829jtLAtmvJSRMvP41NE8fB/HQWB3HaLWAuc0LzrXu1Lp2VE2iDJ6/ANKwnf0Cf2/PmCp/SH5PG/hHu9Jv5V7TMJZoxp8YXu9SaP6xzpLHp/JA29okrMA3r+R6O7wZCu4uz7lzS+RC/hbVGaD5rpPHpbBpLA37AYc3lbzX5tHvBmtYAfuvgIU08jZ8+9gkqMA3rdx+CNwS0C74L95AeZ9PkuhwHfvq11hqhueJsa7E4uOg+lntMM47OGgvrePqtz2RO6wB/uz6dBvyAvwjeY5vTsH73OXvzwLFd+FHlmH5P7au93HPNY3PbBxyLjfbGFZiG9bsPvx891l1oVODTwnQ8rFoXxmLp11qX1qG57MUakMYP4sf0NPFy0+Ks+Kr7L9XVJu1aa43OxG8+fkizl2O5xcf+YgWmYf1i8Y8s7c1TE1rfsGmsnIbyIX6tNZd1Q/Ph1gY+XS4OaXQ84CCexqd9NV7s1rCWdYFvfrY9sTSQE/DBE1VgGtafh/FUv/lRKLSxOJt2L2uN0Bpx9pj2lX4q15gV5T7SHlv/mPbIPc1aJyowDetEce4c8qf4uX9dxCV08IZqa3yIX2vN1Tps87mExsG+6WuuOA3kBBzE04yjsWniNDA/ncVvAWtVa745WesEGsRZOTTg33JP5hz8sALTsH5YsCdL9yaCJ9vWVdvxiaEzsVdNdOPBmirceNqZ7icVmIb1k2rdNtcdSrh0Zn/iw6Xjn3GcS291YW+5P3PCpXO6iF/vui6dZ8ZdUYFpWFcU78qh3jzeAFDTofmELLREnJWTfmtrbmuE5rfHtPbKpomXm8amieNgHJ3FQZwGdJzFbwHnMifwzclaO9AgzsqhAR/4g1+qwDSsXyr8LDsVmAr8vALTsH5es0tGuJPxHQM0nu9iF8TpLB5oEGfl0G453lzmNLc1Ag3E0+RsNXEalMfiII7DT8Yfy01jzResA3FWDu3Y+mJygjyIs3Jo63g+bfALFfhpw/qFLe5iSZe1sF4k870hQgeNs6c0MTkBhziLAz/gIc1etppYmjge0uPiW00sTRwP6XHxrSaWJo6H9Dh7ShOTE3CIszjwAx7S7CVt7IMrMA3rwQWf5aYCU4HLKzAN6/La/WSky16XuGzj+tSJ1mUui4dy46wcuh9NcEhj8SAP4qwc2jreXmhicgINxNPk0I6Np5fH4nDp+NY6Nl7MGsE6EGfl0Na9prFygjyIs3Jo63h7oQ1+oQLTsH6h6J9LejOs+JQ/ztU+Dr/OzT2Wdxj+cUz/u/bxj1+rxi/CD+dq8s/NPZZ3yXjzGBdwiLM48AMe0ti0sQ+uwDSsxxTcn9DBXYhV2a1GT2Nx4AfjaOxWo6exOPCDcTQ2jaUBP+Cw5vK3mnwa8AMOxqTxaZDG4sAP5bJbbZuLQ3mscTQWBz4N8IBDnC2XxYM8iLP44M4VmIZ15wJ/Tu/CPXxKH3HWG4LO4oEGcRaHNZe/1dZcfpAHxqR1kbxqYvKAH+TQ2LTG09NYOV9p3uRy4KvxxoKc0JxsGisP+AGHNZe/1eTTgB9wMCbtu73KH9ypAtOw7lTYN53WG/tNj/7ix36R7U/DesyDcu+xwqr+6kkaHtLYn2ryjQs4xFkc+MFeaJDG4iCOAw78IL7VitHFV06Ls+I0wAMO4luNnsbiwA84xFk84OFczV7KdQEf0sbesQLTsO5Y3GVqnziFZD8SpfHp3jxpLA34QQ6NTbv3ePOfWkvcnqA8FgdxHPi0Y/unywlyaMak8WliaSwN+EEOjU271XjzmivggztXYBrWnQv8Ob0flcKn9BHPfnz+irOf0gc/fCy/0thkfjiliZXH4sAPOMSzNIizOPADDvEsDeIsDvyAQzxLgziLAz/gIY39qSbfuIBDnMUHd67ANKxbFPgfc3jh9u8u+ZO3iL/mEeTQXeJuNbE0Vh7wgxya+beaWBorD/hBDm0dby80sfJYGojjIId2bDxdTsDh0vGtdWy8WOuw1gF+kENb95rGlsfKA36QQ1vH2wtNrDyWFsTyx96wAtOwbljMmWoq8FkBDUyT+6RjblWBaVi3quQ/5nFfEv6hjvdOFfC3GrwG3unMDznrNKzbltmLtMtdfrN7AYd0eWn9aSyWxp4ab4wc4Mu9dLy9nBovbh1oLRYHceMBDziIpxlHY9PEaZDGOg9NHAfjaGJ4oEGclUMzBgc+TQwPNIizcmjG4P/y8fFhLzSxNJa2Qnzl49+gAtOwblDEmWIqMBV4TAWmYV1XZ5er0Cz+JHZ/Afx0PJQvvtXE0thHjbcXa321vrj9gBy5q8angZyAg3jaT8Yfy01jm5O1DvCDHNqx9cXKY+UBP8ihreP5NLHyWBqI4yCHNrhRBaZhXV5IL0Yvyj41aiY6rH+FAw/liaex6fxwShMrj8WBH3CIs3jAwV62Gj1NHA/pcfGtJpYmjof0uPhWE0sTx0N6nD2lickJOMRZHPgBD2n2stXE0sRxSBt7owo8uGHdaNfPM417ivW/fH6enc1OpgI7rMA0rMsfqmblAtaPAM1C669qsOn8IIeu0W01epq5cUhjG8/iwJcHOPxkvHxjgR9wOLZXa5bHygN+wOHS8db4ajy9dVgc+KHx7Fbb5uJQHmscjcUDDeIsDny1B+NogxtVYBrWjQr5OY0XqAYG/E/5Aw8fn7/ibLksDvzP1A88fHz+Ek/jk9mtRk9jcTiWu2prLj/I+Wo8vTwWB364x3hzWwf4AQdrpvG3mhgN+AEHY9L4W02MBuIBH9ywAtOwLi+mOwovVOCbicUDDeKsHBqLA58GeMAhzpbL4sCXB3jAIc6Wy+JBHsRZHNZc/lZbc/kA8sAYHPhbjU4DfjiWm7bNxaGxbLksDnx5gAcc4my5LB7kQZzFYc3lb7U1V2zwgwpMw/pBsTapLtvD+sJMc/nakDT2mHZs/Fe5jTdGDvDpLB5oEGdxWHPb66qtufwg56vx9PJYHPjhHuPNbR3gBxysmcbfamI04AccjEm7Za3MPfhBBaZh/aBYkzoVmAr8bgWmYV1efxfJ27uKOCve7HhIE99qYmksDvyAQ5zFAx7O1ezlVK74qTnFHz3eeu2JxYEfcIizeMDDudotz9qaL28fdYBpWJdX2l2ET4KAbyYvfhzS6HiQQxNP49PE0lga8IMcGpt27/HmP7WWuD1BeSwO4jjwacf2T5cT5NCMSePTxNJYGvCDHBqbdu/x5j+1lrg9DS6owDSsC4r2OcS9xopP+eMSzZiPz1/88Cl9xNmP5RcekuPsKU1MTsAhzuLAX0GDSzRjjAV+wCHO4sBfQYNztZ/kHpvz0vHmMhb4AR9cUIFpWOcVzZ+K/qt2thEuYWnghUgXx0GcBngoV3yriaWxxgI/yKGta6Wx5bHygB/k0Nbx9kITK4+lgTgOcmjHxtPlBBwuHd9ax8aLtQ5rHeAHObR1r2lseaw84Ac5tHW8vdDEymNpII6DHNqx8fTBDyswDeu8gvlkyIuPPW/ED7Im9a0r4B98fOsC/OTw07DOq5aLVvcg7HkjJmsqcF4Fjv3TNOeNfMOsaVjnPXTf0rtIZRuBe7FBOouDeLl40Pjo4mnG0cTSWBrwgxyaMWl8mlgaSwN+kEMzJs1eaGJpLA3EcTCOxuIgTgM84CCeZhyNTROnQRprPzRxHIyjieGBBnFWDs0YHPg0MTzQIM7KoRmDg73QxPBAA/E042hsmjhtcEEFpmFdUFjYef8AAA5ZSURBVLQZMhW4uAIz8KoKTMP65/K5q4I14gI1FPOn5ilNvDnKY0+NF5MTHjW+vX61vnh7kmNfq8anQXksDuI4/GT8sdw01nzBOhBn5dCOrS8mJ8iDOCuHto7n08TkBBqIp8nZauI0KI/FB99UYBrWPxfIiwd6scngBxxcwKexNOCDOA54wEE8jaUBP+AQZ/GAh59q8htrLziksTiI44EGcXEc0lgcxPFAg7g4DmksDuJ4oEGcxYEf8JDG/lSTbxzYCw54wEE8jaUBH8RxwAM++KYC07C+KdCEpwJTgeepwGs1rMfUrctRl6qt6N84Cuk+MdxqYmnsT8fLNw7Wy1k8WEMeu9XoaSwO/GAcjU1jacAPOFx6VmPh0vH2+NV4evtkceCD+jWepQFfHuABhzhbLosHeRBncfjJWe0xGDv4pgLTsL4p0GfYvUP4lD7irBf0x+EXiwP/IP35wsMf4fBbnC2XxYF/SPvzhYc/wuE38TT+Qfpg09iPz1/88Cl9rLn8j8Mvtjz2IP354gc5RHar0dNYHPjBOBq71ehpLA78YByNTWNpwAdxHPg04G81Og34AQdj0vhbTYwG/HAsN00uP+CDbyowDeuvBXKf0IuNLcoPcujsVqOnsTjwg3E0dqvR01gc+ME4GrvV6GksDvxgHI1NY2nADzisufytJp8G/ICDMWl8GqSxOPBDuexW2+biUB5rHI3FgU8DPOAgnsbfamI04AccjEnjbzUxGvADDsYEfLBUYBrWUoyD64Xir1bAejmKh0Pan684axzRiw+HS8abx9hgToizOKy5/K225vKDPDAmrb2umpg84Ac5NDat8fQ0Fgd+MI72Ta0+5MsDfmg8m8bKA37AYc3lbzX5NOAHHIxJ66yrJiYP+EEOjU1rPD2NxUGuD30AHywVmIa1FONM17fwZ6ZO2gtWQMN4wW2/x5anYf31OWtGweVp0TQ2TRyHNH4QP6aniZebxqaxOPADDnEWD3g4V7OXU7nip+YUf/R467UnFgd+wCHO4gEP52r3Pqv9uMSH9jT2swLTsD4L8Wm8WPrUxo8sn/Kf/z15epp4Gp9+zng5co05NV5MHvBD49k0c8lbNTEa8IMcGpv23XjxU7ni5oTyWBzEceDTjq1PlxPk0IxJ49PE0lga8IMcGpt27/HmP7WWuD1BeSwO9ioH8HfA2WechvXPpfIjQSgaZ49pX+nHco9pl4w3j3EBhziLAz/gIY09V/tJ7rE5f2O8fVg34BBnceAHPKSx52o/yT025zq++Fvbd29Y/hSDXgR8l52wXoTioVzxtF5Y54wv99h4seZkW4sf5NDXtdLY8lh5wA9yaOt4e6GJlcfSQBwHObRj4+lyAg6Xjm+tY+PFWoe1DvCDHNq61zS2PFYeHFtrHS8u79rx5rBuwMH8adagDT4r8M4Ny4vBi2P91OazLGOmAlOBZ6zAOzcsz8PFJvBfFbPv21bAH2S3nXFmu1kF3rlhdbnJVlDf+vdXc9aL0DS2XHEcjKOzOIjTAA+tJ55mnDyxNJYG/CCHZkwanyaWxtKAH+TQjEmzF5pYGksDcRyMo7E4iNMADziIpxlHY9PEaZDG2g9NHAfjaGJ4oEGclUMzBgc+TQwPNIizcmjG4GAvNDE80EA8zTgamyZOgzQWB3EcjKMNPivwzg3rswRjpgJTgVepwDs3LH96bS83V43fcyyPTRPHoR8jVo1frpxwLDeNLY991Pj2+tX64vYDcuxr1fg0kBNwEE/7yfhjuWlsc7LWAX6QQzu2vlh5rDw4lrtqfHnXjjeHdQMO5k+zBg3o/3lwVu1A3+vrnRuWy3YPP/Tk4+JbTSxNHA/pcfGtJpYmjof0OHtKE5MTcIizOPADHtLsZauJpYnjIT0uvtXE0sTxkB4X32piaeJ4SI+zpzQxOQGHOIvDuhYe5ID4VqOnieMhPS6+1cTSxPGQ7gMioKe9nX3nhvV2D3sOfFYF3rohnFWhX0x654blr1j4hBBcoHoMLB5oEGdxuHS8Nb4aT7dGwCHONp7FgS8P8IBDnC2XxYM8iLM4XHpWY+HS8fb41Xi6PQYc4i6vG8+m8+VBGosDP5TLprHygB9wuPSsxsKx8XSX8OBHQ/wt8VYNa/OEPfjgBSnMbjV6GosDPxhHY7caPY3FgR+Mo7FpLA34AYc1l7/V5NOAH3AwJo2/1cRowA/HctO2uTg0li2XxYEvD/CAQ5wtl8WDPIiL48Df6qsmJg/4AYc1l7/V5NOAH47lpm1zcWgsu+aKvT3epWH5Nj/00HEvCuDTWTzQIM7KobE48LcanQb8cCw3bZuLQ2PZclkc+PIADzjE2XJZPMiDOIvDmsvfamsuP8gDY9L4W02MBvxwLDdtm4tDY9lyWRz48gAPOIin8beaGA34AQdj0vhbTYwG/ICDMWn8rSZGe0u8S8PqUxe2B+0CM6wvjDSXn8dyj2n3GG8fx9ZKs6Yc4NNZPNAgzuKw5nbWVVtz+UHOV+Pp5bE48MM9xpvbOsAPOFgzjb/VxGjgNYIDDsbg8Ey1sre3wrs0rLd6qHPYj4+PKcIuK/AuDauLUbYH6XLTHQGk8YP4MT1NvNy0OCt+TE8TlwdpLB5wiLM48AMe0thzNXs5lStuPjiWJ35MTxM3FtL4QfyYniZebhqbxuLADzjEWTzg4VzNXk7lip+aU/xW45vnbey7NCw/94ceLu6TJODTvdBwSKPjQQ5NPI1PE9tq9DRWDs0YHPg0MTzQIM7KobE43Hu8+a0D/K/Wp8sJOBiTxqcd2z+9PFYOzRgc+DQxPNAgzsqhsTjce7z5rQP8r9anywk4GJPGpx3bP/3t8C4N6+0e7Bx4KrDHChxvWPs7qYtU6E8sJ8T/7+BAOouD+CH85wsPLmCJ4mnG0dg0cRqksafGi8kJxkKclUNb1+LTxOQEGsRZOTRjcGivYniQB+JpxtHYNHEapLE4iONgHI3FQZwGeLAfmniacTSxNJYG/CCHZkwanyaWxtKAH+TQjEmzF5pYGksDcRyMo7E4iNMADziIpxlHY9PEaW+Jd2lYXlzQJzxv+bDn0FOBV6/AuzQsdwCwXni++rOb/U8F3q4C79KwtpeYHjTNX3UA33LTWBzEaYAHjY8mnmYcjU0Tp0Eae2q8mJxgLMRZObR1LT5NTE6gQZyVQzPmXz4+PmjtVQwP8kA8zTgamyZOgzQWB3EcjKOxOIjTAA/2QxNPM44mlsbSgB/k0IxJ49PE0lga8IMcmjFp9kITS2NpII6DcTQWB3Ea4AEH8TTjaGyaOO0t8S4N6y0f7hx6KrC3Crxzw/KnlgtMcL/l2a4anwZywrHcNLa8a8ebx9rAD9agmX+riaWx8oAf5NDW8XyaWHksDcRxkLPVxGkgJ+AgnvaT8cdy09jmZK0D/CCHdmx9sfJYecAPcmjreD5NrDyWBuI4yNlq4jSQE3AQT2s8nQ/8t8U7NywX8F4AsL4AcBBPx0OaeBpLZ4M4DdJYHMTxQIM4iwM/4CGN/akm3ziwFxzwgIN4GksDPojjgAccxNNYGvBBHAc84CCextKAH3CIs3jAw081+Y21FxzSWBzE8UCDuDgOaSwO4niggb8WpJHR8Uvw8mPeuWG9/MObA7xVBXxg5N7srQ69Pew7Nyx/TccFJvRCYOmhesVZOXQvIBzSWDzIgzgrh3ZsPF1OwCHONp7FgS8PcHAuHPBQLpvGygN+wOHYXh8x3hpfrU9vnywO/NB4dqttc3EojzWOxuKBBnEWh3vUyrx+VPRM7QV/S7xzw/LgQw8f98IAfjoejmnlsuXxj+Ue08plG88ey01bc/l01jjg0wAPOIin8beaGA344Vhu2jYXh8ay5bI48OUBHnCIs+WyeJAHcRaHNZe/1dZcfpAHxqTxt5oYDfjhWG7aNheHxrJrrtjb450b1rGH735gRTlePEGczp7SxOQBPxhHY7caPY3FgR+Mo7FbjZ7G4sAPxtHYNJYG/IDDmsvfavJpwA84GJPG32piNOCHY7lp21wcGsuWy+LAlwd4wCHOlsviQR7EWRzWXP5WW3P5QR4YE/DBUoFpWEsxDq4XiotNcMl5kP588cMf4fBbnDXuIH2wOLg8/fj8hYdP6SPOGkdn8UCDOIvDmsvfamsuP8gDY9La66qJyQN+kENj0xpPT2Nx4AfjaGzatePNY07gBxzWtfhbTT4N+AEHY9La66qJyQN+kENj0xpPT2NxkOv1B3za4LMC07A+CzFmKjAVeP4KTMP66zNyZxBcnhZNY9PEcUjjB/Fjepp4uWlsGosDP+AQZ/GAh3M1ezmVK35qTvFHj7dee2Jx4Acc4iwe8PAX7UDoB/Pnix/ufVbruMQH/p8NzG9/q8A0rL/Vod+9QHwSA+4W0vEghy6exqeJbTV6GiuHZgwOfJoYHmgQZ+XQWBzuPd781gH+V+vT5QQcjEnj047tn14eK4dmDA58mhgeaBBn5dBYHO493vzWAf5X69PlBBzs1TjAB0sFpmEtxRh3KjAVeO4KTMN67ufzTLv7yQXwT3Kf6YyzlyevwF0a1pOfebZ3ugKajX8sbpvlkyyxVceP/ejiE641b/ypwE0qMA3rJmXc1STuUPxTJttDuWsRW3X8WMM6Nn4dN/5U4KIKTMO6qGwzaCowFfiNCkzD+o2q72nNOctU4IEVmIb1wGLPUlOBqcB1FZiGdV39ZvRUYCrwwApMw3pgsWepqcBrV+D3dz8N6/efwexgKjAVOLMC07DOLNSkTQWmAr9fgWlYv/8MZgdTganAmRWYhnVmoa5PmxmmAlOBayswDevaCs74qcBU4GEVmIb1sFLPQlOBqcC1FZiGdW0FZ/xU4J8rMMqdKjAN606FnWmnAlOB21dgGtbtazozTgWmAneqwDSsOxV2pp0KTAVuX4H/DwAA//9sB2hHAAAABklEQVQDAB9QlitZA9bLAAAAAElFTkSuQmCC", 12589 width: "248", 12590 height: "248", 12591 style: { mixBlendMode: "multiply" } 12592 } 12593 ) 12594 } 12595 ) }); 12596 } 12597 12598 // routes/connectors-home/ai-plugin-callout.tsx 12599 var import_jsx_runtime44 = __toESM(require_jsx_runtime()); 12600 var AI_PLUGIN_SLUG = "ai"; 12601 var AI_PLUGIN_PAGE_SLUG = "ai-wp-admin"; 12602 var AI_PLUGIN_ID = "ai/ai"; 12603 var AI_PLUGIN_URL = "https://wordpress.org/plugins/ai/"; 12604 var connectorDataValues = Object.values(getConnectorData()); 12605 var hasAiProviders = connectorDataValues.some( 12606 (c) => c.type === "ai_provider" 12607 ); 12608 var aiProviderSettingNames = []; 12609 for (const c of connectorDataValues) { 12610 if (c.type === "ai_provider" && c.authentication.method === "api_key") { 12611 aiProviderSettingNames.push(c.authentication.settingName); 12612 } 12613 } 12614 function AiPluginCallout() { 12615 const [isBusy, setIsBusy] = (0, import_element36.useState)(false); 12616 const [justActivated, setJustActivated] = (0, import_element36.useState)(false); 12617 const actionButtonRef = (0, import_element36.useRef)(null); 12618 (0, import_element36.useEffect)(() => { 12619 if (justActivated) { 12620 actionButtonRef.current?.focus(); 12621 } 12622 }, [justActivated]); 12623 const initialHasConnectedProvider = (0, import_element36.useRef)( 12624 connectorDataValues.some( 12625 (c) => c.type === "ai_provider" && c.authentication.method === "api_key" && c.authentication.isConnected 12626 ) 12627 ).current; 12628 const { 12629 pluginStatus, 12630 canInstallPlugins, 12631 canManagePlugins, 12632 hasConnectedProvider 12633 } = (0, import_data3.useSelect)((select2) => { 12634 const store2 = select2(import_core_data2.store); 12635 const canCreate = !!store2.canUser("create", { 12636 kind: "root", 12637 name: "plugin" 12638 }); 12639 const siteSettings = store2.getEntityRecord("root", "site"); 12640 const hasConnected = initialHasConnectedProvider || aiProviderSettingNames.some( 12641 (name) => !!siteSettings?.[name] 12642 ); 12643 const plugin = store2.getEntityRecord( 12644 "root", 12645 "plugin", 12646 AI_PLUGIN_ID 12647 ); 12648 const hasFinished = store2.hasFinishedResolution("getEntityRecord", [ 12649 "root", 12650 "plugin", 12651 AI_PLUGIN_ID 12652 ]); 12653 if (!hasFinished) { 12654 return { 12655 pluginStatus: "checking", 12656 canInstallPlugins: canCreate, 12657 canManagePlugins: void 0, 12658 hasConnectedProvider: hasConnected 12659 }; 12660 } 12661 if (!plugin) { 12662 return { 12663 pluginStatus: "not-installed", 12664 canInstallPlugins: canCreate, 12665 canManagePlugins: canCreate, 12666 hasConnectedProvider: hasConnected 12667 }; 12668 } 12669 return { 12670 pluginStatus: plugin.status === "active" ? "active" : "inactive", 12671 canInstallPlugins: canCreate, 12672 canManagePlugins: true, 12673 hasConnectedProvider: hasConnected 12674 }; 12675 }, []); 12676 const { saveEntityRecord } = (0, import_data3.useDispatch)(import_core_data2.store); 12677 const { createSuccessNotice, createErrorNotice } = (0, import_data3.useDispatch)(import_notices2.store); 12678 const installPlugin = async () => { 12679 setIsBusy(true); 12680 try { 12681 await saveEntityRecord( 12682 "root", 12683 "plugin", 12684 { slug: AI_PLUGIN_SLUG, status: "active" }, 12685 { throwOnError: true } 12686 ); 12687 setJustActivated(true); 12688 createSuccessNotice( 12689 (0, import_i18n9.__)("AI plugin installed and activated successfully."), 12690 { 12691 id: "ai-plugin-install-success", 12692 type: "snackbar" 12693 } 12694 ); 12695 } catch { 12696 createErrorNotice((0, import_i18n9.__)("Failed to install the AI plugin."), { 12697 id: "ai-plugin-install-error", 12698 type: "snackbar" 12699 }); 12700 } finally { 12701 setIsBusy(false); 12702 } 12703 }; 12704 const activatePlugin = async () => { 12705 setIsBusy(true); 12706 try { 12707 await saveEntityRecord( 12708 "root", 12709 "plugin", 12710 { plugin: AI_PLUGIN_ID, status: "active" }, 12711 { throwOnError: true } 12712 ); 12713 setJustActivated(true); 12714 createSuccessNotice((0, import_i18n9.__)("AI plugin activated successfully."), { 12715 id: "ai-plugin-activate-success", 12716 type: "snackbar" 12717 }); 12718 } catch { 12719 createErrorNotice((0, import_i18n9.__)("Failed to activate the AI plugin."), { 12720 id: "ai-plugin-activate-error", 12721 type: "snackbar" 12722 }); 12723 } finally { 12724 setIsBusy(false); 12725 } 12726 }; 12727 if (!hasAiProviders) { 12728 return null; 12729 } 12730 if (pluginStatus === "checking") { 12731 return null; 12732 } 12733 if (pluginStatus === "active" && initialHasConnectedProvider && !justActivated) { 12734 return null; 12735 } 12736 if (pluginStatus === "inactive" && canManagePlugins === false) { 12737 return null; 12738 } 12739 const isActiveNoProvider = pluginStatus === "active" && !hasConnectedProvider; 12740 const isJustConnected = pluginStatus === "active" && hasConnectedProvider && (!initialHasConnectedProvider || justActivated); 12741 const showInstallActivate = pluginStatus === "not-installed" || pluginStatus === "inactive"; 12742 const hideButtons = pluginStatus === "not-installed" && canInstallPlugins === false; 12743 const getMessage = () => { 12744 if (isJustConnected) { 12745 return (0, import_i18n9.__)( 12746 "The <strong>AI plugin</strong> is ready to use. You can use it to generate featured images, alt text, titles, excerpts and more. <a>Learn more</a>" 12747 ); 12748 } 12749 if (isActiveNoProvider) { 12750 return (0, import_i18n9.__)( 12751 "The <strong>AI plugin</strong> is installed. Connect an AI provider below to generate featured images, alt text, titles, excerpts, and more. <a>Learn more</a>" 12752 ); 12753 } 12754 return (0, import_i18n9.__)( 12755 "The <strong>AI plugin</strong> can use your AI connectors to generate featured images, alt text, titles, excerpts and more. <a>Learn more</a>" 12756 ); 12757 }; 12758 const getPrimaryButtonProps = () => { 12759 if (pluginStatus === "not-installed") { 12760 return { 12761 label: isBusy ? (0, import_i18n9.__)("Installing\u2026") : (0, import_i18n9.__)("Install the AI plugin"), 12762 disabled: isBusy, 12763 onClick: isBusy ? void 0 : installPlugin 12764 }; 12765 } 12766 return { 12767 label: isBusy ? (0, import_i18n9.__)("Activating\u2026") : (0, import_i18n9.__)("Activate the AI plugin"), 12768 disabled: isBusy, 12769 onClick: isBusy ? void 0 : activatePlugin 12770 }; 12771 }; 12772 return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "ai-plugin-callout", children: [ 12773 /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "ai-plugin-callout__content", children: [ 12774 /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { children: (0, import_element36.createInterpolateElement)(getMessage(), { 12775 strong: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("strong", {}), 12776 // @ts-expect-error `children` is injected by `createInterpolateElement` at runtime. 12777 a: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_components3.ExternalLink, { href: AI_PLUGIN_URL }) 12778 }) }), 12779 !hideButtons && (showInstallActivate ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)( 12780 import_components3.Button, 12781 { 12782 variant: "primary", 12783 size: "compact", 12784 isBusy, 12785 disabled: getPrimaryButtonProps().disabled, 12786 accessibleWhenDisabled: true, 12787 onClick: getPrimaryButtonProps().onClick, 12788 children: getPrimaryButtonProps().label 12789 } 12790 ) : /* @__PURE__ */ (0, import_jsx_runtime44.jsx)( 12791 import_components3.Button, 12792 { 12793 ref: actionButtonRef, 12794 variant: "secondary", 12795 size: "compact", 12796 href: (0, import_url.addQueryArgs)("options-general.php", { 12797 page: AI_PLUGIN_PAGE_SLUG 12798 }), 12799 children: (0, import_i18n9.__)("Control features in the AI plugin") 12800 } 12801 )) 12802 ] }), 12803 /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(WpLogoDecoration, {}) 12804 ] }); 12805 } 12806 12807 // routes/connectors-home/stage.tsx 12808 var import_jsx_runtime45 = __toESM(require_jsx_runtime()); 12809 var { store } = unlock2(connectorsPrivateApis2); 12810 registerDefaultConnectors(); 12811 function ConnectorsPage() { 12812 const isFileModDisabled = getIsFileModDisabled(); 12813 const { connectors, canInstallPlugins, isAiPluginInstalled } = (0, import_data4.useSelect)( 12814 (select2) => { 12815 const coreSelect = select2(import_core_data3.store); 12816 const aiPlugin = coreSelect.getEntityRecord( 12817 "root", 12818 "plugin", 12819 "ai/ai" 12820 ); 12821 return { 12822 connectors: unlock2(select2(store)).getConnectors(), 12823 canInstallPlugins: coreSelect.canUser("create", { 12824 kind: "root", 12825 name: "plugin" 12826 }), 12827 isAiPluginInstalled: !!aiPlugin 12828 }; 12829 }, 12830 [] 12831 ); 12832 const renderableConnectors = connectors.filter( 12833 (connector) => connector.render 12834 ); 12835 const aiProviderPluginSlugs = Array.from( 12836 new Set( 12837 connectors.filter( 12838 (connector) => connector.type === "ai_provider" 12839 ).map( 12840 (connector) => connector.plugin?.file?.split("/")[0] 12841 ).filter( 12842 (slug) => !!slug 12843 ) 12844 ) 12845 ).sort(); 12846 const installedPluginSlugs = new Set( 12847 connectors.filter( 12848 (connector) => connector.plugin?.isInstalled 12849 ).map( 12850 (connector) => connector.plugin?.file?.split("/")[0] 12851 ).filter((slug) => !!slug) 12852 ); 12853 if (isAiPluginInstalled) { 12854 installedPluginSlugs.add("ai"); 12855 } 12856 const manualInstallPluginSlugs = ["ai", ...aiProviderPluginSlugs].filter( 12857 (slug) => !installedPluginSlugs.has(slug) 12858 ); 12859 const isEmpty = renderableConnectors.length === 0; 12860 return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)( 12861 page_default, 12862 { 12863 title: (0, import_i18n10.__)("Connectors"), 12864 subTitle: (0, import_i18n10.__)( 12865 "All of your API keys and credentials are stored here and shared across plugins. Configure once and use everywhere." 12866 ), 12867 children: /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)( 12868 "div", 12869 { 12870 className: `connectors-page$isEmpty ? " connectors-page--empty" : ""}`, 12871 children: [ 12872 manualInstallPluginSlugs.length > 0 && (isFileModDisabled || !canInstallPlugins) && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)( 12873 notice_exports.Root, 12874 { 12875 intent: "info", 12876 className: "connectors-page__file-mods-notice", 12877 children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(notice_exports.Description, { children: isFileModDisabled ? (0, import_i18n10.__)( 12878 "Plugins cannot be installed here due to your site configuration. Install them manually using your normal deployment workflow." 12879 ) : (0, import_i18n10.__)( 12880 "You do not have permission to install plugins. Please ask a site administrator to install them for you." 12881 ) }) 12882 } 12883 ), 12884 isEmpty ? /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)( 12885 import_components4.__experimentalVStack, 12886 { 12887 alignment: "center", 12888 spacing: 3, 12889 style: { maxWidth: 480 }, 12890 children: [ 12891 /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(import_components4.__experimentalVStack, { alignment: "center", spacing: 2, children: [ 12892 /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_components4.__experimentalHeading, { level: 2, size: 15, children: (0, import_i18n10.__)("No connectors yet") }), 12893 /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_components4.__experimentalText, { size: 12, children: (0, import_i18n10.__)( 12894 "Connectors appear here when you install plugins that use external services. Each plugin registers the API keys it needs, and you manage them all in one place." 12895 ) }) 12896 ] }), 12897 /* @__PURE__ */ (0, import_jsx_runtime45.jsx)( 12898 import_components4.Button, 12899 { 12900 variant: "secondary", 12901 href: "plugin-install.php", 12902 __next40pxDefaultSize: true, 12903 children: (0, import_i18n10.__)("Learn more") 12904 } 12905 ) 12906 ] 12907 } 12908 ) : /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(import_components4.__experimentalVStack, { spacing: 3, children: [ 12909 /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(AiPluginCallout, {}), 12910 /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_components4.__experimentalVStack, { spacing: 3, role: "list", children: connectors.map( 12911 (connector) => { 12912 if (connector.render) { 12913 return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)( 12914 connector.render, 12915 { 12916 slug: connector.slug, 12917 name: connector.name, 12918 description: connector.description, 12919 type: connector.type, 12920 logo: connector.logo, 12921 authentication: connector.authentication, 12922 plugin: connector.plugin 12923 }, 12924 connector.slug 12925 ); 12926 } 12927 return null; 12928 } 12929 ) }) 12930 ] }), 12931 canInstallPlugins && !isFileModDisabled && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("p", { className: "connectors-page__help-text", children: (0, import_element37.createInterpolateElement)( 12932 (0, import_i18n10.__)( 12933 "If the connector you need is not listed, <a>search the plugin directory</a> to see if a connector is available." 12934 ), 12935 { 12936 a: ( 12937 // eslint-disable-next-line jsx-a11y/anchor-has-content 12938 /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("a", { href: "plugin-install.php?s=connector&tab=search&type=tag" }) 12939 ) 12940 } 12941 ) }) 12942 ] 12943 } 12944 ) 12945 } 12946 ); 12947 } 12948 function Stage() { 12949 return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(ConnectorsPage, {}); 12950 } 12951 var stage = Stage; 12952 export { 12953 stage 12954 }; 12955 /*! Bundled license information: 12956 12957 use-sync-external-store/cjs/use-sync-external-store-shim.development.js: 12958 (** 12959 * @license React 12960 * use-sync-external-store-shim.development.js 12961 * 12962 * Copyright (c) Meta Platforms, Inc. and affiliates. 12963 * 12964 * This source code is licensed under the MIT license found in the 12965 * LICENSE file in the root directory of this source tree. 12966 *) 12967 12968 use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js: 12969 (** 12970 * @license React 12971 * use-sync-external-store-shim/with-selector.development.js 12972 * 12973 * Copyright (c) Meta Platforms, Inc. and affiliates. 12974 * 12975 * This source code is licensed under the MIT license found in the 12976 * LICENSE file in the root directory of this source tree. 12977 *) 12978 */
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated : Mon Nov 2 08:20:36 2026 | Cross-referenced by PHPXref |