| [ 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 __require = /* @__PURE__ */ ((x2) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x2, { 8 get: (a, b) => (typeof require !== "undefined" ? require : a)[b] 9 }) : x2)(function(x2) { 10 if (typeof require !== "undefined") return require.apply(this, arguments); 11 throw Error('Dynamic require of "' + x2 + '" is not supported'); 12 }); 13 var __commonJS = (cb, mod) => function __require4() { 14 return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; 15 }; 16 var __export = (target, all) => { 17 for (var name2 in all) 18 __defProp(target, name2, { get: all[name2], enumerable: true }); 19 }; 20 var __copyProps = (to, from, except, desc) => { 21 if (from && typeof from === "object" || typeof from === "function") { 22 for (let key of __getOwnPropNames(from)) 23 if (!__hasOwnProp.call(to, key) && key !== except) 24 __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); 25 } 26 return to; 27 }; 28 var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( 29 // If the importer is in node compatibility mode or this is not an ESM 30 // file that has been converted to a CommonJS file using a Babel- 31 // compatible transform (i.e. "__esModule" has not been set), then set 32 // "default" to the CommonJS "module.exports" for node compatibility. 33 isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, 34 mod 35 )); 36 37 // package-external:@wordpress/i18n 38 var require_i18n = __commonJS({ 39 "package-external:@wordpress/i18n"(exports, module) { 40 module.exports = window.wp.i18n; 41 } 42 }); 43 44 // vendor-external:react 45 var require_react = __commonJS({ 46 "vendor-external:react"(exports, module) { 47 module.exports = window.React; 48 } 49 }); 50 51 // vendor-external:react/jsx-runtime 52 var require_jsx_runtime = __commonJS({ 53 "vendor-external:react/jsx-runtime"(exports, module) { 54 module.exports = window.ReactJSXRuntime; 55 } 56 }); 57 58 // vendor-external:react-dom 59 var require_react_dom = __commonJS({ 60 "vendor-external:react-dom"(exports, module) { 61 module.exports = window.ReactDOM; 62 } 63 }); 64 65 // package-external:@wordpress/element 66 var require_element = __commonJS({ 67 "package-external:@wordpress/element"(exports, module) { 68 module.exports = window.wp.element; 69 } 70 }); 71 72 // package-external:@wordpress/primitives 73 var require_primitives = __commonJS({ 74 "package-external:@wordpress/primitives"(exports, module) { 75 module.exports = window.wp.primitives; 76 } 77 }); 78 79 // 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 80 var require_use_sync_external_store_shim_development = __commonJS({ 81 "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) { 82 "use strict"; 83 (function() { 84 function is(x2, y2) { 85 return x2 === y2 && (0 !== x2 || 1 / x2 === 1 / y2) || x2 !== x2 && y2 !== y2; 86 } 87 function useSyncExternalStore$2(subscribe, getSnapshot) { 88 didWarnOld18Alpha || void 0 === React169.startTransition || (didWarnOld18Alpha = true, console.error( 89 "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." 90 )); 91 var value = getSnapshot(); 92 if (!didWarnUncachedGetSnapshot) { 93 var cachedValue = getSnapshot(); 94 objectIs(value, cachedValue) || (console.error( 95 "The result of getSnapshot should be cached to avoid an infinite loop" 96 ), didWarnUncachedGetSnapshot = true); 97 } 98 cachedValue = useState50({ 99 inst: { value, getSnapshot } 100 }); 101 var inst = cachedValue[0].inst, forceUpdate = cachedValue[1]; 102 useLayoutEffect5( 103 function() { 104 inst.value = value; 105 inst.getSnapshot = getSnapshot; 106 checkIfSnapshotChanged(inst) && forceUpdate({ inst }); 107 }, 108 [subscribe, value, getSnapshot] 109 ); 110 useEffect33( 111 function() { 112 checkIfSnapshotChanged(inst) && forceUpdate({ inst }); 113 return subscribe(function() { 114 checkIfSnapshotChanged(inst) && forceUpdate({ inst }); 115 }); 116 }, 117 [subscribe] 118 ); 119 useDebugValue2(value); 120 return value; 121 } 122 function checkIfSnapshotChanged(inst) { 123 var latestGetSnapshot = inst.getSnapshot; 124 inst = inst.value; 125 try { 126 var nextValue = latestGetSnapshot(); 127 return !objectIs(inst, nextValue); 128 } catch (error2) { 129 return true; 130 } 131 } 132 function useSyncExternalStore$1(subscribe, getSnapshot) { 133 return getSnapshot(); 134 } 135 "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error()); 136 var React169 = require_react(), objectIs = "function" === typeof Object.is ? Object.is : is, useState50 = React169.useState, useEffect33 = React169.useEffect, useLayoutEffect5 = React169.useLayoutEffect, useDebugValue2 = React169.useDebugValue, didWarnOld18Alpha = false, didWarnUncachedGetSnapshot = false, shim = "undefined" === typeof window || "undefined" === typeof window.document || "undefined" === typeof window.document.createElement ? useSyncExternalStore$1 : useSyncExternalStore$2; 137 exports.useSyncExternalStore = void 0 !== React169.useSyncExternalStore ? React169.useSyncExternalStore : shim; 138 "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error()); 139 })(); 140 } 141 }); 142 143 // node_modules/.store/use-sync-external-store@1.7.0-jHNF5n8408rkWhZ5NHKclA/node_modules/use-sync-external-store/shim/index.js 144 var require_shim = __commonJS({ 145 "node_modules/.store/use-sync-external-store@1.7.0-jHNF5n8408rkWhZ5NHKclA/node_modules/use-sync-external-store/shim/index.js"(exports, module) { 146 "use strict"; 147 if (false) { 148 module.exports = null; 149 } else { 150 module.exports = require_use_sync_external_store_shim_development(); 151 } 152 } 153 }); 154 155 // 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 156 var require_with_selector_development = __commonJS({ 157 "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) { 158 "use strict"; 159 (function() { 160 function is(x2, y2) { 161 return x2 === y2 && (0 !== x2 || 1 / x2 === 1 / y2) || x2 !== x2 && y2 !== y2; 162 } 163 "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error()); 164 var React169 = require_react(), shim = require_shim(), objectIs = "function" === typeof Object.is ? Object.is : is, useSyncExternalStore3 = shim.useSyncExternalStore, useRef66 = React169.useRef, useEffect33 = React169.useEffect, useMemo62 = React169.useMemo, useDebugValue2 = React169.useDebugValue; 165 exports.useSyncExternalStoreWithSelector = function(subscribe, getSnapshot, getServerSnapshot, selector, isEqual) { 166 var instRef = useRef66(null); 167 if (null === instRef.current) { 168 var inst = { hasValue: false, value: null }; 169 instRef.current = inst; 170 } else inst = instRef.current; 171 instRef = useMemo62( 172 function() { 173 function memoizedSelector(nextSnapshot) { 174 if (!hasMemo) { 175 hasMemo = true; 176 memoizedSnapshot = nextSnapshot; 177 nextSnapshot = selector(nextSnapshot); 178 if (void 0 !== isEqual && inst.hasValue) { 179 var currentSelection = inst.value; 180 if (isEqual(currentSelection, nextSnapshot)) 181 return memoizedSelection = currentSelection; 182 } 183 return memoizedSelection = nextSnapshot; 184 } 185 currentSelection = memoizedSelection; 186 if (objectIs(memoizedSnapshot, nextSnapshot)) 187 return currentSelection; 188 var nextSelection = selector(nextSnapshot); 189 if (void 0 !== isEqual && isEqual(currentSelection, nextSelection)) 190 return memoizedSnapshot = nextSnapshot, currentSelection; 191 memoizedSnapshot = nextSnapshot; 192 return memoizedSelection = nextSelection; 193 } 194 var hasMemo = false, memoizedSnapshot, memoizedSelection, maybeGetServerSnapshot = void 0 === getServerSnapshot ? null : getServerSnapshot; 195 return [ 196 function() { 197 return memoizedSelector(getSnapshot()); 198 }, 199 null === maybeGetServerSnapshot ? void 0 : function() { 200 return memoizedSelector(maybeGetServerSnapshot()); 201 } 202 ]; 203 }, 204 [getSnapshot, getServerSnapshot, selector, isEqual] 205 ); 206 var value = useSyncExternalStore3(subscribe, instRef[0], instRef[1]); 207 useEffect33( 208 function() { 209 inst.hasValue = true; 210 inst.value = value; 211 }, 212 [value] 213 ); 214 useDebugValue2(value); 215 return value; 216 }; 217 "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error()); 218 })(); 219 } 220 }); 221 222 // node_modules/.store/use-sync-external-store@1.7.0-jHNF5n8408rkWhZ5NHKclA/node_modules/use-sync-external-store/shim/with-selector.js 223 var require_with_selector = __commonJS({ 224 "node_modules/.store/use-sync-external-store@1.7.0-jHNF5n8408rkWhZ5NHKclA/node_modules/use-sync-external-store/shim/with-selector.js"(exports, module) { 225 "use strict"; 226 if (false) { 227 module.exports = null; 228 } else { 229 module.exports = require_with_selector_development(); 230 } 231 } 232 }); 233 234 // package-external:@wordpress/compose 235 var require_compose = __commonJS({ 236 "package-external:@wordpress/compose"(exports, module) { 237 module.exports = window.wp.compose; 238 } 239 }); 240 241 // package-external:@wordpress/theme 242 var require_theme = __commonJS({ 243 "package-external:@wordpress/theme"(exports, module) { 244 module.exports = window.wp.theme; 245 } 246 }); 247 248 // package-external:@wordpress/private-apis 249 var require_private_apis = __commonJS({ 250 "package-external:@wordpress/private-apis"(exports, module) { 251 module.exports = window.wp.privateApis; 252 } 253 }); 254 255 // package-external:@wordpress/components 256 var require_components = __commonJS({ 257 "package-external:@wordpress/components"(exports, module) { 258 module.exports = window.wp.components; 259 } 260 }); 261 262 // package-external:@wordpress/editor 263 var require_editor = __commonJS({ 264 "package-external:@wordpress/editor"(exports, module) { 265 module.exports = window.wp.editor; 266 } 267 }); 268 269 // package-external:@wordpress/core-data 270 var require_core_data = __commonJS({ 271 "package-external:@wordpress/core-data"(exports, module) { 272 module.exports = window.wp.coreData; 273 } 274 }); 275 276 // package-external:@wordpress/data 277 var require_data = __commonJS({ 278 "package-external:@wordpress/data"(exports, module) { 279 module.exports = window.wp.data; 280 } 281 }); 282 283 // package-external:@wordpress/blocks 284 var require_blocks = __commonJS({ 285 "package-external:@wordpress/blocks"(exports, module) { 286 module.exports = window.wp.blocks; 287 } 288 }); 289 290 // package-external:@wordpress/block-editor 291 var require_block_editor = __commonJS({ 292 "package-external:@wordpress/block-editor"(exports, module) { 293 module.exports = window.wp.blockEditor; 294 } 295 }); 296 297 // package-external:@wordpress/style-engine 298 var require_style_engine = __commonJS({ 299 "package-external:@wordpress/style-engine"(exports, module) { 300 module.exports = window.wp.styleEngine; 301 } 302 }); 303 304 // node_modules/.store/fast-deep-equal@3.1.3-Dk0kpzcWCOUHE1bkOO2LLA/node_modules/fast-deep-equal/es6/index.js 305 var require_es6 = __commonJS({ 306 "node_modules/.store/fast-deep-equal@3.1.3-Dk0kpzcWCOUHE1bkOO2LLA/node_modules/fast-deep-equal/es6/index.js"(exports, module) { 307 "use strict"; 308 module.exports = function equal(a, b) { 309 if (a === b) return true; 310 if (a && b && typeof a == "object" && typeof b == "object") { 311 if (a.constructor !== b.constructor) return false; 312 var length, i, keys; 313 if (Array.isArray(a)) { 314 length = a.length; 315 if (length != b.length) return false; 316 for (i = length; i-- !== 0; ) 317 if (!equal(a[i], b[i])) return false; 318 return true; 319 } 320 if (a instanceof Map && b instanceof Map) { 321 if (a.size !== b.size) return false; 322 for (i of a.entries()) 323 if (!b.has(i[0])) return false; 324 for (i of a.entries()) 325 if (!equal(i[1], b.get(i[0]))) return false; 326 return true; 327 } 328 if (a instanceof Set && b instanceof Set) { 329 if (a.size !== b.size) return false; 330 for (i of a.entries()) 331 if (!b.has(i[0])) return false; 332 return true; 333 } 334 if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) { 335 length = a.length; 336 if (length != b.length) return false; 337 for (i = length; i-- !== 0; ) 338 if (a[i] !== b[i]) return false; 339 return true; 340 } 341 if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags; 342 if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf(); 343 if (a.toString !== Object.prototype.toString) return a.toString() === b.toString(); 344 keys = Object.keys(a); 345 length = keys.length; 346 if (length !== Object.keys(b).length) return false; 347 for (i = length; i-- !== 0; ) 348 if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false; 349 for (i = length; i-- !== 0; ) { 350 var key = keys[i]; 351 if (!equal(a[key], b[key])) return false; 352 } 353 return true; 354 } 355 return a !== a && b !== b; 356 }; 357 } 358 }); 359 360 // node_modules/.store/deepmerge@4.3.1-130J0Lhhc9LM1JWY-5q3ww/node_modules/deepmerge/dist/cjs.js 361 var require_cjs = __commonJS({ 362 "node_modules/.store/deepmerge@4.3.1-130J0Lhhc9LM1JWY-5q3ww/node_modules/deepmerge/dist/cjs.js"(exports, module) { 363 "use strict"; 364 var isMergeableObject = function isMergeableObject2(value) { 365 return isNonNullObject(value) && !isSpecial(value); 366 }; 367 function isNonNullObject(value) { 368 return !!value && typeof value === "object"; 369 } 370 function isSpecial(value) { 371 var stringValue = Object.prototype.toString.call(value); 372 return stringValue === "[object RegExp]" || stringValue === "[object Date]" || isReactElement(value); 373 } 374 var canUseSymbol = typeof Symbol === "function" && Symbol.for; 375 var REACT_ELEMENT_TYPE = canUseSymbol ? /* @__PURE__ */ Symbol.for("react.element") : 60103; 376 function isReactElement(value) { 377 return value.$$typeof === REACT_ELEMENT_TYPE; 378 } 379 function emptyTarget(val) { 380 return Array.isArray(val) ? [] : {}; 381 } 382 function cloneUnlessOtherwiseSpecified(value, options) { 383 return options.clone !== false && options.isMergeableObject(value) ? deepmerge2(emptyTarget(value), value, options) : value; 384 } 385 function defaultArrayMerge(target, source, options) { 386 return target.concat(source).map(function(element) { 387 return cloneUnlessOtherwiseSpecified(element, options); 388 }); 389 } 390 function getMergeFunction(key, options) { 391 if (!options.customMerge) { 392 return deepmerge2; 393 } 394 var customMerge = options.customMerge(key); 395 return typeof customMerge === "function" ? customMerge : deepmerge2; 396 } 397 function getEnumerableOwnPropertySymbols(target) { 398 return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(target).filter(function(symbol) { 399 return Object.propertyIsEnumerable.call(target, symbol); 400 }) : []; 401 } 402 function getKeys(target) { 403 return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target)); 404 } 405 function propertyIsOnObject(object, property) { 406 try { 407 return property in object; 408 } catch (_) { 409 return false; 410 } 411 } 412 function propertyIsUnsafe(target, key) { 413 return propertyIsOnObject(target, key) && !(Object.hasOwnProperty.call(target, key) && Object.propertyIsEnumerable.call(target, key)); 414 } 415 function mergeObject(target, source, options) { 416 var destination = {}; 417 if (options.isMergeableObject(target)) { 418 getKeys(target).forEach(function(key) { 419 destination[key] = cloneUnlessOtherwiseSpecified(target[key], options); 420 }); 421 } 422 getKeys(source).forEach(function(key) { 423 if (propertyIsUnsafe(target, key)) { 424 return; 425 } 426 if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) { 427 destination[key] = getMergeFunction(key, options)(target[key], source[key], options); 428 } else { 429 destination[key] = cloneUnlessOtherwiseSpecified(source[key], options); 430 } 431 }); 432 return destination; 433 } 434 function deepmerge2(target, source, options) { 435 options = options || {}; 436 options.arrayMerge = options.arrayMerge || defaultArrayMerge; 437 options.isMergeableObject = options.isMergeableObject || isMergeableObject; 438 options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified; 439 var sourceIsArray = Array.isArray(source); 440 var targetIsArray = Array.isArray(target); 441 var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray; 442 if (!sourceAndTargetTypesMatch) { 443 return cloneUnlessOtherwiseSpecified(source, options); 444 } else if (sourceIsArray) { 445 return options.arrayMerge(target, source, options); 446 } else { 447 return mergeObject(target, source, options); 448 } 449 } 450 deepmerge2.all = function deepmergeAll(array, options) { 451 if (!Array.isArray(array)) { 452 throw new Error("first argument should be an array"); 453 } 454 return array.reduce(function(prev, next) { 455 return deepmerge2(prev, next, options); 456 }, {}); 457 }; 458 var deepmerge_1 = deepmerge2; 459 module.exports = deepmerge_1; 460 } 461 }); 462 463 // package-external:@wordpress/keycodes 464 var require_keycodes = __commonJS({ 465 "package-external:@wordpress/keycodes"(exports, module) { 466 module.exports = window.wp.keycodes; 467 } 468 }); 469 470 // package-external:@wordpress/api-fetch 471 var require_api_fetch = __commonJS({ 472 "package-external:@wordpress/api-fetch"(exports, module) { 473 module.exports = window.wp.apiFetch; 474 } 475 }); 476 477 // package-external:@wordpress/date 478 var require_date = __commonJS({ 479 "package-external:@wordpress/date"(exports, module) { 480 module.exports = window.wp.date; 481 } 482 }); 483 484 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useRenderElement.mjs 485 var React4 = __toESM(require_react(), 1); 486 487 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useRefWithInit.mjs 488 var React = __toESM(require_react(), 1); 489 var UNINITIALIZED = {}; 490 function useRefWithInit(init, initArg) { 491 const ref = React.useRef(UNINITIALIZED); 492 if (ref.current === UNINITIALIZED) { 493 ref.current = init(initArg); 494 } 495 return ref; 496 } 497 498 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useMergedRefs.mjs 499 function useMergedRefs(a, b, c2, d) { 500 const forkRef = useRefWithInit(createForkRef).current; 501 if (didChange(forkRef, a, b, c2, d)) { 502 update(forkRef, [a, b, c2, d]); 503 } 504 return forkRef.callback; 505 } 506 function useMergedRefsN(refs) { 507 const forkRef = useRefWithInit(createForkRef).current; 508 if (didChangeN(forkRef, refs)) { 509 update(forkRef, refs); 510 } 511 return forkRef.callback; 512 } 513 function createForkRef() { 514 return { 515 callback: null, 516 cleanup: null, 517 refs: [] 518 }; 519 } 520 function didChange(forkRef, a, b, c2, d) { 521 return forkRef.refs[0] !== a || forkRef.refs[1] !== b || forkRef.refs[2] !== c2 || forkRef.refs[3] !== d; 522 } 523 function didChangeN(forkRef, newRefs) { 524 return forkRef.refs.length !== newRefs.length || forkRef.refs.some((ref, index2) => ref !== newRefs[index2]); 525 } 526 function update(forkRef, refs) { 527 forkRef.refs = refs; 528 if (refs.every((ref) => ref == null)) { 529 forkRef.callback = null; 530 return; 531 } 532 forkRef.callback = (instance) => { 533 if (forkRef.cleanup) { 534 forkRef.cleanup(); 535 forkRef.cleanup = null; 536 } 537 if (instance != null) { 538 const cleanupCallbacks = Array(refs.length).fill(null); 539 for (let i = 0; i < refs.length; i += 1) { 540 const ref = refs[i]; 541 if (ref == null) { 542 continue; 543 } 544 switch (typeof ref) { 545 case "function": { 546 const refCleanup = ref(instance); 547 if (typeof refCleanup === "function") { 548 cleanupCallbacks[i] = refCleanup; 549 } 550 break; 551 } 552 case "object": { 553 ref.current = instance; 554 break; 555 } 556 default: 557 } 558 } 559 forkRef.cleanup = () => { 560 for (let i = 0; i < refs.length; i += 1) { 561 const ref = refs[i]; 562 if (ref == null) { 563 continue; 564 } 565 switch (typeof ref) { 566 case "function": { 567 const cleanupCallback = cleanupCallbacks[i]; 568 if (typeof cleanupCallback === "function") { 569 cleanupCallback(); 570 } else { 571 void ref(null); 572 } 573 break; 574 } 575 case "object": { 576 ref.current = null; 577 break; 578 } 579 default: 580 } 581 } 582 }; 583 } 584 }; 585 } 586 587 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/getReactElementRef.mjs 588 var React3 = __toESM(require_react(), 1); 589 590 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/reactVersion.mjs 591 var React2 = __toESM(require_react(), 1); 592 var majorVersion = parseInt(React2.version, 10); 593 function isReactVersionAtLeast(reactVersionToCheck) { 594 return majorVersion >= reactVersionToCheck; 595 } 596 597 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/getReactElementRef.mjs 598 function getReactElementRef(element) { 599 if (!/* @__PURE__ */ React3.isValidElement(element)) { 600 return null; 601 } 602 const reactElement = element; 603 const propsWithRef = reactElement.props; 604 return (isReactVersionAtLeast(19) ? propsWithRef?.ref : reactElement.ref) ?? null; 605 } 606 607 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/mergeObjects.mjs 608 function mergeObjects(a, b) { 609 if (a && !b) { 610 return a; 611 } 612 if (!a && b) { 613 return b; 614 } 615 if (a || b) { 616 return { 617 ...a, 618 ...b 619 }; 620 } 621 return void 0; 622 } 623 624 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/createLogOnce.mjs 625 var loggedMessages; 626 if (true) { 627 loggedMessages = /* @__PURE__ */ new Set(); 628 } 629 function createLogOnce(severity, prefix) { 630 return function logOnce(...messages) { 631 if (true) { 632 const message = messages.join(" "); 633 const output = prefix ? `$prefix}: $message}` : message; 634 const key = `$severity}:$output}`; 635 if (!loggedMessages.has(key)) { 636 loggedMessages.add(key); 637 if (severity === "warn") { 638 console.warn(output); 639 } else { 640 console.error(output); 641 } 642 } 643 } 644 }; 645 } 646 647 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/warn.mjs 648 var warn = createLogOnce("warn", "Base UI"); 649 650 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/empty.mjs 651 function NOOP() { 652 } 653 var EMPTY_ARRAY = Object.freeze([]); 654 var EMPTY_OBJECT = Object.freeze({}); 655 656 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/getStateAttributesProps.mjs 657 function getStateAttributesProps(state, customMapping) { 658 const props = {}; 659 for (const key in state) { 660 const value = state[key]; 661 if (customMapping?.hasOwnProperty(key)) { 662 const customProps = customMapping[key](value); 663 if (customProps != null) { 664 Object.assign(props, customProps); 665 } 666 continue; 667 } 668 if (value === true) { 669 props[`data-$key.toLowerCase()}`] = ""; 670 } else if (value) { 671 props[`data-$key.toLowerCase()}`] = value.toString(); 672 } 673 } 674 return props; 675 } 676 677 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/resolveClassName.mjs 678 function resolveClassName(className, state) { 679 return typeof className === "function" ? className(state) : className; 680 } 681 682 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/resolveStyle.mjs 683 function resolveStyle(style, state) { 684 return typeof style === "function" ? style(state) : style; 685 } 686 687 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/merge-props/mergeProps.mjs 688 var EMPTY_PROPS = {}; 689 function mergeProps(a, b, c2, d, e) { 690 if (!c2 && !d && !e && !a) { 691 return createInitialMergedProps(b); 692 } 693 let merged = createInitialMergedProps(a); 694 if (b) { 695 merged = mergeInto(merged, b); 696 } 697 if (c2) { 698 merged = mergeInto(merged, c2); 699 } 700 if (d) { 701 merged = mergeInto(merged, d); 702 } 703 if (e) { 704 merged = mergeInto(merged, e); 705 } 706 return merged; 707 } 708 function mergePropsN(props) { 709 if (props.length === 0) { 710 return EMPTY_PROPS; 711 } 712 if (props.length === 1) { 713 return createInitialMergedProps(props[0]); 714 } 715 let merged = createInitialMergedProps(props[0]); 716 for (let i = 1; i < props.length; i += 1) { 717 merged = mergeInto(merged, props[i]); 718 } 719 return merged; 720 } 721 function createInitialMergedProps(inputProps) { 722 if (isPropsGetter(inputProps)) { 723 return { 724 ...inputProps(EMPTY_PROPS) 725 }; 726 } 727 return copyInitialProps(inputProps); 728 } 729 function mergeInto(merged, inputProps) { 730 if (isPropsGetter(inputProps)) { 731 return inputProps(merged); 732 } 733 return mutablyMergeInto(merged, inputProps); 734 } 735 function copyInitialProps(inputProps) { 736 const copiedProps = { 737 ...inputProps 738 }; 739 for (const propName in copiedProps) { 740 const propValue = copiedProps[propName]; 741 if (isEventHandler(propName, propValue)) { 742 copiedProps[propName] = wrapEventHandler(propValue); 743 } 744 } 745 return copiedProps; 746 } 747 function mutablyMergeInto(mergedProps, externalProps) { 748 if (!externalProps) { 749 return mergedProps; 750 } 751 for (const propName in externalProps) { 752 const externalPropValue = externalProps[propName]; 753 switch (propName) { 754 case "style": { 755 mergedProps[propName] = mergeObjects(mergedProps.style, externalPropValue); 756 break; 757 } 758 case "className": { 759 mergedProps[propName] = mergeClassNames(mergedProps.className, externalPropValue); 760 break; 761 } 762 default: { 763 if (isEventHandler(propName, externalPropValue)) { 764 mergedProps[propName] = mergeEventHandlers(mergedProps[propName], externalPropValue); 765 } else { 766 mergedProps[propName] = externalPropValue; 767 } 768 } 769 } 770 } 771 return mergedProps; 772 } 773 function isEventHandler(key, value) { 774 const code0 = key.charCodeAt(0); 775 const code1 = key.charCodeAt(1); 776 const code2 = key.charCodeAt(2); 777 return code0 === 111 && code1 === 110 && code2 >= 65 && code2 <= 90 && (typeof value === "function" || typeof value === "undefined"); 778 } 779 function isPropsGetter(inputProps) { 780 return typeof inputProps === "function"; 781 } 782 function mergeEventHandlers(ourHandler, theirHandler) { 783 if (!theirHandler) { 784 return ourHandler; 785 } 786 if (!ourHandler) { 787 return wrapEventHandler(theirHandler); 788 } 789 return (...args) => { 790 const event = args[0]; 791 if (isSyntheticEvent(event)) { 792 const baseUIEvent = event; 793 makeEventPreventable(baseUIEvent); 794 const result2 = theirHandler(...args); 795 if (!baseUIEvent.baseUIHandlerPrevented) { 796 ourHandler?.(...args); 797 } 798 return result2; 799 } 800 const result = theirHandler(...args); 801 ourHandler?.(...args); 802 return result; 803 }; 804 } 805 function wrapEventHandler(handler) { 806 if (!handler) { 807 return handler; 808 } 809 return (...args) => { 810 const event = args[0]; 811 if (isSyntheticEvent(event)) { 812 makeEventPreventable(event); 813 } 814 return handler(...args); 815 }; 816 } 817 function makeEventPreventable(event) { 818 event.preventBaseUIHandler = () => { 819 event.baseUIHandlerPrevented = true; 820 }; 821 return event; 822 } 823 function mergeClassNames(ourClassName, theirClassName) { 824 if (theirClassName) { 825 if (ourClassName) { 826 return theirClassName + " " + ourClassName; 827 } 828 return theirClassName; 829 } 830 return ourClassName; 831 } 832 function isSyntheticEvent(event) { 833 return event != null && typeof event === "object" && "nativeEvent" in event; 834 } 835 836 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useRenderElement.mjs 837 var import_react = __toESM(require_react(), 1); 838 function useRenderElement(element, componentProps, params = {}) { 839 let renderProp = componentProps.render; 840 if (params.enabled !== false) { 841 renderProp = unwrapLazyRenderProp(renderProp); 842 } 843 const outProps = useRenderElementProps(componentProps, params, renderProp); 844 if (params.enabled === false) { 845 return null; 846 } 847 const state = params.state ?? EMPTY_OBJECT; 848 return evaluateRenderProp(element, renderProp, outProps, state); 849 } 850 function useRenderElementProps(componentProps, params, renderProp) { 851 const { 852 className: classNameProp, 853 style: styleProp 854 } = componentProps; 855 const { 856 state = EMPTY_OBJECT, 857 ref, 858 props, 859 stateAttributesMapping: stateAttributesMapping5, 860 enabled = true 861 } = params; 862 const className = enabled ? resolveClassName(classNameProp, state) : void 0; 863 const style = enabled ? resolveStyle(styleProp, state) : void 0; 864 const stateProps = enabled ? getStateAttributesProps(state, stateAttributesMapping5) : EMPTY_OBJECT; 865 const resolvedProps = enabled && props ? resolveRenderFunctionProps(props) : void 0; 866 const outProps = enabled ? mergeObjects(stateProps, resolvedProps) ?? {} : EMPTY_OBJECT; 867 if (typeof document !== "undefined") { 868 if (!enabled) { 869 void useMergedRefs(null, null); 870 } else if (Array.isArray(ref)) { 871 outProps.ref = useMergedRefsN([outProps.ref, getReactElementRef(renderProp), ...ref]); 872 } else { 873 outProps.ref = useMergedRefs(outProps.ref, getReactElementRef(renderProp), ref); 874 } 875 } 876 if (!enabled) { 877 return EMPTY_OBJECT; 878 } 879 if (className !== void 0) { 880 outProps.className = mergeClassNames(outProps.className, className); 881 } 882 if (style !== void 0) { 883 outProps.style = mergeObjects(outProps.style, style); 884 } 885 return outProps; 886 } 887 function resolveRenderFunctionProps(props) { 888 if (Array.isArray(props)) { 889 return mergePropsN(props); 890 } 891 return mergeProps(void 0, props); 892 } 893 var REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for("react.lazy"); 894 var COMPONENT_IDENTIFIER_PATTERN = /^[A-Z][A-Za-z0-9$]*$/; 895 var LOWERCASE_CHARACTER_PATTERN = /[a-z]/; 896 function unwrapLazyRenderProp(render) { 897 if (render?.$$typeof !== REACT_LAZY_TYPE) { 898 return render; 899 } 900 const unwrapped = React4.Children.toArray(render)[0]; 901 return /* @__PURE__ */ React4.isValidElement(unwrapped) ? unwrapped : render; 902 } 903 function evaluateRenderProp(element, render, props, state) { 904 if (render) { 905 if (typeof render === "function") { 906 if (true) { 907 warnIfRenderPropLooksLikeComponent(render); 908 } 909 return render(props, state); 910 } 911 const mergedProps = mergeProps(props, render.props); 912 mergedProps.ref = props.ref; 913 if (true) { 914 if (!/* @__PURE__ */ React4.isValidElement(render)) { 915 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")); 916 } 917 } 918 return /* @__PURE__ */ React4.cloneElement(render, mergedProps); 919 } 920 return renderTag(element, props); 921 } 922 function warnIfRenderPropLooksLikeComponent(renderFn) { 923 const functionName = renderFn.name; 924 if (functionName.length === 0) { 925 return; 926 } 927 if (!COMPONENT_IDENTIFIER_PATTERN.test(functionName)) { 928 return; 929 } 930 if (!LOWERCASE_CHARACTER_PATTERN.test(functionName)) { 931 return; 932 } 933 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"); 934 } 935 function renderTag(Tag, props) { 936 if (Tag === "button") { 937 return /* @__PURE__ */ (0, import_react.createElement)("button", { 938 type: "button", 939 ...props, 940 key: props.key 941 }); 942 } 943 if (Tag === "img") { 944 return /* @__PURE__ */ (0, import_react.createElement)("img", { 945 alt: "", 946 ...props, 947 key: props.key 948 }); 949 } 950 return /* @__PURE__ */ React4.createElement(Tag, props); 951 } 952 953 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/safeReact.mjs 954 var React5 = __toESM(require_react(), 1); 955 var SafeReact = { 956 ...React5 957 }; 958 959 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useStableCallback.mjs 960 var useInsertionEffect = SafeReact.useInsertionEffect; 961 var useSafeInsertionEffect = ( 962 // React 17 doesn't have useInsertionEffect. 963 useInsertionEffect && // Preact replaces useInsertionEffect with useLayoutEffect and fires too late. 964 useInsertionEffect !== SafeReact.useLayoutEffect ? useInsertionEffect : (fn) => fn() 965 ); 966 function useStableCallback(callback) { 967 const stable = useRefWithInit(createStableCallback).current; 968 stable.next = callback; 969 useSafeInsertionEffect(stable.effect); 970 return stable.trampoline; 971 } 972 function createStableCallback() { 973 const stable = { 974 next: void 0, 975 callback: assertNotCalled, 976 trampoline: (...args) => stable.callback?.(...args), 977 effect: () => { 978 stable.callback = stable.next; 979 } 980 }; 981 return stable; 982 } 983 function assertNotCalled() { 984 if (true) { 985 throw ( 986 /* minify-error-disabled */ 987 new Error("Base UI: Cannot call an event handler while rendering.") 988 ); 989 } 990 } 991 992 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useIsoLayoutEffect.mjs 993 var React6 = __toESM(require_react(), 1); 994 var noop = () => { 995 }; 996 var useIsoLayoutEffect = typeof document !== "undefined" ? React6.useLayoutEffect : noop; 997 998 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useOpenChangeComplete.mjs 999 var React8 = __toESM(require_react(), 1); 1000 1001 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useAnimationsFinished.mjs 1002 var ReactDOM = __toESM(require_react_dom(), 1); 1003 1004 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useOnMount.mjs 1005 var React7 = __toESM(require_react(), 1); 1006 function useOnMount(fn) { 1007 React7.useEffect(fn, EMPTY_ARRAY); 1008 } 1009 1010 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useAnimationFrame.mjs 1011 var EMPTY = null; 1012 var LAST_RAF = globalThis.requestAnimationFrame; 1013 var Scheduler = class { 1014 /* This implementation uses an array as a backing data-structure for frame callbacks. 1015 * It allows `O(1)` callback cancelling by inserting a `null` in the array, though it 1016 * never calls the native `cancelAnimationFrame` if there are no frames left. This can 1017 * be much more efficient if there is a call pattern that alterns as 1018 * "request-cancel-request-cancel-…". 1019 * But in the case of "request-request-…-cancel-cancel-…", it leaves the final animation 1020 * frame to run anyway. We turn that frame into a `O(1)` no-op via `callbacksCount`. */ 1021 callbacks = []; 1022 callbacksCount = 0; 1023 nextId = 1; 1024 startId = 1; 1025 isScheduled = false; 1026 tick = (timestamp) => { 1027 this.isScheduled = false; 1028 const currentCallbacks = this.callbacks; 1029 const currentCallbacksCount = this.callbacksCount; 1030 this.callbacks = []; 1031 this.callbacksCount = 0; 1032 this.startId = this.nextId; 1033 if (currentCallbacksCount > 0) { 1034 for (let i = 0; i < currentCallbacks.length; i += 1) { 1035 currentCallbacks[i]?.(timestamp); 1036 } 1037 } 1038 }; 1039 request(fn) { 1040 const id = this.nextId; 1041 this.nextId += 1; 1042 this.callbacks.push(fn); 1043 this.callbacksCount += 1; 1044 const didRAFChange = LAST_RAF !== requestAnimationFrame && (LAST_RAF = requestAnimationFrame, true); 1045 if (!this.isScheduled || didRAFChange) { 1046 requestAnimationFrame(this.tick); 1047 this.isScheduled = true; 1048 } 1049 return id; 1050 } 1051 cancel(id) { 1052 const index2 = id - this.startId; 1053 if (index2 < 0 || index2 >= this.callbacks.length) { 1054 return; 1055 } 1056 if (this.callbacks[index2] === null) { 1057 return; 1058 } 1059 this.callbacks[index2] = null; 1060 this.callbacksCount -= 1; 1061 } 1062 }; 1063 var scheduler = new Scheduler(); 1064 var AnimationFrame = class _AnimationFrame { 1065 static create() { 1066 return new _AnimationFrame(); 1067 } 1068 static request(fn) { 1069 return scheduler.request(fn); 1070 } 1071 static cancel(id) { 1072 return scheduler.cancel(id); 1073 } 1074 currentId = EMPTY; 1075 /** 1076 * Executes `fn` after `delay`, clearing any previously scheduled call. 1077 */ 1078 request(fn) { 1079 this.cancel(); 1080 this.currentId = scheduler.request(() => { 1081 this.currentId = EMPTY; 1082 fn(); 1083 }); 1084 } 1085 cancel = () => { 1086 if (this.currentId !== EMPTY) { 1087 scheduler.cancel(this.currentId); 1088 this.currentId = EMPTY; 1089 } 1090 }; 1091 disposeEffect = () => { 1092 return this.cancel; 1093 }; 1094 }; 1095 function useAnimationFrame() { 1096 const timeout = useRefWithInit(AnimationFrame.create).current; 1097 useOnMount(timeout.disposeEffect); 1098 return timeout; 1099 } 1100 1101 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/resolveRef.mjs 1102 function resolveRef(maybeRef) { 1103 if (maybeRef == null) { 1104 return maybeRef; 1105 } 1106 return "current" in maybeRef ? maybeRef.current : maybeRef; 1107 } 1108 1109 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/getFiniteAnimations.mjs 1110 function getFiniteAnimations(element, options) { 1111 return element.getAnimations(options).filter((animation) => { 1112 const timing = animation.effect?.getTiming(); 1113 return timing?.duration !== Infinity && timing?.iterations !== Infinity; 1114 }); 1115 } 1116 1117 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/TransitionStatusDataAttributes.mjs 1118 var startingStyle = "data-starting-style"; 1119 var endingStyle = "data-ending-style"; 1120 1121 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useAnimationsFinished.mjs 1122 var pendingCallbacks = null; 1123 function flushBeforePaint(fn) { 1124 if (!pendingCallbacks) { 1125 const callbacks = []; 1126 pendingCallbacks = callbacks; 1127 queueMicrotask(() => { 1128 pendingCallbacks = null; 1129 ReactDOM.flushSync(() => { 1130 for (const callback of callbacks) { 1131 callback(); 1132 } 1133 }); 1134 }); 1135 } 1136 pendingCallbacks.push(fn); 1137 } 1138 function useAnimationsFinished(elementOrRef, waitForStartingStyleRemoved = false, batch = false) { 1139 const frame = useAnimationFrame(); 1140 return useStableCallback((fnToExecute, signal = null) => { 1141 frame.cancel(); 1142 const element = resolveRef(elementOrRef); 1143 if (element == null) { 1144 return; 1145 } 1146 const resolvedElement = element; 1147 const done = () => { 1148 if (!batch) { 1149 ReactDOM.flushSync(fnToExecute); 1150 return; 1151 } 1152 flushBeforePaint(() => { 1153 if (!signal?.aborted) { 1154 fnToExecute(); 1155 } 1156 }); 1157 }; 1158 if (typeof resolvedElement.getAnimations !== "function" || globalThis.BASE_UI_ANIMATIONS_DISABLED) { 1159 fnToExecute(); 1160 return; 1161 } 1162 function exec() { 1163 Promise.all(getFiniteAnimations(resolvedElement).map((animation) => animation.finished.then(NOOP))).then(() => { 1164 if (!signal?.aborted) { 1165 done(); 1166 } 1167 }, () => { 1168 if (signal?.aborted) { 1169 return; 1170 } 1171 const currentAnimations = getFiniteAnimations(resolvedElement); 1172 if (currentAnimations.some((animation) => animation.pending || animation.playState !== "finished")) { 1173 exec(); 1174 return; 1175 } 1176 done(); 1177 }); 1178 } 1179 if (waitForStartingStyleRemoved) { 1180 const startingStyleAttribute = startingStyle; 1181 if (!resolvedElement.hasAttribute(startingStyleAttribute)) { 1182 frame.request(exec); 1183 return; 1184 } 1185 const attributeObserver = new MutationObserver(() => { 1186 if (!resolvedElement.hasAttribute(startingStyleAttribute)) { 1187 attributeObserver.disconnect(); 1188 exec(); 1189 } 1190 }); 1191 attributeObserver.observe(resolvedElement, { 1192 attributes: true, 1193 attributeFilter: [startingStyleAttribute] 1194 }); 1195 signal?.addEventListener("abort", () => attributeObserver.disconnect(), { 1196 once: true 1197 }); 1198 return; 1199 } 1200 frame.request(exec); 1201 }); 1202 } 1203 1204 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useOpenChangeComplete.mjs 1205 function useOpenChangeComplete(parameters) { 1206 const { 1207 enabled = true, 1208 open: open2, 1209 ref, 1210 batch = false, 1211 onComplete: onCompleteParam 1212 } = parameters; 1213 const onComplete = useStableCallback(onCompleteParam); 1214 const runOnceAnimationsFinish = useAnimationsFinished(ref, open2, batch); 1215 React8.useEffect(() => { 1216 if (!enabled) { 1217 return void 0; 1218 } 1219 const abortController = new AbortController(); 1220 runOnceAnimationsFinish(onComplete, abortController.signal); 1221 return () => { 1222 abortController.abort(); 1223 }; 1224 }, [enabled, open2, onComplete, runOnceAnimationsFinish]); 1225 } 1226 1227 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/stateAttributesMapping.mjs 1228 var STARTING_HOOK = { 1229 [startingStyle]: "" 1230 }; 1231 var ENDING_HOOK = { 1232 [endingStyle]: "" 1233 }; 1234 var transitionStatusMapping = { 1235 transitionStatus(value) { 1236 if (value === "starting") { 1237 return STARTING_HOOK; 1238 } 1239 if (value === "ending") { 1240 return ENDING_HOOK; 1241 } 1242 return null; 1243 } 1244 }; 1245 1246 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useTransitionStatus.mjs 1247 var React9 = __toESM(require_react(), 1); 1248 function useTransitionStatus(open2, enableIdleState = false, deferEndingState = false, animateInitialOpen = false) { 1249 const [transitionStatus, setTransitionStatus] = React9.useState(open2 && enableIdleState ? "idle" : void 0); 1250 const [mounted, setMounted] = React9.useState(open2 && !animateInitialOpen); 1251 if (open2 && !mounted) { 1252 setMounted(true); 1253 setTransitionStatus("starting"); 1254 } 1255 if (!open2 && mounted && transitionStatus !== "ending" && !deferEndingState) { 1256 setTransitionStatus("ending"); 1257 } 1258 if (!open2 && !mounted && transitionStatus === "ending") { 1259 setTransitionStatus(void 0); 1260 } 1261 useIsoLayoutEffect(() => { 1262 if (!open2 && mounted && transitionStatus !== "ending" && deferEndingState) { 1263 const frame = AnimationFrame.request(() => { 1264 setTransitionStatus("ending"); 1265 }); 1266 return () => { 1267 AnimationFrame.cancel(frame); 1268 }; 1269 } 1270 return void 0; 1271 }, [open2, mounted, transitionStatus, deferEndingState]); 1272 useIsoLayoutEffect(() => { 1273 if (!open2 || enableIdleState || transitionStatus === void 0) { 1274 return void 0; 1275 } 1276 const frame = AnimationFrame.request(() => { 1277 setTransitionStatus(void 0); 1278 }); 1279 return () => { 1280 AnimationFrame.cancel(frame); 1281 }; 1282 }, [enableIdleState, open2, transitionStatus]); 1283 useIsoLayoutEffect(() => { 1284 if (!open2 || !enableIdleState) { 1285 return void 0; 1286 } 1287 if (open2 && mounted && transitionStatus !== "idle") { 1288 setTransitionStatus("starting"); 1289 } 1290 const frame = AnimationFrame.request(() => { 1291 setTransitionStatus("idle"); 1292 }); 1293 return () => { 1294 AnimationFrame.cancel(frame); 1295 }; 1296 }, [enableIdleState, open2, mounted, transitionStatus]); 1297 return { 1298 mounted, 1299 setMounted, 1300 transitionStatus 1301 }; 1302 } 1303 1304 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useTimeout.mjs 1305 var EMPTY2 = 0; 1306 var Timeout = class _Timeout { 1307 static create() { 1308 return new _Timeout(); 1309 } 1310 currentId = EMPTY2; 1311 /** 1312 * Executes `fn` after `delay`, clearing any previously scheduled call. 1313 */ 1314 start(delay, fn) { 1315 this.clear(); 1316 this.currentId = setTimeout(() => { 1317 this.currentId = EMPTY2; 1318 fn(); 1319 }, delay); 1320 } 1321 isStarted() { 1322 return this.currentId !== EMPTY2; 1323 } 1324 clear = () => { 1325 if (this.currentId !== EMPTY2) { 1326 clearTimeout(this.currentId); 1327 this.currentId = EMPTY2; 1328 } 1329 }; 1330 disposeEffect = () => { 1331 return this.clear; 1332 }; 1333 }; 1334 function useTimeout() { 1335 const timeout = useRefWithInit(Timeout.create).current; 1336 useOnMount(timeout.disposeEffect); 1337 return timeout; 1338 } 1339 1340 // node_modules/.store/clsx@2.1.1-XOLP1vUL9vEGfpiXm37fAw/node_modules/clsx/dist/clsx.mjs 1341 function r(e) { 1342 var t, f, n = ""; 1343 if ("string" == typeof e || "number" == typeof e) n += e; 1344 else if ("object" == typeof e) if (Array.isArray(e)) { 1345 var o = e.length; 1346 for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f); 1347 } else for (f in e) e[f] && (n && (n += " "), n += f); 1348 return n; 1349 } 1350 function clsx() { 1351 for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t); 1352 return n; 1353 } 1354 var clsx_default = clsx; 1355 1356 // packages/ui/build-module/icon/icon.mjs 1357 var import_element = __toESM(require_element(), 1); 1358 var import_primitives = __toESM(require_primitives(), 1); 1359 var import_jsx_runtime = __toESM(require_jsx_runtime(), 1); 1360 var Icon = (0, import_element.forwardRef)( 1361 function UnforwardedIcon({ icon, size: size4 = 24, style, ...restProps }, ref) { 1362 const mergedStyle = icon.props.style || style ? { ...icon.props.style, ...style } : void 0; 1363 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)( 1364 import_primitives.SVG, 1365 { 1366 ref, 1367 ...icon.props, 1368 ...restProps, 1369 ...mergedStyle ? { style: mergedStyle } : {}, 1370 width: size4, 1371 height: size4 1372 } 1373 ); 1374 } 1375 ); 1376 1377 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useControlled.mjs 1378 var React10 = __toESM(require_react(), 1); 1379 1380 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/error.mjs 1381 var error = createLogOnce("error", "Base UI"); 1382 1383 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useControlled.mjs 1384 function useControlled({ 1385 controlled, 1386 default: defaultProp, 1387 name: name2, 1388 state = "value" 1389 }) { 1390 const { 1391 current: isControlled 1392 } = React10.useRef(controlled !== void 0); 1393 const [valueState, setValue] = React10.useState(() => defaultProp); 1394 const value = isControlled && controlled !== void 0 ? controlled : valueState; 1395 if (true) { 1396 React10.useEffect(() => { 1397 if (isControlled !== (controlled !== void 0)) { 1398 error([`A component is changing the $isControlled ? "" : "un"}controlled $state} state of $name2} to be $isControlled ? "un" : ""}controlled.`, "Elements should not switch from uncontrolled to controlled (or vice versa).", `Decide between using a controlled or uncontrolled $name2} element for the lifetime of the component.`, "The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.", "More info: https://fb.me/react-controlled-components"].join("\n")); 1399 } 1400 }, [state, name2, controlled]); 1401 const { 1402 current: defaultValue 1403 } = React10.useRef(defaultProp); 1404 React10.useEffect(() => { 1405 if (!isControlled && serializeToDevModeString(defaultValue) !== serializeToDevModeString(defaultProp)) { 1406 error([`A component is changing the default $state} state of an uncontrolled $name2} after being initialized. To suppress this warning opt to use a controlled $name2}.`].join("\n")); 1407 } 1408 }, [defaultProp]); 1409 } 1410 const setValueIfUncontrolled = React10.useCallback((newValue) => { 1411 if (!isControlled) { 1412 setValue(newValue); 1413 } 1414 }, []); 1415 return [value, setValueIfUncontrolled]; 1416 } 1417 function serializeToDevModeString(input) { 1418 let nextId = 0; 1419 const seen = /* @__PURE__ */ new WeakMap(); 1420 try { 1421 const result = JSON.stringify(input, function replacer(key, value) { 1422 if (key === "_owner" && this != null && typeof this === "object" && "$$typeof" in this) { 1423 return void 0; 1424 } 1425 if (typeof value === "bigint") { 1426 return `__bigint__:$value}`; 1427 } 1428 if (value !== null && typeof value === "object") { 1429 const id = seen.get(value); 1430 if (id !== void 0) { 1431 return `__object__:$id}`; 1432 } 1433 seen.set(value, nextId); 1434 nextId += 1; 1435 } 1436 return value; 1437 }); 1438 return result ?? `__top__:$typeof input}`; 1439 } catch { 1440 return "__unserializable__"; 1441 } 1442 } 1443 1444 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/list/CompositeList.mjs 1445 var React12 = __toESM(require_react(), 1); 1446 1447 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/list/CompositeListContext.mjs 1448 var React11 = __toESM(require_react(), 1); 1449 var CompositeListContext = /* @__PURE__ */ React11.createContext({ 1450 register: () => { 1451 }, 1452 unregister: () => { 1453 }, 1454 subscribeMapChange: () => () => { 1455 }, 1456 nextIndexRef: { 1457 current: 0 1458 } 1459 }); 1460 if (true) CompositeListContext.displayName = "CompositeListContext"; 1461 function useCompositeListContext() { 1462 return React11.useContext(CompositeListContext); 1463 } 1464 1465 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/list/CompositeList.mjs 1466 var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1); 1467 function CompositeList(props) { 1468 const { 1469 children, 1470 elementsRef, 1471 labelsRef, 1472 onMapChange: onMapChangeProp 1473 } = props; 1474 const onMapChange = useStableCallback(onMapChangeProp); 1475 const [, setMapTick] = React12.useState(0); 1476 const listeners = useRefWithInit(createListeners).current; 1477 const map = useRefWithInit(createMap).current; 1478 const nextIndexRef = React12.useRef(0); 1479 const isDirtyRef = React12.useRef(true); 1480 const itemsRef = React12.useRef(null); 1481 const mutationObserverRef = React12.useRef(null); 1482 const scheduleMapUpdate = useStableCallback(() => { 1483 if (isDirtyRef.current) { 1484 return; 1485 } 1486 isDirtyRef.current = true; 1487 setMapTick((tick) => tick + 1); 1488 }); 1489 const register2 = useStableCallback((node, registration) => { 1490 map.set(node, registration); 1491 scheduleMapUpdate(); 1492 }); 1493 const unregister = useStableCallback((node) => { 1494 map.delete(node); 1495 scheduleMapUpdate(); 1496 }); 1497 const syncRefs = useStableCallback((items) => { 1498 const nextMap = /* @__PURE__ */ new Map(); 1499 elementsRef.current.length = 0; 1500 if (labelsRef) { 1501 labelsRef.current.length = 0; 1502 } 1503 items.forEach((item) => { 1504 nextMap.set(item.element, { 1505 ...item.registration.metadata ?? {}, 1506 index: item.index 1507 }); 1508 elementsRef.current[item.index] = item.element; 1509 if (labelsRef) { 1510 labelsRef.current[item.index] = item.registration.label !== void 0 ? item.registration.label : item.registration.textRef?.current?.textContent ?? item.element.textContent; 1511 } 1512 }); 1513 nextIndexRef.current = elementsRef.current.length; 1514 return nextMap; 1515 }); 1516 function observe(sortedNodes) { 1517 mutationObserverRef.current?.disconnect(); 1518 mutationObserverRef.current = null; 1519 if (typeof MutationObserver !== "function" || sortedNodes.length < 2) { 1520 return; 1521 } 1522 const mutationObserver = new MutationObserver((entries) => { 1523 if (!hasMovedNode(entries)) { 1524 return; 1525 } 1526 let previousConnectedNode = null; 1527 for (const node of sortedNodes) { 1528 if (!node.isConnected) { 1529 continue; 1530 } 1531 if (previousConnectedNode && sortByDocumentPosition(previousConnectedNode, node) > 0) { 1532 mutationObserver.disconnect(); 1533 scheduleMapUpdate(); 1534 return; 1535 } 1536 previousConnectedNode = node; 1537 } 1538 }); 1539 mutationObserverRef.current = mutationObserver; 1540 const roots = /* @__PURE__ */ new Set(); 1541 for (let i = 1; i < sortedNodes.length; i += 1) { 1542 const root = getCommonAncestor(sortedNodes[i - 1], sortedNodes[i]); 1543 if (root) { 1544 roots.add(root); 1545 } 1546 } 1547 roots.forEach((root) => mutationObserver.observe(root, { 1548 childList: true 1549 })); 1550 } 1551 const flush = useStableCallback(() => { 1552 const [items, automaticNodes] = getCompositeListSnapshot(map); 1553 const nextMap = syncRefs(items); 1554 const previousItems = itemsRef.current; 1555 const changed = !previousItems || previousItems.length !== items.length || items.some((item, index2) => { 1556 const previousItem = previousItems[index2]; 1557 return item.index !== previousItem.index || item.element !== previousItem.element || item.registration.index !== previousItem.registration.index || item.registration.metadata !== previousItem.registration.metadata; 1558 }); 1559 observe(automaticNodes); 1560 itemsRef.current = items; 1561 isDirtyRef.current = false; 1562 if (!changed) { 1563 return; 1564 } 1565 listeners.forEach((listener) => listener(nextMap)); 1566 onMapChange(nextMap); 1567 }); 1568 useIsoLayoutEffect(() => { 1569 if (!isDirtyRef.current && itemsRef.current) { 1570 syncRefs(itemsRef.current); 1571 } 1572 return () => { 1573 elementsRef.current = []; 1574 if (labelsRef) { 1575 labelsRef.current = []; 1576 } 1577 }; 1578 }, [elementsRef, labelsRef, syncRefs]); 1579 useIsoLayoutEffect(() => { 1580 if (isDirtyRef.current) { 1581 flush(); 1582 } 1583 }); 1584 useIsoLayoutEffect(() => { 1585 return () => { 1586 mutationObserverRef.current?.disconnect(); 1587 isDirtyRef.current = true; 1588 }; 1589 }, []); 1590 const subscribeMapChange = useStableCallback((fn) => { 1591 listeners.add(fn); 1592 return () => { 1593 listeners.delete(fn); 1594 }; 1595 }); 1596 const contextValue = React12.useMemo(() => ({ 1597 register: register2, 1598 unregister, 1599 subscribeMapChange, 1600 nextIndexRef 1601 }), [register2, unregister, subscribeMapChange, nextIndexRef]); 1602 return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(CompositeListContext.Provider, { 1603 value: contextValue, 1604 children 1605 }); 1606 } 1607 function createMap() { 1608 return /* @__PURE__ */ new Map(); 1609 } 1610 function createListeners() { 1611 return /* @__PURE__ */ new Set(); 1612 } 1613 function getCompositeListSnapshot(map) { 1614 const reservedIndices = /* @__PURE__ */ new Set(); 1615 const items = []; 1616 const automaticItems = []; 1617 map.forEach((registration, node) => { 1618 if (!node.isConnected) { 1619 return; 1620 } 1621 const index2 = registration.index; 1622 const item = { 1623 index: index2 ?? -1, 1624 element: node, 1625 registration 1626 }; 1627 if (index2 === null) { 1628 automaticItems.push(item); 1629 } else if (index2 >= 0) { 1630 reservedIndices.add(index2); 1631 items.push(item); 1632 } 1633 }); 1634 let nextAutomaticIndex = 0; 1635 automaticItems.sort((a, b) => sortByDocumentPosition(a.element, b.element)); 1636 automaticItems.forEach((item) => { 1637 while (reservedIndices.has(nextAutomaticIndex)) { 1638 nextAutomaticIndex += 1; 1639 } 1640 item.index = nextAutomaticIndex; 1641 items.push(item); 1642 nextAutomaticIndex += 1; 1643 }); 1644 if (reservedIndices.size > 0) { 1645 items.sort((a, b) => a.index - b.index); 1646 } 1647 return [items, automaticItems.map((item) => item.element)]; 1648 } 1649 function getCommonAncestor(firstNode, lastNode) { 1650 let ancestor = firstNode.parentElement; 1651 while (ancestor && !ancestor.contains(lastNode)) { 1652 ancestor = ancestor.parentElement; 1653 } 1654 return ancestor; 1655 } 1656 function hasMovedNode(entries) { 1657 for (const entry of entries) { 1658 for (let i = 0; i < entry.removedNodes.length; i += 1) { 1659 if (entry.removedNodes[i].isConnected) { 1660 return true; 1661 } 1662 } 1663 } 1664 return false; 1665 } 1666 function sortByDocumentPosition(a, b) { 1667 if (a.nextElementSibling === b) { 1668 return -1; 1669 } 1670 if (b.nextElementSibling === a) { 1671 return 1; 1672 } 1673 return a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1; 1674 } 1675 1676 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useId.mjs 1677 var React14 = __toESM(require_react(), 1); 1678 1679 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useForcedRerendering.mjs 1680 var React13 = __toESM(require_react(), 1); 1681 function useForcedRerendering() { 1682 const [, setState] = React13.useState({}); 1683 return React13.useCallback(() => { 1684 setState({}); 1685 }, []); 1686 } 1687 1688 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useId.mjs 1689 var globalId = 0; 1690 function useGlobalId(idOverride, prefix = "mui") { 1691 const defaultId = React14.useRef(void 0); 1692 const forceRerender = useForcedRerendering(); 1693 const id = idOverride ?? defaultId.current; 1694 React14.useEffect(() => { 1695 if (defaultId.current == null) { 1696 globalId += 1; 1697 defaultId.current = `$prefix}-$globalId}`; 1698 if (idOverride == null) { 1699 forceRerender(); 1700 } 1701 } 1702 }, [idOverride, prefix, forceRerender]); 1703 return id; 1704 } 1705 var maybeReactUseId = SafeReact.useId; 1706 function useId(idOverride, prefix) { 1707 if (maybeReactUseId !== void 0) { 1708 const reactId = maybeReactUseId(); 1709 return idOverride ?? (prefix ? `$prefix}-$reactId}` : reactId); 1710 } 1711 return useGlobalId(idOverride, prefix); 1712 } 1713 1714 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useBaseUiId.mjs 1715 function useBaseUiId(idOverride) { 1716 return useId(idOverride, "base-ui"); 1717 } 1718 1719 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/createBaseUIEventDetails.mjs 1720 function createChangeEventDetails(reason, event, trigger, customProperties) { 1721 let canceled = false; 1722 let allowPropagation = false; 1723 const custom = customProperties ?? EMPTY_OBJECT; 1724 const details = { 1725 reason, 1726 event: event ?? new Event("base-ui"), 1727 cancel() { 1728 canceled = true; 1729 }, 1730 allowPropagation() { 1731 allowPropagation = true; 1732 }, 1733 get isCanceled() { 1734 return canceled; 1735 }, 1736 get isPropagationAllowed() { 1737 return allowPropagation; 1738 }, 1739 trigger, 1740 ...custom 1741 }; 1742 return details; 1743 } 1744 function createGenericEventDetails(reason, event, customProperties) { 1745 const custom = customProperties ?? EMPTY_OBJECT; 1746 const details = { 1747 reason, 1748 event: event ?? new Event("base-ui"), 1749 ...custom 1750 }; 1751 return details; 1752 } 1753 1754 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/reason-parts.mjs 1755 var reason_parts_exports = {}; 1756 __export(reason_parts_exports, { 1757 cancelOpen: () => cancelOpen, 1758 chipRemovePress: () => chipRemovePress, 1759 clearPress: () => clearPress, 1760 closePress: () => closePress, 1761 closeWatcher: () => closeWatcher, 1762 decrementPress: () => decrementPress, 1763 disabled: () => disabled, 1764 drag: () => drag, 1765 escapeKey: () => escapeKey, 1766 focusOut: () => focusOut, 1767 imperativeAction: () => imperativeAction, 1768 incrementPress: () => incrementPress, 1769 initial: () => initial, 1770 inputBlur: () => inputBlur, 1771 inputChange: () => inputChange, 1772 inputClear: () => inputClear, 1773 inputPaste: () => inputPaste, 1774 inputPress: () => inputPress, 1775 itemPress: () => itemPress, 1776 keyboard: () => keyboard, 1777 linkPress: () => linkPress, 1778 listNavigation: () => listNavigation, 1779 missing: () => missing, 1780 none: () => none, 1781 outsidePress: () => outsidePress, 1782 pointer: () => pointer, 1783 popupClose: () => popupClose, 1784 scrub: () => scrub, 1785 siblingOpen: () => siblingOpen, 1786 swipe: () => swipe, 1787 trackPress: () => trackPress, 1788 triggerFocus: () => triggerFocus, 1789 triggerHover: () => triggerHover, 1790 triggerPress: () => triggerPress, 1791 wheel: () => wheel, 1792 windowResize: () => windowResize 1793 }); 1794 var none = "none"; 1795 var triggerPress = "trigger-press"; 1796 var triggerHover = "trigger-hover"; 1797 var triggerFocus = "trigger-focus"; 1798 var outsidePress = "outside-press"; 1799 var itemPress = "item-press"; 1800 var closePress = "close-press"; 1801 var linkPress = "link-press"; 1802 var clearPress = "clear-press"; 1803 var chipRemovePress = "chip-remove-press"; 1804 var trackPress = "track-press"; 1805 var incrementPress = "increment-press"; 1806 var decrementPress = "decrement-press"; 1807 var inputChange = "input-change"; 1808 var inputClear = "input-clear"; 1809 var inputBlur = "input-blur"; 1810 var inputPaste = "input-paste"; 1811 var inputPress = "input-press"; 1812 var focusOut = "focus-out"; 1813 var escapeKey = "escape-key"; 1814 var closeWatcher = "close-watcher"; 1815 var listNavigation = "list-navigation"; 1816 var keyboard = "keyboard"; 1817 var pointer = "pointer"; 1818 var drag = "drag"; 1819 var wheel = "wheel"; 1820 var scrub = "scrub"; 1821 var popupClose = "popup-close"; 1822 var cancelOpen = "cancel-open"; 1823 var siblingOpen = "sibling-open"; 1824 var disabled = "disabled"; 1825 var missing = "missing"; 1826 var initial = "initial"; 1827 var imperativeAction = "imperative-action"; 1828 var swipe = "swipe"; 1829 var windowResize = "window-resize"; 1830 1831 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/list/useCompositeListItem.mjs 1832 var React15 = __toESM(require_react(), 1); 1833 function useCompositeListItem(params = {}) { 1834 const { 1835 guess, 1836 label, 1837 metadata, 1838 textRef, 1839 index: externalIndex 1840 } = params; 1841 const { 1842 register: register2, 1843 unregister, 1844 subscribeMapChange, 1845 nextIndexRef 1846 } = useCompositeListContext(); 1847 const indexRef = React15.useRef(-1); 1848 const [internalIndex, setInternalIndex] = React15.useState(externalIndex == null && guess ? () => { 1849 if (indexRef.current === -1) { 1850 const newIndex = nextIndexRef.current; 1851 nextIndexRef.current += 1; 1852 indexRef.current = newIndex; 1853 } 1854 return indexRef.current; 1855 } : -1); 1856 const index2 = externalIndex ?? internalIndex; 1857 const componentRef = React15.useRef(null); 1858 const ref = React15.useCallback((node) => { 1859 const previousNode = componentRef.current; 1860 if (previousNode) { 1861 unregister(previousNode); 1862 } 1863 componentRef.current = node; 1864 if (node) { 1865 register2(node, { 1866 metadata: metadata ?? null, 1867 index: externalIndex ?? null, 1868 label, 1869 textRef 1870 }); 1871 } 1872 }, [externalIndex, register2, unregister, metadata, label, textRef]); 1873 useIsoLayoutEffect(() => { 1874 if (externalIndex != null) { 1875 return void 0; 1876 } 1877 return subscribeMapChange((map) => { 1878 const i = componentRef.current ? map.get(componentRef.current)?.index : null; 1879 if (i != null) { 1880 setInternalIndex(i); 1881 } 1882 }); 1883 }, [externalIndex, subscribeMapChange]); 1884 return { 1885 ref, 1886 index: index2 1887 }; 1888 } 1889 1890 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/use-button/useButton.mjs 1891 var React18 = __toESM(require_react(), 1); 1892 1893 // node_modules/.store/@floating-ui/utils@0.2.12-gOxTzMf36nCrbeHpEew-rw/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs 1894 function hasWindow() { 1895 return typeof window !== "undefined"; 1896 } 1897 function getNodeName(node) { 1898 if (isNode(node)) { 1899 return (node.nodeName || "").toLowerCase(); 1900 } 1901 return "#document"; 1902 } 1903 function getWindow(node) { 1904 var _node$ownerDocument; 1905 return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window; 1906 } 1907 function getDocumentElement(node) { 1908 var _ref; 1909 return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement; 1910 } 1911 function isNode(value) { 1912 if (!hasWindow()) { 1913 return false; 1914 } 1915 return value instanceof Node || value instanceof getWindow(value).Node; 1916 } 1917 function isElement(value) { 1918 if (!hasWindow()) { 1919 return false; 1920 } 1921 return value instanceof Element || value instanceof getWindow(value).Element; 1922 } 1923 function isHTMLElement(value) { 1924 if (!hasWindow()) { 1925 return false; 1926 } 1927 return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement; 1928 } 1929 function isShadowRoot(value) { 1930 if (!hasWindow() || typeof ShadowRoot === "undefined") { 1931 return false; 1932 } 1933 return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot; 1934 } 1935 function isOverflowElement(element) { 1936 const { 1937 overflow, 1938 overflowX, 1939 overflowY, 1940 display 1941 } = getComputedStyle2(element); 1942 return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== "inline" && display !== "contents"; 1943 } 1944 function isTableElement(element) { 1945 return /^(table|td|th)$/.test(getNodeName(element)); 1946 } 1947 function isTopLayer(element) { 1948 try { 1949 if (element.matches(":popover-open")) { 1950 return true; 1951 } 1952 } catch (_e) { 1953 } 1954 try { 1955 return element.matches(":modal"); 1956 } catch (_e) { 1957 return false; 1958 } 1959 } 1960 var willChangeRe = /transform|translate|scale|rotate|perspective|filter/; 1961 var containRe = /paint|layout|strict|content/; 1962 var isNotNone = (value) => !!value && value !== "none"; 1963 var isWebKitValue; 1964 function isContainingBlock(elementOrCss) { 1965 const css = isElement(elementOrCss) ? getComputedStyle2(elementOrCss) : elementOrCss; 1966 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 || ""); 1967 } 1968 function getContainingBlock(element) { 1969 let currentNode = getParentNode(element); 1970 while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) { 1971 if (isContainingBlock(currentNode)) { 1972 return currentNode; 1973 } else if (isTopLayer(currentNode)) { 1974 return null; 1975 } 1976 currentNode = getParentNode(currentNode); 1977 } 1978 return null; 1979 } 1980 function isWebKit() { 1981 if (isWebKitValue == null) { 1982 isWebKitValue = typeof CSS !== "undefined" && CSS.supports && CSS.supports("-webkit-backdrop-filter", "none"); 1983 } 1984 return isWebKitValue; 1985 } 1986 function isLastTraversableNode(node) { 1987 return /^(html|body|#document)$/.test(getNodeName(node)); 1988 } 1989 function getComputedStyle2(element) { 1990 return getWindow(element).getComputedStyle(element); 1991 } 1992 function getNodeScroll(element) { 1993 if (isElement(element)) { 1994 return { 1995 scrollLeft: element.scrollLeft, 1996 scrollTop: element.scrollTop 1997 }; 1998 } 1999 return { 2000 scrollLeft: element.scrollX, 2001 scrollTop: element.scrollY 2002 }; 2003 } 2004 function getParentNode(node) { 2005 if (getNodeName(node) === "html") { 2006 return node; 2007 } 2008 const result = ( 2009 // Step into the shadow DOM of the parent of a slotted node. 2010 node.assignedSlot || // DOM Element detected. 2011 node.parentNode || // ShadowRoot detected. 2012 isShadowRoot(node) && node.host || // Fallback. 2013 getDocumentElement(node) 2014 ); 2015 return isShadowRoot(result) ? result.host : result; 2016 } 2017 function getNearestOverflowAncestor(node) { 2018 const parentNode = getParentNode(node); 2019 if (isLastTraversableNode(parentNode)) { 2020 return (node.ownerDocument || node).body; 2021 } 2022 if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) { 2023 return parentNode; 2024 } 2025 return getNearestOverflowAncestor(parentNode); 2026 } 2027 function getOverflowAncestors(node, list, traverseIframes) { 2028 var _node$ownerDocument2; 2029 if (list === void 0) { 2030 list = []; 2031 } 2032 if (traverseIframes === void 0) { 2033 traverseIframes = true; 2034 } 2035 const scrollableAncestor = getNearestOverflowAncestor(node); 2036 const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body); 2037 const win = getWindow(scrollableAncestor); 2038 if (isBody) { 2039 const frameElement = getFrameElement(win); 2040 return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []); 2041 } else { 2042 return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes)); 2043 } 2044 } 2045 function getFrameElement(win) { 2046 return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null; 2047 } 2048 2049 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/root/CompositeRootContext.mjs 2050 var React16 = __toESM(require_react(), 1); 2051 var CompositeRootContext = /* @__PURE__ */ React16.createContext(void 0); 2052 if (true) CompositeRootContext.displayName = "CompositeRootContext"; 2053 function useCompositeRootContext(optional = false) { 2054 const context = React16.useContext(CompositeRootContext); 2055 if (context === void 0 && !optional) { 2056 throw new Error(true ? "Base UI: CompositeRootContext is missing. Composite parts must be placed within <Composite.Root>." : formatErrorMessage_default(16)); 2057 } 2058 return context; 2059 } 2060 2061 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/useFocusableWhenDisabled.mjs 2062 var React17 = __toESM(require_react(), 1); 2063 function useFocusableWhenDisabled(parameters) { 2064 const { 2065 focusableWhenDisabled, 2066 disabled: disabled2, 2067 composite = false, 2068 tabIndex: tabIndexProp = 0, 2069 isNativeButton 2070 } = parameters; 2071 const isFocusableComposite = composite && focusableWhenDisabled !== false; 2072 const isNonFocusableComposite = composite && focusableWhenDisabled === false; 2073 const props = React17.useMemo(() => { 2074 const additionalProps = { 2075 // allow Tabbing away from focusableWhenDisabled elements 2076 onKeyDown(event) { 2077 if (disabled2 && focusableWhenDisabled && event.key !== "Tab") { 2078 event.preventDefault(); 2079 } 2080 } 2081 }; 2082 if (!composite) { 2083 additionalProps.tabIndex = tabIndexProp; 2084 if (!isNativeButton && disabled2) { 2085 additionalProps.tabIndex = focusableWhenDisabled ? tabIndexProp : -1; 2086 } 2087 } 2088 if (isNativeButton && (focusableWhenDisabled || isFocusableComposite) || !isNativeButton && disabled2) { 2089 additionalProps["aria-disabled"] = disabled2; 2090 } 2091 if (isNativeButton && (!focusableWhenDisabled || isNonFocusableComposite)) { 2092 additionalProps.disabled = disabled2; 2093 } 2094 return additionalProps; 2095 }, [composite, disabled2, focusableWhenDisabled, isFocusableComposite, isNonFocusableComposite, isNativeButton, tabIndexProp]); 2096 return { 2097 props 2098 }; 2099 } 2100 2101 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/owner.mjs 2102 function ownerDocument(node) { 2103 return node?.ownerDocument || document; 2104 } 2105 2106 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/dispatchClickWithModifiers.mjs 2107 function dispatchClickWithModifiers(target, sourceEvent, { 2108 detail = 0, 2109 pointerType = "" 2110 } = {}) { 2111 target.dispatchEvent(new (getWindow(target)).PointerEvent("click", { 2112 bubbles: true, 2113 cancelable: true, 2114 composed: true, 2115 detail, 2116 pointerType, 2117 shiftKey: sourceEvent.shiftKey, 2118 ctrlKey: sourceEvent.ctrlKey, 2119 altKey: sourceEvent.altKey, 2120 metaKey: sourceEvent.metaKey 2121 })); 2122 } 2123 2124 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/use-button/useButton.mjs 2125 function useButton(parameters = {}) { 2126 const { 2127 disabled: disabled2 = false, 2128 focusableWhenDisabled, 2129 tabIndex = 0, 2130 native: isNativeButton = true, 2131 composite: compositeProp 2132 } = parameters; 2133 const elementRef = React18.useRef(null); 2134 const compositeRootContext = useCompositeRootContext(true); 2135 const isCompositeItem = compositeProp ?? compositeRootContext !== void 0; 2136 const { 2137 props: focusableWhenDisabledProps 2138 } = useFocusableWhenDisabled({ 2139 focusableWhenDisabled, 2140 disabled: disabled2, 2141 composite: isCompositeItem, 2142 tabIndex, 2143 isNativeButton 2144 }); 2145 if (true) { 2146 React18.useEffect(() => { 2147 if (!elementRef.current) { 2148 return; 2149 } 2150 const isButtonTag = isButtonElement(elementRef.current); 2151 if (isNativeButton) { 2152 if (!isButtonTag) { 2153 const ownerStackMessage = SafeReact.captureOwnerStack?.() || ""; 2154 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`."; 2155 error(`$message}$ownerStackMessage}`); 2156 } 2157 } else if (isButtonTag) { 2158 const ownerStackMessage = SafeReact.captureOwnerStack?.() || ""; 2159 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`."; 2160 error(`$message}$ownerStackMessage}`); 2161 } 2162 }, [isNativeButton]); 2163 } 2164 const updateDisabled = React18.useCallback(() => { 2165 const element = elementRef.current; 2166 if (!isButtonElement(element)) { 2167 return; 2168 } 2169 if (isCompositeItem && disabled2 && focusableWhenDisabledProps.disabled === void 0 && element.disabled) { 2170 element.disabled = false; 2171 } 2172 }, [disabled2, focusableWhenDisabledProps.disabled, isCompositeItem]); 2173 useIsoLayoutEffect(updateDisabled, [updateDisabled]); 2174 const getButtonProps = React18.useCallback((externalProps = {}) => { 2175 const { 2176 onClick: externalOnClick, 2177 onMouseDown: externalOnMouseDown, 2178 onKeyUp: externalOnKeyUp, 2179 onKeyDown: externalOnKeyDown, 2180 onPointerDown: externalOnPointerDown, 2181 ...otherExternalProps 2182 } = externalProps; 2183 return mergeProps({ 2184 onClick(event) { 2185 if (disabled2) { 2186 event.preventDefault(); 2187 return; 2188 } 2189 externalOnClick?.(event); 2190 }, 2191 onMouseDown(event) { 2192 if (!disabled2) { 2193 externalOnMouseDown?.(event); 2194 } 2195 }, 2196 onKeyDown(event) { 2197 if (disabled2) { 2198 return; 2199 } 2200 makeEventPreventable(event); 2201 externalOnKeyDown?.(event); 2202 if (event.baseUIHandlerPrevented) { 2203 return; 2204 } 2205 const isCurrentTarget = event.target === event.currentTarget; 2206 const currentTarget = event.currentTarget; 2207 const isButton = isButtonElement(currentTarget); 2208 const isLink = !isNativeButton && isValidLinkElement(currentTarget); 2209 const shouldClick = isCurrentTarget && (isNativeButton ? isButton : !isLink); 2210 const isEnterKey = event.key === "Enter"; 2211 const isSpaceKey = event.key === " "; 2212 const role = currentTarget.getAttribute("role"); 2213 const isTextNavigationRole = role?.startsWith("menuitem") || role === "option" || role === "gridcell"; 2214 if (isCurrentTarget && isCompositeItem && isSpaceKey) { 2215 if (event.defaultPrevented && isTextNavigationRole) { 2216 return; 2217 } 2218 event.preventDefault(); 2219 if (!isNativeButton || isButton) { 2220 event.preventBaseUIHandler(); 2221 dispatchClickWithModifiers(currentTarget, event); 2222 } 2223 return; 2224 } 2225 if (!shouldClick || isNativeButton || !isSpaceKey && !isEnterKey) { 2226 if (isCurrentTarget && isLink && isSpaceKey) { 2227 event.preventDefault(); 2228 } 2229 return; 2230 } 2231 if (event.defaultPrevented) { 2232 return; 2233 } 2234 event.preventDefault(); 2235 if (isEnterKey) { 2236 event.preventBaseUIHandler(); 2237 dispatchClickWithModifiers(currentTarget, event); 2238 } 2239 }, 2240 onKeyUp(event) { 2241 if (disabled2) { 2242 return; 2243 } 2244 makeEventPreventable(event); 2245 externalOnKeyUp?.(event); 2246 if (event.target === event.currentTarget && isNativeButton && isCompositeItem && isButtonElement(event.currentTarget) && event.key === " ") { 2247 event.preventDefault(); 2248 return; 2249 } 2250 if (event.baseUIHandlerPrevented) { 2251 return; 2252 } 2253 if (event.target === event.currentTarget && !isNativeButton && !isCompositeItem && !event.defaultPrevented && event.key === " ") { 2254 event.preventBaseUIHandler(); 2255 dispatchClickWithModifiers(event.currentTarget, event); 2256 } 2257 }, 2258 onPointerDown(event) { 2259 if (disabled2) { 2260 event.preventDefault(); 2261 return; 2262 } 2263 externalOnPointerDown?.(event); 2264 } 2265 }, isNativeButton ? { 2266 type: "button" 2267 } : { 2268 role: "button" 2269 }, focusableWhenDisabledProps, otherExternalProps); 2270 }, [disabled2, focusableWhenDisabledProps, isCompositeItem, isNativeButton]); 2271 const buttonRef = useStableCallback((element) => { 2272 elementRef.current = element; 2273 updateDisabled(); 2274 }); 2275 return { 2276 getButtonProps, 2277 buttonRef 2278 }; 2279 } 2280 function isButtonElement(elem) { 2281 return isHTMLElement(elem) && elem.tagName === "BUTTON"; 2282 } 2283 function isValidLinkElement(elem) { 2284 return isHTMLElement(elem) && elem.tagName === "A" && Boolean(elem.href); 2285 } 2286 2287 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/addEventListener.mjs 2288 function addEventListener(target, type, listener, options) { 2289 target.addEventListener(type, listener, options); 2290 return () => { 2291 target.removeEventListener(type, listener, options); 2292 }; 2293 } 2294 2295 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useValueAsRef.mjs 2296 function useValueAsRef(value) { 2297 const latest = useRefWithInit(createLatestRef, value).current; 2298 latest.next = value; 2299 useIsoLayoutEffect(latest.effect); 2300 return latest; 2301 } 2302 function createLatestRef(value) { 2303 const latest = { 2304 current: value, 2305 next: value, 2306 effect: () => { 2307 latest.current = latest.next; 2308 } 2309 }; 2310 return latest; 2311 } 2312 2313 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/parts.mjs 2314 var parts_exports = {}; 2315 __export(parts_exports, { 2316 engine: () => engine_exports, 2317 env: () => env_exports, 2318 mediaQuery: () => media_query_exports, 2319 os: () => os_exports, 2320 screenReader: () => screen_reader_exports 2321 }); 2322 2323 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/os.mjs 2324 var os_exports = {}; 2325 __export(os_exports, { 2326 android: () => android, 2327 apple: () => apple, 2328 ios: () => ios, 2329 linux: () => linux, 2330 mac: () => mac, 2331 windows: () => windows 2332 }); 2333 2334 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/shared.mjs 2335 function readRawData() { 2336 if (typeof navigator === "undefined") { 2337 return { 2338 userAgent: "", 2339 platform: "", 2340 maxTouchPoints: 0 2341 }; 2342 } 2343 if (true) { 2344 const uaData = navigator.userAgentData; 2345 if (uaData && Array.isArray(uaData.brands)) { 2346 return { 2347 userAgent: uaData.brands.map(({ 2348 brand, 2349 version: version2 2350 }) => `$brand}/$version2}`).join(" "), 2351 platform: uaData.platform ?? navigator.platform ?? "", 2352 maxTouchPoints: navigator.maxTouchPoints ?? 0 2353 }; 2354 } 2355 } 2356 return { 2357 userAgent: navigator.userAgent, 2358 platform: navigator.platform ?? "", 2359 maxTouchPoints: navigator.maxTouchPoints ?? 0 2360 }; 2361 } 2362 var { 2363 userAgent, 2364 platform, 2365 maxTouchPoints 2366 } = readRawData(); 2367 var lowerUserAgent = userAgent.toLowerCase(); 2368 var lowerPlatform = platform.toLowerCase(); 2369 2370 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/os.mjs 2371 var ios = /^i(os$|p)/.test(lowerPlatform) || lowerPlatform === "macintel" && maxTouchPoints > 1; 2372 var ANDROID_STRING = "android"; 2373 var android = lowerPlatform === ANDROID_STRING || lowerUserAgent.includes(ANDROID_STRING); 2374 var mac = !ios && lowerPlatform.startsWith("mac"); 2375 var windows = lowerPlatform.startsWith("win"); 2376 var linux = !android && /^(linux|chrome os)/.test(lowerPlatform); 2377 var apple = mac || ios; 2378 2379 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/engine.mjs 2380 var engine_exports = {}; 2381 __export(engine_exports, { 2382 blink: () => blink, 2383 gecko: () => gecko, 2384 webkit: () => webkit 2385 }); 2386 var webkit = typeof CSS !== "undefined" && !!CSS.supports?.("-webkit-backdrop-filter:none"); 2387 var gecko = !webkit && lowerUserAgent.includes("firefox"); 2388 var blink = !webkit && lowerUserAgent.includes("chrom"); 2389 2390 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/screen-reader.mjs 2391 var screen_reader_exports = {}; 2392 __export(screen_reader_exports, { 2393 voiceOver: () => voiceOver 2394 }); 2395 var voiceOver = apple; 2396 2397 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/env.mjs 2398 var env_exports = {}; 2399 __export(env_exports, { 2400 jsdom: () => jsdom 2401 }); 2402 var jsdom = /jsdom|happydom/.test(lowerUserAgent); 2403 2404 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/media-query.mjs 2405 var media_query_exports = {}; 2406 __export(media_query_exports, { 2407 iOS: () => iOS 2408 }); 2409 var iOS = "@supports (-webkit-touch-callout: none)"; 2410 2411 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useScrollLock.mjs 2412 var originalHtmlStyles = {}; 2413 var originalBodyStyles = {}; 2414 var originalHtmlScrollBehavior = ""; 2415 function getViewportScroller(html, body) { 2416 return isOverflowElement(html) ? html : body; 2417 } 2418 function isPageScrollLocked(win, html, body) { 2419 return /hidden|clip/.test(win.getComputedStyle(getViewportScroller(html, body)).overflowY); 2420 } 2421 function hasInsetScrollbars(referenceElement) { 2422 if (typeof document === "undefined") { 2423 return false; 2424 } 2425 const doc = ownerDocument(referenceElement); 2426 const win = getWindow(doc); 2427 return win.innerWidth - doc.documentElement.clientWidth > 0; 2428 } 2429 function supportsStableScrollbarGutter(referenceElement) { 2430 const supported = typeof CSS !== "undefined" && CSS.supports && CSS.supports("scrollbar-gutter", "stable"); 2431 if (!supported || typeof document === "undefined") { 2432 return false; 2433 } 2434 const doc = ownerDocument(referenceElement); 2435 const html = doc.documentElement; 2436 const body = doc.body; 2437 const scrollContainer = getViewportScroller(html, body); 2438 const originalScrollContainerOverflowY = scrollContainer.style.overflowY; 2439 const originalHtmlStyleGutter = html.style.scrollbarGutter; 2440 html.style.scrollbarGutter = "stable"; 2441 scrollContainer.style.overflowY = "scroll"; 2442 const before = scrollContainer.offsetWidth; 2443 scrollContainer.style.overflowY = "hidden"; 2444 const after = scrollContainer.offsetWidth; 2445 scrollContainer.style.overflowY = originalScrollContainerOverflowY; 2446 html.style.scrollbarGutter = originalHtmlStyleGutter; 2447 return before === after; 2448 } 2449 function preventScrollOverlayScrollbars(referenceElement) { 2450 const doc = ownerDocument(referenceElement); 2451 const html = doc.documentElement; 2452 const body = doc.body; 2453 const elementToLock = getViewportScroller(html, body); 2454 const originalElementToLockStyles = { 2455 overflowY: elementToLock.style.overflowY, 2456 overflowX: elementToLock.style.overflowX 2457 }; 2458 Object.assign(elementToLock.style, { 2459 overflowY: "hidden", 2460 overflowX: "hidden" 2461 }); 2462 return () => { 2463 Object.assign(elementToLock.style, originalElementToLockStyles); 2464 }; 2465 } 2466 function preventScrollInsetScrollbars(referenceElement) { 2467 const doc = ownerDocument(referenceElement); 2468 const html = doc.documentElement; 2469 const body = doc.body; 2470 const win = getWindow(html); 2471 let scrollTop = 0; 2472 let scrollLeft = 0; 2473 let updateGutterOnly = false; 2474 const resizeFrame = AnimationFrame.create(); 2475 if (parts_exports.engine.webkit && (win.visualViewport?.scale ?? 1) !== 1) { 2476 return () => { 2477 }; 2478 } 2479 function lockScroll() { 2480 const htmlStyles = win.getComputedStyle(html); 2481 const bodyStyles = win.getComputedStyle(body); 2482 const htmlScrollbarGutterValue = htmlStyles.scrollbarGutter || ""; 2483 const hasBothEdges = htmlScrollbarGutterValue.includes("both-edges"); 2484 const scrollbarGutterValue = hasBothEdges ? "stable both-edges" : "stable"; 2485 scrollTop = html.scrollTop; 2486 scrollLeft = html.scrollLeft; 2487 originalHtmlStyles = { 2488 scrollbarGutter: html.style.scrollbarGutter, 2489 overflowY: html.style.overflowY, 2490 overflowX: html.style.overflowX 2491 }; 2492 originalHtmlScrollBehavior = html.style.scrollBehavior; 2493 originalBodyStyles = { 2494 position: body.style.position, 2495 height: body.style.height, 2496 width: body.style.width, 2497 boxSizing: body.style.boxSizing, 2498 overflowY: body.style.overflowY, 2499 overflowX: body.style.overflowX, 2500 scrollBehavior: body.style.scrollBehavior 2501 }; 2502 const isScrollableY = html.scrollHeight > html.clientHeight; 2503 const isScrollableX = html.scrollWidth > html.clientWidth; 2504 const hasConstantOverflowY = htmlStyles.overflowY === "scroll" || bodyStyles.overflowY === "scroll"; 2505 const hasConstantOverflowX = htmlStyles.overflowX === "scroll" || bodyStyles.overflowX === "scroll"; 2506 const scrollbarWidth = Math.max(0, win.innerWidth - body.clientWidth); 2507 const scrollbarHeight = Math.max(0, win.innerHeight - body.clientHeight); 2508 const marginY = parseFloat(bodyStyles.marginTop) + parseFloat(bodyStyles.marginBottom); 2509 const marginX = parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight); 2510 const elementToLock = getViewportScroller(html, body); 2511 updateGutterOnly = supportsStableScrollbarGutter(referenceElement); 2512 if (updateGutterOnly) { 2513 html.style.scrollbarGutter = scrollbarGutterValue; 2514 elementToLock.style.overflowY = "hidden"; 2515 elementToLock.style.overflowX = "hidden"; 2516 return; 2517 } 2518 Object.assign(html.style, { 2519 scrollbarGutter: scrollbarGutterValue, 2520 overflowY: "hidden", 2521 overflowX: "hidden" 2522 }); 2523 if (isScrollableY || hasConstantOverflowY) { 2524 html.style.overflowY = "scroll"; 2525 } 2526 if (isScrollableX || hasConstantOverflowX) { 2527 html.style.overflowX = "scroll"; 2528 } 2529 Object.assign(body.style, { 2530 position: "relative", 2531 height: marginY || scrollbarHeight ? `calc(100dvh - $marginY + scrollbarHeight}px)` : "100dvh", 2532 width: marginX || scrollbarWidth ? `calc(100vw - $marginX + scrollbarWidth}px)` : "100vw", 2533 boxSizing: "border-box", 2534 // Assign the longhands that `cleanup` restores, so nothing is left behind. 2535 overflowY: "hidden", 2536 overflowX: "hidden", 2537 scrollBehavior: "unset" 2538 }); 2539 body.scrollTop = scrollTop; 2540 body.scrollLeft = scrollLeft; 2541 html.setAttribute("data-base-ui-scroll-locked", ""); 2542 html.style.scrollBehavior = "unset"; 2543 } 2544 function cleanup() { 2545 Object.assign(html.style, originalHtmlStyles); 2546 Object.assign(body.style, originalBodyStyles); 2547 if (!updateGutterOnly) { 2548 html.scrollTop = scrollTop; 2549 html.scrollLeft = scrollLeft; 2550 html.removeAttribute("data-base-ui-scroll-locked"); 2551 html.style.scrollBehavior = originalHtmlScrollBehavior; 2552 } 2553 } 2554 function handleResize() { 2555 cleanup(); 2556 resizeFrame.request(lockScroll); 2557 } 2558 lockScroll(); 2559 const unsubscribeResize = addEventListener(win, "resize", handleResize); 2560 return () => { 2561 resizeFrame.cancel(); 2562 cleanup(); 2563 if (typeof win.removeEventListener === "function") { 2564 unsubscribeResize(); 2565 } 2566 }; 2567 } 2568 var ScrollLocker = class { 2569 lockCount = 0; 2570 restore = null; 2571 timeoutLock = Timeout.create(); 2572 timeoutUnlock = Timeout.create(); 2573 acquire(referenceElement) { 2574 this.lockCount += 1; 2575 if (this.lockCount === 1 && this.restore === null) { 2576 this.timeoutLock.start(0, () => this.lock(referenceElement)); 2577 } 2578 return this.release; 2579 } 2580 release = () => { 2581 this.lockCount -= 1; 2582 if (this.lockCount === 0 && this.restore) { 2583 this.timeoutUnlock.start(0, this.unlock); 2584 } 2585 }; 2586 unlock = () => { 2587 if (this.lockCount === 0 && this.restore) { 2588 this.restore?.(); 2589 this.restore = null; 2590 } 2591 }; 2592 lock(referenceElement) { 2593 if (this.lockCount === 0 || this.restore !== null) { 2594 return; 2595 } 2596 const doc = ownerDocument(referenceElement); 2597 const html = doc.documentElement; 2598 const body = doc.body; 2599 const win = getWindow(html); 2600 if (isPageScrollLocked(win, html, body)) { 2601 const observer = new win.MutationObserver(() => { 2602 if (isPageScrollLocked(win, html, body)) { 2603 return; 2604 } 2605 observer.disconnect(); 2606 this.restore = null; 2607 this.lock(referenceElement); 2608 }); 2609 const options = { 2610 attributes: true 2611 }; 2612 observer.observe(html, options); 2613 observer.observe(body, options); 2614 this.restore = () => observer.disconnect(); 2615 return; 2616 } 2617 const hasOverlayScrollbars = parts_exports.os.ios || !hasInsetScrollbars(referenceElement); 2618 this.restore = hasOverlayScrollbars ? preventScrollOverlayScrollbars(referenceElement) : preventScrollInsetScrollbars(referenceElement); 2619 } 2620 }; 2621 var SCROLL_LOCKER = new ScrollLocker(); 2622 function useScrollLock(enabled = true, referenceElement = null) { 2623 useIsoLayoutEffect(() => { 2624 if (!enabled) { 2625 return void 0; 2626 } 2627 return SCROLL_LOCKER.acquire(referenceElement); 2628 }, [enabled, referenceElement]); 2629 } 2630 2631 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingDelayGroup.mjs 2632 var React19 = __toESM(require_react(), 1); 2633 2634 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/event.mjs 2635 function stopEvent(event) { 2636 event.preventDefault(); 2637 event.stopPropagation(); 2638 } 2639 function isReactEvent(event) { 2640 return "nativeEvent" in event; 2641 } 2642 function isVirtualClick(event) { 2643 if (event.pointerType === "" && event.isTrusted) { 2644 return true; 2645 } 2646 if (parts_exports.os.android && event.pointerType) { 2647 return event.type === "click" && event.buttons === 1; 2648 } 2649 return event.detail === 0 && !event.pointerType; 2650 } 2651 function isVirtualPointerEvent(event) { 2652 if (parts_exports.env.jsdom) { 2653 return false; 2654 } 2655 return !parts_exports.os.android && event.width === 0 && event.height === 0 || // Chrome synthesizes a screen reader press (TalkBack, VoiceOver, NVDA) as a 1x1 mouse 2656 // `pointerdown` with no pressure. TalkBack can report a pressed button, while desktop 2657 // mouse presses can report no pressure, so only require no pressed button off Android. 2658 event.type === "pointerdown" && event.width === 1 && event.height === 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === "mouse" && (parts_exports.os.android || event.buttons === 0) || // iOS VoiceOver returns 0.333• for width/height. 2659 event.width < 1 && event.height < 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === "touch"; 2660 } 2661 function isMouseLikePointerType(pointerType, strict) { 2662 const values = ["mouse", "pen"]; 2663 if (!strict) { 2664 values.push("", void 0); 2665 } 2666 return values.includes(pointerType); 2667 } 2668 function isClickLikeEvent(event) { 2669 const type = event.type; 2670 return type === "click" || type === "mousedown" || type === "keydown" || type === "keyup"; 2671 } 2672 2673 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/shadowDom.mjs 2674 function activeElement(doc) { 2675 let element = doc.activeElement; 2676 while (element?.shadowRoot?.activeElement != null) { 2677 element = element.shadowRoot.activeElement; 2678 } 2679 return element; 2680 } 2681 function contains(parent, child) { 2682 if (!parent || !child) { 2683 return false; 2684 } 2685 const rootNode = child.getRootNode?.(); 2686 if (parent.contains(child)) { 2687 return true; 2688 } 2689 if (rootNode && isShadowRoot(rootNode)) { 2690 let next = child; 2691 while (next) { 2692 if (parent === next) { 2693 return true; 2694 } 2695 next = next.parentNode || next.host; 2696 } 2697 } 2698 return false; 2699 } 2700 function closest(node, selector) { 2701 let current = node; 2702 while (current) { 2703 if (isElement(current) && current.matches(selector)) { 2704 return current; 2705 } 2706 current = current.assignedSlot ?? current.parentNode ?? (isShadowRoot(current) ? current.host : null); 2707 } 2708 return null; 2709 } 2710 function getTarget(event) { 2711 if ("composedPath" in event) { 2712 return event.composedPath()[0] ?? event.target; 2713 } 2714 return event.target; 2715 } 2716 2717 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/constants.mjs 2718 var FOCUSABLE_ATTRIBUTE = "data-base-ui-focusable"; 2719 var TYPEABLE_SELECTOR = "input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])"; 2720 var ARROW_LEFT = "ArrowLeft"; 2721 var ARROW_RIGHT = "ArrowRight"; 2722 var ARROW_UP = "ArrowUp"; 2723 var ARROW_DOWN = "ArrowDown"; 2724 2725 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/CommonPopupDataAttributes.mjs 2726 var open = "data-open"; 2727 var closed = "data-closed"; 2728 var anchorHidden = "data-anchor-hidden"; 2729 2730 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/CommonTriggerDataAttributes.mjs 2731 var CommonTriggerDataAttributes_exports = {}; 2732 __export(CommonTriggerDataAttributes_exports, { 2733 popupOpen: () => popupOpen, 2734 pressed: () => pressed 2735 }); 2736 var popupOpen = "data-popup-open"; 2737 var pressed = "data-pressed"; 2738 2739 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popupStateMapping.mjs 2740 var TRIGGER_HOOK = { 2741 [popupOpen]: "" 2742 }; 2743 var PRESSABLE_TRIGGER_HOOK = { 2744 [popupOpen]: "", 2745 [pressed]: "" 2746 }; 2747 var POPUP_OPEN_HOOK = { 2748 [open]: "" 2749 }; 2750 var POPUP_CLOSED_HOOK = { 2751 [closed]: "" 2752 }; 2753 var ANCHOR_HIDDEN_HOOK = { 2754 [anchorHidden]: "" 2755 }; 2756 var triggerOpenStateMapping = { 2757 open(value) { 2758 if (value) { 2759 return TRIGGER_HOOK; 2760 } 2761 return null; 2762 } 2763 }; 2764 var pressableTriggerOpenStateMapping = { 2765 open(value) { 2766 if (value) { 2767 return PRESSABLE_TRIGGER_HOOK; 2768 } 2769 return null; 2770 } 2771 }; 2772 var popupStateMapping = { 2773 open(value) { 2774 if (value) { 2775 return POPUP_OPEN_HOOK; 2776 } 2777 return POPUP_CLOSED_HOOK; 2778 }, 2779 anchorHidden(value) { 2780 if (value) { 2781 return ANCHOR_HIDDEN_HOOK; 2782 } 2783 return null; 2784 } 2785 }; 2786 var popupTransitionStateMapping = { 2787 ...popupStateMapping, 2788 ...transitionStatusMapping 2789 }; 2790 2791 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/trigger/TooltipTriggerDataAttributes.mjs 2792 var popupOpen2 = CommonTriggerDataAttributes_exports.popupOpen; 2793 var triggerDisabled = "data-trigger-disabled"; 2794 2795 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/element.mjs 2796 function isTargetInsideEnabledTrigger(target, triggerElements) { 2797 if (!isElement(target)) { 2798 return false; 2799 } 2800 const targetElement = target; 2801 if (triggerElements.hasElement(targetElement)) { 2802 return !targetElement.hasAttribute(triggerDisabled); 2803 } 2804 for (const [, trigger] of triggerElements.entries()) { 2805 if (contains(trigger, targetElement)) { 2806 return !trigger.hasAttribute(triggerDisabled); 2807 } 2808 } 2809 return false; 2810 } 2811 function isEventTargetWithin(event, node) { 2812 if (node == null) { 2813 return false; 2814 } 2815 if ("composedPath" in event) { 2816 return event.composedPath().includes(node); 2817 } 2818 const eventAgain = event; 2819 return eventAgain.target != null && node.contains(eventAgain.target); 2820 } 2821 function isRootElement(element) { 2822 return element.matches("html,body"); 2823 } 2824 function isTypeableElement(element) { 2825 return isHTMLElement(element) && element.matches(TYPEABLE_SELECTOR); 2826 } 2827 function isInteractiveElement(element) { 2828 return closest(element, `button,a[href],[role="button"],select,[tabindex]:not([tabindex="-1"]),$TYPEABLE_SELECTOR}`) != null; 2829 } 2830 function isTypeableCombobox(element) { 2831 if (!element) { 2832 return false; 2833 } 2834 return element.getAttribute("role") === "combobox" && isTypeableElement(element); 2835 } 2836 function matchesFocusVisible(element) { 2837 if (!element || parts_exports.env.jsdom) { 2838 return true; 2839 } 2840 try { 2841 return element.matches(":focus-visible"); 2842 } catch (_e) { 2843 return true; 2844 } 2845 } 2846 function getFloatingFocusElement(floatingElement) { 2847 if (!floatingElement) { 2848 return null; 2849 } 2850 return floatingElement.hasAttribute(FOCUSABLE_ATTRIBUTE) ? floatingElement : floatingElement.querySelector(`[$FOCUSABLE_ATTRIBUTE}]`) || floatingElement; 2851 } 2852 2853 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useHoverShared.mjs 2854 function resolveValue(value, pointerType) { 2855 if (pointerType != null && !isMouseLikePointerType(pointerType)) { 2856 return 0; 2857 } 2858 if (typeof value === "function") { 2859 return value(); 2860 } 2861 return value; 2862 } 2863 function getDelay(value, prop, pointerType) { 2864 const result = resolveValue(value, pointerType); 2865 if (typeof result === "number") { 2866 return result; 2867 } 2868 return result?.[prop]; 2869 } 2870 function getRestMs(value) { 2871 if (typeof value === "function") { 2872 return value(); 2873 } 2874 return value; 2875 } 2876 function isClickLikeOpenEvent(openEventType, interactedInside) { 2877 return interactedInside || openEventType === "click" || openEventType === "mousedown"; 2878 } 2879 function isHoverOpenEvent(openEventType) { 2880 return openEventType?.includes("mouse") && openEventType !== "mousedown"; 2881 } 2882 2883 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingDelayGroup.mjs 2884 var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1); 2885 var FloatingDelayGroupContext = /* @__PURE__ */ React19.createContext({ 2886 hasProvider: false, 2887 timeoutMs: 0, 2888 delayRef: { 2889 current: 0 2890 }, 2891 initialDelayRef: { 2892 current: 0 2893 }, 2894 timeout: new Timeout(), 2895 currentIdRef: { 2896 current: null 2897 }, 2898 currentContextRef: { 2899 current: null 2900 } 2901 }); 2902 if (true) FloatingDelayGroupContext.displayName = "FloatingDelayGroupContext"; 2903 function resetDelayRef(delayRef, initialDelayRef) { 2904 delayRef.current = initialDelayRef.current; 2905 } 2906 function FloatingDelayGroup(props) { 2907 const { 2908 children, 2909 delay, 2910 timeoutMs = 0 2911 } = props; 2912 const delayRef = React19.useRef(delay); 2913 const initialDelayRef = React19.useRef(delay); 2914 const currentIdRef = React19.useRef(null); 2915 const currentContextRef = React19.useRef(null); 2916 const timeout = useTimeout(); 2917 useIsoLayoutEffect(() => { 2918 initialDelayRef.current = delay; 2919 if (!currentIdRef.current) { 2920 delayRef.current = delay; 2921 return; 2922 } 2923 delayRef.current = { 2924 open: getDelay(delayRef.current, "open"), 2925 close: getDelay(delay, "close") 2926 }; 2927 }, [delay, currentIdRef, delayRef, initialDelayRef]); 2928 return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(FloatingDelayGroupContext.Provider, { 2929 value: React19.useMemo(() => ({ 2930 hasProvider: true, 2931 delayRef, 2932 initialDelayRef, 2933 currentIdRef, 2934 timeoutMs, 2935 currentContextRef, 2936 timeout 2937 }), [timeoutMs, timeout]), 2938 children 2939 }); 2940 } 2941 function useDelayGroup(store, options = { 2942 open: false 2943 }) { 2944 const { 2945 open: open2 2946 } = options; 2947 const floatingId = store.useState("floatingId"); 2948 const groupContext = React19.useContext(FloatingDelayGroupContext); 2949 const { 2950 currentIdRef, 2951 delayRef, 2952 timeoutMs, 2953 initialDelayRef, 2954 currentContextRef, 2955 hasProvider, 2956 timeout 2957 } = groupContext; 2958 const [isInstantPhase, setIsInstantPhase] = React19.useState(false); 2959 const openRef = React19.useRef(open2); 2960 useIsoLayoutEffect(() => { 2961 openRef.current = open2; 2962 }, [open2]); 2963 useIsoLayoutEffect(() => { 2964 function unset() { 2965 currentContextRef.current?.setIsInstantPhase(false); 2966 currentIdRef.current = null; 2967 currentContextRef.current = null; 2968 delayRef.current = initialDelayRef.current; 2969 timeout.clear(); 2970 } 2971 if (!currentIdRef.current) { 2972 return void 0; 2973 } 2974 if (!open2 && currentIdRef.current === floatingId) { 2975 setIsInstantPhase(false); 2976 if (timeoutMs) { 2977 const closingId = floatingId; 2978 timeout.start(timeoutMs, () => { 2979 if (store.select("open") || currentIdRef.current && currentIdRef.current !== closingId) { 2980 return; 2981 } 2982 unset(); 2983 }); 2984 return () => { 2985 if (openRef.current || currentIdRef.current !== closingId) { 2986 timeout.clear(); 2987 } 2988 }; 2989 } 2990 unset(); 2991 } 2992 return void 0; 2993 }, [open2, floatingId, currentIdRef, delayRef, timeoutMs, initialDelayRef, currentContextRef, timeout, store]); 2994 useIsoLayoutEffect(() => { 2995 if (!open2) { 2996 return; 2997 } 2998 const prevContext = currentContextRef.current; 2999 const prevId = currentIdRef.current; 3000 timeout.clear(); 3001 currentContextRef.current = { 3002 onOpenChange: store.setOpen, 3003 setIsInstantPhase 3004 }; 3005 currentIdRef.current = floatingId; 3006 delayRef.current = { 3007 open: 0, 3008 close: getDelay(initialDelayRef.current, "close") 3009 }; 3010 if (prevId !== null && prevId !== floatingId) { 3011 setIsInstantPhase(true); 3012 prevContext?.setIsInstantPhase(true); 3013 prevContext?.onOpenChange(false, createChangeEventDetails(reason_parts_exports.none)); 3014 } else { 3015 setIsInstantPhase(false); 3016 prevContext?.setIsInstantPhase(false); 3017 } 3018 }, [open2, floatingId, store, currentIdRef, delayRef, initialDelayRef, currentContextRef, timeout]); 3019 useIsoLayoutEffect(() => { 3020 return () => { 3021 if (currentIdRef.current === floatingId) { 3022 currentContextRef.current = null; 3023 if (!openRef.current) { 3024 return; 3025 } 3026 currentIdRef.current = null; 3027 resetDelayRef(delayRef, initialDelayRef); 3028 timeout.clear(); 3029 } 3030 }; 3031 }, [currentContextRef, currentIdRef, delayRef, floatingId, initialDelayRef, timeout]); 3032 return React19.useMemo(() => ({ 3033 activeIdRef: currentIdRef, 3034 hasProvider, 3035 delayRef, 3036 isInstantPhase 3037 }), [currentIdRef, hasProvider, delayRef, isInstantPhase]); 3038 } 3039 3040 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingFocusManager.mjs 3041 var React23 = __toESM(require_react(), 1); 3042 3043 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/mergeCleanups.mjs 3044 function mergeCleanups(...cleanups) { 3045 return () => { 3046 for (let i = 0; i < cleanups.length; i += 1) { 3047 const cleanup = cleanups[i]; 3048 if (cleanup) { 3049 cleanup(); 3050 } 3051 } 3052 }; 3053 } 3054 3055 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/FocusGuard.mjs 3056 var React20 = __toESM(require_react(), 1); 3057 3058 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/visuallyHidden.mjs 3059 var visuallyHiddenBase = { 3060 clipPath: "inset(50%)", 3061 overflow: "hidden", 3062 whiteSpace: "nowrap", 3063 border: 0, 3064 padding: 0, 3065 width: 1, 3066 height: 1, 3067 margin: -1 3068 }; 3069 var visuallyHidden = { 3070 ...visuallyHiddenBase, 3071 position: "fixed", 3072 margin: 0, 3073 top: 0, 3074 left: 0 3075 }; 3076 var visuallyHiddenInput = { 3077 ...visuallyHiddenBase, 3078 position: "absolute" 3079 }; 3080 3081 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/FocusGuard.mjs 3082 var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1); 3083 var FocusGuard = /* @__PURE__ */ React20.forwardRef(function FocusGuard2(props, ref) { 3084 const [role, setRole] = React20.useState(); 3085 useIsoLayoutEffect(() => { 3086 if (parts_exports.screenReader.voiceOver && parts_exports.engine.webkit) { 3087 setRole("button"); 3088 } 3089 }, []); 3090 const restProps = { 3091 tabIndex: 0, 3092 // Role is only for VoiceOver 3093 role 3094 }; 3095 return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { 3096 ...props, 3097 ref, 3098 style: visuallyHidden, 3099 "aria-hidden": role ? void 0 : true, 3100 ...restProps, 3101 "data-base-ui-focus-guard": "" 3102 }); 3103 }); 3104 if (true) FocusGuard.displayName = "FocusGuard"; 3105 3106 // node_modules/.store/@floating-ui/utils@0.2.12-gOxTzMf36nCrbeHpEew-rw/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs 3107 var min = Math.min; 3108 var max = Math.max; 3109 var round = Math.round; 3110 var floor = Math.floor; 3111 var createCoords = (v2) => ({ 3112 x: v2, 3113 y: v2 3114 }); 3115 var oppositeSideMap = { 3116 left: "right", 3117 right: "left", 3118 bottom: "top", 3119 top: "bottom" 3120 }; 3121 function clamp(start, value, end) { 3122 return max(start, min(value, end)); 3123 } 3124 function evaluate(value, param) { 3125 return typeof value === "function" ? value(param) : value; 3126 } 3127 function getSide(placement) { 3128 return placement.split("-")[0]; 3129 } 3130 function getAlignment(placement) { 3131 return placement.split("-")[1]; 3132 } 3133 function getOppositeAxis(axis) { 3134 return axis === "x" ? "y" : "x"; 3135 } 3136 function getAxisLength(axis) { 3137 return axis === "y" ? "height" : "width"; 3138 } 3139 function getSideAxis(placement) { 3140 const firstChar = placement[0]; 3141 return firstChar === "t" || firstChar === "b" ? "y" : "x"; 3142 } 3143 function getAlignmentAxis(placement) { 3144 return getOppositeAxis(getSideAxis(placement)); 3145 } 3146 function getAlignmentSides(placement, rects, rtl) { 3147 if (rtl === void 0) { 3148 rtl = false; 3149 } 3150 const alignment = getAlignment(placement); 3151 const alignmentAxis = getAlignmentAxis(placement); 3152 const length = getAxisLength(alignmentAxis); 3153 let mainAlignmentSide = alignmentAxis === "x" ? alignment === (rtl ? "end" : "start") ? "right" : "left" : alignment === "start" ? "bottom" : "top"; 3154 if (rects.reference[length] > rects.floating[length]) { 3155 mainAlignmentSide = getOppositePlacement(mainAlignmentSide); 3156 } 3157 return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)]; 3158 } 3159 function getExpandedPlacements(placement) { 3160 const oppositePlacement = getOppositePlacement(placement); 3161 return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)]; 3162 } 3163 function getOppositeAlignmentPlacement(placement) { 3164 return placement.includes("start") ? placement.replace("start", "end") : placement.replace("end", "start"); 3165 } 3166 var lrPlacement = ["left", "right"]; 3167 var rlPlacement = ["right", "left"]; 3168 var tbPlacement = ["top", "bottom"]; 3169 var btPlacement = ["bottom", "top"]; 3170 function getSideList(side, isStart, rtl) { 3171 switch (side) { 3172 case "top": 3173 case "bottom": 3174 if (rtl) return isStart ? rlPlacement : lrPlacement; 3175 return isStart ? lrPlacement : rlPlacement; 3176 case "left": 3177 case "right": 3178 return isStart ? tbPlacement : btPlacement; 3179 default: 3180 return []; 3181 } 3182 } 3183 function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) { 3184 const alignment = getAlignment(placement); 3185 let list = getSideList(getSide(placement), direction === "start", rtl); 3186 if (alignment) { 3187 list = list.map((side) => side + "-" + alignment); 3188 if (flipAlignment) { 3189 list = list.concat(list.map(getOppositeAlignmentPlacement)); 3190 } 3191 } 3192 return list; 3193 } 3194 function getOppositePlacement(placement) { 3195 const side = getSide(placement); 3196 return oppositeSideMap[side] + placement.slice(side.length); 3197 } 3198 function expandPaddingObject(padding) { 3199 var _padding$top, _padding$right, _padding$bottom, _padding$left; 3200 return { 3201 top: (_padding$top = padding.top) != null ? _padding$top : 0, 3202 right: (_padding$right = padding.right) != null ? _padding$right : 0, 3203 bottom: (_padding$bottom = padding.bottom) != null ? _padding$bottom : 0, 3204 left: (_padding$left = padding.left) != null ? _padding$left : 0 3205 }; 3206 } 3207 function getPaddingObject(padding) { 3208 return typeof padding !== "number" ? expandPaddingObject(padding) : { 3209 top: padding, 3210 right: padding, 3211 bottom: padding, 3212 left: padding 3213 }; 3214 } 3215 function rectToClientRect(rect) { 3216 const { 3217 x: x2, 3218 y: y2, 3219 width, 3220 height 3221 } = rect; 3222 return { 3223 width, 3224 height, 3225 top: y2, 3226 left: x2, 3227 right: x2 + width, 3228 bottom: y2 + height, 3229 x: x2, 3230 y: y2 3231 }; 3232 } 3233 3234 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/composite.mjs 3235 function isIndexOutOfListBounds(list, index2) { 3236 return index2 < 0 || index2 >= list.length; 3237 } 3238 function getMinListIndex(listRef, disabledIndices) { 3239 return findNonDisabledListIndex(listRef.current, { 3240 disabledIndices 3241 }); 3242 } 3243 function getMaxListIndex(listRef, disabledIndices) { 3244 return findNonDisabledListIndex(listRef.current, { 3245 decrement: true, 3246 startingIndex: listRef.current.length, 3247 disabledIndices 3248 }); 3249 } 3250 function getNextListIndex(list, currentIndex, options) { 3251 const { 3252 decrement, 3253 loopFocus, 3254 allowEscape, 3255 disabledIndices, 3256 minIndex, 3257 maxIndex 3258 } = options; 3259 const step = () => findNonDisabledListIndex(list, { 3260 startingIndex: currentIndex, 3261 decrement, 3262 disabledIndices 3263 }); 3264 let index2; 3265 let wrapped = false; 3266 if (!loopFocus) { 3267 index2 = decrement ? Math.max(minIndex, step()) : Math.min(maxIndex, step()); 3268 } else if (decrement ? currentIndex <= minIndex : currentIndex >= maxIndex) { 3269 const outside = decrement ? -1 : list.length; 3270 if (allowEscape && currentIndex !== outside) { 3271 index2 = -1; 3272 } else { 3273 index2 = decrement ? maxIndex : minIndex; 3274 wrapped = true; 3275 } 3276 } else { 3277 index2 = step(); 3278 } 3279 return { 3280 index: isIndexOutOfListBounds(list, index2) ? -1 : index2, 3281 wrapped 3282 }; 3283 } 3284 function findNonDisabledListIndex(list, { 3285 startingIndex = -1, 3286 decrement = false, 3287 disabledIndices, 3288 amount = 1 3289 } = {}) { 3290 let index2 = startingIndex; 3291 do { 3292 index2 += decrement ? -amount : amount; 3293 } while (index2 >= 0 && index2 <= list.length - 1 && isListIndexDisabled(list, index2, disabledIndices)); 3294 return index2; 3295 } 3296 function isListIndexDisabled(list, index2, disabledIndices) { 3297 const isExplicitlyDisabled = typeof disabledIndices === "function" ? disabledIndices(index2) : disabledIndices?.includes(index2) ?? false; 3298 if (isExplicitlyDisabled) { 3299 return true; 3300 } 3301 const element = list[index2]; 3302 if (!element) { 3303 return false; 3304 } 3305 if (!isElementVisible(element)) { 3306 return true; 3307 } 3308 if (element.matches(":disabled")) { 3309 return true; 3310 } 3311 return !disabledIndices && (element.hasAttribute("disabled") || element.getAttribute("aria-disabled") === "true"); 3312 } 3313 function isHiddenByStyles(styles) { 3314 return styles.visibility === "hidden" || styles.visibility === "collapse"; 3315 } 3316 function isElementVisible(element, styles = element ? getComputedStyle2(element) : null) { 3317 if (!element || !element.isConnected || !styles || isHiddenByStyles(styles)) { 3318 return false; 3319 } 3320 if (typeof element.checkVisibility === "function") { 3321 return element.checkVisibility(); 3322 } 3323 return styles.display !== "none" && styles.display !== "contents"; 3324 } 3325 3326 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/tabbable.mjs 3327 var CANDIDATE_SELECTOR = 'a[href],button,input,select,textarea,summary,details,iframe,object,embed,[tabindex],[contenteditable]:not([contenteditable="false"]),audio[controls],video[controls]'; 3328 function getParentElement(element) { 3329 const assignedSlot = element.assignedSlot; 3330 if (assignedSlot) { 3331 return assignedSlot; 3332 } 3333 if (element.parentElement) { 3334 return element.parentElement; 3335 } 3336 const rootNode = element.getRootNode(); 3337 return isShadowRoot(rootNode) ? rootNode.host : null; 3338 } 3339 function getDetailsSummary(details) { 3340 for (const child of Array.from(details.children)) { 3341 if (getNodeName(child) === "summary") { 3342 return child; 3343 } 3344 } 3345 return null; 3346 } 3347 function isWithinOpenDetailsSummary(element, details) { 3348 const summary = getDetailsSummary(details); 3349 return !!summary && (element === summary || contains(summary, element)); 3350 } 3351 function isFocusableCandidate(element) { 3352 const nodeName = element ? getNodeName(element) : ""; 3353 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"); 3354 } 3355 function isFocusableElement(element) { 3356 if (!isFocusableCandidate(element) || !element.isConnected || element.matches(":disabled")) { 3357 return false; 3358 } 3359 for (let current = element; current; current = getParentElement(current)) { 3360 const isAncestor = current !== element; 3361 const isSlot = getNodeName(current) === "slot"; 3362 if (current.hasAttribute("inert")) { 3363 return false; 3364 } 3365 if (isAncestor && getNodeName(current) === "details" && !current.open && !isWithinOpenDetailsSummary(element, current) || current.hasAttribute("hidden") || !isSlot && !isVisibleInTabbableTree(current, isAncestor)) { 3366 return false; 3367 } 3368 } 3369 return true; 3370 } 3371 function isVisibleInTabbableTree(element, isAncestor) { 3372 const styles = getComputedStyle2(element); 3373 if (!isAncestor) { 3374 return isElementVisible(element, styles); 3375 } 3376 return styles.display !== "none"; 3377 } 3378 function getTabIndex(element) { 3379 const tabIndex = element.tabIndex; 3380 if (tabIndex < 0) { 3381 const nodeName = getNodeName(element); 3382 if (nodeName === "details" || nodeName === "audio" || nodeName === "video" || isHTMLElement(element) && element.isContentEditable) { 3383 return 0; 3384 } 3385 } 3386 return tabIndex; 3387 } 3388 function getNamedRadioInput(element) { 3389 if (getNodeName(element) !== "input") { 3390 return null; 3391 } 3392 const input = element; 3393 return input.type === "radio" && input.name !== "" ? input : null; 3394 } 3395 function isTabbableRadio(element, candidates) { 3396 const input = getNamedRadioInput(element); 3397 if (!input) { 3398 return true; 3399 } 3400 const checkedRadio = candidates.find((candidate) => { 3401 const radio = getNamedRadioInput(candidate); 3402 return radio?.name === input.name && radio.form === input.form && radio.checked; 3403 }); 3404 if (checkedRadio) { 3405 return checkedRadio === input; 3406 } 3407 return candidates.find((candidate) => { 3408 const radio = getNamedRadioInput(candidate); 3409 return radio?.name === input.name && radio.form === input.form; 3410 }) === input; 3411 } 3412 function getComposedChildren(container) { 3413 if (isHTMLElement(container) && getNodeName(container) === "slot") { 3414 const assignedElements = container.assignedElements({ 3415 flatten: true 3416 }); 3417 if (assignedElements.length > 0) { 3418 return assignedElements; 3419 } 3420 } 3421 if (isHTMLElement(container) && container.shadowRoot) { 3422 return Array.from(container.shadowRoot.children); 3423 } 3424 return Array.from(container.children); 3425 } 3426 function appendCandidates(container, list) { 3427 getComposedChildren(container).forEach((child) => { 3428 if (isFocusableCandidate(child)) { 3429 list.push(child); 3430 } 3431 appendCandidates(child, list); 3432 }); 3433 } 3434 function appendMatchingElements(container, selector, list) { 3435 getComposedChildren(container).forEach((child) => { 3436 if (isHTMLElement(child) && child.matches(selector)) { 3437 list.push(child); 3438 } 3439 appendMatchingElements(child, selector, list); 3440 }); 3441 } 3442 function isTabbable(element) { 3443 return isFocusableElement(element) && getTabIndex(element) >= 0; 3444 } 3445 function focusable(container) { 3446 const candidates = []; 3447 appendCandidates(container, candidates); 3448 return candidates.filter(isFocusableElement); 3449 } 3450 function tabbable(container) { 3451 const candidates = focusable(container); 3452 return candidates.filter((element) => getTabIndex(element) >= 0 && isTabbableRadio(element, candidates)); 3453 } 3454 function getTabbableIn(container, dir) { 3455 const list = tabbable(container); 3456 const len = list.length; 3457 if (len === 0) { 3458 return void 0; 3459 } 3460 const active = activeElement(ownerDocument(container)); 3461 const index2 = list.indexOf(active); 3462 const nextIndex = index2 === -1 ? dir === 1 ? 0 : len - 1 : index2 + dir; 3463 return list[nextIndex]; 3464 } 3465 function getNextTabbable(referenceElement) { 3466 return getTabbableIn(ownerDocument(referenceElement).body, 1) || referenceElement; 3467 } 3468 function getPreviousTabbable(referenceElement) { 3469 return getTabbableIn(ownerDocument(referenceElement).body, -1) || referenceElement; 3470 } 3471 function getTabbableNearElement(referenceElement, direction, exclude) { 3472 if (!referenceElement) { 3473 return null; 3474 } 3475 const list = []; 3476 appendCandidates(ownerDocument(referenceElement).body, list); 3477 const index2 = list.indexOf(referenceElement); 3478 if (index2 === -1) { 3479 return null; 3480 } 3481 const candidates = list.filter(isFocusableElement); 3482 for (let offset4 = 1; offset4 < list.length; offset4 += 1) { 3483 const element = list[(index2 + direction * offset4 + list.length) % list.length]; 3484 if (!contains(exclude, element) && isTabbable(element) && isTabbableRadio(element, candidates)) { 3485 return element; 3486 } 3487 } 3488 return list[index2]; 3489 } 3490 function isOutsideEvent(event, container) { 3491 const containerElement = container || event.currentTarget; 3492 const relatedTarget = event.relatedTarget; 3493 return !relatedTarget || !contains(containerElement, relatedTarget); 3494 } 3495 function disableFocusInside(container) { 3496 const tabbableElements = tabbable(container); 3497 tabbableElements.forEach((element) => { 3498 element.dataset.tabindex = element.getAttribute("tabindex") || ""; 3499 element.setAttribute("tabindex", "-1"); 3500 }); 3501 } 3502 function enableFocusInside(container) { 3503 const elements = []; 3504 appendMatchingElements(container, "[data-tabindex]", elements); 3505 elements.forEach((element) => { 3506 const tabindex = element.dataset.tabindex; 3507 delete element.dataset.tabindex; 3508 if (tabindex) { 3509 element.setAttribute("tabindex", tabindex); 3510 } else { 3511 element.removeAttribute("tabindex"); 3512 } 3513 }); 3514 } 3515 3516 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/nodes.mjs 3517 function getNodeChildren(nodes, id, onlyOpenChildren = true) { 3518 const directChildren = nodes.filter((node) => node.parentId === id); 3519 return directChildren.flatMap((child) => [...!onlyOpenChildren || child.context?.open ? [child] : [], ...getNodeChildren(nodes, child.id, onlyOpenChildren)]); 3520 } 3521 function getNodeAncestors(nodes, id) { 3522 let allAncestors = []; 3523 let currentParentId = nodes.find((node) => node.id === id)?.parentId; 3524 while (currentParentId) { 3525 const currentNode = nodes.find((node) => node.id === currentParentId); 3526 currentParentId = currentNode?.parentId; 3527 if (currentNode) { 3528 allAncestors = allAncestors.concat(currentNode); 3529 } 3530 } 3531 return allAncestors; 3532 } 3533 3534 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/createAttribute.mjs 3535 function createAttribute(name2) { 3536 return `data-base-ui-$name2}`; 3537 } 3538 3539 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/enqueueFocus.mjs 3540 var rafId = 0; 3541 function enqueueFocus(el, options = {}) { 3542 const { 3543 preventScroll = false, 3544 sync = false, 3545 shouldFocus 3546 } = options; 3547 cancelAnimationFrame(rafId); 3548 function exec() { 3549 if (shouldFocus && !shouldFocus()) { 3550 return; 3551 } 3552 el?.focus({ 3553 preventScroll 3554 }); 3555 } 3556 if (sync) { 3557 exec(); 3558 return NOOP; 3559 } 3560 const currentRafId = requestAnimationFrame(exec); 3561 rafId = currentRafId; 3562 return () => { 3563 if (rafId === currentRafId) { 3564 cancelAnimationFrame(currentRafId); 3565 rafId = 0; 3566 } 3567 }; 3568 } 3569 3570 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/markOthers.mjs 3571 var markerName = "data-base-ui-inert"; 3572 var ariaHiddenCounterMap = /* @__PURE__ */ new WeakMap(); 3573 var uncontrolledElementsSet = /* @__PURE__ */ new WeakSet(); 3574 var markerCounterMap = /* @__PURE__ */ new WeakMap(); 3575 var lockCount = 0; 3576 function unwrapHost(node) { 3577 if (!node) { 3578 return null; 3579 } 3580 return isShadowRoot(node) ? node.host : unwrapHost(node.parentNode); 3581 } 3582 var correctElements = (parent, targets) => targets.map((target) => { 3583 if (parent.contains(target)) { 3584 return target; 3585 } 3586 const correctedTarget = unwrapHost(target); 3587 if (parent.contains(correctedTarget)) { 3588 return correctedTarget; 3589 } 3590 return null; 3591 }).filter((x2) => x2 != null); 3592 var buildKeepSet = (targets) => { 3593 const keep = /* @__PURE__ */ new Set(); 3594 targets.forEach((target) => { 3595 let node = target; 3596 while (node && !keep.has(node)) { 3597 keep.add(node); 3598 node = node.parentNode; 3599 } 3600 }); 3601 return keep; 3602 }; 3603 var collectOutsideElements = (root, keepElements, stopElements) => { 3604 const outside = []; 3605 const walk = (parent) => { 3606 if (!parent || stopElements.has(parent)) { 3607 return; 3608 } 3609 Array.from(parent.children).forEach((node) => { 3610 if (getNodeName(node) === "script") { 3611 return; 3612 } 3613 if (keepElements.has(node)) { 3614 walk(node); 3615 } else { 3616 outside.push(node); 3617 } 3618 }); 3619 }; 3620 walk(root); 3621 return outside; 3622 }; 3623 function applyAttributeToOthers(uncorrectedAvoidElements, body, ariaHidden, { 3624 mark = true 3625 }) { 3626 const avoidElements = correctElements(body, uncorrectedAvoidElements); 3627 const markerTargets = mark ? collectOutsideElements(body, buildKeepSet(avoidElements), new Set(avoidElements)) : []; 3628 const hiddenElements = []; 3629 const markedElements = []; 3630 if (ariaHidden) { 3631 const ariaLiveElements = correctElements(body, Array.from(body.querySelectorAll("[aria-live]"))); 3632 const controlElements = avoidElements.concat(ariaLiveElements); 3633 const controlTargets = collectOutsideElements(body, buildKeepSet(controlElements), new Set(controlElements)); 3634 controlTargets.forEach((node) => { 3635 const attr2 = node.getAttribute("aria-hidden"); 3636 const alreadyHidden = attr2 !== null && attr2 !== "false"; 3637 const counterValue = (ariaHiddenCounterMap.get(node) || 0) + 1; 3638 ariaHiddenCounterMap.set(node, counterValue); 3639 hiddenElements.push(node); 3640 if (counterValue === 1 && alreadyHidden) { 3641 uncontrolledElementsSet.add(node); 3642 } 3643 if (!alreadyHidden) { 3644 node.setAttribute("aria-hidden", "true"); 3645 } 3646 }); 3647 } 3648 if (mark) { 3649 markerTargets.forEach((node) => { 3650 const markerValue = (markerCounterMap.get(node) || 0) + 1; 3651 markerCounterMap.set(node, markerValue); 3652 markedElements.push(node); 3653 if (markerValue === 1) { 3654 node.setAttribute(markerName, ""); 3655 } 3656 }); 3657 } 3658 lockCount += 1; 3659 return () => { 3660 hiddenElements.forEach((element) => { 3661 const counterValue = (ariaHiddenCounterMap.get(element) || 0) - 1; 3662 ariaHiddenCounterMap.set(element, counterValue); 3663 if (!counterValue) { 3664 if (!uncontrolledElementsSet.has(element)) { 3665 element.removeAttribute("aria-hidden"); 3666 } 3667 uncontrolledElementsSet.delete(element); 3668 } 3669 }); 3670 if (mark) { 3671 markedElements.forEach((element) => { 3672 const markerValue = (markerCounterMap.get(element) || 0) - 1; 3673 markerCounterMap.set(element, markerValue); 3674 if (!markerValue) { 3675 element.removeAttribute(markerName); 3676 } 3677 }); 3678 } 3679 lockCount -= 1; 3680 if (!lockCount) { 3681 ariaHiddenCounterMap = /* @__PURE__ */ new WeakMap(); 3682 uncontrolledElementsSet = /* @__PURE__ */ new WeakSet(); 3683 markerCounterMap = /* @__PURE__ */ new WeakMap(); 3684 } 3685 }; 3686 } 3687 function markOthers(avoidElements, options = {}) { 3688 const { 3689 ariaHidden = false, 3690 mark = true 3691 } = options; 3692 const body = ownerDocument(avoidElements[0]).body; 3693 return applyAttributeToOthers(avoidElements, body, ariaHidden, { 3694 mark 3695 }); 3696 } 3697 3698 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingPortal.mjs 3699 var React21 = __toESM(require_react(), 1); 3700 var ReactDOM2 = __toESM(require_react_dom(), 1); 3701 3702 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/constants.mjs 3703 var TYPEAHEAD_RESET_MS = 500; 3704 var PATIENT_CLICK_THRESHOLD = 500; 3705 var DISABLED_TRANSITIONS_STYLE = { 3706 style: { 3707 transition: "none" 3708 } 3709 }; 3710 var CLICK_TRIGGER_IDENTIFIER = "data-base-ui-click-trigger"; 3711 var BASE_UI_SWIPE_IGNORE_ATTRIBUTE = "data-base-ui-swipe-ignore"; 3712 var LEGACY_SWIPE_IGNORE_ATTRIBUTE = "data-swipe-ignore"; 3713 var BASE_UI_SWIPE_IGNORE_SELECTOR = `[$BASE_UI_SWIPE_IGNORE_ATTRIBUTE}]`; 3714 var LEGACY_SWIPE_IGNORE_SELECTOR = `[$LEGACY_SWIPE_IGNORE_ATTRIBUTE}]`; 3715 var DROPDOWN_COLLISION_AVOIDANCE = { 3716 fallbackAxisSide: "none" 3717 }; 3718 var POPUP_COLLISION_AVOIDANCE = { 3719 fallbackAxisSide: "end" 3720 }; 3721 var ownerVisuallyHidden = { 3722 clipPath: "inset(50%)", 3723 position: "fixed", 3724 top: 0, 3725 left: 0 3726 }; 3727 3728 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingPortal.mjs 3729 var import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1); 3730 var PortalContext = /* @__PURE__ */ React21.createContext(null); 3731 if (true) PortalContext.displayName = "PortalContext"; 3732 var usePortalContext = () => React21.useContext(PortalContext); 3733 var attr = createAttribute("portal"); 3734 function useFloatingPortalNode(props = {}) { 3735 const { 3736 ref, 3737 container: containerProp, 3738 componentProps = EMPTY_OBJECT, 3739 elementProps 3740 } = props; 3741 const uniqueId = useId(); 3742 const portalContext = usePortalContext(); 3743 const parentPortalNode = portalContext?.portalNode; 3744 const [containerElement, setContainerElement] = React21.useState(null); 3745 const [portalNode, setPortalNode] = React21.useState(null); 3746 const setPortalNodeRef = useStableCallback((node) => { 3747 if (node !== null) { 3748 setPortalNode(node); 3749 } 3750 }); 3751 const containerRef = React21.useRef(null); 3752 useIsoLayoutEffect(() => { 3753 if (containerProp === null) { 3754 if (containerRef.current) { 3755 containerRef.current = null; 3756 setPortalNode(null); 3757 setContainerElement(null); 3758 } 3759 return; 3760 } 3761 const resolvedContainer = (containerProp && (isNode(containerProp) ? containerProp : containerProp.current)) ?? parentPortalNode ?? document.body; 3762 if (resolvedContainer == null) { 3763 if (containerRef.current) { 3764 containerRef.current = null; 3765 setPortalNode(null); 3766 setContainerElement(null); 3767 } 3768 return; 3769 } 3770 if (containerRef.current !== resolvedContainer) { 3771 containerRef.current = resolvedContainer; 3772 setPortalNode(null); 3773 setContainerElement(resolvedContainer); 3774 } 3775 }, [containerProp, parentPortalNode]); 3776 const portalElement = useRenderElement("div", componentProps, { 3777 ref: [ref, setPortalNodeRef], 3778 props: [{ 3779 id: uniqueId, 3780 [attr]: "" 3781 }, elementProps] 3782 }); 3783 const portalSubtree = containerElement && portalElement ? /* @__PURE__ */ ReactDOM2.createPortal(portalElement, containerElement) : null; 3784 return { 3785 node: portalNode, 3786 // `id` and `render` props can override or remove the generated ID. Use the exact 3787 // rendered value so `aria-owns` never points at an ID absent from the DOM. 3788 nodeId: /* @__PURE__ */ React21.isValidElement(portalElement) ? portalElement.props.id : void 0, 3789 subtree: portalSubtree 3790 }; 3791 } 3792 var FloatingPortal = /* @__PURE__ */ React21.forwardRef(function FloatingPortal2(componentProps, forwardedRef) { 3793 const { 3794 render, 3795 className, 3796 style, 3797 children, 3798 container, 3799 portalOwnerRole, 3800 ...elementProps 3801 } = componentProps; 3802 const { 3803 node: portalNode, 3804 nodeId: portalNodeId, 3805 subtree: portalSubtree 3806 } = useFloatingPortalNode({ 3807 container, 3808 ref: forwardedRef, 3809 componentProps, 3810 elementProps 3811 }); 3812 const beforeOutsideRef = React21.useRef(null); 3813 const afterOutsideRef = React21.useRef(null); 3814 const beforeInsideRef = React21.useRef(null); 3815 const afterInsideRef = React21.useRef(null); 3816 const [focusManagerState, setFocusManagerState] = React21.useState(null); 3817 const focusInsideDisabledRef = React21.useRef(false); 3818 const modal = focusManagerState?.modal; 3819 const open2 = focusManagerState?.open; 3820 const shouldRenderGuards = !!focusManagerState && !focusManagerState.modal && focusManagerState.open && !!portalNode; 3821 React21.useEffect(() => { 3822 if (!portalNode || modal) { 3823 return void 0; 3824 } 3825 function onFocus(event) { 3826 if (portalNode && event.relatedTarget && isOutsideEvent(event)) { 3827 if (event.type === "focusin") { 3828 if (focusInsideDisabledRef.current) { 3829 enableFocusInside(portalNode); 3830 focusInsideDisabledRef.current = false; 3831 } 3832 } else { 3833 disableFocusInside(portalNode); 3834 focusInsideDisabledRef.current = true; 3835 } 3836 } 3837 } 3838 return mergeCleanups(addEventListener(portalNode, "focusin", onFocus, true), addEventListener(portalNode, "focusout", onFocus, true)); 3839 }, [portalNode, modal]); 3840 useIsoLayoutEffect(() => { 3841 if (!portalNode || open2 !== true || !focusInsideDisabledRef.current) { 3842 return; 3843 } 3844 enableFocusInside(portalNode); 3845 focusInsideDisabledRef.current = false; 3846 }, [open2, portalNode]); 3847 const portalContextValue = React21.useMemo(() => ({ 3848 beforeOutsideRef, 3849 afterOutsideRef, 3850 beforeInsideRef, 3851 afterInsideRef, 3852 portalNode, 3853 setFocusManagerState 3854 }), [portalNode]); 3855 return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(React21.Fragment, { 3856 children: [portalSubtree, /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(PortalContext.Provider, { 3857 value: portalContextValue, 3858 children: [shouldRenderGuards && portalNode && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(FocusGuard, { 3859 "data-type": "outside", 3860 ref: beforeOutsideRef, 3861 onFocus: (event) => { 3862 if (isOutsideEvent(event, portalNode)) { 3863 beforeInsideRef.current?.focus(); 3864 } else { 3865 const domReference = focusManagerState ? focusManagerState.domReference : null; 3866 const prevTabbable = getPreviousTabbable(domReference); 3867 prevTabbable?.focus(); 3868 } 3869 } 3870 }), shouldRenderGuards && portalNode && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { 3871 role: portalOwnerRole, 3872 "aria-owns": portalNodeId, 3873 style: ownerVisuallyHidden 3874 }), portalNode && /* @__PURE__ */ ReactDOM2.createPortal(children, portalNode), shouldRenderGuards && portalNode && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(FocusGuard, { 3875 "data-type": "outside", 3876 ref: afterOutsideRef, 3877 onFocus: (event) => { 3878 if (isOutsideEvent(event, portalNode)) { 3879 afterInsideRef.current?.focus(); 3880 } else { 3881 const domReference = focusManagerState ? focusManagerState.domReference : null; 3882 const nextTabbable = getNextTabbable(domReference); 3883 nextTabbable?.focus(); 3884 if (focusManagerState?.closeOnFocusOut) { 3885 focusManagerState?.onOpenChange(false, createChangeEventDetails(reason_parts_exports.focusOut, event.nativeEvent)); 3886 } 3887 } 3888 } 3889 })] 3890 })] 3891 }); 3892 }); 3893 if (true) FloatingPortal.displayName = "FloatingPortal"; 3894 3895 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingTree.mjs 3896 var React22 = __toESM(require_react(), 1); 3897 3898 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/createEventEmitter.mjs 3899 function createEventEmitter() { 3900 const map = /* @__PURE__ */ new Map(); 3901 return { 3902 emit(event, data) { 3903 map.get(event)?.forEach((listener) => listener(data)); 3904 }, 3905 on(event, listener) { 3906 if (!map.has(event)) { 3907 map.set(event, /* @__PURE__ */ new Set()); 3908 } 3909 map.get(event).add(listener); 3910 }, 3911 off(event, listener) { 3912 map.get(event)?.delete(listener); 3913 } 3914 }; 3915 } 3916 3917 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingTreeStore.mjs 3918 var FloatingTreeStore = class { 3919 nodesRef = { 3920 current: [] 3921 }; 3922 events = createEventEmitter(); 3923 addNode(node) { 3924 this.nodesRef.current.push(node); 3925 } 3926 removeNode(node) { 3927 const index2 = this.nodesRef.current.findIndex((n) => n === node); 3928 if (index2 !== -1) { 3929 this.nodesRef.current.splice(index2, 1); 3930 } 3931 } 3932 }; 3933 3934 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingTree.mjs 3935 var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1); 3936 var FloatingNodeContext = /* @__PURE__ */ React22.createContext(null); 3937 if (true) FloatingNodeContext.displayName = "FloatingNodeContext"; 3938 var FloatingTreeContext = /* @__PURE__ */ React22.createContext(null); 3939 if (true) FloatingTreeContext.displayName = "FloatingTreeContext"; 3940 var useFloatingParentNodeId = () => React22.useContext(FloatingNodeContext)?.id || null; 3941 var useFloatingTree = (externalTree) => { 3942 const contextTree = React22.useContext(FloatingTreeContext); 3943 return externalTree ?? contextTree; 3944 }; 3945 function useFloatingNodeId(externalTree) { 3946 const id = useId(); 3947 const tree = useFloatingTree(externalTree); 3948 const parentId = useFloatingParentNodeId(); 3949 useIsoLayoutEffect(() => { 3950 if (!id) { 3951 return void 0; 3952 } 3953 const node = { 3954 id, 3955 parentId 3956 }; 3957 tree?.addNode(node); 3958 return () => { 3959 tree?.removeNode(node); 3960 }; 3961 }, [tree, id, parentId]); 3962 return id; 3963 } 3964 function FloatingNode(props) { 3965 const { 3966 children, 3967 id 3968 } = props; 3969 const parentId = useFloatingParentNodeId(); 3970 return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(FloatingNodeContext.Provider, { 3971 value: React22.useMemo(() => ({ 3972 id, 3973 parentId 3974 }), [id, parentId]), 3975 children 3976 }); 3977 } 3978 function FloatingTree(props) { 3979 const { 3980 children, 3981 externalTree 3982 } = props; 3983 const tree = useRefWithInit(() => externalTree ?? new FloatingTreeStore()).current; 3984 return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(FloatingTreeContext.Provider, { 3985 value: tree, 3986 children 3987 }); 3988 } 3989 3990 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingFocusManager.mjs 3991 var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1); 3992 function getEventType(event, lastInteractionType) { 3993 const win = getWindow(getTarget(event)); 3994 if (event instanceof win.KeyboardEvent) { 3995 return "keyboard"; 3996 } 3997 if (event instanceof win.FocusEvent) { 3998 return lastInteractionType || "keyboard"; 3999 } 4000 if ("pointerType" in event) { 4001 return event.pointerType || (isVirtualClick(event) ? "keyboard" : lastInteractionType || "mouse"); 4002 } 4003 if ("touches" in event) { 4004 return "touch"; 4005 } 4006 if (event instanceof win.MouseEvent) { 4007 return lastInteractionType || (event.detail === 0 ? "keyboard" : "mouse"); 4008 } 4009 return ""; 4010 } 4011 var LIST_LIMIT = 20; 4012 var previouslyFocusedElements = []; 4013 function clearDisconnectedPreviouslyFocusedElements() { 4014 previouslyFocusedElements = previouslyFocusedElements.filter((entry) => { 4015 return entry.deref()?.isConnected; 4016 }); 4017 } 4018 function addPreviouslyFocusedElement(element) { 4019 clearDisconnectedPreviouslyFocusedElements(); 4020 if (element && getNodeName(element) !== "body") { 4021 previouslyFocusedElements.push(new WeakRef(element)); 4022 if (previouslyFocusedElements.length > LIST_LIMIT) { 4023 previouslyFocusedElements = previouslyFocusedElements.slice(-LIST_LIMIT); 4024 } 4025 } 4026 } 4027 function getPreviouslyFocusedElement() { 4028 clearDisconnectedPreviouslyFocusedElements(); 4029 return previouslyFocusedElements[previouslyFocusedElements.length - 1]?.deref(); 4030 } 4031 function getFirstTabbableElement(container) { 4032 if (!container) { 4033 return null; 4034 } 4035 if (isTabbable(container)) { 4036 return container; 4037 } 4038 return tabbable(container)[0] || container; 4039 } 4040 function handleTabIndex(floatingFocusElement) { 4041 if (floatingFocusElement.hasAttribute("tabindex") && !floatingFocusElement.hasAttribute("data-tabindex")) { 4042 return; 4043 } 4044 if (!floatingFocusElement.getAttribute("role")?.includes("dialog")) { 4045 return; 4046 } 4047 const focusableElements = focusable(floatingFocusElement); 4048 const tabbableContent = focusableElements.filter((element) => { 4049 const dataTabIndex = element.getAttribute("data-tabindex") || ""; 4050 return isTabbable(element) || element.hasAttribute("data-tabindex") && !dataTabIndex.startsWith("-"); 4051 }); 4052 const tabIndex = floatingFocusElement.getAttribute("tabindex"); 4053 if (tabbableContent.length === 0) { 4054 if (tabIndex !== "0") { 4055 floatingFocusElement.setAttribute("tabindex", "0"); 4056 floatingFocusElement.setAttribute("data-tabindex", "0"); 4057 } 4058 } else if (tabIndex !== "-1" || floatingFocusElement.hasAttribute("data-tabindex") && floatingFocusElement.getAttribute("data-tabindex") !== "-1") { 4059 floatingFocusElement.setAttribute("tabindex", "-1"); 4060 floatingFocusElement.setAttribute("data-tabindex", "-1"); 4061 } 4062 } 4063 function FloatingFocusManager(props) { 4064 const { 4065 context: store, 4066 children, 4067 disabled: disabled2 = false, 4068 initialFocus = true, 4069 returnFocus = true, 4070 explicitReturnFocus, 4071 restoreFocus = false, 4072 modal = true, 4073 closeOnFocusOut = true, 4074 openInteractionType = "", 4075 nextFocusableElement, 4076 previousFocusableElement, 4077 beforeContentFocusGuardRef, 4078 externalTree, 4079 getInsideElements 4080 } = props; 4081 const open2 = store.useState("open"); 4082 const domReference = store.useState("domReferenceElement"); 4083 const floating = store.useState("floatingElement"); 4084 const { 4085 events, 4086 dataRef 4087 } = store.context; 4088 const getNodeId = useStableCallback(() => dataRef.current.floatingContext?.nodeId); 4089 const ignoreInitialFocus = initialFocus === false; 4090 const isUntrappedTypeableCombobox = isTypeableCombobox(domReference) && ignoreInitialFocus; 4091 const initialFocusRef = useValueAsRef(initialFocus); 4092 const returnFocusRef = useValueAsRef(returnFocus); 4093 const explicitReturnFocusRef = useValueAsRef(explicitReturnFocus); 4094 const openInteractionTypeRef = useValueAsRef(openInteractionType); 4095 const openRef = useValueAsRef(open2); 4096 const tree = useFloatingTree(externalTree); 4097 const portalContext = usePortalContext(); 4098 const preventReturnFocusRef = React23.useRef(false); 4099 const isPointerDownRef = React23.useRef(false); 4100 const pointerDownOutsideRef = React23.useRef(false); 4101 const lastFocusedTabbableRef = React23.useRef(null); 4102 const closeTypeRef = React23.useRef(""); 4103 const lastInteractionTypeRef = React23.useRef(""); 4104 const beforeGuardRef = React23.useRef(null); 4105 const afterGuardRef = React23.useRef(null); 4106 const mergedBeforeGuardRef = useMergedRefs(beforeGuardRef, beforeContentFocusGuardRef, portalContext?.beforeInsideRef); 4107 const mergedAfterGuardRef = useMergedRefs(afterGuardRef, portalContext?.afterInsideRef); 4108 const blurTimeout = useTimeout(); 4109 const pointerDownTimeout = useTimeout(); 4110 const restoreFocusFrame = useAnimationFrame(); 4111 const isInsidePortal = portalContext != null; 4112 const floatingFocusElement = getFloatingFocusElement(floating); 4113 const getTabbableContent = useStableCallback((container = floatingFocusElement) => { 4114 return container ? tabbable(container) : []; 4115 }); 4116 const getResolvedInsideElements = useStableCallback(() => getInsideElements?.().filter((element) => element != null) ?? []); 4117 React23.useEffect(() => { 4118 if (disabled2 || !modal) { 4119 return void 0; 4120 } 4121 function onKeyDown(event) { 4122 if (event.key === "Tab") { 4123 if (contains(floatingFocusElement, activeElement(ownerDocument(floatingFocusElement))) && getTabbableContent().length === 0 && !isUntrappedTypeableCombobox) { 4124 stopEvent(event); 4125 } 4126 } 4127 } 4128 const doc = ownerDocument(floatingFocusElement); 4129 return addEventListener(doc, "keydown", onKeyDown); 4130 }, [disabled2, floatingFocusElement, modal, isUntrappedTypeableCombobox, getTabbableContent]); 4131 React23.useEffect(() => { 4132 if (disabled2 || !open2) { 4133 return void 0; 4134 } 4135 const doc = ownerDocument(floatingFocusElement); 4136 function clearPointerDownOutside() { 4137 pointerDownOutsideRef.current = false; 4138 } 4139 function onPointerDown(event) { 4140 const target = getTarget(event); 4141 const insideElements = getResolvedInsideElements(); 4142 const pointerTargetInside = contains(floating, target) || contains(domReference, target) || contains(portalContext?.portalNode, target) || insideElements.some((element) => element === target || contains(element, target)); 4143 pointerDownOutsideRef.current = !pointerTargetInside; 4144 lastInteractionTypeRef.current = event.pointerType || "keyboard"; 4145 if (closest(target, `[$CLICK_TRIGGER_IDENTIFIER}]`)) { 4146 isPointerDownRef.current = true; 4147 pointerDownTimeout.start(0, () => { 4148 isPointerDownRef.current = false; 4149 }); 4150 } 4151 } 4152 function onKeyDown() { 4153 lastInteractionTypeRef.current = "keyboard"; 4154 } 4155 return mergeCleanups( 4156 addEventListener(doc, "pointerdown", onPointerDown, true), 4157 addEventListener(doc, "pointerup", clearPointerDownOutside, true), 4158 addEventListener(doc, "pointercancel", clearPointerDownOutside, true), 4159 addEventListener(doc, "keydown", onKeyDown, true), 4160 // Avoid a stale `true` leaking into the next open (e.g. keep-mounted popups) 4161 // if the popup dismissed between pointerdown and pointerup. 4162 clearPointerDownOutside 4163 ); 4164 }, [disabled2, floating, domReference, floatingFocusElement, open2, portalContext, pointerDownTimeout, getResolvedInsideElements]); 4165 React23.useEffect(() => { 4166 if (disabled2 || !closeOnFocusOut) { 4167 return void 0; 4168 } 4169 const doc = ownerDocument(floatingFocusElement); 4170 function handlePointerDown() { 4171 isPointerDownRef.current = true; 4172 pointerDownTimeout.start(0, () => { 4173 isPointerDownRef.current = false; 4174 }); 4175 } 4176 function handleFocusIn(event) { 4177 const target = getTarget(event); 4178 if (isTabbable(target)) { 4179 lastFocusedTabbableRef.current = target; 4180 } 4181 } 4182 function handleFocusOutside(event) { 4183 const relatedTarget = event.relatedTarget; 4184 const currentTarget = event.currentTarget; 4185 const target = getTarget(event); 4186 if (modal && relatedTarget == null && target != null && contains(floating, target)) { 4187 addPreviouslyFocusedElement(target); 4188 } 4189 queueMicrotask(() => { 4190 const nodeId = getNodeId(); 4191 const triggers = store.context.triggerElements; 4192 const insideElements = getResolvedInsideElements(); 4193 const isRelatedFocusGuard = relatedTarget?.hasAttribute(createAttribute("focus-guard")) && [beforeGuardRef.current, afterGuardRef.current, portalContext?.beforeInsideRef.current, portalContext?.afterInsideRef.current, portalContext?.beforeOutsideRef.current, portalContext?.afterOutsideRef.current, resolveRef(previousFocusableElement), resolveRef(nextFocusableElement)].includes(relatedTarget); 4194 const movedToUnrelatedNode = !(contains(domReference, relatedTarget) || contains(floating, relatedTarget) || contains(relatedTarget, floating) || contains(portalContext?.portalNode, relatedTarget) || insideElements.some((element) => element === relatedTarget || contains(element, relatedTarget)) || triggers.hasMatchingElement((trigger) => contains(trigger, relatedTarget)) || isRelatedFocusGuard || tree && (getNodeChildren(tree.nodesRef.current, nodeId).find((node) => contains(node.context?.elements.floating, relatedTarget) || contains(node.context?.elements.domReference, relatedTarget)) || getNodeAncestors(tree.nodesRef.current, nodeId).find((node) => [node.context?.elements.floating, getFloatingFocusElement(node.context?.elements.floating)].includes(relatedTarget) || node.context?.elements.domReference === relatedTarget))); 4195 if (currentTarget === domReference && floatingFocusElement) { 4196 handleTabIndex(floatingFocusElement); 4197 } 4198 if (restoreFocus && currentTarget !== domReference && !isElementVisible(target) && activeElement(doc) === doc.body) { 4199 if (isHTMLElement(floatingFocusElement)) { 4200 floatingFocusElement.focus(); 4201 if (restoreFocus === "popup") { 4202 restoreFocusFrame.request(() => { 4203 floatingFocusElement.focus(); 4204 }); 4205 return; 4206 } 4207 } 4208 const tabbableContent = getTabbableContent(); 4209 const prevTabbable = lastFocusedTabbableRef.current; 4210 const nodeToFocus = (prevTabbable && tabbableContent.includes(prevTabbable) ? prevTabbable : null) || tabbableContent[tabbableContent.length - 1] || floatingFocusElement; 4211 if (isHTMLElement(nodeToFocus)) { 4212 nodeToFocus.focus(); 4213 } 4214 } 4215 if (dataRef.current.insideReactTree) { 4216 dataRef.current.insideReactTree = false; 4217 return; 4218 } 4219 if ((isUntrappedTypeableCombobox ? true : !modal) && relatedTarget && movedToUnrelatedNode && !isPointerDownRef.current && // Fix React 18 Strict Mode returnFocus due to double rendering. 4220 // For an "untrapped" typeable combobox (input role=combobox with 4221 // initialFocus=false), re-opening the popup and tabbing out should still close it even 4222 // when the previously focused element (e.g. the next tabbable outside the popup) is 4223 // focused again. Otherwise, the popup remains open on the second Tab sequence: 4224 // click input -> Tab (closes) -> click input -> Tab. 4225 // Allow closing when `isUntrappedTypeableCombobox` regardless of the previously focused element. 4226 (isUntrappedTypeableCombobox || relatedTarget !== getPreviouslyFocusedElement())) { 4227 preventReturnFocusRef.current = true; 4228 store.setOpen(false, createChangeEventDetails(reason_parts_exports.focusOut, event)); 4229 } 4230 }); 4231 } 4232 function markInsideReactTree() { 4233 if (pointerDownOutsideRef.current) { 4234 return; 4235 } 4236 dataRef.current.insideReactTree = true; 4237 blurTimeout.start(0, () => { 4238 dataRef.current.insideReactTree = false; 4239 }); 4240 } 4241 const domReferenceElement = isHTMLElement(domReference) ? domReference : null; 4242 if (!floating && !domReferenceElement) { 4243 return void 0; 4244 } 4245 return mergeCleanups(domReferenceElement && addEventListener(domReferenceElement, "focusout", handleFocusOutside), domReferenceElement && addEventListener(domReferenceElement, "pointerdown", handlePointerDown), floating && addEventListener(floating, "focusin", handleFocusIn), floating && addEventListener(floating, "focusout", handleFocusOutside), floating && portalContext && addEventListener(floating, "focusout", markInsideReactTree, true)); 4246 }, [disabled2, domReference, floating, floatingFocusElement, modal, tree, portalContext, store, closeOnFocusOut, restoreFocus, getTabbableContent, isUntrappedTypeableCombobox, getNodeId, dataRef, blurTimeout, pointerDownTimeout, restoreFocusFrame, nextFocusableElement, previousFocusableElement, getResolvedInsideElements]); 4247 React23.useEffect(() => { 4248 if (disabled2 || !floating || !open2) { 4249 return void 0; 4250 } 4251 const portalNodes = Array.from(portalContext?.portalNode?.querySelectorAll(`[$createAttribute("portal")}]`) || []); 4252 const ancestors = tree ? getNodeAncestors(tree.nodesRef.current, getNodeId()) : []; 4253 const rootAncestorComboboxDomReference = ancestors.find((node) => isTypeableCombobox(node.context?.elements.domReference || null))?.context?.elements.domReference; 4254 const controlInsideElements = [floating, ...portalNodes, beforeGuardRef.current, afterGuardRef.current, portalContext?.beforeOutsideRef.current, portalContext?.afterOutsideRef.current, ...getResolvedInsideElements()]; 4255 const insideElements = [...controlInsideElements, rootAncestorComboboxDomReference, resolveRef(previousFocusableElement), resolveRef(nextFocusableElement), isUntrappedTypeableCombobox ? domReference : null].filter((x2) => x2 != null); 4256 const ariaHiddenCleanup = markOthers(insideElements, { 4257 ariaHidden: modal || isUntrappedTypeableCombobox, 4258 mark: false 4259 }); 4260 const markerInsideElements = [floating, ...portalNodes].filter((x2) => x2 != null); 4261 const markerCleanup = markOthers(markerInsideElements); 4262 return () => { 4263 markerCleanup(); 4264 ariaHiddenCleanup(); 4265 }; 4266 }, [open2, disabled2, domReference, floating, modal, portalContext, isUntrappedTypeableCombobox, tree, getNodeId, nextFocusableElement, previousFocusableElement, getResolvedInsideElements]); 4267 useIsoLayoutEffect(() => { 4268 if (!open2 || disabled2 || !isHTMLElement(floatingFocusElement)) { 4269 return; 4270 } 4271 closeTypeRef.current = ""; 4272 lastInteractionTypeRef.current = ""; 4273 const doc = ownerDocument(floatingFocusElement); 4274 const previouslyFocusedElement = activeElement(doc); 4275 queueMicrotask(() => { 4276 const initialFocusValueOrFn = initialFocusRef.current; 4277 const resolvedInitialFocus = typeof initialFocusValueOrFn === "function" ? initialFocusValueOrFn(openInteractionTypeRef.current || "") : initialFocusValueOrFn; 4278 if (resolvedInitialFocus === void 0 || resolvedInitialFocus === false) { 4279 return; 4280 } 4281 const focusAlreadyInsideFloatingEl = contains(floatingFocusElement, previouslyFocusedElement); 4282 if (focusAlreadyInsideFloatingEl) { 4283 return; 4284 } 4285 let focusableElements = null; 4286 const getDefaultFocusElement = () => { 4287 if (focusableElements == null) { 4288 focusableElements = getTabbableContent(floatingFocusElement); 4289 } 4290 return focusableElements[0] || floatingFocusElement; 4291 }; 4292 let elToFocus; 4293 if (resolvedInitialFocus === true || resolvedInitialFocus === null) { 4294 elToFocus = getDefaultFocusElement(); 4295 } else { 4296 elToFocus = resolveRef(resolvedInitialFocus); 4297 } 4298 elToFocus = elToFocus || getDefaultFocusElement(); 4299 const hadFocusInside = contains(floatingFocusElement, activeElement(doc)); 4300 const openEvent = dataRef.current.openEvent; 4301 const openedByVirtualPress = openEvent?.type === "mousedown" && isVirtualClick(openEvent); 4302 void enqueueFocus(elToFocus, { 4303 sync: openedByVirtualPress, 4304 preventScroll: elToFocus === floatingFocusElement, 4305 shouldFocus() { 4306 if (!openRef.current) { 4307 return false; 4308 } 4309 if (hadFocusInside) { 4310 return true; 4311 } 4312 const currentActiveElement = activeElement(doc); 4313 const focusMovedInside = currentActiveElement !== elToFocus && contains(floatingFocusElement, currentActiveElement); 4314 return !focusMovedInside; 4315 } 4316 }); 4317 }); 4318 }, [disabled2, open2, floatingFocusElement, getTabbableContent, initialFocusRef, openInteractionTypeRef, openRef, dataRef]); 4319 const pendingReturnFocusRef = React23.useRef(null); 4320 useIsoLayoutEffect(() => { 4321 if (disabled2 || !floatingFocusElement) { 4322 pendingReturnFocusRef.current = null; 4323 return void 0; 4324 } 4325 if (pendingReturnFocusRef.current) { 4326 pendingReturnFocusRef.current.cancelled = true; 4327 pendingReturnFocusRef.current = null; 4328 } 4329 const doc = ownerDocument(floatingFocusElement); 4330 const elementFocusedBeforeOpen = activeElement(doc); 4331 const preferPreviousFocus = openInteractionTypeRef.current == null; 4332 addPreviouslyFocusedElement(elementFocusedBeforeOpen); 4333 function onOpenChangeLocal(details) { 4334 if (!details.open) { 4335 closeTypeRef.current = getEventType(details.nativeEvent, lastInteractionTypeRef.current); 4336 } 4337 if (details.reason === reason_parts_exports.focusOut && details.triggerElement?.hasAttribute(createAttribute("focus-guard")) || details.reason === reason_parts_exports.triggerHover && details.nativeEvent.type === "mouseleave") { 4338 preventReturnFocusRef.current = true; 4339 } 4340 if (details.reason !== reason_parts_exports.outsidePress) { 4341 return; 4342 } 4343 if (details.nested) { 4344 preventReturnFocusRef.current = false; 4345 } else if (isVirtualClick(details.nativeEvent) || isVirtualPointerEvent(details.nativeEvent)) { 4346 preventReturnFocusRef.current = false; 4347 } else { 4348 let isPreventScrollSupported = false; 4349 ownerDocument(floatingFocusElement).createElement("div").focus({ 4350 get preventScroll() { 4351 isPreventScrollSupported = true; 4352 return false; 4353 } 4354 }); 4355 if (isPreventScrollSupported) { 4356 preventReturnFocusRef.current = false; 4357 } else { 4358 preventReturnFocusRef.current = true; 4359 } 4360 } 4361 } 4362 events.on("openchange", onOpenChangeLocal); 4363 function getReturnElement(closeType) { 4364 const returnFocusValueOrFn = returnFocusRef.current; 4365 let resolvedReturnFocusValue = typeof returnFocusValueOrFn === "function" ? returnFocusValueOrFn(closeType) : returnFocusValueOrFn; 4366 if (resolvedReturnFocusValue === void 0 || resolvedReturnFocusValue === false) { 4367 return null; 4368 } 4369 if (resolvedReturnFocusValue === null) { 4370 resolvedReturnFocusValue = true; 4371 } 4372 const referenceReturnElement = domReference?.isConnected ? domReference : null; 4373 const previousReturnElement = elementFocusedBeforeOpen?.isConnected && getNodeName(elementFocusedBeforeOpen) !== "body" ? elementFocusedBeforeOpen : null; 4374 let defaultReturnElement = preferPreviousFocus ? previousReturnElement || referenceReturnElement : referenceReturnElement || previousReturnElement; 4375 if (!defaultReturnElement) { 4376 defaultReturnElement = getPreviouslyFocusedElement() || null; 4377 } 4378 if (typeof resolvedReturnFocusValue === "boolean") { 4379 return defaultReturnElement; 4380 } 4381 return resolveRef(resolvedReturnFocusValue) || defaultReturnElement || null; 4382 } 4383 return () => { 4384 events.off("openchange", onOpenChangeLocal); 4385 const activeEl = activeElement(doc); 4386 const insideElements = getResolvedInsideElements(); 4387 const isFocusInsideFloatingTree = contains(floating, activeEl) || insideElements.some((element) => element === activeEl || contains(element, activeEl)) || tree && getNodeChildren(tree.nodesRef.current, getNodeId(), false).some((node) => contains(node.context?.elements.floating, activeEl)); 4388 const returnFocusValueOrFn = returnFocusRef.current; 4389 const closeType = closeTypeRef.current; 4390 const returnElement = getReturnElement(closeType); 4391 const job = { 4392 cancelled: false 4393 }; 4394 pendingReturnFocusRef.current = job; 4395 queueMicrotask(() => { 4396 if (pendingReturnFocusRef.current === job) { 4397 pendingReturnFocusRef.current = null; 4398 } 4399 const tabbableReturnElement = getFirstTabbableElement(returnElement); 4400 const hasExplicitReturnFocus = ( 4401 // eslint-disable-next-line react-hooks/exhaustive-deps 4402 explicitReturnFocusRef.current ?? typeof returnFocusValueOrFn !== "boolean" 4403 ); 4404 if (!job.cancelled && returnFocusValueOrFn && !preventReturnFocusRef.current && isHTMLElement(tabbableReturnElement) && // If the focus moved somewhere else after mount, avoid returning focus 4405 // since it likely entered a different element which should be 4406 // respected: https://github.com/floating-ui/floating-ui/issues/2607 4407 (!hasExplicitReturnFocus && tabbableReturnElement !== activeEl && activeEl !== doc.body ? isFocusInsideFloatingTree : true)) { 4408 const focusOptions = { 4409 preventScroll: true 4410 }; 4411 if (closeType === "keyboard") { 4412 focusOptions.focusVisible = true; 4413 } 4414 tabbableReturnElement.focus(focusOptions); 4415 } 4416 preventReturnFocusRef.current = false; 4417 }); 4418 }; 4419 }, [disabled2, floating, floatingFocusElement, returnFocusRef, explicitReturnFocusRef, openInteractionTypeRef, events, tree, domReference, getNodeId, getResolvedInsideElements]); 4420 useIsoLayoutEffect(() => { 4421 if (!parts_exports.engine.webkit || open2 || !floating) { 4422 return; 4423 } 4424 const activeEl = activeElement(ownerDocument(floating)); 4425 if (!isHTMLElement(activeEl) || !isTypeableElement(activeEl)) { 4426 return; 4427 } 4428 if (contains(floating, activeEl)) { 4429 activeEl.blur(); 4430 } 4431 }, [open2, floating]); 4432 useIsoLayoutEffect(() => { 4433 if (disabled2 || !portalContext) { 4434 return void 0; 4435 } 4436 portalContext.setFocusManagerState({ 4437 modal, 4438 closeOnFocusOut, 4439 open: open2, 4440 onOpenChange: store.setOpen, 4441 domReference 4442 }); 4443 return () => { 4444 portalContext.setFocusManagerState(null); 4445 }; 4446 }, [disabled2, portalContext, modal, open2, store, closeOnFocusOut, domReference]); 4447 useIsoLayoutEffect(() => { 4448 if (disabled2 || !floatingFocusElement) { 4449 return void 0; 4450 } 4451 handleTabIndex(floatingFocusElement); 4452 return () => { 4453 queueMicrotask(clearDisconnectedPreviouslyFocusedElements); 4454 }; 4455 }, [disabled2, floatingFocusElement]); 4456 const shouldRenderGuards = !disabled2 && (modal ? !isUntrappedTypeableCombobox : true) && (isInsidePortal || modal); 4457 return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(React23.Fragment, { 4458 children: [shouldRenderGuards && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(FocusGuard, { 4459 "data-type": "inside", 4460 ref: mergedBeforeGuardRef, 4461 onFocus: (event) => { 4462 if (modal) { 4463 const els = getTabbableContent(); 4464 void enqueueFocus(els[els.length - 1]); 4465 } else if (portalContext?.portalNode) { 4466 preventReturnFocusRef.current = false; 4467 if (isOutsideEvent(event, portalContext.portalNode)) { 4468 const nextTabbable = getNextTabbable(domReference); 4469 nextTabbable?.focus(); 4470 } else { 4471 resolveRef(previousFocusableElement ?? portalContext.beforeOutsideRef)?.focus(); 4472 } 4473 } 4474 } 4475 }), children, shouldRenderGuards && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(FocusGuard, { 4476 "data-type": "inside", 4477 ref: mergedAfterGuardRef, 4478 onFocus: (event) => { 4479 if (modal) { 4480 void enqueueFocus(getTabbableContent()[0]); 4481 } else if (portalContext?.portalNode) { 4482 if (closeOnFocusOut) { 4483 preventReturnFocusRef.current = true; 4484 } 4485 if (isOutsideEvent(event, portalContext.portalNode)) { 4486 const prevTabbable = getPreviousTabbable(domReference); 4487 prevTabbable?.focus(); 4488 } else { 4489 resolveRef(nextFocusableElement ?? portalContext.afterOutsideRef)?.focus(); 4490 } 4491 } 4492 } 4493 })] 4494 }); 4495 } 4496 4497 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useClick.mjs 4498 var React24 = __toESM(require_react(), 1); 4499 function useClick(store, props = {}) { 4500 const { 4501 enabled = true, 4502 event: eventOption = "click", 4503 toggle = true, 4504 ignoreMouse = false, 4505 stickIfOpen = true, 4506 touchOpenDelay = 0, 4507 reason = reason_parts_exports.triggerPress 4508 } = props; 4509 const dataRef = store.context.dataRef; 4510 const pointerTypeRef = React24.useRef(void 0); 4511 const frame = useAnimationFrame(); 4512 const touchOpenTimeout = useTimeout(); 4513 const reference = React24.useMemo(() => { 4514 function setOpenWithTouchDelay(nextOpen, nativeEvent, target, pointerType) { 4515 const details = createChangeEventDetails(reason, nativeEvent, target); 4516 if (nextOpen && pointerType === "touch" && touchOpenDelay > 0) { 4517 touchOpenTimeout.start(touchOpenDelay, () => { 4518 store.setOpen(true, details); 4519 }); 4520 } else { 4521 store.setOpen(nextOpen, details); 4522 } 4523 } 4524 function getNextOpen(open2, currentTarget, isClickLikeOpenEvent2) { 4525 const openEvent = dataRef.current.openEvent; 4526 const hasClickedOnInactiveTrigger = store.select("domReferenceElement") !== currentTarget; 4527 if (open2 && hasClickedOnInactiveTrigger) { 4528 return true; 4529 } 4530 if (!open2) { 4531 return true; 4532 } 4533 if (!toggle) { 4534 return true; 4535 } 4536 if (openEvent && (typeof stickIfOpen === "function" ? stickIfOpen() : stickIfOpen)) { 4537 return !isClickLikeOpenEvent2(openEvent.type); 4538 } 4539 return false; 4540 } 4541 return { 4542 onPointerDown(event) { 4543 pointerTypeRef.current = isMouseLikePointerType(event.pointerType, true) && isVirtualPointerEvent(event.nativeEvent) ? "virtual" : event.pointerType; 4544 }, 4545 onMouseDown(event) { 4546 const pointerType = pointerTypeRef.current; 4547 const nativeEvent = event.nativeEvent; 4548 const open2 = store.select("open"); 4549 if (event.button !== 0 || eventOption === "click" || isMouseLikePointerType(pointerType, true) && ignoreMouse) { 4550 return; 4551 } 4552 const nextOpen = getNextOpen(open2, event.currentTarget, (openEventType) => openEventType === "click" || openEventType === "mousedown"); 4553 const target = getTarget(nativeEvent); 4554 const isTypeable = isTypeableElement(target); 4555 if (isTypeable || pointerType === "virtual") { 4556 setOpenWithTouchDelay(nextOpen, nativeEvent, isTypeable ? target : event.currentTarget, pointerType); 4557 return; 4558 } 4559 const eventCurrentTarget = event.currentTarget; 4560 frame.request(() => { 4561 setOpenWithTouchDelay(nextOpen, nativeEvent, eventCurrentTarget, pointerType); 4562 }); 4563 }, 4564 onClick(event) { 4565 if (eventOption === "mousedown-only") { 4566 return; 4567 } 4568 const pointerType = pointerTypeRef.current; 4569 if (eventOption === "mousedown" && pointerType) { 4570 pointerTypeRef.current = void 0; 4571 return; 4572 } 4573 if (isMouseLikePointerType(pointerType, true) && ignoreMouse) { 4574 return; 4575 } 4576 const open2 = store.select("open"); 4577 const nextOpen = getNextOpen(open2, event.currentTarget, (openEventType) => openEventType === "click" || openEventType === "mousedown" || openEventType === "keydown" || openEventType === "keyup"); 4578 setOpenWithTouchDelay(nextOpen, event.nativeEvent, event.currentTarget, pointerType); 4579 }, 4580 onKeyDown() { 4581 pointerTypeRef.current = void 0; 4582 } 4583 }; 4584 }, [dataRef, eventOption, ignoreMouse, reason, store, stickIfOpen, toggle, frame, touchOpenTimeout, touchOpenDelay]); 4585 return React24.useMemo(() => enabled ? { 4586 reference 4587 } : EMPTY_OBJECT, [enabled, reference]); 4588 } 4589 4590 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useClientPoint.mjs 4591 var React25 = __toESM(require_react(), 1); 4592 function createVirtualElement(domElement, data) { 4593 let offsetX = null; 4594 let offsetY = null; 4595 let isAutoUpdateEvent = false; 4596 return { 4597 contextElement: domElement || void 0, 4598 getBoundingClientRect() { 4599 const domRect = domElement?.getBoundingClientRect() || { 4600 width: 0, 4601 height: 0, 4602 x: 0, 4603 y: 0 4604 }; 4605 const isXAxis = data.axis === "x" || data.axis === "both"; 4606 const isYAxis = data.axis === "y" || data.axis === "both"; 4607 const canTrackCursorOnAutoUpdate = ["mouseenter", "mousemove"].includes(data.dataRef.current.openEvent?.type || "") && data.pointerType !== "touch"; 4608 const width = data.axis === "y" ? domRect.width : 0; 4609 const height = data.axis === "x" ? domRect.height : 0; 4610 let x2 = domRect.x; 4611 let y2 = domRect.y; 4612 if (offsetX == null && data.x && isXAxis) { 4613 offsetX = domRect.x - data.x; 4614 } 4615 if (offsetY == null && data.y && isYAxis) { 4616 offsetY = domRect.y - data.y; 4617 } 4618 x2 -= offsetX || 0; 4619 y2 -= offsetY || 0; 4620 if (!isAutoUpdateEvent || canTrackCursorOnAutoUpdate) { 4621 x2 = isXAxis && data.x != null ? data.x : x2; 4622 y2 = isYAxis && data.y != null ? data.y : y2; 4623 } 4624 isAutoUpdateEvent = true; 4625 return { 4626 width, 4627 height, 4628 x: x2, 4629 y: y2, 4630 top: y2, 4631 right: x2 + width, 4632 bottom: y2 + height, 4633 left: x2 4634 }; 4635 } 4636 }; 4637 } 4638 function isMouseBasedEvent(event) { 4639 return event != null && event.clientX != null; 4640 } 4641 function useClientPoint(store, props = {}) { 4642 const { 4643 enabled = true, 4644 axis = "both" 4645 } = props; 4646 const open2 = store.useState("open"); 4647 const floating = store.useState("floatingElement"); 4648 const domReference = store.useState("domReferenceElement"); 4649 const dataRef = store.context.dataRef; 4650 const initialRef = React25.useRef(false); 4651 const cleanupListenerRef = React25.useRef(null); 4652 const [pointerType, setPointerType] = React25.useState(); 4653 const [reactive, setReactive] = React25.useState([]); 4654 const resetReference = useStableCallback((reference2) => { 4655 store.set("positionReference", reference2); 4656 }); 4657 const setReference = useStableCallback((newX, newY, referenceElement) => { 4658 if (initialRef.current) { 4659 return; 4660 } 4661 if (dataRef.current.openEvent && !isMouseBasedEvent(dataRef.current.openEvent)) { 4662 return; 4663 } 4664 store.set("positionReference", createVirtualElement(referenceElement ?? domReference, { 4665 x: newX, 4666 y: newY, 4667 axis, 4668 dataRef, 4669 pointerType 4670 })); 4671 }); 4672 const handleReferenceEnterOrMove = useStableCallback((event) => { 4673 if (!open2) { 4674 setReference(event.clientX, event.clientY, event.currentTarget); 4675 } else if (!cleanupListenerRef.current) { 4676 setReference(event.clientX, event.clientY, event.currentTarget); 4677 setReactive([]); 4678 } 4679 }); 4680 const openCheck = isMouseLikePointerType(pointerType) ? floating : open2; 4681 React25.useEffect(() => { 4682 if (!enabled) { 4683 resetReference(domReference); 4684 return void 0; 4685 } 4686 if (!openCheck) { 4687 return void 0; 4688 } 4689 function cleanupListener() { 4690 cleanupListenerRef.current?.(); 4691 cleanupListenerRef.current = null; 4692 } 4693 const win = getWindow(floating); 4694 function handleMouseMove(event) { 4695 const target = getTarget(event); 4696 if (!contains(floating, target)) { 4697 setReference(event.clientX, event.clientY); 4698 } else { 4699 cleanupListener(); 4700 } 4701 } 4702 if (!dataRef.current.openEvent || isMouseBasedEvent(dataRef.current.openEvent)) { 4703 cleanupListenerRef.current = addEventListener(win, "mousemove", handleMouseMove); 4704 } else { 4705 resetReference(domReference); 4706 } 4707 return cleanupListener; 4708 }, [openCheck, enabled, floating, dataRef, domReference, store, setReference, resetReference, reactive]); 4709 React25.useEffect(() => () => { 4710 store.set("positionReference", null); 4711 }, [store]); 4712 React25.useEffect(() => { 4713 if (enabled && !floating) { 4714 initialRef.current = false; 4715 } 4716 }, [enabled, floating]); 4717 React25.useEffect(() => { 4718 if (!enabled && open2) { 4719 initialRef.current = true; 4720 } 4721 }, [enabled, open2]); 4722 const reference = React25.useMemo(() => { 4723 function setPointerTypeRef(event) { 4724 setPointerType(event.pointerType); 4725 } 4726 return { 4727 onPointerDown: setPointerTypeRef, 4728 onPointerEnter: setPointerTypeRef, 4729 onMouseMove: handleReferenceEnterOrMove, 4730 onMouseEnter: handleReferenceEnterOrMove 4731 }; 4732 }, [handleReferenceEnterOrMove]); 4733 return React25.useMemo(() => enabled ? { 4734 reference, 4735 trigger: reference 4736 } : {}, [enabled, reference]); 4737 } 4738 4739 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useDismiss.mjs 4740 var React26 = __toESM(require_react(), 1); 4741 function alwaysFalse() { 4742 return false; 4743 } 4744 function normalizeProp(normalizable) { 4745 return { 4746 escapeKey: typeof normalizable === "boolean" ? normalizable : normalizable?.escapeKey ?? false, 4747 outsidePress: typeof normalizable === "boolean" ? normalizable : normalizable?.outsidePress ?? true 4748 }; 4749 } 4750 function useDismiss(store, props = {}) { 4751 const { 4752 enabled = true, 4753 escapeKey: escapeKey2 = true, 4754 outsidePress: outsidePressProp = true, 4755 outsidePressEvent = "sloppy", 4756 referencePress = alwaysFalse, 4757 bubbles, 4758 externalTree 4759 } = props; 4760 const open2 = store.useState("open"); 4761 const floatingElement = store.useState("floatingElement"); 4762 const { 4763 dataRef, 4764 events 4765 } = store.context; 4766 const tree = useFloatingTree(externalTree); 4767 const outsidePressFn = useStableCallback(typeof outsidePressProp === "function" ? outsidePressProp : () => false); 4768 const outsidePress2 = typeof outsidePressProp === "function" ? outsidePressFn : outsidePressProp; 4769 const outsidePressEnabled = outsidePress2 !== false; 4770 const getOutsidePressEventProp = useStableCallback(() => outsidePressEvent); 4771 const { 4772 escapeKey: escapeKeyBubbles, 4773 outsidePress: outsidePressBubbles 4774 } = normalizeProp(bubbles); 4775 const pressStartedInsideRef = React26.useRef(false); 4776 const pressStartPreventedRef = React26.useRef(false); 4777 const suppressNextOutsideClickRef = React26.useRef(false); 4778 const sawPressWhileOpenRef = React26.useRef(false); 4779 const isComposingRef = React26.useRef(false); 4780 const currentPointerTypeRef = React26.useRef(""); 4781 const touchStateRef = React26.useRef(null); 4782 const cancelDismissOnEndTimeout = useTimeout(); 4783 const clearInsideReactTreeTimeout = useTimeout(); 4784 const compositionTimeout = useTimeout(); 4785 const clearInsideReactTree = useStableCallback(() => { 4786 clearInsideReactTreeTimeout.clear(); 4787 dataRef.current.insideReactTree = false; 4788 }); 4789 const hasBlockingChild = useStableCallback((bubbleKey) => { 4790 const nodeId = dataRef.current.floatingContext?.nodeId; 4791 const children = tree ? getNodeChildren(tree.nodesRef.current, nodeId) : []; 4792 return children.some((child) => child.context?.open && !child.context.dataRef.current[bubbleKey]); 4793 }); 4794 const isEventWithinOwnElements = useStableCallback((event) => { 4795 return isEventTargetWithin(event, store.select("floatingElement")) || isEventTargetWithin(event, store.select("domReferenceElement")); 4796 }); 4797 const closeOnReferencePress = useStableCallback((event) => { 4798 if (!referencePress()) { 4799 return; 4800 } 4801 store.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerPress, event.nativeEvent)); 4802 }); 4803 const closeOnEscapeKeyDown = useStableCallback((event) => { 4804 if (!open2 || !enabled || !escapeKey2 || event.key !== "Escape") { 4805 return; 4806 } 4807 const native = isReactEvent(event) ? event.nativeEvent : event; 4808 if (isComposingRef.current || native.isComposing) { 4809 return; 4810 } 4811 if (!escapeKeyBubbles && hasBlockingChild("__escapeKeyBubbles")) { 4812 return; 4813 } 4814 const eventDetails = createChangeEventDetails(reason_parts_exports.escapeKey, native); 4815 store.setOpen(false, eventDetails); 4816 if (!eventDetails.isCanceled) { 4817 event.preventDefault(); 4818 } 4819 if (!escapeKeyBubbles && !eventDetails.isPropagationAllowed) { 4820 event.stopPropagation(); 4821 } 4822 }); 4823 const markInsideReactTree = useStableCallback(() => { 4824 dataRef.current.insideReactTree = true; 4825 clearInsideReactTreeTimeout.start(0, clearInsideReactTree); 4826 }); 4827 const markPressStartedInsideReactTree = useStableCallback((event) => { 4828 if (!open2 || !enabled || event.button !== 0) { 4829 return; 4830 } 4831 const target = getTarget(event.nativeEvent); 4832 if (!contains(store.select("floatingElement"), target)) { 4833 return; 4834 } 4835 if (!pressStartedInsideRef.current) { 4836 pressStartedInsideRef.current = true; 4837 pressStartPreventedRef.current = false; 4838 } 4839 }); 4840 const markInsidePressStartPrevented = useStableCallback((event) => { 4841 if (!open2 || !enabled) { 4842 return; 4843 } 4844 if (!(event.defaultPrevented || event.nativeEvent.defaultPrevented)) { 4845 return; 4846 } 4847 if (pressStartedInsideRef.current) { 4848 pressStartPreventedRef.current = true; 4849 } 4850 }); 4851 React26.useEffect(() => { 4852 function handleOpenChange(details) { 4853 if (!details.open) { 4854 sawPressWhileOpenRef.current = false; 4855 } 4856 } 4857 events.on("openchange", handleOpenChange); 4858 return () => { 4859 events.off("openchange", handleOpenChange); 4860 }; 4861 }, [events]); 4862 React26.useEffect(() => clearInsideReactTree, [clearInsideReactTree]); 4863 React26.useEffect(() => { 4864 if (!open2 || !enabled) { 4865 if (!open2) { 4866 sawPressWhileOpenRef.current = false; 4867 isComposingRef.current = false; 4868 currentPointerTypeRef.current = ""; 4869 touchStateRef.current = null; 4870 } 4871 return clearInsideReactTree; 4872 } 4873 dataRef.current.__escapeKeyBubbles = escapeKeyBubbles; 4874 dataRef.current.__outsidePressBubbles = outsidePressBubbles; 4875 const preventedPressSuppressionTimeout = new Timeout(); 4876 const doc = ownerDocument(floatingElement); 4877 function handleCompositionStart() { 4878 compositionTimeout.clear(); 4879 isComposingRef.current = true; 4880 } 4881 function handleCompositionEnd() { 4882 isComposingRef.current = true; 4883 compositionTimeout.start( 4884 // 0ms or 1ms don't work in Safari. 5ms appears to consistently work. 4885 // Only apply to WebKit for the test to remain 0ms. 4886 parts_exports.engine.webkit ? 5 : 0, 4887 () => { 4888 isComposingRef.current = false; 4889 } 4890 ); 4891 } 4892 function suppressImmediateOutsideClickAfterPreventedStart() { 4893 suppressNextOutsideClickRef.current = true; 4894 preventedPressSuppressionTimeout.start(0, () => { 4895 suppressNextOutsideClickRef.current = false; 4896 }); 4897 } 4898 function resetPressStartState() { 4899 pressStartedInsideRef.current = false; 4900 pressStartPreventedRef.current = false; 4901 } 4902 function getOutsidePressEvent() { 4903 const type = currentPointerTypeRef.current; 4904 const computedType = type === "pen" || !type ? "mouse" : type; 4905 const outsidePressEventValue = getOutsidePressEventProp(); 4906 const resolved = typeof outsidePressEventValue === "function" ? outsidePressEventValue() : outsidePressEventValue; 4907 if (typeof resolved === "string") { 4908 return resolved; 4909 } 4910 return resolved[computedType]; 4911 } 4912 function shouldIgnoreEvent(event) { 4913 const computedOutsidePressEvent = getOutsidePressEvent(); 4914 return computedOutsidePressEvent === "intentional" && event.type !== "click" || computedOutsidePressEvent === "sloppy" && event.type === "click"; 4915 } 4916 function isEventWithinFloatingTree(event) { 4917 const nodeId = dataRef.current.floatingContext?.nodeId; 4918 const targetIsInsideChildren = tree && getNodeChildren(tree.nodesRef.current, nodeId).some((node) => isEventTargetWithin(event, node.context?.elements.floating)); 4919 return isEventWithinOwnElements(event) || targetIsInsideChildren; 4920 } 4921 function closeOnPressOutside(event) { 4922 if (shouldIgnoreEvent(event)) { 4923 if (event.type !== "click" && !isEventWithinOwnElements(event)) { 4924 preventedPressSuppressionTimeout.clear(); 4925 suppressNextOutsideClickRef.current = false; 4926 } 4927 clearInsideReactTree(); 4928 return; 4929 } 4930 if (dataRef.current.insideReactTree) { 4931 clearInsideReactTree(); 4932 return; 4933 } 4934 const target = getTarget(event); 4935 const inertSelector = `[$createAttribute("inert")}]`; 4936 const targetRoot = isElement(target) ? target.getRootNode() : null; 4937 const markers = Array.from((isShadowRoot(targetRoot) ? targetRoot : ownerDocument(store.select("floatingElement"))).querySelectorAll(inertSelector)); 4938 const triggers = store.context.triggerElements; 4939 if (target && (triggers.hasElement(target) || triggers.hasMatchingElement((trigger) => contains(trigger, target)))) { 4940 return; 4941 } 4942 let targetRootAncestor = isElement(target) ? target : null; 4943 while (targetRootAncestor && !isLastTraversableNode(targetRootAncestor)) { 4944 const nextParent = getParentNode(targetRootAncestor); 4945 if (isLastTraversableNode(nextParent) || !isElement(nextParent)) { 4946 break; 4947 } 4948 targetRootAncestor = nextParent; 4949 } 4950 if (markers.length && isElement(target) && !isRootElement(target) && // Clicked on a direct ancestor (e.g. FloatingOverlay). 4951 !contains(target, store.select("floatingElement")) && // If the target root element contains none of the markers, then the 4952 // element was injected after the floating element rendered. 4953 markers.every((marker) => !contains(targetRootAncestor, marker))) { 4954 return; 4955 } 4956 if (isHTMLElement(target) && !("touches" in event)) { 4957 const lastTraversableNode = isLastTraversableNode(target); 4958 const style = getComputedStyle2(target); 4959 const scrollRe = /auto|scroll/; 4960 const isScrollableX = lastTraversableNode || scrollRe.test(style.overflowX); 4961 const isScrollableY = lastTraversableNode || scrollRe.test(style.overflowY); 4962 const canScrollX = isScrollableX && target.clientWidth > 0 && target.scrollWidth > target.clientWidth; 4963 const canScrollY = isScrollableY && target.clientHeight > 0 && target.scrollHeight > target.clientHeight; 4964 const isRTL12 = style.direction === "rtl"; 4965 const pressedVerticalScrollbar = canScrollY && (isRTL12 ? event.offsetX <= target.offsetWidth - target.clientWidth : event.offsetX > target.clientWidth); 4966 const pressedHorizontalScrollbar = canScrollX && event.offsetY > target.clientHeight; 4967 if (pressedVerticalScrollbar || pressedHorizontalScrollbar) { 4968 return; 4969 } 4970 } 4971 if (isEventWithinFloatingTree(event)) { 4972 return; 4973 } 4974 if (getOutsidePressEvent() === "intentional") { 4975 if (event.detail !== 0 && !isVirtualClick(event) && !sawPressWhileOpenRef.current) { 4976 return; 4977 } 4978 if (suppressNextOutsideClickRef.current) { 4979 preventedPressSuppressionTimeout.clear(); 4980 suppressNextOutsideClickRef.current = false; 4981 return; 4982 } 4983 } 4984 if (typeof outsidePress2 === "function" && !outsidePress2(event)) { 4985 return; 4986 } 4987 if (hasBlockingChild("__outsidePressBubbles")) { 4988 return; 4989 } 4990 store.setOpen(false, createChangeEventDetails(reason_parts_exports.outsidePress, event)); 4991 clearInsideReactTree(); 4992 } 4993 function handlePointerDown(event) { 4994 if (getOutsidePressEvent() !== "sloppy" || event.pointerType === "touch" || !store.select("open") || !enabled || isEventWithinOwnElements(event)) { 4995 return; 4996 } 4997 closeOnPressOutside(event); 4998 } 4999 function handleTouchStart(event) { 5000 if (getOutsidePressEvent() !== "sloppy" || !store.select("open") || !enabled || isEventWithinOwnElements(event)) { 5001 return; 5002 } 5003 const touch = event.touches[0]; 5004 if (touch) { 5005 touchStateRef.current = { 5006 startTime: Date.now(), 5007 startX: touch.clientX, 5008 startY: touch.clientY, 5009 dismissOnTouchEnd: false, 5010 dismissOnMouseDown: true 5011 }; 5012 cancelDismissOnEndTimeout.start(1e3, () => { 5013 if (touchStateRef.current) { 5014 touchStateRef.current.dismissOnTouchEnd = false; 5015 touchStateRef.current.dismissOnMouseDown = false; 5016 } 5017 }); 5018 } 5019 } 5020 function addTargetEventListenerOnce(event, listener) { 5021 const target = getTarget(event); 5022 if (!target) { 5023 return; 5024 } 5025 const unsubscribe2 = addEventListener(target, event.type, () => { 5026 listener(event); 5027 unsubscribe2(); 5028 }); 5029 } 5030 function handleTouchStartCapture(event) { 5031 currentPointerTypeRef.current = "touch"; 5032 addTargetEventListenerOnce(event, handleTouchStart); 5033 } 5034 function closeOnPressOutsideCapture(event) { 5035 cancelDismissOnEndTimeout.clear(); 5036 if (event.type === "pointerdown") { 5037 if (event.button === 0) { 5038 sawPressWhileOpenRef.current = true; 5039 } 5040 currentPointerTypeRef.current = event.pointerType; 5041 } 5042 if (event.type === "mousedown" && touchStateRef.current && !touchStateRef.current.dismissOnMouseDown) { 5043 return; 5044 } 5045 addTargetEventListenerOnce(event, (targetEvent) => { 5046 if (targetEvent.type === "pointerdown") { 5047 handlePointerDown(targetEvent); 5048 } else { 5049 closeOnPressOutside(targetEvent); 5050 } 5051 }); 5052 } 5053 function handlePressEndCapture(event) { 5054 if (event.type === "pointercancel") { 5055 sawPressWhileOpenRef.current = false; 5056 } 5057 if (!pressStartedInsideRef.current) { 5058 return; 5059 } 5060 const pressStartedInsideDefaultPrevented = pressStartPreventedRef.current; 5061 resetPressStartState(); 5062 if (getOutsidePressEvent() !== "intentional") { 5063 return; 5064 } 5065 if (event.type === "pointercancel") { 5066 if (pressStartedInsideDefaultPrevented) { 5067 suppressImmediateOutsideClickAfterPreventedStart(); 5068 } 5069 return; 5070 } 5071 if (isEventWithinFloatingTree(event)) { 5072 return; 5073 } 5074 if (pressStartedInsideDefaultPrevented) { 5075 suppressImmediateOutsideClickAfterPreventedStart(); 5076 return; 5077 } 5078 if (typeof outsidePress2 === "function" && !outsidePress2(event)) { 5079 return; 5080 } 5081 preventedPressSuppressionTimeout.clear(); 5082 suppressNextOutsideClickRef.current = true; 5083 clearInsideReactTree(); 5084 } 5085 function handleTouchMove(event) { 5086 if (getOutsidePressEvent() !== "sloppy" || !touchStateRef.current || isEventWithinOwnElements(event)) { 5087 return; 5088 } 5089 const touch = event.touches[0]; 5090 if (!touch) { 5091 return; 5092 } 5093 const deltaX = Math.abs(touch.clientX - touchStateRef.current.startX); 5094 const deltaY = Math.abs(touch.clientY - touchStateRef.current.startY); 5095 const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY); 5096 if (distance > 5) { 5097 touchStateRef.current.dismissOnTouchEnd = true; 5098 } 5099 if (distance > 10) { 5100 closeOnPressOutside(event); 5101 cancelDismissOnEndTimeout.clear(); 5102 touchStateRef.current = null; 5103 } 5104 } 5105 function handleTouchMoveCapture(event) { 5106 addTargetEventListenerOnce(event, handleTouchMove); 5107 } 5108 function handleTouchEnd(event) { 5109 if (getOutsidePressEvent() !== "sloppy" || !touchStateRef.current || isEventWithinOwnElements(event)) { 5110 return; 5111 } 5112 if (touchStateRef.current.dismissOnTouchEnd) { 5113 closeOnPressOutside(event); 5114 } 5115 cancelDismissOnEndTimeout.clear(); 5116 touchStateRef.current = null; 5117 } 5118 function handleTouchEndCapture(event) { 5119 addTargetEventListenerOnce(event, handleTouchEnd); 5120 } 5121 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, { 5122 capture: true, 5123 passive: true 5124 }), addEventListener(doc, "touchmove", handleTouchMoveCapture, { 5125 capture: true, 5126 passive: true 5127 }), addEventListener(doc, "touchend", handleTouchEndCapture, { 5128 capture: true, 5129 passive: true 5130 }))); 5131 return () => { 5132 unsubscribe(); 5133 preventedPressSuppressionTimeout.clear(); 5134 resetPressStartState(); 5135 suppressNextOutsideClickRef.current = false; 5136 }; 5137 }, [dataRef, floatingElement, escapeKey2, outsidePressEnabled, outsidePress2, open2, enabled, escapeKeyBubbles, outsidePressBubbles, closeOnEscapeKeyDown, clearInsideReactTree, getOutsidePressEventProp, hasBlockingChild, isEventWithinOwnElements, tree, store, cancelDismissOnEndTimeout, compositionTimeout]); 5138 const reference = React26.useMemo(() => ({ 5139 onKeyDown: closeOnEscapeKeyDown, 5140 onPointerDown: closeOnReferencePress, 5141 onClick: closeOnReferencePress 5142 }), [closeOnEscapeKeyDown, closeOnReferencePress]); 5143 const floating = React26.useMemo(() => ({ 5144 onKeyDown: closeOnEscapeKeyDown, 5145 // `onMouseDown` may be blocked if `event.preventDefault()` is called in 5146 // `onPointerDown`, such as with <NumberField.ScrubArea>. 5147 // See https://github.com/mui/base-ui/pull/3379 5148 onPointerDown: markInsidePressStartPrevented, 5149 onMouseDown: markInsidePressStartPrevented, 5150 onClickCapture: markInsideReactTree, 5151 onMouseDownCapture(event) { 5152 markInsideReactTree(); 5153 markPressStartedInsideReactTree(event); 5154 }, 5155 onPointerDownCapture(event) { 5156 markInsideReactTree(); 5157 markPressStartedInsideReactTree(event); 5158 }, 5159 onMouseUpCapture: markInsideReactTree, 5160 onTouchEndCapture: markInsideReactTree, 5161 onTouchMoveCapture: markInsideReactTree 5162 }), [closeOnEscapeKeyDown, markInsideReactTree, markPressStartedInsideReactTree, markInsidePressStartPrevented]); 5163 return React26.useMemo(() => enabled ? { 5164 reference, 5165 floating, 5166 trigger: reference 5167 } : {}, [enabled, reference, floating]); 5168 } 5169 5170 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popups/popupHandle.mjs 5171 var BasePopupHandle = class { 5172 /** 5173 * Stores of every root currently using this handle, in attach order. A handle is meant to be used 5174 * by a single mounted root, but roots can transiently overlap (e.g. during an animated route 5175 * transition), so this stack lets `attachStore`'s cleanup restore the previous root instead of 5176 * leaving a still-mounted root uncontrollable when a newer overlapping root detaches first. 5177 */ 5178 attachedStores = []; 5179 /** 5180 * Store of the root that currently controls the handle: the most recently attached one still 5181 * mounted, or `null` when no root is attached. Imperative methods are no-ops while this is `null`. 5182 */ 5183 attachedStoreValue = null; 5184 /** 5185 * Listeners notified when `attachedStore` changes, so detached triggers can follow the store pointer. 5186 */ 5187 storeListeners = /* @__PURE__ */ new Set(); 5188 /** 5189 * Creates a handle backed by the store used while no root is attached. 5190 * 5191 * @param fallbackStore Inert, closed store handed to detached triggers while no root is attached, 5192 * so they can render and register without a mounted root. Triggers register into whichever store 5193 * `store` currently resolves to, so while detached they live in this store's trigger map and 5194 * migrate themselves to the root's store (and back) as it attaches/detaches. 5195 * @param componentName Component name used to prefix dev warnings, e.g. `'Menu'` produces 5196 * `MenuHandle.open()` in warning text. 5197 * @param throwOnMissingTrigger Whether `open(triggerId)` throws when no trigger with that id is 5198 * registered. Anchored popups (Menu, Popover, Tooltip, PreviewCard) need a trigger to anchor to, 5199 * so they throw; Dialog is not anchored and instead opens unassociated with a dev warning. 5200 */ 5201 constructor(fallbackStore, componentName, throwOnMissingTrigger = true) { 5202 this.fallbackStore = fallbackStore; 5203 this.componentName = componentName; 5204 this.throwOnMissingTrigger = throwOnMissingTrigger; 5205 } 5206 get attachedStore() { 5207 return this.attachedStoreValue; 5208 } 5209 /** 5210 * Store that detached triggers read from: the attached root's store, or an inert fallback store 5211 * used while no root is attached. 5212 * @internal 5213 */ 5214 get store() { 5215 return this.attachedStoreValue ?? this.fallbackStore; 5216 } 5217 /** 5218 * Stable fallback store used for server rendering and hydration. Root stores cannot be recorded on 5219 * the handle during render because a handle can be shared by concurrent server-rendered requests. 5220 * @internal 5221 */ 5222 get serverStore() { 5223 return this.fallbackStore; 5224 } 5225 /** 5226 * Subscribes to changes of the attached store pointer so detached triggers re-render and re-bind 5227 * when a root attaches or detaches. Returns a function that removes the listener. 5228 * @internal 5229 */ 5230 subscribeStore(listener) { 5231 this.storeListeners.add(listener); 5232 return () => { 5233 this.storeListeners.delete(listener); 5234 }; 5235 } 5236 /** 5237 * Points the handle at a root's store and notifies subscribers so detached triggers re-render and 5238 * re-register into it (their registration effect migrates them when the store pointer changes). 5239 * Returns a cleanup function that detaches the store again. 5240 * @internal 5241 */ 5242 attachStore(newStore) { 5243 this.attachedStores.push(newStore); 5244 this.setActiveStore(newStore); 5245 if (true) { 5246 if (this.attachedStores.length > 1) { 5247 const dev = this; 5248 (dev.overlapWarningFrame ??= AnimationFrame.create()).request(() => { 5249 if (this.attachedStores.length > 1) { 5250 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."); 5251 } 5252 }); 5253 } 5254 } 5255 return () => { 5256 const index2 = this.attachedStores.lastIndexOf(newStore); 5257 if (index2 !== -1) { 5258 this.attachedStores.splice(index2, 1); 5259 } 5260 this.setActiveStore(this.attachedStores[this.attachedStores.length - 1] ?? null); 5261 }; 5262 } 5263 /** 5264 * Sets the store that currently controls the handle and notifies subscribers when it changes, so 5265 * detached triggers re-render and migrate their registration to the new store. 5266 */ 5267 setActiveStore(store) { 5268 if (this.attachedStoreValue !== store) { 5269 this.attachedStoreValue = store; 5270 this.storeListeners.forEach((listener) => { 5271 listener(); 5272 }); 5273 } 5274 } 5275 /** 5276 * Opens the attached root's store and associates it with the trigger with the given id, or a 5277 * no-op (with a dev warning) while no root is attached. Shared by every concrete handle's public 5278 * `open()` method, which only narrows the parameter type. 5279 * 5280 * When a trigger id is given but no matching trigger is registered, anchored popups throw (see 5281 * `throwOnMissingTrigger`); Dialog opens unassociated with a dev warning instead. 5282 * 5283 * This method should only be called in an event handler or an effect (not during rendering). 5284 * 5285 * @param triggerId ID of the trigger to associate with the popup, or `null`/`undefined` to open 5286 * without associating any trigger. 5287 */ 5288 openByTrigger(triggerId) { 5289 const attachedStore = this.attachedStore; 5290 if (attachedStore === null) { 5291 if (true) { 5292 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.`); 5293 } 5294 return; 5295 } 5296 let triggerElement; 5297 if (triggerId) { 5298 for (let i = this.attachedStores.length - 1; i >= 0 && !triggerElement; i -= 1) { 5299 triggerElement = this.attachedStores[i].context.triggerElements.getById(triggerId); 5300 } 5301 triggerElement ??= this.fallbackStore.context.triggerElements.getById(triggerId); 5302 } 5303 if (triggerId && !triggerElement) { 5304 if (this.throwOnMissingTrigger) { 5305 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)); 5306 } 5307 if (true) { 5308 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.`); 5309 } 5310 } 5311 attachedStore.setOpen(true, createChangeEventDetails(reason_parts_exports.imperativeAction, void 0, triggerElement)); 5312 } 5313 /** 5314 * Closes the popup by setting the attached root's store to closed, or a no-op (with a dev warning) 5315 * while no root is attached. Shared by every concrete handle's public `close()` method. 5316 * 5317 * This method should only be called in an event handler or an effect (not during rendering). 5318 */ 5319 closePopup() { 5320 const attachedStore = this.attachedStore; 5321 if (attachedStore === null) { 5322 if (true) { 5323 console.warn(`Base UI: $this.componentName}Handle.close() was called while no root using this handle is mounted. The call was ignored.`); 5324 } 5325 return; 5326 } 5327 attachedStore.setOpen(false, createChangeEventDetails(reason_parts_exports.imperativeAction)); 5328 } 5329 }; 5330 5331 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popups/popupStoreUtils.mjs 5332 var React28 = __toESM(require_react(), 1); 5333 var ReactDOM3 = __toESM(require_react_dom(), 1); 5334 5335 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useSyncedFloatingRootContext.mjs 5336 function useSyncedFloatingRootContext(options) { 5337 const { 5338 popupStore, 5339 treatPopupAsFloatingElement = false, 5340 floatingRootContext: store, 5341 floatingId, 5342 nested, 5343 onOpenChange 5344 } = options; 5345 const open2 = popupStore.useState("open"); 5346 const referenceElement = popupStore.useState("activeTriggerElement"); 5347 const floatingElement = popupStore.useState(treatPopupAsFloatingElement ? "popupElement" : "positionerElement"); 5348 const handleOpenChange = onOpenChange; 5349 popupStore.useSyncedValue("floatingId", floatingId); 5350 useIsoLayoutEffect(() => { 5351 const valuesToSync = { 5352 open: open2, 5353 floatingId, 5354 referenceElement, 5355 floatingElement 5356 }; 5357 if (isElement(referenceElement)) { 5358 valuesToSync.domReferenceElement = referenceElement; 5359 } 5360 if (store.state.positionReference === store.state.referenceElement) { 5361 valuesToSync.positionReference = referenceElement; 5362 } 5363 store.update(valuesToSync); 5364 }, [open2, floatingId, referenceElement, floatingElement, store]); 5365 store.context.onOpenChange = handleOpenChange; 5366 store.context.nested = nested; 5367 return store; 5368 } 5369 5370 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useUnmountAfterClose.mjs 5371 var React27 = __toESM(require_react(), 1); 5372 function useUnmountAfterClose(parameters) { 5373 const { 5374 open: open2, 5375 ref, 5376 preventUnmountOnClose, 5377 setPreventUnmountOnClose: setPreventUnmountOnCloseParam, 5378 onUnmount, 5379 animateInitialOpen 5380 } = parameters; 5381 const setPreventUnmountOnClose = useStableCallback(setPreventUnmountOnCloseParam); 5382 const { 5383 mounted, 5384 setMounted, 5385 transitionStatus 5386 } = useTransitionStatus(open2, false, false, animateInitialOpen); 5387 const preventUnmountingOnClose = open2 ? false : preventUnmountOnClose; 5388 useIsoLayoutEffect(() => { 5389 if (open2) { 5390 setPreventUnmountOnClose(false); 5391 } 5392 }, [open2, setPreventUnmountOnClose]); 5393 const mountedRef = React27.useRef(mounted); 5394 const pendingUnmountRef = React27.useRef(false); 5395 const rerender = useForcedRerendering(); 5396 const unmount = () => { 5397 mountedRef.current = false; 5398 setMounted(false); 5399 onUnmount(); 5400 }; 5401 useIsoLayoutEffect(() => { 5402 mountedRef.current = mounted; 5403 if (pendingUnmountRef.current) { 5404 pendingUnmountRef.current = false; 5405 if (!open2 && mounted) { 5406 unmount(); 5407 } 5408 } 5409 }); 5410 const forceUnmount = useStableCallback(() => { 5411 if (!mountedRef.current) { 5412 return; 5413 } 5414 if (open2) { 5415 pendingUnmountRef.current = true; 5416 rerender(); 5417 return; 5418 } 5419 unmount(); 5420 }); 5421 useOpenChangeComplete({ 5422 enabled: mounted && !open2 && !preventUnmountingOnClose, 5423 open: open2, 5424 ref, 5425 onComplete() { 5426 if (!open2) { 5427 forceUnmount(); 5428 } 5429 } 5430 }); 5431 return { 5432 mounted, 5433 transitionStatus, 5434 preventUnmountingOnClose, 5435 forceUnmount 5436 }; 5437 } 5438 5439 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popups/popupStoreUtils.mjs 5440 var FOCUSABLE_POPUP_PROPS = { 5441 tabIndex: -1, 5442 [FOCUSABLE_ATTRIBUTE]: "" 5443 }; 5444 function usePopupRootStore(createStore, treatPopupAsFloatingElement = false) { 5445 const floatingId = useId(); 5446 const nested = useFloatingParentNodeId() != null; 5447 const store = useRefWithInit(() => createStore(floatingId, nested)).current; 5448 useSyncedFloatingRootContext({ 5449 popupStore: store, 5450 treatPopupAsFloatingElement, 5451 floatingRootContext: store.state.floatingRootContext, 5452 floatingId, 5453 nested, 5454 onOpenChange: store.setOpen 5455 }); 5456 return store; 5457 } 5458 function PopupHandleAttachment({ 5459 handle, 5460 store 5461 }) { 5462 useIsoLayoutEffect(() => { 5463 return handle.attachStore(store); 5464 }, [handle, store]); 5465 return null; 5466 } 5467 function syncTriggerCount(store) { 5468 const triggerCount = store.context.triggerElements.size; 5469 if (store.select("open") && store.state.triggerCount !== triggerCount) { 5470 store.set("triggerCount", triggerCount); 5471 } 5472 } 5473 function useTriggerRegistration(id, store) { 5474 const registrationRef = React28.useRef(null); 5475 return useStableCallback((element) => { 5476 const registration = registrationRef.current; 5477 if (registration !== null) { 5478 if (registration.element === element && registration.store === store && registration.id === id) { 5479 return; 5480 } 5481 registrationRef.current = null; 5482 const registeredStore = registration.store; 5483 if (registeredStore.context.triggerElements.getById(registration.id) === registration.element) { 5484 registeredStore.context.triggerElements.delete(registration.id); 5485 syncTriggerCount(registeredStore); 5486 } 5487 } 5488 if (element !== null && id !== void 0) { 5489 registrationRef.current = { 5490 store, 5491 id, 5492 element 5493 }; 5494 store.context.triggerElements.add(id, element); 5495 syncTriggerCount(store); 5496 } 5497 }); 5498 } 5499 function createPopupOpenState(state, open2, trigger, preventUnmountOnClose = false) { 5500 let preventUnmountingOnClose = state.preventUnmountingOnClose; 5501 if (open2) { 5502 preventUnmountingOnClose = false; 5503 } else if (preventUnmountOnClose) { 5504 preventUnmountingOnClose = true; 5505 } 5506 const triggerId = trigger?.id ?? null; 5507 let activeTriggerId = state.activeTriggerId; 5508 let activeTriggerElement = state.activeTriggerElement; 5509 if (triggerId || open2) { 5510 activeTriggerId = triggerId; 5511 activeTriggerElement = trigger ?? null; 5512 } 5513 return { 5514 open: open2, 5515 preventUnmountingOnClose, 5516 activeTriggerId, 5517 activeTriggerElement, 5518 // An open request without a trigger (a handle's `open(null)` or `openWithPayload()`) must not 5519 // be reassociated with a lone registered trigger later on. Controlled and default opens never 5520 // pass through here, so they keep claiming a lone trigger. A close request keeps the flag: a 5521 // controlled root may decline it and stay open, so the Root clears the flag only once the 5522 // popup is effectively closed. 5523 openedWithoutTrigger: open2 ? trigger == null : state.openedWithoutTrigger 5524 }; 5525 } 5526 function attachPreventUnmountOnClose(eventDetails) { 5527 let preventUnmountOnClose = false; 5528 eventDetails.preventUnmountOnClose = () => { 5529 preventUnmountOnClose = true; 5530 }; 5531 return () => preventUnmountOnClose; 5532 } 5533 function applyPopupOpenChange(store, nextOpen, eventDetails, options = {}) { 5534 const reason = eventDetails.reason; 5535 const isHover = reason === reason_parts_exports.triggerHover; 5536 const isFocusOpen = nextOpen && reason === reason_parts_exports.triggerFocus; 5537 const isDismissClose = !nextOpen && (reason === reason_parts_exports.triggerPress || reason === reason_parts_exports.escapeKey); 5538 const shouldPreventUnmountOnClose = attachPreventUnmountOnClose(eventDetails); 5539 store.context.onOpenChange?.(nextOpen, eventDetails); 5540 if (eventDetails.isCanceled) { 5541 return; 5542 } 5543 options.onBeforeDispatch?.(); 5544 store.state.floatingRootContext.dispatchOpenChange(nextOpen, eventDetails); 5545 const changeState = () => { 5546 const popupOpenState = createPopupOpenState(store.state, nextOpen, eventDetails.trigger, shouldPreventUnmountOnClose()); 5547 const updatedState = { 5548 ...options.extraState, 5549 ...popupOpenState 5550 }; 5551 if (isFocusOpen) { 5552 updatedState.instantType = "focus"; 5553 } else if (isDismissClose) { 5554 updatedState.instantType = "dismiss"; 5555 } else if (isHover) { 5556 updatedState.instantType = void 0; 5557 } 5558 store.update(updatedState); 5559 }; 5560 if (isHover) { 5561 ReactDOM3.flushSync(changeState); 5562 } else { 5563 changeState(); 5564 } 5565 } 5566 function useTriggerDataForwarding(triggerId, triggerElementRef, store, stateUpdates) { 5567 const isMountedByThisTrigger = store.useState("isMountedByTrigger", triggerId); 5568 const baseRegisterTrigger = useTriggerRegistration(triggerId, store); 5569 const applyTriggerData = useStableCallback((element) => { 5570 const open2 = store.select("open"); 5571 const activeTriggerId = store.select("activeTriggerId"); 5572 if (activeTriggerId === triggerId) { 5573 const changes = { 5574 activeTriggerElement: element, 5575 ...open2 ? stateUpdates : null 5576 }; 5577 store.update(changes); 5578 return; 5579 } 5580 if (activeTriggerId == null && open2 && !store.state.openedWithoutTrigger) { 5581 const changes = { 5582 activeTriggerId: triggerId ?? null, 5583 activeTriggerElement: element, 5584 ...stateUpdates 5585 }; 5586 store.update(changes); 5587 } 5588 }); 5589 const registerTrigger = useStableCallback((element) => { 5590 baseRegisterTrigger(element); 5591 if (element) { 5592 applyTriggerData(element); 5593 } 5594 }); 5595 useIsoLayoutEffect(() => { 5596 registerTrigger(triggerElementRef.current); 5597 return () => registerTrigger(null); 5598 }, [registerTrigger, triggerElementRef, store, triggerId]); 5599 useIsoLayoutEffect(() => { 5600 if (isMountedByThisTrigger) { 5601 const changes = { 5602 activeTriggerElement: triggerElementRef.current, 5603 ...stateUpdates 5604 }; 5605 store.update(changes); 5606 } 5607 }, [isMountedByThisTrigger, store, triggerElementRef, ...Object.values(stateUpdates)]); 5608 return { 5609 registerTrigger, 5610 isMountedByThisTrigger 5611 }; 5612 } 5613 function useImplicitActiveTrigger(store, options = {}) { 5614 const { 5615 closeOnActiveTriggerUnmount = false 5616 } = options; 5617 const resolvedActiveTriggerIdRef = React28.useRef(null); 5618 const open2 = store.useState("open"); 5619 const reactiveTriggerCount = store.useState("triggerCount"); 5620 const activeTriggerId = store.useState("activeTriggerId"); 5621 const reactiveActiveTriggerElement = store.useState("activeTriggerElement"); 5622 useIsoLayoutEffect(() => { 5623 if (!open2) { 5624 resolvedActiveTriggerIdRef.current = null; 5625 if (store.state.triggerCount !== 0) { 5626 store.set("triggerCount", 0); 5627 } 5628 if (store.state.openedWithoutTrigger) { 5629 store.set("openedWithoutTrigger", false); 5630 } 5631 return; 5632 } 5633 const triggerCount = store.context.triggerElements.size; 5634 const stateUpdates = {}; 5635 if (store.state.triggerCount !== triggerCount) { 5636 stateUpdates.triggerCount = triggerCount; 5637 } 5638 const currentActiveTriggerId = store.select("activeTriggerId"); 5639 let lostActiveTriggerId = null; 5640 if (currentActiveTriggerId) { 5641 const activeTriggerElement = store.context.triggerElements.getById(currentActiveTriggerId); 5642 if (!activeTriggerElement) { 5643 for (const [triggerId, triggerElement] of store.context.triggerElements.entries()) { 5644 if (triggerElement === store.state.activeTriggerElement) { 5645 stateUpdates.activeTriggerId = triggerId; 5646 stateUpdates.activeTriggerElement = triggerElement; 5647 resolvedActiveTriggerIdRef.current = triggerId; 5648 break; 5649 } 5650 } 5651 if (stateUpdates.activeTriggerId === void 0) { 5652 if (resolvedActiveTriggerIdRef.current === currentActiveTriggerId) { 5653 lostActiveTriggerId = currentActiveTriggerId; 5654 } else { 5655 resolvedActiveTriggerIdRef.current = null; 5656 } 5657 } 5658 } else { 5659 resolvedActiveTriggerIdRef.current = currentActiveTriggerId; 5660 if (activeTriggerElement !== store.state.activeTriggerElement) { 5661 stateUpdates.activeTriggerElement = activeTriggerElement; 5662 } 5663 } 5664 } else { 5665 resolvedActiveTriggerIdRef.current = null; 5666 } 5667 if (!lostActiveTriggerId && !currentActiveTriggerId && !store.state.openedWithoutTrigger && triggerCount === 1) { 5668 const iteratorResult = store.context.triggerElements.entries().next(); 5669 if (!iteratorResult.done) { 5670 const [implicitTriggerId, implicitTriggerElement] = iteratorResult.value; 5671 stateUpdates.activeTriggerId = implicitTriggerId; 5672 stateUpdates.activeTriggerElement = implicitTriggerElement; 5673 resolvedActiveTriggerIdRef.current = implicitTriggerId; 5674 } 5675 } 5676 if (stateUpdates.triggerCount !== void 0 || stateUpdates.activeTriggerId !== void 0 || stateUpdates.activeTriggerElement !== void 0) { 5677 store.update(stateUpdates); 5678 } 5679 if (lostActiveTriggerId) { 5680 if (closeOnActiveTriggerUnmount) { 5681 queueMicrotask(() => { 5682 if (store.select("open") && store.select("activeTriggerId") === lostActiveTriggerId && !store.context.triggerElements.getById(lostActiveTriggerId)) { 5683 const eventDetails = createChangeEventDetails(reason_parts_exports.none); 5684 store.setOpen(false, eventDetails); 5685 if (!eventDetails.isCanceled) { 5686 store.update({ 5687 activeTriggerId: null, 5688 activeTriggerElement: null 5689 }); 5690 } 5691 } 5692 }); 5693 } 5694 } 5695 }, [open2, store, reactiveTriggerCount, activeTriggerId, reactiveActiveTriggerElement, closeOnActiveTriggerUnmount]); 5696 } 5697 function useOpenStateTransitions(open2, store, onUnmount, animateInitialOpen) { 5698 const { 5699 mounted, 5700 transitionStatus, 5701 forceUnmount 5702 } = useUnmountAfterClose({ 5703 open: open2, 5704 ref: store.context.popupRef, 5705 preventUnmountOnClose: store.useState("preventUnmountingOnClose"), 5706 setPreventUnmountOnClose: (preventUnmountOnClose) => store.set("preventUnmountingOnClose", preventUnmountOnClose), 5707 animateInitialOpen, 5708 onUnmount() { 5709 store.update({ 5710 activeTriggerId: null, 5711 activeTriggerElement: null, 5712 mounted: false, 5713 preventUnmountingOnClose: false 5714 }); 5715 onUnmount?.(); 5716 store.context.onOpenChangeComplete?.(false); 5717 } 5718 }); 5719 useRefWithInit(() => { 5720 store.set("mounted", mounted); 5721 return null; 5722 }); 5723 store.useSyncedValues({ 5724 mounted, 5725 transitionStatus 5726 }); 5727 return { 5728 forceUnmount, 5729 transitionStatus 5730 }; 5731 } 5732 function usePopupInteractionProps(store, statePart) { 5733 store.useSyncedValues(statePart); 5734 useIsoLayoutEffect(() => () => { 5735 store.update({ 5736 activeTriggerProps: EMPTY_OBJECT, 5737 inactiveTriggerProps: EMPTY_OBJECT, 5738 popupProps: EMPTY_OBJECT 5739 }); 5740 }, [store]); 5741 } 5742 5743 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popups/popupTriggerMap.mjs 5744 var devElementIdsByMap; 5745 function getDevElementIds(map) { 5746 devElementIdsByMap ??= /* @__PURE__ */ new WeakMap(); 5747 let elementIds = devElementIdsByMap.get(map); 5748 if (!elementIds) { 5749 elementIds = /* @__PURE__ */ new WeakMap(); 5750 devElementIdsByMap.set(map, elementIds); 5751 } 5752 return elementIds; 5753 } 5754 var PopupTriggerMap = class { 5755 idMap = /* @__PURE__ */ new Map(); 5756 /** 5757 * Adds a trigger element with the given ID. 5758 * 5759 * Note: The provided element is assumed to not be registered under multiple IDs. 5760 */ 5761 add(id, element) { 5762 if (true) { 5763 const elementIds = getDevElementIds(this); 5764 const existingId = elementIds.get(element); 5765 if (existingId !== void 0 && existingId !== id) { 5766 throw new Error("Base UI: A trigger element cannot be registered under multiple IDs in PopupTriggerMap."); 5767 } 5768 const previousElement = this.idMap.get(id); 5769 if (previousElement !== void 0 && previousElement !== element) { 5770 elementIds.delete(previousElement); 5771 } 5772 elementIds.set(element, id); 5773 } 5774 this.idMap.set(id, element); 5775 } 5776 /** 5777 * Removes the trigger element with the given ID. 5778 */ 5779 delete(id) { 5780 if (true) { 5781 const element = this.idMap.get(id); 5782 if (element !== void 0) { 5783 devElementIdsByMap?.get(this)?.delete(element); 5784 } 5785 } 5786 this.idMap.delete(id); 5787 } 5788 /** 5789 * Whether the given element is registered as a trigger. 5790 */ 5791 hasElement(element) { 5792 for (const registered of this.idMap.values()) { 5793 if (registered === element) { 5794 return true; 5795 } 5796 } 5797 return false; 5798 } 5799 /** 5800 * Whether there is a registered trigger element matching the given predicate. 5801 */ 5802 hasMatchingElement(predicate) { 5803 for (const element of this.idMap.values()) { 5804 if (predicate(element)) { 5805 return true; 5806 } 5807 } 5808 return false; 5809 } 5810 /** 5811 * Returns the trigger element associated with the given ID, or undefined if no such element exists. 5812 */ 5813 getById(id) { 5814 return this.idMap.get(id); 5815 } 5816 /** 5817 * Returns an iterable of all registered trigger entries, where each entry is a tuple of [id, element]. 5818 */ 5819 entries() { 5820 return this.idMap.entries(); 5821 } 5822 /** 5823 * Returns an iterable of all registered trigger elements. 5824 */ 5825 elements() { 5826 return this.idMap.values(); 5827 } 5828 /** 5829 * Returns the number of registered trigger elements. 5830 */ 5831 get size() { 5832 return this.idMap.size; 5833 } 5834 }; 5835 5836 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/store/useStore.mjs 5837 var React30 = __toESM(require_react(), 1); 5838 var import_shim = __toESM(require_shim(), 1); 5839 var import_with_selector = __toESM(require_with_selector(), 1); 5840 5841 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/fastHooks.mjs 5842 var React29 = __toESM(require_react(), 1); 5843 var hooks = []; 5844 var currentInstance = void 0; 5845 function getInstance() { 5846 return currentInstance; 5847 } 5848 function register(hook) { 5849 hooks.push(hook); 5850 } 5851 function fastComponent(fn) { 5852 const FastComponent = (props, forwardedRef) => { 5853 const instance = useRefWithInit(createInstance).current; 5854 let result; 5855 try { 5856 currentInstance = instance; 5857 for (const hook of hooks) { 5858 hook.before(instance); 5859 } 5860 result = fn(props, forwardedRef); 5861 for (const hook of hooks) { 5862 hook.after(instance); 5863 } 5864 instance.didInitialize = true; 5865 } finally { 5866 currentInstance = void 0; 5867 } 5868 return result; 5869 }; 5870 FastComponent.displayName = fn.displayName || fn.name; 5871 return FastComponent; 5872 } 5873 function fastComponentRef(fn) { 5874 return /* @__PURE__ */ React29.forwardRef(fastComponent(fn)); 5875 } 5876 function createInstance() { 5877 return { 5878 didInitialize: false 5879 }; 5880 } 5881 5882 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/store/useStore.mjs 5883 var canUseRawUseSyncExternalStore = isReactVersionAtLeast(19); 5884 var useStoreImplementation = canUseRawUseSyncExternalStore ? useStoreFast : useStoreLegacy; 5885 function useStore(store, selector, a1, a2, a3) { 5886 return useStoreImplementation(store, selector, a1, a2, a3); 5887 } 5888 function useStoreR19(store, selector, a1, a2, a3) { 5889 const getSelection = React30.useCallback(() => selector(store.getSnapshot(), a1, a2, a3), [store, selector, a1, a2, a3]); 5890 return (0, import_shim.useSyncExternalStore)(store.subscribe, getSelection, getSelection); 5891 } 5892 register({ 5893 before(instance) { 5894 instance.syncIndex = 0; 5895 if (!instance.didInitialize) { 5896 instance.syncTick = 1; 5897 instance.syncHooks = []; 5898 instance.didChangeStore = true; 5899 instance.getSnapshot = () => { 5900 let didChange2 = false; 5901 for (let i = 0; i < instance.syncHooks.length; i += 1) { 5902 const hook = instance.syncHooks[i]; 5903 const value = hook.selector(hook.store.state, hook.a1, hook.a2, hook.a3); 5904 if (!Object.is(hook.value, value)) { 5905 didChange2 = true; 5906 hook.value = value; 5907 } 5908 } 5909 if (didChange2) { 5910 instance.syncTick += 1; 5911 } 5912 return instance.syncTick; 5913 }; 5914 } 5915 }, 5916 after(instance) { 5917 if (instance.syncHooks.length > 0) { 5918 if (instance.didChangeStore) { 5919 instance.didChangeStore = false; 5920 instance.subscribe = (onStoreChange) => { 5921 const stores = /* @__PURE__ */ new Set(); 5922 for (const hook of instance.syncHooks) { 5923 stores.add(hook.store); 5924 } 5925 const unsubscribes = []; 5926 for (const store of stores) { 5927 unsubscribes.push(store.subscribe(onStoreChange)); 5928 } 5929 return () => { 5930 for (const unsubscribe of unsubscribes) { 5931 unsubscribe(); 5932 } 5933 }; 5934 }; 5935 } 5936 (0, import_shim.useSyncExternalStore)(instance.subscribe, instance.getSnapshot, instance.getSnapshot); 5937 } 5938 } 5939 }); 5940 function useStoreFast(store, selector, a1, a2, a3) { 5941 const instance = getInstance(); 5942 if (!instance) { 5943 return useStoreR19(store, selector, a1, a2, a3); 5944 } 5945 const index2 = instance.syncIndex; 5946 instance.syncIndex += 1; 5947 let hook; 5948 if (!instance.didInitialize) { 5949 hook = { 5950 store, 5951 selector, 5952 a1, 5953 a2, 5954 a3, 5955 value: selector(store.getSnapshot(), a1, a2, a3) 5956 }; 5957 instance.syncHooks.push(hook); 5958 } else { 5959 hook = instance.syncHooks[index2]; 5960 if (hook.store !== store || hook.selector !== selector || !Object.is(hook.a1, a1) || !Object.is(hook.a2, a2) || !Object.is(hook.a3, a3)) { 5961 if (hook.store !== store) { 5962 instance.didChangeStore = true; 5963 } 5964 hook.store = store; 5965 hook.selector = selector; 5966 hook.a1 = a1; 5967 hook.a2 = a2; 5968 hook.a3 = a3; 5969 hook.value = selector(store.getSnapshot(), a1, a2, a3); 5970 } 5971 } 5972 return hook.value; 5973 } 5974 function useStoreLegacy(store, selector, a1, a2, a3) { 5975 return (0, import_with_selector.useSyncExternalStoreWithSelector)(store.subscribe, store.getSnapshot, store.getSnapshot, (state) => selector(state, a1, a2, a3)); 5976 } 5977 5978 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/store/Store.mjs 5979 var Store = class { 5980 /** 5981 * Creates a store with the given initial state, constructing the class it is called on. 5982 * Calling it on a generic base class (e.g. `ReactStore.create(...)`) constructs that 5983 * class but degrades the inferred instance type to `Store`; use `new` there instead. 5984 */ 5985 static create(state) { 5986 return new this(state); 5987 } 5988 /** 5989 * The current state of the store. 5990 * This property is updated immediately when the state changes as a result of calling {@link setState}, {@link update}, or {@link set}. 5991 * 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). 5992 * The values can be used directly (to avoid subscribing to the store) in effects or event handlers. 5993 * 5994 * Do not modify properties in state directly. Instead, use the provided methods to ensure proper state management and listener notification. 5995 */ 5996 // Internal state to handle recursive `setState()` calls 5997 constructor(state) { 5998 this.state = state; 5999 this.listeners = /* @__PURE__ */ new Set(); 6000 this.updateTick = 0; 6001 } 6002 /** 6003 * Registers a listener that will be called whenever the store's state changes. 6004 * 6005 * @param fn The listener function to be called on state changes. 6006 * @returns A function to unsubscribe the listener. 6007 */ 6008 subscribe = (fn) => { 6009 this.listeners.add(fn); 6010 return () => { 6011 this.listeners.delete(fn); 6012 }; 6013 }; 6014 /** 6015 * Returns the current state of the store. 6016 */ 6017 getSnapshot = () => { 6018 return this.state; 6019 }; 6020 /** 6021 * Updates the entire store's state and notifies all registered listeners. 6022 * 6023 * @param newState The new state to set for the store. 6024 */ 6025 setState(newState) { 6026 if (this.state === newState) { 6027 return; 6028 } 6029 this.state = newState; 6030 this.updateTick += 1; 6031 const currentTick = this.updateTick; 6032 for (const listener of this.listeners) { 6033 if (currentTick !== this.updateTick) { 6034 return; 6035 } 6036 listener(newState); 6037 } 6038 } 6039 /** 6040 * Merges the provided changes into the current state and notifies listeners if there are changes. 6041 * Each value must match its state key. Pass an exact known subset rather than a broad 6042 * `Partial<State>`, which may contain `undefined` for required state fields. 6043 * 6044 * @param changes An object containing the changes to apply to the current state. 6045 */ 6046 update(changes) { 6047 for (const key in changes) { 6048 if (!Object.is(this.state[key], changes[key])) { 6049 this.setState({ 6050 ...this.state, 6051 ...changes 6052 }); 6053 return; 6054 } 6055 } 6056 } 6057 /** 6058 * Sets a specific key in the store's state to a new value and notifies listeners if the value has changed. 6059 * 6060 * @param key The key in the store's state to update. 6061 * @param value The new value to set for the specified key. 6062 */ 6063 set(key, value) { 6064 if (!Object.is(this.state[key], value)) { 6065 this.setState({ 6066 ...this.state, 6067 [key]: value 6068 }); 6069 } 6070 } 6071 /** 6072 * Gives the state a new reference and updates all registered listeners. 6073 */ 6074 notifyAll() { 6075 const newState = { 6076 ...this.state 6077 }; 6078 this.setState(newState); 6079 } 6080 use(selector, a1, a2, a3) { 6081 return useStore(this, selector, a1, a2, a3); 6082 } 6083 }; 6084 6085 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/store/ReactStore.mjs 6086 var React31 = __toESM(require_react(), 1); 6087 var ReactStore = class extends Store { 6088 /** 6089 * Creates a new ReactStore instance. 6090 * 6091 * @param state Initial state of the store. 6092 * @param context Non-reactive context values. 6093 * @param selectors Optional selectors for use with `useState`. 6094 */ 6095 constructor(state, context = {}, selectors6) { 6096 super(state); 6097 this.context = context; 6098 this.selectors = selectors6; 6099 } 6100 /** 6101 * Non-reactive values such as refs, callbacks, etc. 6102 */ 6103 /** 6104 * Synchronizes a single external value into the store. 6105 * 6106 * Note that the while the value in `state` is updated immediately, the value returned 6107 * by `useState` is updated before the next render (similarly to React's `useState`). 6108 */ 6109 useSyncedValue(key, value) { 6110 React31.useDebugValue(key); 6111 const store = this; 6112 useIsoLayoutEffect(() => { 6113 if (store.state[key] !== value) { 6114 store.set(key, value); 6115 } 6116 }, [store, key, value]); 6117 } 6118 /** 6119 * Synchronizes a single external value into the store and 6120 * cleans it up (sets to `undefined`) on unmount. 6121 * 6122 * Note that the while the value in `state` is updated immediately, the value returned 6123 * by `useState` is updated before the next render (similarly to React's `useState`). 6124 */ 6125 useSyncedValueWithCleanup(key, value) { 6126 const store = this; 6127 useIsoLayoutEffect(() => { 6128 if (store.state[key] !== value) { 6129 store.set(key, value); 6130 } 6131 return () => { 6132 store.set(key, void 0); 6133 }; 6134 }, [store, key, value]); 6135 } 6136 /** 6137 * Synchronizes multiple external values into the store. 6138 * Each value must match its state key. Pass an exact known subset rather than a broad 6139 * `Partial<State>`, which may contain `undefined` for required state fields. 6140 * 6141 * Note that the while the values in `state` are updated immediately, the values returned 6142 * by `useState` are updated before the next render (similarly to React's `useState`). 6143 * 6144 * @param statePart An exact subset of state fields to synchronize. Unknown keys are not accepted. 6145 */ 6146 useSyncedValues(statePart) { 6147 const store = this; 6148 if (true) { 6149 React31.useDebugValue(statePart, (p3) => Object.keys(p3)); 6150 const keys = React31.useRef(Object.keys(statePart)).current; 6151 const nextKeys = Object.keys(statePart); 6152 if (keys.length !== nextKeys.length || keys.some((key, index2) => key !== nextKeys[index2])) { 6153 console.error("ReactStore.useSyncedValues expects the same prop keys on every render. Keys should be stable."); 6154 } 6155 } 6156 const dependencies = Object.values(statePart); 6157 useIsoLayoutEffect(() => { 6158 store.update(statePart); 6159 }, [store, ...dependencies]); 6160 } 6161 /** 6162 * Registers a controllable prop pair (`controlled`, `defaultValue`) for a specific key. If `controlled` 6163 * is non-undefined, the store's state at `key` is updated to match `controlled`. 6164 */ 6165 useControlledProp(key, controlled) { 6166 React31.useDebugValue(key); 6167 const store = this; 6168 const isControlled = controlled !== void 0; 6169 useIsoLayoutEffect(() => { 6170 if (isControlled && !Object.is(store.state[key], controlled)) { 6171 store.setState({ 6172 ...store.state, 6173 [key]: controlled 6174 }); 6175 } 6176 }, [store, key, controlled, isControlled]); 6177 if (true) { 6178 const cache2 = this.controlledValues ??= /* @__PURE__ */ new Map(); 6179 if (!cache2.has(key)) { 6180 cache2.set(key, isControlled); 6181 } 6182 const previouslyControlled = cache2.get(key); 6183 if (previouslyControlled !== void 0 && previouslyControlled !== isControlled) { 6184 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).`); 6185 } 6186 } 6187 } 6188 /** Gets the current value from the store using a selector with the provided key. 6189 * 6190 * @param key Key of the selector to use. 6191 */ 6192 select(key, a1, a2, a3) { 6193 const selector = this.selectors[key]; 6194 return selector(this.state, a1, a2, a3); 6195 } 6196 /** 6197 * Returns a value from the store's state using a selector function. 6198 * Used to subscribe to specific parts of the state. 6199 * This methods causes a rerender whenever the selected state changes. 6200 * 6201 * @param key Key of the selector to use. 6202 */ 6203 useState(key, a1, a2, a3) { 6204 React31.useDebugValue(key); 6205 return useStore(this, this.selectors[key], a1, a2, a3); 6206 } 6207 /** 6208 * Wraps a function with `useStableCallback` to ensure it has a stable reference 6209 * and assigns it to the context. 6210 * 6211 * @param key Key of the event callback. Must be a function in the context. 6212 * @param fn Function to assign. 6213 */ 6214 useContextCallback(key, fn) { 6215 React31.useDebugValue(key); 6216 const stableFunction = useStableCallback(fn ?? NOOP); 6217 this.context[key] = stableFunction; 6218 } 6219 /** 6220 * Returns a stable setter function for a specific key in the store's state. 6221 * It's commonly used to pass as a ref callback to React elements. 6222 * 6223 * @param key Key of the state to set. 6224 */ 6225 useStateSetter(key) { 6226 const ref = React31.useRef(void 0); 6227 if (ref.current === void 0) { 6228 ref.current = (value) => { 6229 this.set(key, value); 6230 }; 6231 } 6232 return ref.current; 6233 } 6234 /** 6235 * Observes changes derived from the store's selectors and calls the listener when the selected value changes. 6236 * 6237 * @param key Key of the selector to observe. 6238 * @param listener Listener function called when the selector result changes. 6239 */ 6240 observe(selector, listener) { 6241 let selectFn; 6242 if (typeof selector === "function") { 6243 selectFn = selector; 6244 } else { 6245 selectFn = this.selectors[selector]; 6246 } 6247 let prevValue = selectFn(this.state); 6248 listener(prevValue, prevValue, this); 6249 return this.subscribe((nextState) => { 6250 const nextValue = selectFn(nextState); 6251 if (!Object.is(prevValue, nextValue)) { 6252 const oldValue = prevValue; 6253 prevValue = nextValue; 6254 listener(nextValue, oldValue, this); 6255 } 6256 }); 6257 } 6258 }; 6259 6260 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingRootStore.mjs 6261 var selectors = { 6262 open: (state) => state.open, 6263 transitionStatus: (state) => state.transitionStatus, 6264 domReferenceElement: (state) => state.domReferenceElement, 6265 referenceElement: (state) => state.positionReference ?? state.referenceElement, 6266 floatingElement: (state) => state.floatingElement, 6267 floatingId: (state) => state.floatingId 6268 }; 6269 var FloatingRootStore = class extends ReactStore { 6270 constructor(options) { 6271 const { 6272 syncOnly, 6273 nested, 6274 onOpenChange, 6275 triggerElements, 6276 ...initialState 6277 } = options; 6278 super({ 6279 ...initialState, 6280 positionReference: initialState.referenceElement, 6281 domReferenceElement: initialState.referenceElement 6282 }, { 6283 onOpenChange, 6284 dataRef: { 6285 current: {} 6286 }, 6287 events: createEventEmitter(), 6288 nested, 6289 triggerElements 6290 }, selectors); 6291 this.syncOnly = syncOnly; 6292 } 6293 /** 6294 * Syncs the event used by hover logic to distinguish hover-open from click-like interaction. 6295 */ 6296 syncOpenEvent = (newOpen, event) => { 6297 if (!newOpen || !this.state.open || // Prevent a pending hover-open from overwriting a click-open event, while allowing 6298 // click events to upgrade a hover-open. 6299 event != null && isClickLikeEvent(event)) { 6300 this.context.dataRef.current.openEvent = newOpen ? event : void 0; 6301 } 6302 }; 6303 /** 6304 * Runs the root-owned side effects for an open state change. 6305 */ 6306 dispatchOpenChange = (newOpen, eventDetails) => { 6307 this.syncOpenEvent(newOpen, eventDetails.event); 6308 const details = { 6309 open: newOpen, 6310 reason: eventDetails.reason, 6311 nativeEvent: eventDetails.event, 6312 nested: this.context.nested, 6313 triggerElement: eventDetails.trigger 6314 }; 6315 this.context.events.emit("openchange", details); 6316 }; 6317 /** 6318 * Emits the `openchange` event through the internal event emitter and calls the `onOpenChange` handler with the provided arguments. 6319 * 6320 * @param newOpen The new open state. 6321 * @param eventDetails Details about the event that triggered the open state change. 6322 */ 6323 setOpen = (newOpen, eventDetails) => { 6324 if (this.syncOnly) { 6325 this.context.onOpenChange?.(newOpen, eventDetails); 6326 return; 6327 } 6328 this.dispatchOpenChange(newOpen, eventDetails); 6329 this.context.onOpenChange?.(newOpen, eventDetails); 6330 }; 6331 }; 6332 6333 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popups/store.mjs 6334 function createInitialPopupStoreState(triggerElements, floatingId, nested = false) { 6335 return { 6336 open: false, 6337 openProp: void 0, 6338 mounted: false, 6339 transitionStatus: void 0, 6340 floatingRootContext: new FloatingRootStore({ 6341 open: false, 6342 transitionStatus: void 0, 6343 floatingElement: null, 6344 referenceElement: null, 6345 triggerElements, 6346 floatingId, 6347 syncOnly: true, 6348 nested, 6349 onOpenChange: void 0 6350 }), 6351 floatingId, 6352 triggerCount: 0, 6353 preventUnmountingOnClose: false, 6354 payload: void 0, 6355 activeTriggerId: null, 6356 activeTriggerElement: null, 6357 openedWithoutTrigger: false, 6358 triggerIdProp: void 0, 6359 popupElement: null, 6360 positionerElement: null, 6361 activeTriggerProps: EMPTY_OBJECT, 6362 inactiveTriggerProps: EMPTY_OBJECT, 6363 popupProps: EMPTY_OBJECT 6364 }; 6365 } 6366 var activeTriggerIdSelector = (state) => state.triggerIdProp ?? state.activeTriggerId; 6367 var openSelector = (state) => state.openProp ?? state.open; 6368 var popupIdSelector = (state) => { 6369 const popupId = state.popupElement?.id ?? state.floatingId; 6370 return popupId || void 0; 6371 }; 6372 function triggerOwnsOpenPopup(state, triggerId) { 6373 return triggerId !== void 0 && openSelector(state) && activeTriggerIdSelector(state) === triggerId; 6374 } 6375 function triggerOwnsOpenPopupOrIsOnlyTrigger(state, triggerId) { 6376 if (triggerOwnsOpenPopup(state, triggerId)) { 6377 return true; 6378 } 6379 return triggerId !== void 0 && openSelector(state) && activeTriggerIdSelector(state) == null && !state.openedWithoutTrigger && state.triggerCount === 1; 6380 } 6381 var popupStoreSelectors = { 6382 open: openSelector, 6383 mounted: (state) => state.mounted, 6384 // `open` is written synchronously on an open change; `mounted`/`transitionStatus` sync in a 6385 // layout effect. Match useTransitionStatus so a retained popup does not miss its starting phase. 6386 transitionStatus: (state) => openSelector(state) && !state.mounted ? "starting" : state.transitionStatus, 6387 floatingRootContext: (state) => state.floatingRootContext, 6388 triggerCount: (state) => state.triggerCount, 6389 preventUnmountingOnClose: (state) => state.preventUnmountingOnClose, 6390 payload: (state) => state.payload, 6391 activeTriggerId: activeTriggerIdSelector, 6392 activeTriggerElement: (state) => state.mounted ? state.activeTriggerElement : null, 6393 popupId: popupIdSelector, 6394 /** 6395 * Whether the trigger with the given ID was used to open the popup. 6396 */ 6397 isTriggerActive: (state, triggerId) => triggerId !== void 0 && activeTriggerIdSelector(state) === triggerId, 6398 /** 6399 * Whether the popup is open and was activated by a trigger with the given ID. 6400 */ 6401 isOpenedByTrigger: (state, triggerId) => triggerOwnsOpenPopup(state, triggerId), 6402 /** 6403 * Whether the popup is mounted and was activated by a trigger with the given ID. 6404 */ 6405 isMountedByTrigger: (state, triggerId) => triggerId !== void 0 && activeTriggerIdSelector(state) === triggerId && state.mounted, 6406 triggerProps: (state, isActive) => isActive ? state.activeTriggerProps : state.inactiveTriggerProps, 6407 /** 6408 * Popup id for the trigger that currently owns the open popup. 6409 */ 6410 triggerPopupId: (state, triggerId) => triggerOwnsOpenPopupOrIsOnlyTrigger(state, triggerId) ? popupIdSelector(state) : void 0, 6411 popupProps: (state) => state.popupProps, 6412 popupElement: (state) => state.popupElement, 6413 positionerElement: (state) => state.positionerElement 6414 }; 6415 6416 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popups/usePopupHandleStore.mjs 6417 var React32 = __toESM(require_react(), 1); 6418 var import_shim2 = __toESM(require_shim(), 1); 6419 function usePopupHandleStore(handle) { 6420 const subscribe = React32.useCallback((listener) => { 6421 if (handle === void 0) { 6422 return NOOP; 6423 } 6424 return handle.subscribeStore(listener); 6425 }, [handle]); 6426 const getSnapshot = React32.useCallback(() => { 6427 return handle === void 0 ? void 0 : handle.store; 6428 }, [handle]); 6429 return (0, import_shim2.useSyncExternalStore)(subscribe, getSnapshot, () => handle?.serverStore); 6430 } 6431 6432 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useFloatingRootContext.mjs 6433 function useFloatingRootContext(options) { 6434 const { 6435 open: open2 = false, 6436 onOpenChange, 6437 elements = {} 6438 } = options; 6439 const floatingId = useId(); 6440 const nested = useFloatingParentNodeId() != null; 6441 if (true) { 6442 const optionDomReference = elements.reference; 6443 if (optionDomReference && !isElement(optionDomReference)) { 6444 console.error("Cannot pass a virtual element to the `elements.reference` option,", "as it must be a real DOM element. Use `context.setPositionReference()`", "instead."); 6445 } 6446 } 6447 const store = useRefWithInit(() => new FloatingRootStore({ 6448 open: open2, 6449 transitionStatus: void 0, 6450 onOpenChange, 6451 referenceElement: elements.reference ?? null, 6452 floatingElement: elements.floating ?? null, 6453 triggerElements: new PopupTriggerMap(), 6454 floatingId, 6455 syncOnly: false, 6456 nested 6457 })).current; 6458 useIsoLayoutEffect(() => { 6459 const valuesToSync = { 6460 open: open2, 6461 floatingId 6462 }; 6463 if (elements.reference !== void 0) { 6464 valuesToSync.referenceElement = elements.reference; 6465 valuesToSync.domReferenceElement = isElement(elements.reference) ? elements.reference : null; 6466 } 6467 if (elements.floating !== void 0) { 6468 valuesToSync.floatingElement = elements.floating; 6469 } 6470 store.update(valuesToSync); 6471 }, [open2, floatingId, elements.reference, elements.floating, store]); 6472 store.context.onOpenChange = onOpenChange; 6473 store.context.nested = nested; 6474 return store; 6475 } 6476 6477 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useFocus.mjs 6478 var React33 = __toESM(require_react(), 1); 6479 var isMacSafari = parts_exports.os.mac && parts_exports.engine.webkit; 6480 function useFocus(store, props = {}) { 6481 const { 6482 enabled = true, 6483 delay 6484 } = props; 6485 const { 6486 events, 6487 dataRef 6488 } = store.context; 6489 const blockFocusRef = React33.useRef(false); 6490 const blockedReferenceRef = React33.useRef(null); 6491 const keyboardModalityRef = React33.useRef(true); 6492 const timeout = useTimeout(); 6493 React33.useEffect(() => { 6494 const domReference = store.select("domReferenceElement"); 6495 if (!enabled) { 6496 return void 0; 6497 } 6498 const win = getWindow(domReference); 6499 function onBlur() { 6500 const currentDomReference = store.select("domReferenceElement"); 6501 if (!store.select("open") && isHTMLElement(currentDomReference) && currentDomReference === activeElement(ownerDocument(currentDomReference))) { 6502 blockFocusRef.current = true; 6503 blockedReferenceRef.current = currentDomReference; 6504 } 6505 } 6506 function onKeyDown() { 6507 keyboardModalityRef.current = true; 6508 } 6509 function onPointerDown() { 6510 keyboardModalityRef.current = false; 6511 } 6512 return mergeCleanups(addEventListener(win, "blur", onBlur), isMacSafari && addEventListener(win, "keydown", onKeyDown, true), isMacSafari && addEventListener(win, "pointerdown", onPointerDown, true)); 6513 }, [store, enabled]); 6514 React33.useEffect(() => { 6515 if (!enabled) { 6516 return void 0; 6517 } 6518 function onOpenChangeLocal(details) { 6519 if (details.reason === reason_parts_exports.triggerPress || details.reason === reason_parts_exports.escapeKey) { 6520 const referenceElement = store.select("domReferenceElement"); 6521 if (isElement(referenceElement)) { 6522 blockedReferenceRef.current = referenceElement; 6523 blockFocusRef.current = true; 6524 } 6525 } 6526 } 6527 events.on("openchange", onOpenChangeLocal); 6528 return () => { 6529 events.off("openchange", onOpenChangeLocal); 6530 }; 6531 }, [events, enabled, store]); 6532 const reference = React33.useMemo(() => { 6533 function resetBlockedFocus() { 6534 blockFocusRef.current = false; 6535 blockedReferenceRef.current = null; 6536 } 6537 return { 6538 onMouseLeave() { 6539 resetBlockedFocus(); 6540 }, 6541 onFocus(event) { 6542 const focusTarget = event.currentTarget; 6543 if (blockFocusRef.current) { 6544 if (blockedReferenceRef.current === focusTarget) { 6545 return; 6546 } 6547 resetBlockedFocus(); 6548 } 6549 const target = getTarget(event.nativeEvent); 6550 if (isElement(target)) { 6551 if (isMacSafari && !event.relatedTarget) { 6552 if (!keyboardModalityRef.current && !isTypeableElement(target)) { 6553 return; 6554 } 6555 } else if (!matchesFocusVisible(target)) { 6556 return; 6557 } 6558 } 6559 const movedFromOtherEnabledTrigger = isTargetInsideEnabledTrigger(event.relatedTarget, store.context.triggerElements); 6560 const { 6561 nativeEvent, 6562 currentTarget 6563 } = event; 6564 if (store.select("open") && movedFromOtherEnabledTrigger || !delay) { 6565 store.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerFocus, nativeEvent, currentTarget)); 6566 return; 6567 } 6568 timeout.start(delay, () => { 6569 if (blockFocusRef.current) { 6570 return; 6571 } 6572 store.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerFocus, nativeEvent, currentTarget)); 6573 }); 6574 }, 6575 onBlur(event) { 6576 resetBlockedFocus(); 6577 const relatedTarget = event.relatedTarget; 6578 const nativeEvent = event.nativeEvent; 6579 const movedToFocusGuard = isElement(relatedTarget) && relatedTarget.hasAttribute(createAttribute("focus-guard")) && relatedTarget.getAttribute("data-type") === "outside"; 6580 timeout.start(0, () => { 6581 const domReference = store.select("domReferenceElement"); 6582 const activeEl = activeElement(ownerDocument(domReference)); 6583 if (!relatedTarget && activeEl === domReference) { 6584 return; 6585 } 6586 if (contains(dataRef.current.floatingContext?.refs.floating.current, activeEl) || contains(domReference, activeEl) || movedToFocusGuard) { 6587 return; 6588 } 6589 const nextFocusedElement = relatedTarget ?? activeEl; 6590 if (isTargetInsideEnabledTrigger(nextFocusedElement, store.context.triggerElements)) { 6591 return; 6592 } 6593 store.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerFocus, nativeEvent)); 6594 }); 6595 } 6596 }; 6597 }, [dataRef, delay, store, timeout]); 6598 return React33.useMemo(() => enabled ? { 6599 reference, 6600 trigger: reference 6601 } : {}, [enabled, reference]); 6602 } 6603 6604 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useHoverFloatingInteraction.mjs 6605 var React34 = __toESM(require_react(), 1); 6606 6607 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useHoverInteractionSharedState.mjs 6608 var HoverInteraction = class _HoverInteraction { 6609 pointerType = void 0; 6610 interactedInside = false; 6611 handler = void 0; 6612 blockMouseMove = true; 6613 performedPointerEventsMutation = false; 6614 pointerEventsScopeElement = null; 6615 pointerEventsReferenceElement = null; 6616 pointerEventsFloatingElement = null; 6617 restTimeoutPending = false; 6618 openChangeTimeout = new Timeout(); 6619 restTimeout = new Timeout(); 6620 handleCloseOptions = void 0; 6621 static create() { 6622 return new _HoverInteraction(); 6623 } 6624 dispose = () => { 6625 this.openChangeTimeout.clear(); 6626 this.restTimeout.clear(); 6627 }; 6628 disposeEffect = () => { 6629 return this.dispose; 6630 }; 6631 }; 6632 var pointerEventsMutationOwnerByScopeElement = /* @__PURE__ */ new WeakMap(); 6633 function clearSafePolygonPointerEventsMutation(instance) { 6634 if (!instance.performedPointerEventsMutation) { 6635 return; 6636 } 6637 const scopeElement = instance.pointerEventsScopeElement; 6638 if (scopeElement && pointerEventsMutationOwnerByScopeElement.get(scopeElement) === instance) { 6639 instance.pointerEventsScopeElement?.style.removeProperty("pointer-events"); 6640 instance.pointerEventsReferenceElement?.style.removeProperty("pointer-events"); 6641 instance.pointerEventsFloatingElement?.style.removeProperty("pointer-events"); 6642 pointerEventsMutationOwnerByScopeElement.delete(scopeElement); 6643 } 6644 instance.performedPointerEventsMutation = false; 6645 instance.pointerEventsScopeElement = null; 6646 instance.pointerEventsReferenceElement = null; 6647 instance.pointerEventsFloatingElement = null; 6648 } 6649 function applySafePolygonPointerEventsMutation(instance, options) { 6650 const { 6651 scopeElement, 6652 referenceElement, 6653 floatingElement 6654 } = options; 6655 const existingOwner = pointerEventsMutationOwnerByScopeElement.get(scopeElement); 6656 if (existingOwner && existingOwner !== instance) { 6657 clearSafePolygonPointerEventsMutation(existingOwner); 6658 } 6659 clearSafePolygonPointerEventsMutation(instance); 6660 instance.performedPointerEventsMutation = true; 6661 instance.pointerEventsScopeElement = scopeElement; 6662 instance.pointerEventsReferenceElement = referenceElement; 6663 instance.pointerEventsFloatingElement = floatingElement; 6664 pointerEventsMutationOwnerByScopeElement.set(scopeElement, instance); 6665 scopeElement.style.pointerEvents = "none"; 6666 referenceElement.style.pointerEvents = "auto"; 6667 floatingElement.style.pointerEvents = "auto"; 6668 } 6669 function useHoverInteractionSharedState(store) { 6670 const data = store.context.dataRef.current; 6671 const instance = useRefWithInit(() => data.hoverInteractionState ?? HoverInteraction.create()).current; 6672 if (!data.hoverInteractionState) { 6673 data.hoverInteractionState = instance; 6674 } 6675 useOnMount(data.hoverInteractionState.disposeEffect); 6676 return data.hoverInteractionState; 6677 } 6678 6679 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useHoverFloatingInteraction.mjs 6680 function useHoverFloatingInteraction(store, parameters = {}) { 6681 const { 6682 enabled = true, 6683 closeDelay: closeDelayProp = 0, 6684 nodeId: nodeIdProp 6685 } = parameters; 6686 const open2 = store.useState("open"); 6687 const floatingElement = store.useState("floatingElement"); 6688 const domReferenceElement = store.useState("domReferenceElement"); 6689 const { 6690 dataRef 6691 } = store.context; 6692 const tree = useFloatingTree(); 6693 const parentId = useFloatingParentNodeId(); 6694 const instance = useHoverInteractionSharedState(store); 6695 const childClosedTimeout = useTimeout(); 6696 const isClickLikeOpenEvent2 = useStableCallback(() => { 6697 return isClickLikeOpenEvent(dataRef.current.openEvent?.type, instance.interactedInside); 6698 }); 6699 const isHoverOpen = useStableCallback(() => { 6700 return isHoverOpenEvent(dataRef.current.openEvent?.type); 6701 }); 6702 const clearPointerEvents = useStableCallback(() => { 6703 clearSafePolygonPointerEventsMutation(instance); 6704 }); 6705 useIsoLayoutEffect(() => { 6706 if (!open2) { 6707 instance.pointerType = void 0; 6708 instance.restTimeoutPending = false; 6709 instance.interactedInside = false; 6710 clearPointerEvents(); 6711 } 6712 }, [open2, instance, clearPointerEvents]); 6713 React34.useEffect(() => { 6714 return clearPointerEvents; 6715 }, [clearPointerEvents]); 6716 useIsoLayoutEffect(() => { 6717 if (!enabled) { 6718 return void 0; 6719 } 6720 if (open2 && instance.handleCloseOptions?.blockPointerEvents && isHoverOpen() && isElement(domReferenceElement) && floatingElement) { 6721 const ref = domReferenceElement; 6722 const floatingEl = floatingElement; 6723 const doc = ownerDocument(floatingElement); 6724 const parentFloating = tree?.nodesRef.current.find((node) => node.id === parentId)?.context?.elements.floating; 6725 if (parentFloating) { 6726 parentFloating.style.pointerEvents = ""; 6727 } 6728 const cachedScopeElement = instance.pointerEventsScopeElement !== floatingEl ? instance.pointerEventsScopeElement : null; 6729 const parentScopeElement = parentFloating !== floatingEl ? parentFloating : null; 6730 const scopeElement = instance.handleCloseOptions?.getScope?.() ?? cachedScopeElement ?? parentScopeElement ?? closest(ref, "[data-rootownerid]") ?? doc.body; 6731 applySafePolygonPointerEventsMutation(instance, { 6732 scopeElement, 6733 referenceElement: ref, 6734 floatingElement: floatingEl 6735 }); 6736 return () => { 6737 clearPointerEvents(); 6738 }; 6739 } 6740 return void 0; 6741 }, [enabled, open2, domReferenceElement, floatingElement, instance, isHoverOpen, tree, parentId, clearPointerEvents]); 6742 React34.useEffect(() => { 6743 if (!enabled) { 6744 return void 0; 6745 } 6746 function hasParentChildren() { 6747 return !!(tree && parentId && getNodeChildren(tree.nodesRef.current, parentId).length > 0); 6748 } 6749 function closeWithDelay(event) { 6750 const closeDelay = getDelay(closeDelayProp, "close", instance.pointerType); 6751 const close = () => { 6752 store.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event)); 6753 tree?.events.emit("floating.closed", event); 6754 }; 6755 if (closeDelay) { 6756 instance.openChangeTimeout.start(closeDelay, close); 6757 } else { 6758 instance.openChangeTimeout.clear(); 6759 close(); 6760 } 6761 } 6762 function handleInteractInside(event) { 6763 const target = getTarget(event); 6764 if (!isInteractiveElement(target)) { 6765 instance.interactedInside = false; 6766 return; 6767 } 6768 instance.interactedInside = closest(target, "[aria-haspopup]") != null; 6769 } 6770 function onFloatingMouseEnter() { 6771 instance.openChangeTimeout.clear(); 6772 childClosedTimeout.clear(); 6773 tree?.events.off("floating.closed", onNodeClosed); 6774 clearPointerEvents(); 6775 } 6776 function onFloatingMouseLeave(event) { 6777 if (hasParentChildren() && tree) { 6778 tree.events.on("floating.closed", onNodeClosed); 6779 return; 6780 } 6781 if (isTargetInsideEnabledTrigger(event.relatedTarget, store.context.triggerElements)) { 6782 return; 6783 } 6784 const currentNodeId = dataRef.current.floatingContext?.nodeId ?? nodeIdProp; 6785 const relatedTarget = event.relatedTarget; 6786 const isMovingIntoDescendantFloating = tree && currentNodeId && isElement(relatedTarget) && getNodeChildren(tree.nodesRef.current, currentNodeId, false).some((node) => contains(node.context?.elements.floating, relatedTarget)); 6787 if (isMovingIntoDescendantFloating) { 6788 return; 6789 } 6790 if (instance.handler) { 6791 instance.handler(event); 6792 return; 6793 } 6794 clearPointerEvents(); 6795 if (isHoverOpen() && !isClickLikeOpenEvent2()) { 6796 closeWithDelay(event); 6797 } 6798 } 6799 function onNodeClosed(event) { 6800 if (!tree || !parentId || hasParentChildren()) { 6801 return; 6802 } 6803 childClosedTimeout.start(0, () => { 6804 tree.events.off("floating.closed", onNodeClosed); 6805 store.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event)); 6806 tree.events.emit("floating.closed", event); 6807 }); 6808 } 6809 const floating = floatingElement; 6810 return mergeCleanups(floating && addEventListener(floating, "mouseenter", onFloatingMouseEnter), floating && addEventListener(floating, "mouseleave", onFloatingMouseLeave), floating && addEventListener(floating, "pointerdown", handleInteractInside, true), () => { 6811 tree?.events.off("floating.closed", onNodeClosed); 6812 }); 6813 }, [enabled, floatingElement, store, dataRef, closeDelayProp, nodeIdProp, isHoverOpen, isClickLikeOpenEvent2, clearPointerEvents, instance, tree, parentId, childClosedTimeout]); 6814 } 6815 6816 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useHoverReferenceInteraction.mjs 6817 var React35 = __toESM(require_react(), 1); 6818 var ReactDOM4 = __toESM(require_react_dom(), 1); 6819 var EMPTY_REF = { 6820 current: null 6821 }; 6822 function useHoverReferenceInteraction(store, props = {}) { 6823 const { 6824 enabled = true, 6825 delay = 0, 6826 handleClose = null, 6827 mouseOnly = false, 6828 restMs = 0, 6829 move = true, 6830 triggerElementRef = EMPTY_REF, 6831 externalTree, 6832 isActiveTrigger = true, 6833 getHandleCloseContext, 6834 isClosing, 6835 shouldOpen: shouldOpenProp, 6836 guardStaleOpen = false 6837 } = props; 6838 const { 6839 dataRef, 6840 events 6841 } = store.context; 6842 const tree = useFloatingTree(externalTree); 6843 const instance = useHoverInteractionSharedState(store); 6844 const isHoverCloseActiveRef = React35.useRef(false); 6845 const handleCloseRef = useValueAsRef(handleClose); 6846 const delayRef = useValueAsRef(delay); 6847 const restMsRef = useValueAsRef(restMs); 6848 const enabledRef = useValueAsRef(enabled); 6849 const shouldOpenRef = useValueAsRef(shouldOpenProp); 6850 const isClosingRef = useValueAsRef(isClosing); 6851 const isClickLikeOpenEvent2 = useStableCallback(() => { 6852 return isClickLikeOpenEvent(dataRef.current.openEvent?.type, instance.interactedInside); 6853 }); 6854 const checkShouldOpen = useStableCallback(() => { 6855 return shouldOpenRef.current?.() !== false; 6856 }); 6857 const isOverInactiveTrigger = useStableCallback((currentDomReference, currentTarget, target) => { 6858 const allTriggers = store.context.triggerElements; 6859 if (allTriggers.hasElement(currentTarget)) { 6860 return !currentDomReference || !contains(currentDomReference, currentTarget); 6861 } 6862 if (!isElement(target)) { 6863 return false; 6864 } 6865 const targetElement = target; 6866 return allTriggers.hasMatchingElement((trigger) => contains(trigger, targetElement)) && (!currentDomReference || !contains(currentDomReference, targetElement)); 6867 }); 6868 const cleanupMouseMoveHandler = useStableCallback(() => { 6869 if (!instance.handler) { 6870 return; 6871 } 6872 const doc = ownerDocument(store.select("domReferenceElement")); 6873 doc.removeEventListener("mousemove", instance.handler); 6874 instance.handler = void 0; 6875 }); 6876 const clearPointerEvents = useStableCallback(() => { 6877 clearSafePolygonPointerEventsMutation(instance); 6878 }); 6879 if (isActiveTrigger) { 6880 instance.handleCloseOptions = handleClose?.__options; 6881 } 6882 React35.useEffect(() => cleanupMouseMoveHandler, [cleanupMouseMoveHandler]); 6883 React35.useEffect(() => { 6884 if (!enabled) { 6885 return void 0; 6886 } 6887 function onOpenChangeLocal(details) { 6888 if (!details.open) { 6889 isHoverCloseActiveRef.current = details.reason === reason_parts_exports.triggerHover; 6890 cleanupMouseMoveHandler(); 6891 instance.openChangeTimeout.clear(); 6892 instance.restTimeout.clear(); 6893 instance.blockMouseMove = true; 6894 instance.restTimeoutPending = false; 6895 } else { 6896 isHoverCloseActiveRef.current = false; 6897 } 6898 } 6899 events.on("openchange", onOpenChangeLocal); 6900 return () => { 6901 events.off("openchange", onOpenChangeLocal); 6902 }; 6903 }, [enabled, events, instance, cleanupMouseMoveHandler]); 6904 React35.useEffect(() => { 6905 if (!enabled) { 6906 return void 0; 6907 } 6908 function closeWithDelay(event, runElseBranch = true) { 6909 const closeDelay = getDelay(delayRef.current, "close", instance.pointerType); 6910 if (closeDelay) { 6911 instance.openChangeTimeout.start(closeDelay, () => { 6912 store.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event)); 6913 tree?.events.emit("floating.closed", event); 6914 }); 6915 } else if (runElseBranch) { 6916 instance.openChangeTimeout.clear(); 6917 store.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event)); 6918 tree?.events.emit("floating.closed", event); 6919 } 6920 } 6921 const trigger = triggerElementRef.current ?? (isActiveTrigger ? store.select("domReferenceElement") : null); 6922 if (!isElement(trigger)) { 6923 return void 0; 6924 } 6925 function onMouseEnter(event) { 6926 instance.openChangeTimeout.clear(); 6927 instance.blockMouseMove = false; 6928 if (mouseOnly && !isMouseLikePointerType(instance.pointerType)) { 6929 return; 6930 } 6931 const restMsValue = getRestMs(restMsRef.current); 6932 const openDelay = getDelay(delayRef.current, "open", instance.pointerType); 6933 const eventTarget = getTarget(event); 6934 const currentTarget = event.currentTarget ?? null; 6935 const currentDomReference = store.select("domReferenceElement"); 6936 let triggerNode = currentTarget; 6937 if (isElement(eventTarget) && !store.context.triggerElements.hasElement(eventTarget)) { 6938 for (const triggerElement of store.context.triggerElements.elements()) { 6939 if (contains(triggerElement, eventTarget)) { 6940 triggerNode = triggerElement; 6941 break; 6942 } 6943 } 6944 } 6945 if (isElement(currentTarget) && isElement(currentDomReference) && !store.context.triggerElements.hasElement(currentTarget) && contains(currentTarget, currentDomReference)) { 6946 triggerNode = currentDomReference; 6947 } 6948 const isOverInactive = triggerNode == null ? false : isOverInactiveTrigger(currentDomReference, triggerNode, eventTarget); 6949 const isOpen = store.select("open"); 6950 const isInClosingTransition = isClosingRef.current?.() ?? store.select("transitionStatus") === "ending"; 6951 const isHoverCloseTransition = !isOpen && isInClosingTransition && isHoverCloseActiveRef.current; 6952 const isReenteringSameTriggerDuringCloseTransition = !isOverInactive && isElement(triggerNode) && isElement(currentDomReference) && contains(currentDomReference, triggerNode) && isHoverCloseTransition; 6953 const isRestOnlyDelay = restMsValue > 0 && !openDelay; 6954 const shouldOpenImmediately = isOverInactive && (isOpen || isHoverCloseTransition) || isReenteringSameTriggerDuringCloseTransition; 6955 const shouldOpen = !isOpen || isOverInactive; 6956 if (shouldOpenImmediately) { 6957 if (checkShouldOpen()) { 6958 store.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerNode)); 6959 } 6960 return; 6961 } 6962 if (isRestOnlyDelay) { 6963 return; 6964 } 6965 if (openDelay) { 6966 instance.openChangeTimeout.start(openDelay, () => { 6967 if (shouldOpen && checkShouldOpen()) { 6968 store.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerNode)); 6969 } 6970 }); 6971 } else if (shouldOpen) { 6972 if (checkShouldOpen()) { 6973 store.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerNode)); 6974 } 6975 } 6976 } 6977 function onMouseLeave(event) { 6978 if (isClickLikeOpenEvent2()) { 6979 clearPointerEvents(); 6980 return; 6981 } 6982 cleanupMouseMoveHandler(); 6983 const domReferenceElement = store.select("domReferenceElement"); 6984 const doc = ownerDocument(domReferenceElement); 6985 instance.restTimeout.clear(); 6986 instance.restTimeoutPending = false; 6987 const handleCloseContextBase = dataRef.current.floatingContext ?? getHandleCloseContext?.(); 6988 if (isTargetInsideEnabledTrigger(event.relatedTarget, store.context.triggerElements)) { 6989 return; 6990 } 6991 if (handleCloseRef.current && handleCloseContextBase) { 6992 if (!store.select("open")) { 6993 instance.openChangeTimeout.clear(); 6994 } 6995 const currentTrigger = triggerElementRef.current; 6996 instance.handler = handleCloseRef.current({ 6997 ...handleCloseContextBase, 6998 tree, 6999 x: event.clientX, 7000 y: event.clientY, 7001 onClose() { 7002 clearPointerEvents(); 7003 cleanupMouseMoveHandler(); 7004 if (enabledRef.current && !isClickLikeOpenEvent2() && currentTrigger === store.select("domReferenceElement")) { 7005 closeWithDelay(event, true); 7006 } 7007 } 7008 }); 7009 doc.addEventListener("mousemove", instance.handler); 7010 instance.handler(event); 7011 return; 7012 } 7013 const shouldClose = instance.pointerType === "touch" ? !contains(store.select("floatingElement"), event.relatedTarget) : true; 7014 if (shouldClose) { 7015 closeWithDelay(event); 7016 } 7017 } 7018 function onMouseOut(event) { 7019 if (contains(trigger, event.relatedTarget)) { 7020 return; 7021 } 7022 instance.openChangeTimeout.clear(); 7023 instance.restTimeout.clear(); 7024 instance.restTimeoutPending = false; 7025 } 7026 const staleOpenGuard = guardStaleOpen ? addEventListener(trigger, "mouseout", onMouseOut) : void 0; 7027 if (move) { 7028 return mergeCleanups(addEventListener(trigger, "mousemove", onMouseEnter, { 7029 once: true 7030 }), addEventListener(trigger, "mouseenter", onMouseEnter), addEventListener(trigger, "mouseleave", onMouseLeave), staleOpenGuard); 7031 } 7032 return mergeCleanups(addEventListener(trigger, "mouseenter", onMouseEnter), addEventListener(trigger, "mouseleave", onMouseLeave), staleOpenGuard); 7033 }, [cleanupMouseMoveHandler, clearPointerEvents, dataRef, delayRef, store, enabled, handleCloseRef, instance, isActiveTrigger, isOverInactiveTrigger, isClickLikeOpenEvent2, mouseOnly, move, restMsRef, triggerElementRef, tree, enabledRef, getHandleCloseContext, isClosingRef, checkShouldOpen, guardStaleOpen]); 7034 return React35.useMemo(() => { 7035 if (!enabled) { 7036 return void 0; 7037 } 7038 function setPointerRef(event) { 7039 instance.pointerType = event.pointerType; 7040 } 7041 return { 7042 onPointerDown: setPointerRef, 7043 onPointerEnter: setPointerRef, 7044 onMouseMove(event) { 7045 const { 7046 nativeEvent 7047 } = event; 7048 const trigger = event.currentTarget; 7049 const currentDomReference = store.select("domReferenceElement"); 7050 const currentOpen = store.select("open"); 7051 const isOverInactive = isOverInactiveTrigger(currentDomReference, trigger, event.target); 7052 if (mouseOnly && !isMouseLikePointerType(instance.pointerType)) { 7053 return; 7054 } 7055 if (currentOpen && isOverInactive && instance.handleCloseOptions?.blockPointerEvents) { 7056 const floatingElement = store.select("floatingElement"); 7057 if (floatingElement) { 7058 const scopeElement = instance.handleCloseOptions?.getScope?.() ?? trigger.ownerDocument.body; 7059 applySafePolygonPointerEventsMutation(instance, { 7060 scopeElement, 7061 referenceElement: trigger, 7062 floatingElement 7063 }); 7064 } 7065 } 7066 const restMsValue = getRestMs(restMsRef.current); 7067 if (currentOpen && !isOverInactive || restMsValue === 0) { 7068 return; 7069 } 7070 if (!isOverInactive && instance.restTimeoutPending && event.movementX ** 2 + event.movementY ** 2 < 2) { 7071 return; 7072 } 7073 instance.restTimeout.clear(); 7074 function handleMouseMove() { 7075 instance.restTimeoutPending = false; 7076 if (isClickLikeOpenEvent2()) { 7077 return; 7078 } 7079 const latestOpen = store.select("open"); 7080 if (!instance.blockMouseMove && (!latestOpen || isOverInactive) && checkShouldOpen()) { 7081 store.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, nativeEvent, trigger)); 7082 } 7083 } 7084 if (instance.pointerType === "touch") { 7085 ReactDOM4.flushSync(() => { 7086 handleMouseMove(); 7087 }); 7088 } else if (isOverInactive && currentOpen) { 7089 handleMouseMove(); 7090 } else { 7091 instance.restTimeoutPending = true; 7092 instance.restTimeout.start(restMsValue, handleMouseMove); 7093 } 7094 } 7095 }; 7096 }, [enabled, instance, isClickLikeOpenEvent2, isOverInactiveTrigger, mouseOnly, store, restMsRef, checkShouldOpen]); 7097 } 7098 7099 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useListNavigation.mjs 7100 var React36 = __toESM(require_react(), 1); 7101 function isStationaryWebKitPointer(event) { 7102 return parts_exports.engine.webkit && event.movementX === 0 && event.movementY === 0; 7103 } 7104 function doSwitch(orientation, vertical, horizontal) { 7105 switch (orientation) { 7106 case "vertical": 7107 return vertical; 7108 case "horizontal": 7109 return horizontal; 7110 default: 7111 return vertical || horizontal; 7112 } 7113 } 7114 function isMainOrientationKey(key, orientation) { 7115 const vertical = key === ARROW_UP || key === ARROW_DOWN; 7116 const horizontal = key === ARROW_LEFT || key === ARROW_RIGHT; 7117 return doSwitch(orientation, vertical, horizontal); 7118 } 7119 function isMainOrientationToEndKey(key, orientation, rtl) { 7120 const vertical = key === ARROW_DOWN; 7121 const horizontal = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT; 7122 return doSwitch(orientation, vertical, horizontal) || key === "Enter" || key === " " || key === ""; 7123 } 7124 function isCrossOrientationOpenKey(key, orientation, rtl) { 7125 const vertical = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT; 7126 const horizontal = key === ARROW_DOWN; 7127 return doSwitch(orientation, vertical, horizontal); 7128 } 7129 function isCrossOrientationCloseKey(key, orientation, rtl, grid) { 7130 const vertical = rtl ? key === ARROW_RIGHT : key === ARROW_LEFT; 7131 const horizontal = key === ARROW_UP; 7132 if (orientation === "both" || orientation === "horizontal" && grid) { 7133 return key === "Escape"; 7134 } 7135 return doSwitch(orientation, vertical, horizontal); 7136 } 7137 function useListNavigation(store, props) { 7138 const { 7139 listRef, 7140 activeIndex, 7141 onNavigate: onNavigateProp = () => { 7142 }, 7143 enabled = true, 7144 selectedIndex = null, 7145 allowEscape = false, 7146 loopFocus = false, 7147 nested = false, 7148 rtl = false, 7149 virtual = false, 7150 focusItemOnOpen = "auto", 7151 focusItemOnHover = true, 7152 openOnArrowKeyDown = true, 7153 disabledIndices = void 0, 7154 orientation = "vertical", 7155 triggerOrientation = orientation, 7156 parentOrientation, 7157 id, 7158 resetOnPointerLeave = true, 7159 externalTree, 7160 nestedReturnFocusRef, 7161 grid: navigateGrid 7162 } = props; 7163 const isGrid = navigateGrid != null; 7164 if (true) { 7165 if (allowEscape) { 7166 if (!loopFocus) { 7167 console.warn("`useListNavigation` looping must be enabled to allow escaping."); 7168 } 7169 if (!virtual) { 7170 console.warn("`useListNavigation` must be virtual to allow escaping."); 7171 } 7172 } 7173 if (orientation === "vertical" && isGrid) { 7174 console.warn("In grid list navigation mode, the `orientation` should", 'be either "horizontal" or "both".'); 7175 } 7176 } 7177 const open2 = store.useState("open"); 7178 const floatingElement = store.useState("floatingElement"); 7179 const domReferenceElement = store.useState("domReferenceElement"); 7180 const dataRef = store.context.dataRef; 7181 const floatingFocusElement = getFloatingFocusElement(floatingElement); 7182 const typeableComboboxReference = isTypeableCombobox(domReferenceElement); 7183 const floatingFocusElementRef = useValueAsRef(floatingFocusElement); 7184 const parentId = useFloatingParentNodeId(); 7185 const tree = useFloatingTree(externalTree); 7186 const focusItemOnOpenRef = React36.useRef(focusItemOnOpen); 7187 const indexRef = React36.useRef(selectedIndex ?? -1); 7188 const keyRef = React36.useRef(null); 7189 const isPointerModalityRef = React36.useRef(true); 7190 const onNavigate = useStableCallback((event) => { 7191 onNavigateProp(indexRef.current === -1 ? null : indexRef.current, event); 7192 }); 7193 const previousMountedRef = React36.useRef(!!floatingElement); 7194 const previousOpenRef = React36.useRef(open2); 7195 const forceSyncFocusRef = React36.useRef(false); 7196 const forceScrollIntoViewRef = React36.useRef(false); 7197 const cancelQueuedFocusRef = React36.useRef(null); 7198 const disabledIndicesRef = useValueAsRef(disabledIndices); 7199 const latestOpenRef = useValueAsRef(open2); 7200 const selectedIndexRef = useValueAsRef(selectedIndex); 7201 const resetOnPointerLeaveRef = useValueAsRef(resetOnPointerLeave); 7202 const focusFrame = useAnimationFrame(); 7203 const waitForListPopulatedFrame = useAnimationFrame(); 7204 const focusItem = useStableCallback(() => { 7205 focusFrame.cancel(); 7206 function runFocus(item2) { 7207 if (!virtual) { 7208 cancelQueuedFocusRef.current = enqueueFocus(item2, { 7209 sync: forceSyncFocusRef.current, 7210 preventScroll: true 7211 }); 7212 } 7213 } 7214 const initialItem = listRef.current[indexRef.current]; 7215 const forceScrollIntoView = forceScrollIntoViewRef.current; 7216 if (initialItem) { 7217 runFocus(initialItem); 7218 } 7219 const scheduler2 = forceSyncFocusRef.current ? (callback) => callback() : (callback) => focusFrame.request(callback); 7220 scheduler2(() => { 7221 const waitedItem = listRef.current[indexRef.current] || initialItem; 7222 if (!waitedItem) { 7223 return; 7224 } 7225 if (!initialItem) { 7226 runFocus(waitedItem); 7227 } 7228 const shouldScrollIntoView = ( 7229 // eslint-disable-next-line @typescript-eslint/no-use-before-define 7230 item && (forceScrollIntoView || !isPointerModalityRef.current) 7231 ); 7232 if (shouldScrollIntoView) { 7233 waitedItem.scrollIntoView?.({ 7234 block: "nearest", 7235 inline: "nearest" 7236 }); 7237 } 7238 }); 7239 }); 7240 useIsoLayoutEffect(() => { 7241 dataRef.current.orientation = orientation; 7242 }, [dataRef, orientation]); 7243 useIsoLayoutEffect(() => { 7244 if (!open2) { 7245 keyRef.current = null; 7246 } 7247 if (!open2 || focusItemOnOpen !== "auto") { 7248 focusItemOnOpenRef.current = focusItemOnOpen; 7249 } 7250 }, [open2, focusItemOnOpen]); 7251 useIsoLayoutEffect(() => { 7252 if (!enabled) { 7253 return; 7254 } 7255 if (open2 && floatingElement) { 7256 indexRef.current = selectedIndex ?? -1; 7257 if (focusItemOnOpenRef.current && selectedIndex != null) { 7258 forceScrollIntoViewRef.current = true; 7259 onNavigate(); 7260 } 7261 } else if (previousMountedRef.current) { 7262 indexRef.current = -1; 7263 onNavigate(); 7264 } 7265 }, [enabled, open2, floatingElement, selectedIndex, onNavigate]); 7266 useIsoLayoutEffect(() => { 7267 if (!enabled) { 7268 return; 7269 } 7270 if (!open2) { 7271 forceSyncFocusRef.current = false; 7272 return; 7273 } 7274 if (!floatingElement) { 7275 return; 7276 } 7277 if (activeIndex == null) { 7278 forceSyncFocusRef.current = false; 7279 if (selectedIndexRef.current != null) { 7280 return; 7281 } 7282 if (previousMountedRef.current) { 7283 indexRef.current = -1; 7284 focusItem(); 7285 } 7286 if ((!previousOpenRef.current || !previousMountedRef.current) && focusItemOnOpenRef.current && (keyRef.current != null || focusItemOnOpenRef.current === true && keyRef.current == null)) { 7287 let runs = 0; 7288 const waitForListPopulated = () => { 7289 if (listRef.current[0] == null) { 7290 if (runs < 2) { 7291 const scheduler2 = runs ? (callback) => waitForListPopulatedFrame.request(callback) : queueMicrotask; 7292 scheduler2(waitForListPopulated); 7293 } 7294 runs += 1; 7295 } else { 7296 indexRef.current = keyRef.current == null || isMainOrientationToEndKey(keyRef.current, triggerOrientation, rtl) || nested ? getMinListIndex(listRef) : getMaxListIndex(listRef); 7297 keyRef.current = null; 7298 onNavigate(); 7299 } 7300 }; 7301 waitForListPopulated(); 7302 } 7303 } else if (!isIndexOutOfListBounds(listRef.current, activeIndex)) { 7304 indexRef.current = activeIndex; 7305 focusItem(); 7306 forceScrollIntoViewRef.current = false; 7307 } 7308 }, [enabled, open2, floatingElement, activeIndex, selectedIndexRef, nested, listRef, triggerOrientation, rtl, onNavigate, focusItem, waitForListPopulatedFrame]); 7309 useIsoLayoutEffect(() => { 7310 if (!enabled || floatingElement || !tree || virtual || !previousMountedRef.current) { 7311 return; 7312 } 7313 const nodes = tree.nodesRef.current; 7314 const parent = nodes.find((node) => node.id === parentId)?.context?.elements.floating; 7315 const activeEl = activeElement(ownerDocument(domReferenceElement ?? parent ?? null)); 7316 const treeContainsActiveEl = nodes.some((node) => node.context && contains(node.context.elements.floating, activeEl)); 7317 if (parent && !treeContainsActiveEl && isPointerModalityRef.current) { 7318 parent.focus({ 7319 preventScroll: true 7320 }); 7321 } 7322 }, [enabled, floatingElement, domReferenceElement, tree, parentId, virtual]); 7323 useIsoLayoutEffect(() => { 7324 previousOpenRef.current = open2; 7325 previousMountedRef.current = !!floatingElement; 7326 }); 7327 const hasActiveIndex = activeIndex != null; 7328 const syncCurrentTarget = useStableCallback((event) => { 7329 if (!latestOpenRef.current) { 7330 return; 7331 } 7332 const index2 = listRef.current.indexOf(event.currentTarget); 7333 if (index2 !== -1 && (indexRef.current !== index2 || activeIndex !== index2)) { 7334 indexRef.current = index2; 7335 onNavigate(event); 7336 } 7337 }); 7338 const getParentOrientation = useStableCallback(() => { 7339 return parentOrientation ?? tree?.nodesRef.current.find((node) => node.id === parentId)?.context?.dataRef?.current.orientation; 7340 }); 7341 const getMinEnabledIndex = useStableCallback(() => { 7342 return getMinListIndex(listRef, disabledIndicesRef.current); 7343 }); 7344 const commonOnKeyDown = useStableCallback((event) => { 7345 isPointerModalityRef.current = false; 7346 forceSyncFocusRef.current = true; 7347 if (event.which === 229) { 7348 return; 7349 } 7350 if (!latestOpenRef.current && event.currentTarget === floatingFocusElementRef.current) { 7351 return; 7352 } 7353 if (nested && isCrossOrientationCloseKey(event.key, orientation, rtl, isGrid)) { 7354 if (!isMainOrientationKey(event.key, getParentOrientation())) { 7355 stopEvent(event); 7356 } 7357 store.setOpen(false, createChangeEventDetails(reason_parts_exports.listNavigation, event.nativeEvent)); 7358 const returnElement = nestedReturnFocusRef?.current ?? domReferenceElement; 7359 if (isHTMLElement(returnElement)) { 7360 returnElement.focus(); 7361 } 7362 return; 7363 } 7364 if (activeIndex != null && activeIndex !== indexRef.current && !isIndexOutOfListBounds(listRef.current, activeIndex)) { 7365 indexRef.current = activeIndex; 7366 } 7367 const currentIndex = indexRef.current; 7368 const minIndex = getMinListIndex(listRef, disabledIndices); 7369 const maxIndex = getMaxListIndex(listRef, disabledIndices); 7370 if (!typeableComboboxReference) { 7371 if (event.key === "Home") { 7372 stopEvent(event); 7373 indexRef.current = minIndex; 7374 onNavigate(event); 7375 } 7376 if (event.key === "End") { 7377 stopEvent(event); 7378 indexRef.current = maxIndex; 7379 onNavigate(event); 7380 } 7381 } 7382 if (navigateGrid != null) { 7383 const index2 = navigateGrid(event, indexRef.current, listRef, orientation, loopFocus, rtl, disabledIndices, minIndex, maxIndex); 7384 if (index2 != null && index2 !== indexRef.current) { 7385 indexRef.current = index2; 7386 onNavigate(event); 7387 } 7388 if (orientation === "both") { 7389 return; 7390 } 7391 } 7392 if (isMainOrientationKey(event.key, orientation)) { 7393 stopEvent(event); 7394 const focusedElement = activeElement(event.currentTarget.ownerDocument); 7395 if (open2 && !virtual && contains(event.currentTarget, focusedElement) && !listRef.current.some((item2) => item2 != null && contains(item2, focusedElement))) { 7396 indexRef.current = isMainOrientationToEndKey(event.key, orientation, rtl) ? minIndex : maxIndex; 7397 onNavigate(event); 7398 if (activeIndex === indexRef.current) { 7399 focusItem(); 7400 } 7401 return; 7402 } 7403 const { 7404 index: index2, 7405 wrapped 7406 } = getNextListIndex(listRef.current, currentIndex, { 7407 decrement: !isMainOrientationToEndKey(event.key, orientation, rtl), 7408 loopFocus, 7409 allowEscape, 7410 disabledIndices, 7411 minIndex, 7412 maxIndex 7413 }); 7414 if (wrapped) { 7415 forceSyncFocusRef.current = false; 7416 } 7417 indexRef.current = index2; 7418 onNavigate(event); 7419 } 7420 }); 7421 const item = React36.useMemo(() => { 7422 const itemProps = { 7423 onFocus(event) { 7424 forceSyncFocusRef.current = true; 7425 syncCurrentTarget(event); 7426 }, 7427 onClick({ 7428 currentTarget 7429 }) { 7430 if (!virtual) { 7431 currentTarget.focus({ 7432 preventScroll: true 7433 }); 7434 } 7435 }, 7436 onMouseMove(event) { 7437 if (isStationaryWebKitPointer(event)) { 7438 return; 7439 } 7440 forceSyncFocusRef.current = true; 7441 forceScrollIntoViewRef.current = false; 7442 if (focusItemOnHover) { 7443 syncCurrentTarget(event); 7444 } 7445 }, 7446 onPointerLeave(event) { 7447 if (!latestOpenRef.current || !isPointerModalityRef.current || event.pointerType === "touch") { 7448 return; 7449 } 7450 forceSyncFocusRef.current = true; 7451 const relatedTarget = event.relatedTarget; 7452 if (!focusItemOnHover || listRef.current.includes(relatedTarget)) { 7453 return; 7454 } 7455 if (!resetOnPointerLeaveRef.current) { 7456 return; 7457 } 7458 cancelQueuedFocusRef.current?.(); 7459 cancelQueuedFocusRef.current = null; 7460 indexRef.current = -1; 7461 onNavigate(event); 7462 if (!virtual) { 7463 const floatingFocusEl = floatingFocusElementRef.current; 7464 const activeEl = activeElement(ownerDocument(floatingFocusEl)); 7465 if (floatingFocusEl && contains(floatingFocusEl, activeEl)) { 7466 floatingFocusEl.focus({ 7467 preventScroll: true 7468 }); 7469 } 7470 } 7471 } 7472 }; 7473 return itemProps; 7474 }, [syncCurrentTarget, latestOpenRef, floatingFocusElementRef, focusItemOnHover, listRef, onNavigate, resetOnPointerLeaveRef, virtual]); 7475 const ariaActiveDescendantProp = React36.useMemo(() => { 7476 return virtual && open2 && hasActiveIndex && { 7477 "aria-activedescendant": `$id}-$activeIndex}` 7478 }; 7479 }, [virtual, open2, hasActiveIndex, id, activeIndex]); 7480 const floating = React36.useMemo(() => { 7481 return { 7482 ...!typeableComboboxReference ? ariaActiveDescendantProp : {}, 7483 onKeyDown(event) { 7484 if (event.key === "Tab" && event.shiftKey && open2 && !virtual) { 7485 const target = getTarget(event.nativeEvent); 7486 if (target && !contains(floatingFocusElementRef.current, target)) { 7487 return; 7488 } 7489 stopEvent(event); 7490 const details = createChangeEventDetails(reason_parts_exports.focusOut, event.nativeEvent); 7491 store.setOpen(false, details); 7492 const returnElement = nestedReturnFocusRef?.current ?? domReferenceElement; 7493 if (!details.isCanceled && isHTMLElement(returnElement)) { 7494 returnElement.focus(); 7495 } 7496 return; 7497 } 7498 commonOnKeyDown(event); 7499 }, 7500 onPointerMove(event) { 7501 if (isStationaryWebKitPointer(event)) { 7502 return; 7503 } 7504 isPointerModalityRef.current = true; 7505 } 7506 }; 7507 }, [ariaActiveDescendantProp, commonOnKeyDown, floatingFocusElementRef, typeableComboboxReference, store, open2, virtual, domReferenceElement, nestedReturnFocusRef]); 7508 const trigger = React36.useMemo(() => { 7509 function openOnNavigationKeyDown(event) { 7510 store.setOpen(true, createChangeEventDetails(reason_parts_exports.listNavigation, event.nativeEvent, event.currentTarget)); 7511 } 7512 function checkVirtualMouse(event) { 7513 if (focusItemOnOpen === "auto" && isVirtualClick(event.nativeEvent)) { 7514 focusItemOnOpenRef.current = !virtual; 7515 } 7516 } 7517 function checkVirtualPointer(event) { 7518 focusItemOnOpenRef.current = focusItemOnOpen; 7519 if (focusItemOnOpen === "auto" && isVirtualPointerEvent(event.nativeEvent)) { 7520 focusItemOnOpenRef.current = true; 7521 } 7522 } 7523 return { 7524 onKeyDown(event) { 7525 const currentOpen = store.select("open"); 7526 isPointerModalityRef.current = false; 7527 const isArrowKey = event.key.startsWith("Arrow"); 7528 const isParentCrossOpenKey = isCrossOrientationOpenKey(event.key, getParentOrientation(), rtl); 7529 const isMainKey = isMainOrientationKey(event.key, currentOpen ? orientation : triggerOrientation); 7530 const isNavigationKey = (nested ? isParentCrossOpenKey : isMainKey) || event.key === "Enter" || event.key.trim() === ""; 7531 if (virtual && currentOpen && (!nested || isTypeableElement(event.currentTarget))) { 7532 return commonOnKeyDown(event); 7533 } 7534 if (!currentOpen && !openOnArrowKeyDown && isArrowKey) { 7535 return void 0; 7536 } 7537 if (isNavigationKey) { 7538 const isParentMainKey = isMainOrientationKey(event.key, getParentOrientation()); 7539 keyRef.current = nested && isParentMainKey ? null : event.key; 7540 } 7541 if (nested) { 7542 if (isParentCrossOpenKey) { 7543 stopEvent(event); 7544 if (currentOpen) { 7545 indexRef.current = getMinEnabledIndex(); 7546 onNavigate(event); 7547 if (virtual) { 7548 floatingFocusElementRef.current?.focus(); 7549 } 7550 } else { 7551 openOnNavigationKeyDown(event); 7552 } 7553 } 7554 return void 0; 7555 } 7556 if (isMainKey) { 7557 if (selectedIndexRef.current != null) { 7558 indexRef.current = selectedIndexRef.current; 7559 } 7560 stopEvent(event); 7561 if (!currentOpen && openOnArrowKeyDown) { 7562 openOnNavigationKeyDown(event); 7563 } else { 7564 commonOnKeyDown(event); 7565 } 7566 if (currentOpen) { 7567 onNavigate(event); 7568 } 7569 } 7570 return void 0; 7571 }, 7572 onFocus(event) { 7573 if (event.target !== event.currentTarget) { 7574 return; 7575 } 7576 if (store.select("open") && !virtual) { 7577 indexRef.current = -1; 7578 onNavigate(event); 7579 } 7580 }, 7581 onPointerDown: checkVirtualPointer, 7582 onPointerEnter: checkVirtualPointer, 7583 onMouseDown: checkVirtualMouse, 7584 onClick: checkVirtualMouse 7585 }; 7586 }, [commonOnKeyDown, focusItemOnOpen, getMinEnabledIndex, nested, onNavigate, store, openOnArrowKeyDown, orientation, triggerOrientation, getParentOrientation, rtl, selectedIndexRef, virtual, floatingFocusElementRef]); 7587 const reference = React36.useMemo(() => { 7588 return { 7589 ...ariaActiveDescendantProp, 7590 ...trigger 7591 }; 7592 }, [ariaActiveDescendantProp, trigger]); 7593 return React36.useMemo(() => enabled ? { 7594 reference, 7595 floating, 7596 item, 7597 trigger 7598 } : {}, [enabled, reference, floating, trigger, item]); 7599 } 7600 7601 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useTypeahead.mjs 7602 var React37 = __toESM(require_react(), 1); 7603 function useTypeahead(store, props) { 7604 const { 7605 listRef, 7606 elementsRef, 7607 activeIndex, 7608 onMatch: onMatchProp, 7609 disabledIndices, 7610 onTyping: onTypingProp, 7611 enabled = true, 7612 resetMs = 750, 7613 selectedIndex = null 7614 } = props; 7615 const onTyping = useStableCallback(onTypingProp); 7616 const open2 = store.useState("open"); 7617 const timeout = useTimeout(); 7618 const stringRef = React37.useRef(""); 7619 const prevIndexRef = React37.useRef(selectedIndex ?? activeIndex ?? -1); 7620 const matchIndexRef = React37.useRef(null); 7621 const onKeyDown = useStableCallback((event) => { 7622 function getElement(index3) { 7623 return elementsRef?.current[index3]; 7624 } 7625 function isItemAvailable(index3) { 7626 const element = getElement(index3); 7627 if (element && !isElementVisible(element) || element?.matches(":disabled")) { 7628 return false; 7629 } 7630 return disabledIndices == null || !isListIndexDisabled(EMPTY_ARRAY, index3, disabledIndices); 7631 } 7632 function getMatchingIndex(list, string, startIndex2 = 0) { 7633 if (list.length === 0) { 7634 return -1; 7635 } 7636 const normalizedStartIndex = (startIndex2 % list.length + list.length) % list.length; 7637 const lowerString = string.toLowerCase(); 7638 for (let offset4 = 0; offset4 < list.length; offset4 += 1) { 7639 const index3 = (normalizedStartIndex + offset4) % list.length; 7640 const text = list[index3]; 7641 if (!text?.toLowerCase().startsWith(lowerString) || !isItemAvailable(index3)) { 7642 continue; 7643 } 7644 return index3; 7645 } 7646 return -1; 7647 } 7648 const listContent = listRef.current; 7649 if (stringRef.current.length > 0 && event.key === " ") { 7650 stopEvent(event); 7651 onTyping?.(true); 7652 } 7653 if (stringRef.current.length > 0 && stringRef.current[0] !== " ") { 7654 if (getMatchingIndex(listContent, stringRef.current) === -1 && event.key !== " ") { 7655 onTyping?.(false); 7656 } 7657 } 7658 if (listContent == null || // Character key. 7659 event.key.length !== 1 || // Modifier key. 7660 event.ctrlKey || event.metaKey || event.altKey) { 7661 return; 7662 } 7663 if (open2 && event.key !== " ") { 7664 stopEvent(event); 7665 onTyping?.(true); 7666 } 7667 const isNewSession = stringRef.current === ""; 7668 if (isNewSession) { 7669 prevIndexRef.current = selectedIndex ?? activeIndex ?? -1; 7670 } 7671 const allowRapidSuccessionOfFirstLetter = listContent.every((text, index3) => text && isItemAvailable(index3) ? text[0]?.toLowerCase() !== text[1]?.toLowerCase() : true); 7672 if (allowRapidSuccessionOfFirstLetter && stringRef.current === event.key) { 7673 stringRef.current = ""; 7674 prevIndexRef.current = matchIndexRef.current; 7675 } 7676 stringRef.current += event.key; 7677 timeout.start(resetMs, () => { 7678 stringRef.current = ""; 7679 prevIndexRef.current = matchIndexRef.current; 7680 onTyping?.(false); 7681 }); 7682 const prevIndex = isNewSession ? selectedIndex ?? activeIndex ?? -1 : prevIndexRef.current; 7683 const startIndex = (prevIndex ?? 0) + 1; 7684 const index2 = getMatchingIndex(listContent, stringRef.current, startIndex); 7685 if (index2 !== -1) { 7686 onMatchProp?.(index2, event); 7687 matchIndexRef.current = index2; 7688 } else if (event.key !== " ") { 7689 stringRef.current = ""; 7690 onTyping?.(false); 7691 } 7692 }); 7693 const onBlur = useStableCallback((event) => { 7694 const next = event.relatedTarget; 7695 const currentDomReferenceElement = store.select("domReferenceElement"); 7696 const currentFloatingElement = store.select("floatingElement"); 7697 const withinComposite = contains(currentDomReferenceElement, next) || contains(currentFloatingElement, next); 7698 if (withinComposite) { 7699 return; 7700 } 7701 timeout.clear(); 7702 stringRef.current = ""; 7703 prevIndexRef.current = matchIndexRef.current; 7704 onTyping?.(false); 7705 }); 7706 useIsoLayoutEffect(() => { 7707 if (!open2 && selectedIndex !== null) { 7708 return; 7709 } 7710 timeout.clear(); 7711 matchIndexRef.current = null; 7712 if (stringRef.current !== "") { 7713 stringRef.current = ""; 7714 onTyping?.(false); 7715 } 7716 }, [open2, selectedIndex, timeout, onTyping]); 7717 const sharedProps = React37.useMemo(() => ({ 7718 onKeyDown, 7719 onBlur 7720 }), [onKeyDown, onBlur]); 7721 return React37.useMemo(() => enabled ? { 7722 reference: sharedProps, 7723 floating: sharedProps 7724 } : {}, [enabled, sharedProps]); 7725 } 7726 7727 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/safePolygon.mjs 7728 var CURSOR_SPEED_THRESHOLD = 0.1; 7729 var CURSOR_SPEED_THRESHOLD_SQUARED = CURSOR_SPEED_THRESHOLD * CURSOR_SPEED_THRESHOLD; 7730 var POLYGON_BUFFER = 0.5; 7731 function hasIntersectingEdge(pointX, pointY, xi, yi, xj, yj) { 7732 return yi >= pointY !== yj >= pointY && pointX <= (xj - xi) * (pointY - yi) / (yj - yi) + xi; 7733 } 7734 function isPointInQuadrilateral(pointX, pointY, x1, y1, x2, y2, x3, y3, x4, y4) { 7735 let isInsideValue = false; 7736 if (hasIntersectingEdge(pointX, pointY, x1, y1, x2, y2)) { 7737 isInsideValue = !isInsideValue; 7738 } 7739 if (hasIntersectingEdge(pointX, pointY, x2, y2, x3, y3)) { 7740 isInsideValue = !isInsideValue; 7741 } 7742 if (hasIntersectingEdge(pointX, pointY, x3, y3, x4, y4)) { 7743 isInsideValue = !isInsideValue; 7744 } 7745 if (hasIntersectingEdge(pointX, pointY, x4, y4, x1, y1)) { 7746 isInsideValue = !isInsideValue; 7747 } 7748 return isInsideValue; 7749 } 7750 function isInsideRect(pointX, pointY, rect) { 7751 return pointX >= rect.x && pointX <= rect.x + rect.width && pointY >= rect.y && pointY <= rect.y + rect.height; 7752 } 7753 function isInsideAxisAlignedRect(pointX, pointY, x1, y1, x2, y2) { 7754 const minX = Math.min(x1, x2); 7755 const maxX = Math.max(x1, x2); 7756 const minY = Math.min(y1, y2); 7757 const maxY = Math.max(y1, y2); 7758 return pointX >= minX && pointX <= maxX && pointY >= minY && pointY <= maxY; 7759 } 7760 function safePolygon(options = {}) { 7761 const { 7762 blockPointerEvents = false 7763 } = options; 7764 const timeout = new Timeout(); 7765 const fn = ({ 7766 x: x2, 7767 y: y2, 7768 placement, 7769 elements, 7770 onClose, 7771 nodeId, 7772 tree 7773 }) => { 7774 const side = placement?.split("-")[0]; 7775 let hasLanded = false; 7776 let lastX = null; 7777 let lastY = null; 7778 let lastCursorTime = typeof performance !== "undefined" ? performance.now() : 0; 7779 function isCursorMovingSlowly(nextX, nextY) { 7780 const currentTime = performance.now(); 7781 const elapsedTime = currentTime - lastCursorTime; 7782 if (lastX === null || lastY === null || elapsedTime === 0) { 7783 lastX = nextX; 7784 lastY = nextY; 7785 lastCursorTime = currentTime; 7786 return false; 7787 } 7788 const deltaX = nextX - lastX; 7789 const deltaY = nextY - lastY; 7790 const distanceSquared = deltaX * deltaX + deltaY * deltaY; 7791 const thresholdSquared = elapsedTime * elapsedTime * CURSOR_SPEED_THRESHOLD_SQUARED; 7792 lastX = nextX; 7793 lastY = nextY; 7794 lastCursorTime = currentTime; 7795 return distanceSquared < thresholdSquared; 7796 } 7797 function close() { 7798 timeout.clear(); 7799 onClose(); 7800 } 7801 return function onMouseMove(event) { 7802 timeout.clear(); 7803 const domReference = elements.domReference; 7804 const floating = elements.floating; 7805 if (!domReference || !floating || side == null || x2 == null || y2 == null) { 7806 return void 0; 7807 } 7808 const { 7809 clientX, 7810 clientY 7811 } = event; 7812 const target = getTarget(event); 7813 const isLeave = event.type === "mouseleave"; 7814 const isOverFloatingEl = contains(floating, target); 7815 const isOverReferenceEl = contains(domReference, target); 7816 if (isOverFloatingEl) { 7817 hasLanded = true; 7818 if (!isLeave) { 7819 return void 0; 7820 } 7821 } 7822 if (isOverReferenceEl) { 7823 hasLanded = false; 7824 if (!isLeave) { 7825 hasLanded = true; 7826 return void 0; 7827 } 7828 } 7829 if (isLeave && isElement(event.relatedTarget) && contains(floating, event.relatedTarget)) { 7830 return void 0; 7831 } 7832 function hasOpenChildNode() { 7833 return Boolean(tree && getNodeChildren(tree.nodesRef.current, nodeId).length > 0); 7834 } 7835 function closeIfNoOpenChild() { 7836 if (!hasOpenChildNode()) { 7837 close(); 7838 } 7839 } 7840 if (hasOpenChildNode()) { 7841 return void 0; 7842 } 7843 const refRect = domReference.getBoundingClientRect(); 7844 const rect = floating.getBoundingClientRect(); 7845 const cursorLeaveFromRight = x2 > rect.right - rect.width / 2; 7846 const cursorLeaveFromBottom = y2 > rect.bottom - rect.height / 2; 7847 const isFloatingWider = rect.width > refRect.width; 7848 const isFloatingTaller = rect.height > refRect.height; 7849 const left = (isFloatingWider ? refRect : rect).left; 7850 const right = (isFloatingWider ? refRect : rect).right; 7851 const top = (isFloatingTaller ? refRect : rect).top; 7852 const bottom = (isFloatingTaller ? refRect : rect).bottom; 7853 if (side === "top" && y2 >= refRect.bottom - 1 || side === "bottom" && y2 <= refRect.top + 1 || side === "left" && x2 >= refRect.right - 1 || side === "right" && x2 <= refRect.left + 1) { 7854 closeIfNoOpenChild(); 7855 return void 0; 7856 } 7857 let isInsideTroughRect = false; 7858 switch (side) { 7859 case "top": 7860 isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, left, refRect.top + 1, right, rect.bottom - 1); 7861 break; 7862 case "bottom": 7863 isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, left, rect.top + 1, right, refRect.bottom - 1); 7864 break; 7865 case "left": 7866 isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, rect.right - 1, bottom, refRect.left + 1, top); 7867 break; 7868 case "right": 7869 isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, refRect.right - 1, bottom, rect.left + 1, top); 7870 break; 7871 default: 7872 } 7873 if (isInsideTroughRect) { 7874 return void 0; 7875 } 7876 if (hasLanded && !isInsideRect(clientX, clientY, refRect)) { 7877 closeIfNoOpenChild(); 7878 return void 0; 7879 } 7880 if (!isLeave && isCursorMovingSlowly(clientX, clientY)) { 7881 closeIfNoOpenChild(); 7882 return void 0; 7883 } 7884 let isInsidePolygon = false; 7885 switch (side) { 7886 case "top": { 7887 const cursorXOffset = isFloatingWider ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4; 7888 const cursorPointOneX = isFloatingWider ? x2 + cursorXOffset : cursorLeaveFromRight ? x2 + cursorXOffset : x2 - cursorXOffset; 7889 const cursorPointTwoX = isFloatingWider ? x2 - cursorXOffset : cursorLeaveFromRight ? x2 + cursorXOffset : x2 - cursorXOffset; 7890 const cursorPointY = y2 + POLYGON_BUFFER + 1; 7891 const commonYLeft = cursorLeaveFromRight ? rect.bottom - POLYGON_BUFFER : isFloatingWider ? rect.bottom - POLYGON_BUFFER : rect.top; 7892 const commonYRight = cursorLeaveFromRight ? isFloatingWider ? rect.bottom - POLYGON_BUFFER : rect.top : rect.bottom - POLYGON_BUFFER; 7893 isInsidePolygon = isPointInQuadrilateral(clientX, clientY, cursorPointOneX, cursorPointY, cursorPointTwoX, cursorPointY, rect.left, commonYLeft, rect.right, commonYRight); 7894 break; 7895 } 7896 case "bottom": { 7897 const cursorXOffset = isFloatingWider ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4; 7898 const cursorPointOneX = isFloatingWider ? x2 + cursorXOffset : cursorLeaveFromRight ? x2 + cursorXOffset : x2 - cursorXOffset; 7899 const cursorPointTwoX = isFloatingWider ? x2 - cursorXOffset : cursorLeaveFromRight ? x2 + cursorXOffset : x2 - cursorXOffset; 7900 const cursorPointY = y2 - POLYGON_BUFFER; 7901 const commonYLeft = cursorLeaveFromRight ? rect.top + POLYGON_BUFFER : isFloatingWider ? rect.top + POLYGON_BUFFER : rect.bottom; 7902 const commonYRight = cursorLeaveFromRight ? isFloatingWider ? rect.top + POLYGON_BUFFER : rect.bottom : rect.top + POLYGON_BUFFER; 7903 isInsidePolygon = isPointInQuadrilateral(clientX, clientY, cursorPointOneX, cursorPointY, cursorPointTwoX, cursorPointY, rect.left, commonYLeft, rect.right, commonYRight); 7904 break; 7905 } 7906 case "left": { 7907 const cursorYOffset = isFloatingTaller ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4; 7908 const cursorPointOneY = isFloatingTaller ? y2 + cursorYOffset : cursorLeaveFromBottom ? y2 + cursorYOffset : y2 - cursorYOffset; 7909 const cursorPointTwoY = isFloatingTaller ? y2 - cursorYOffset : cursorLeaveFromBottom ? y2 + cursorYOffset : y2 - cursorYOffset; 7910 const cursorPointX = x2 + POLYGON_BUFFER + 1; 7911 const commonXTop = cursorLeaveFromBottom ? rect.right - POLYGON_BUFFER : isFloatingTaller ? rect.right - POLYGON_BUFFER : rect.left; 7912 const commonXBottom = cursorLeaveFromBottom ? isFloatingTaller ? rect.right - POLYGON_BUFFER : rect.left : rect.right - POLYGON_BUFFER; 7913 isInsidePolygon = isPointInQuadrilateral(clientX, clientY, commonXTop, rect.top, commonXBottom, rect.bottom, cursorPointX, cursorPointOneY, cursorPointX, cursorPointTwoY); 7914 break; 7915 } 7916 case "right": { 7917 const cursorYOffset = isFloatingTaller ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4; 7918 const cursorPointOneY = isFloatingTaller ? y2 + cursorYOffset : cursorLeaveFromBottom ? y2 + cursorYOffset : y2 - cursorYOffset; 7919 const cursorPointTwoY = isFloatingTaller ? y2 - cursorYOffset : cursorLeaveFromBottom ? y2 + cursorYOffset : y2 - cursorYOffset; 7920 const cursorPointX = x2 - POLYGON_BUFFER; 7921 const commonXTop = cursorLeaveFromBottom ? rect.left + POLYGON_BUFFER : isFloatingTaller ? rect.left + POLYGON_BUFFER : rect.right; 7922 const commonXBottom = cursorLeaveFromBottom ? isFloatingTaller ? rect.left + POLYGON_BUFFER : rect.right : rect.left + POLYGON_BUFFER; 7923 isInsidePolygon = isPointInQuadrilateral(clientX, clientY, cursorPointX, cursorPointOneY, cursorPointX, cursorPointTwoY, commonXTop, rect.top, commonXBottom, rect.bottom); 7924 break; 7925 } 7926 default: 7927 } 7928 if (!isInsidePolygon) { 7929 closeIfNoOpenChild(); 7930 } else if (!hasLanded) { 7931 timeout.start(40, closeIfNoOpenChild); 7932 } 7933 return void 0; 7934 }; 7935 }; 7936 fn.__options = { 7937 ...options, 7938 blockPointerEvents 7939 }; 7940 return fn; 7941 } 7942 7943 // node_modules/.store/@floating-ui/core@1.8.0-3V8aS7jJHHGcsCINjP9-5A/node_modules/@floating-ui/core/dist/floating-ui.core.mjs 7944 function computeCoordsFromPlacement(_ref, placement, rtl) { 7945 let { 7946 reference, 7947 floating 7948 } = _ref; 7949 const sideAxis = getSideAxis(placement); 7950 const alignmentAxis = getAlignmentAxis(placement); 7951 const alignLength = getAxisLength(alignmentAxis); 7952 const side = getSide(placement); 7953 const isVertical = sideAxis === "y"; 7954 const commonX = reference.x + reference.width / 2 - floating.width / 2; 7955 const commonY = reference.y + reference.height / 2 - floating.height / 2; 7956 const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2; 7957 let coords; 7958 switch (side) { 7959 case "top": 7960 coords = { 7961 x: commonX, 7962 y: reference.y - floating.height 7963 }; 7964 break; 7965 case "bottom": 7966 coords = { 7967 x: commonX, 7968 y: reference.y + reference.height 7969 }; 7970 break; 7971 case "right": 7972 coords = { 7973 x: reference.x + reference.width, 7974 y: commonY 7975 }; 7976 break; 7977 case "left": 7978 coords = { 7979 x: reference.x - floating.width, 7980 y: commonY 7981 }; 7982 break; 7983 default: 7984 coords = { 7985 x: reference.x, 7986 y: reference.y 7987 }; 7988 } 7989 const alignment = getAlignment(placement); 7990 if (alignment) { 7991 coords[alignmentAxis] += commonAlign * (alignment === "end" ? 1 : -1) * (rtl && isVertical ? -1 : 1); 7992 } 7993 return coords; 7994 } 7995 async function detectOverflow(state, options) { 7996 var _await$platform$isEle; 7997 if (options === void 0) { 7998 options = {}; 7999 } 8000 const { 8001 x: x2, 8002 y: y2, 8003 platform: platform3, 8004 rects, 8005 elements, 8006 strategy 8007 } = state; 8008 const { 8009 boundary = "clippingAncestors", 8010 rootBoundary = "viewport", 8011 elementContext = "floating", 8012 altBoundary = false, 8013 padding = 0 8014 } = evaluate(options, state); 8015 const paddingObject = getPaddingObject(padding); 8016 const altContext = elementContext === "floating" ? "reference" : "floating"; 8017 const element = elements[altBoundary ? altContext : elementContext]; 8018 const clippingClientRect = rectToClientRect(await platform3.getClippingRect({ 8019 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)), 8020 boundary, 8021 rootBoundary, 8022 strategy 8023 })); 8024 const rect = elementContext === "floating" ? { 8025 x: x2, 8026 y: y2, 8027 width: rects.floating.width, 8028 height: rects.floating.height 8029 } : rects.reference; 8030 const offsetParent = await (platform3.getOffsetParent == null ? void 0 : platform3.getOffsetParent(elements.floating)); 8031 const offsetScale = await (platform3.isElement == null ? void 0 : platform3.isElement(offsetParent)) && await (platform3.getScale == null ? void 0 : platform3.getScale(offsetParent)) || { 8032 x: 1, 8033 y: 1 8034 }; 8035 const elementClientRect = rectToClientRect(platform3.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform3.convertOffsetParentRelativeRectToViewportRelativeRect({ 8036 elements, 8037 rect, 8038 offsetParent, 8039 strategy 8040 }) : rect); 8041 return { 8042 top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y, 8043 bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y, 8044 left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x, 8045 right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x 8046 }; 8047 } 8048 var MAX_RESET_COUNT = 50; 8049 var computePosition = async (reference, floating, config) => { 8050 const { 8051 placement = "bottom", 8052 strategy = "absolute", 8053 middleware = [], 8054 platform: platform3 8055 } = config; 8056 const platformWithDetectOverflow = platform3.detectOverflow ? platform3 : { 8057 ...platform3, 8058 detectOverflow 8059 }; 8060 const rtl = await (platform3.isRTL == null ? void 0 : platform3.isRTL(floating)); 8061 let rects = await platform3.getElementRects({ 8062 reference, 8063 floating, 8064 strategy 8065 }); 8066 let { 8067 x: x2, 8068 y: y2 8069 } = computeCoordsFromPlacement(rects, placement, rtl); 8070 let statefulPlacement = placement; 8071 let resetCount = 0; 8072 const middlewareData = {}; 8073 for (let i = 0; i < middleware.length; i++) { 8074 const currentMiddleware = middleware[i]; 8075 if (!currentMiddleware) { 8076 continue; 8077 } 8078 const { 8079 name: name2, 8080 fn 8081 } = currentMiddleware; 8082 const { 8083 x: nextX, 8084 y: nextY, 8085 data, 8086 reset 8087 } = await fn({ 8088 x: x2, 8089 y: y2, 8090 initialPlacement: placement, 8091 placement: statefulPlacement, 8092 strategy, 8093 middlewareData, 8094 rects, 8095 platform: platformWithDetectOverflow, 8096 elements: { 8097 reference, 8098 floating 8099 } 8100 }); 8101 x2 = nextX != null ? nextX : x2; 8102 y2 = nextY != null ? nextY : y2; 8103 middlewareData[name2] = { 8104 ...middlewareData[name2], 8105 ...data 8106 }; 8107 if (reset && resetCount < MAX_RESET_COUNT) { 8108 resetCount++; 8109 if (typeof reset === "object") { 8110 if (reset.placement) { 8111 statefulPlacement = reset.placement; 8112 } 8113 if (reset.rects) { 8114 rects = reset.rects === true ? await platform3.getElementRects({ 8115 reference, 8116 floating, 8117 strategy 8118 }) : reset.rects; 8119 } 8120 ({ 8121 x: x2, 8122 y: y2 8123 } = computeCoordsFromPlacement(rects, statefulPlacement, rtl)); 8124 } 8125 i = -1; 8126 } 8127 } 8128 return { 8129 x: x2, 8130 y: y2, 8131 placement: statefulPlacement, 8132 strategy, 8133 middlewareData 8134 }; 8135 }; 8136 var flip = function(options) { 8137 if (options === void 0) { 8138 options = {}; 8139 } 8140 return { 8141 name: "flip", 8142 options, 8143 async fn(state) { 8144 var _middlewareData$arrow, _middlewareData$flip; 8145 const { 8146 placement, 8147 middlewareData, 8148 rects, 8149 initialPlacement, 8150 platform: platform3, 8151 elements 8152 } = state; 8153 const { 8154 mainAxis: checkMainAxis = true, 8155 crossAxis: checkCrossAxis = true, 8156 fallbackPlacements: specifiedFallbackPlacements, 8157 fallbackStrategy = "bestFit", 8158 fallbackAxisSideDirection = "none", 8159 flipAlignment = true, 8160 ...detectOverflowOptions 8161 } = evaluate(options, state); 8162 if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) { 8163 return {}; 8164 } 8165 const side = getSide(placement); 8166 const initialSideAxis = getSideAxis(initialPlacement); 8167 const isBasePlacement = getSide(initialPlacement) === initialPlacement; 8168 const rtl = await (platform3.isRTL == null ? void 0 : platform3.isRTL(elements.floating)); 8169 const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement)); 8170 const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== "none"; 8171 if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) { 8172 fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl)); 8173 } 8174 const placements2 = [initialPlacement, ...fallbackPlacements]; 8175 const overflow = await platform3.detectOverflow(state, detectOverflowOptions); 8176 const overflows = []; 8177 let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || []; 8178 if (checkMainAxis) { 8179 overflows.push(overflow[side]); 8180 } 8181 if (checkCrossAxis) { 8182 const sides2 = getAlignmentSides(placement, rects, rtl); 8183 overflows.push(overflow[sides2[0]], overflow[sides2[1]]); 8184 } 8185 overflowsData = [...overflowsData, { 8186 placement, 8187 overflows 8188 }]; 8189 if (!overflows.every((side2) => side2 <= 0)) { 8190 var _middlewareData$flip2, _overflowsData$filter; 8191 const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1; 8192 const nextPlacement = placements2[nextIndex]; 8193 if (nextPlacement) { 8194 const ignoreCrossAxisOverflow = checkCrossAxis === "alignment" ? initialSideAxis !== getSideAxis(nextPlacement) : false; 8195 if (!ignoreCrossAxisOverflow || // We leave the current main axis only if every placement on that axis 8196 // overflows the main axis. 8197 overflowsData.every((d) => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) { 8198 return { 8199 data: { 8200 index: nextIndex, 8201 overflows: overflowsData 8202 }, 8203 reset: { 8204 placement: nextPlacement 8205 } 8206 }; 8207 } 8208 } 8209 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; 8210 if (!resetPlacement) { 8211 switch (fallbackStrategy) { 8212 case "bestFit": { 8213 var _overflowsData$filter2; 8214 const placement2 = (_overflowsData$filter2 = overflowsData.filter((d) => { 8215 if (hasFallbackAxisSideDirection) { 8216 const currentSideAxis = getSideAxis(d.placement); 8217 return currentSideAxis === initialSideAxis || // Create a bias to the `y` side axis due to horizontal 8218 // reading directions favoring greater width. 8219 currentSideAxis === "y"; 8220 } 8221 return true; 8222 }).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]; 8223 if (placement2) { 8224 resetPlacement = placement2; 8225 } 8226 break; 8227 } 8228 case "initialPlacement": 8229 resetPlacement = initialPlacement; 8230 break; 8231 } 8232 } 8233 if (placement !== resetPlacement) { 8234 return { 8235 reset: { 8236 placement: resetPlacement 8237 } 8238 }; 8239 } 8240 } 8241 return {}; 8242 } 8243 }; 8244 }; 8245 var originSides = /* @__PURE__ */ new Set(["left", "top"]); 8246 async function convertValueToCoords(state, options) { 8247 const { 8248 placement, 8249 platform: platform3, 8250 elements 8251 } = state; 8252 const rtl = await (platform3.isRTL == null ? void 0 : platform3.isRTL(elements.floating)); 8253 const side = getSide(placement); 8254 const alignment = getAlignment(placement); 8255 const isVertical = getSideAxis(placement) === "y"; 8256 const mainAxisMulti = originSides.has(side) ? -1 : 1; 8257 const crossAxisMulti = rtl && isVertical ? -1 : 1; 8258 const rawValue = evaluate(options, state); 8259 let { 8260 mainAxis, 8261 crossAxis, 8262 alignmentAxis 8263 } = typeof rawValue === "number" ? { 8264 mainAxis: rawValue, 8265 crossAxis: 0, 8266 alignmentAxis: null 8267 } : { 8268 mainAxis: rawValue.mainAxis || 0, 8269 crossAxis: rawValue.crossAxis || 0, 8270 alignmentAxis: rawValue.alignmentAxis 8271 }; 8272 if (alignment && typeof alignmentAxis === "number") { 8273 crossAxis = alignment === "end" ? alignmentAxis * -1 : alignmentAxis; 8274 } 8275 return isVertical ? { 8276 x: crossAxis * crossAxisMulti, 8277 y: mainAxis * mainAxisMulti 8278 } : { 8279 x: mainAxis * mainAxisMulti, 8280 y: crossAxis * crossAxisMulti 8281 }; 8282 } 8283 var offset = function(options) { 8284 if (options === void 0) { 8285 options = 0; 8286 } 8287 return { 8288 name: "offset", 8289 options, 8290 async fn(state) { 8291 var _middlewareData$offse, _middlewareData$arrow; 8292 const { 8293 x: x2, 8294 y: y2, 8295 placement, 8296 middlewareData 8297 } = state; 8298 const diffCoords = await convertValueToCoords(state, options); 8299 if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) { 8300 return {}; 8301 } 8302 return { 8303 x: x2 + diffCoords.x, 8304 y: y2 + diffCoords.y, 8305 data: { 8306 ...diffCoords, 8307 placement 8308 } 8309 }; 8310 } 8311 }; 8312 }; 8313 var shift = function(options) { 8314 if (options === void 0) { 8315 options = {}; 8316 } 8317 return { 8318 name: "shift", 8319 options, 8320 async fn(state) { 8321 const { 8322 x: x2, 8323 y: y2, 8324 placement, 8325 platform: platform3 8326 } = state; 8327 const { 8328 mainAxis: checkMainAxis = true, 8329 crossAxis: checkCrossAxis = false, 8330 limiter = { 8331 fn: (_ref) => { 8332 let { 8333 x: x3, 8334 y: y3 8335 } = _ref; 8336 return { 8337 x: x3, 8338 y: y3 8339 }; 8340 } 8341 }, 8342 ...detectOverflowOptions 8343 } = evaluate(options, state); 8344 const coords = { 8345 x: x2, 8346 y: y2 8347 }; 8348 const overflow = await platform3.detectOverflow(state, detectOverflowOptions); 8349 const crossAxis = getSideAxis(placement); 8350 const mainAxis = getOppositeAxis(crossAxis); 8351 let mainAxisCoord = coords[mainAxis]; 8352 let crossAxisCoord = coords[crossAxis]; 8353 const clampCoord = (axis, coord) => clamp(coord + overflow[axis === "y" ? "top" : "left"], coord, coord - overflow[axis === "y" ? "bottom" : "right"]); 8354 if (checkMainAxis) { 8355 mainAxisCoord = clampCoord(mainAxis, mainAxisCoord); 8356 } 8357 if (checkCrossAxis) { 8358 crossAxisCoord = clampCoord(crossAxis, crossAxisCoord); 8359 } 8360 const limitedCoords = limiter.fn({ 8361 ...state, 8362 [mainAxis]: mainAxisCoord, 8363 [crossAxis]: crossAxisCoord 8364 }); 8365 return { 8366 ...limitedCoords, 8367 data: { 8368 x: limitedCoords.x - x2, 8369 y: limitedCoords.y - y2, 8370 enabled: { 8371 [mainAxis]: checkMainAxis, 8372 [crossAxis]: checkCrossAxis 8373 } 8374 } 8375 }; 8376 } 8377 }; 8378 }; 8379 var limitShift = function(options) { 8380 if (options === void 0) { 8381 options = {}; 8382 } 8383 return { 8384 options, 8385 fn(state) { 8386 var _rawOffset$mainAxis, _rawOffset$crossAxis; 8387 const { 8388 x: x2, 8389 y: y2, 8390 placement, 8391 rects, 8392 middlewareData 8393 } = state; 8394 const { 8395 offset: offset4 = 0, 8396 mainAxis: checkMainAxis = true, 8397 crossAxis: checkCrossAxis = true 8398 } = evaluate(options, state); 8399 const coords = { 8400 x: x2, 8401 y: y2 8402 }; 8403 const crossAxis = getSideAxis(placement); 8404 const mainAxis = getOppositeAxis(crossAxis); 8405 let mainAxisCoord = coords[mainAxis]; 8406 let crossAxisCoord = coords[crossAxis]; 8407 const rawOffset = evaluate(offset4, state); 8408 const computedOffset = typeof rawOffset === "number" ? { 8409 mainAxis: rawOffset, 8410 crossAxis: 0 8411 } : { 8412 mainAxis: (_rawOffset$mainAxis = rawOffset.mainAxis) != null ? _rawOffset$mainAxis : 0, 8413 crossAxis: (_rawOffset$crossAxis = rawOffset.crossAxis) != null ? _rawOffset$crossAxis : 0 8414 }; 8415 if (checkMainAxis) { 8416 const len = mainAxis === "y" ? "height" : "width"; 8417 const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis; 8418 const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis; 8419 if (mainAxisCoord < limitMin) { 8420 mainAxisCoord = limitMin; 8421 } else if (mainAxisCoord > limitMax) { 8422 mainAxisCoord = limitMax; 8423 } 8424 } 8425 if (checkCrossAxis) { 8426 var _middlewareData$offse, _middlewareData$offse2; 8427 const len = mainAxis === "y" ? "width" : "height"; 8428 const isOriginSide = originSides.has(getSide(placement)); 8429 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); 8430 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); 8431 if (crossAxisCoord < limitMin) { 8432 crossAxisCoord = limitMin; 8433 } else if (crossAxisCoord > limitMax) { 8434 crossAxisCoord = limitMax; 8435 } 8436 } 8437 return { 8438 [mainAxis]: mainAxisCoord, 8439 [crossAxis]: crossAxisCoord 8440 }; 8441 } 8442 }; 8443 }; 8444 var size = function(options) { 8445 if (options === void 0) { 8446 options = {}; 8447 } 8448 return { 8449 name: "size", 8450 options, 8451 async fn(state) { 8452 const { 8453 placement, 8454 rects, 8455 platform: platform3, 8456 elements 8457 } = state; 8458 const { 8459 apply = () => { 8460 }, 8461 ...detectOverflowOptions 8462 } = evaluate(options, state); 8463 const overflow = await platform3.detectOverflow(state, detectOverflowOptions); 8464 const side = getSide(placement); 8465 const alignment = getAlignment(placement); 8466 const isYAxis = getSideAxis(placement) === "y"; 8467 const { 8468 width, 8469 height 8470 } = rects.floating; 8471 let heightSide; 8472 let widthSide; 8473 if (side === "top" || side === "bottom") { 8474 heightSide = side; 8475 widthSide = alignment === (await (platform3.isRTL == null ? void 0 : platform3.isRTL(elements.floating)) ? "start" : "end") ? "left" : "right"; 8476 } else { 8477 widthSide = side; 8478 heightSide = alignment === "end" ? "top" : "bottom"; 8479 } 8480 const maximumClippingHeight = height - overflow.top - overflow.bottom; 8481 const maximumClippingWidth = width - overflow.left - overflow.right; 8482 const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight); 8483 const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth); 8484 const shiftData = state.middlewareData.shift; 8485 const noShift = !shiftData; 8486 let availableHeight2 = overflowAvailableHeight; 8487 let availableWidth2 = overflowAvailableWidth; 8488 if (shiftData != null && shiftData.enabled.x) { 8489 availableWidth2 = maximumClippingWidth; 8490 } 8491 if (shiftData != null && shiftData.enabled.y) { 8492 availableHeight2 = maximumClippingHeight; 8493 } 8494 if (noShift && !alignment) { 8495 if (isYAxis) { 8496 availableWidth2 = width - 2 * max(overflow.left, overflow.right); 8497 } else { 8498 availableHeight2 = height - 2 * max(overflow.top, overflow.bottom); 8499 } 8500 } 8501 await apply({ 8502 ...state, 8503 availableWidth: availableWidth2, 8504 availableHeight: availableHeight2 8505 }); 8506 const nextDimensions = await platform3.getDimensions(elements.floating); 8507 if (width !== nextDimensions.width || height !== nextDimensions.height) { 8508 return { 8509 reset: { 8510 rects: true 8511 } 8512 }; 8513 } 8514 return {}; 8515 } 8516 }; 8517 }; 8518 8519 // node_modules/.store/@floating-ui/dom@1.8.0-vHXcr4FgWneV0cgwFw-d7A/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs 8520 function getCssDimensions(element) { 8521 const css = getComputedStyle2(element); 8522 let width = parseFloat(css.width) || 0; 8523 let height = parseFloat(css.height) || 0; 8524 const hasOffset = isHTMLElement(element); 8525 const offsetWidth = hasOffset ? element.offsetWidth : width; 8526 const offsetHeight = hasOffset ? element.offsetHeight : height; 8527 const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight; 8528 if (shouldFallback) { 8529 width = offsetWidth; 8530 height = offsetHeight; 8531 } 8532 return { 8533 width, 8534 height, 8535 $: shouldFallback 8536 }; 8537 } 8538 function unwrapElement(element) { 8539 return !isElement(element) ? element.contextElement : element; 8540 } 8541 function getScale(element) { 8542 const domElement = unwrapElement(element); 8543 if (!isHTMLElement(domElement)) { 8544 return createCoords(1); 8545 } 8546 const rect = domElement.getBoundingClientRect(); 8547 const { 8548 width, 8549 height, 8550 $: $2 8551 } = getCssDimensions(domElement); 8552 let x2 = ($2 ? round(rect.width) : rect.width) / width; 8553 let y2 = ($2 ? round(rect.height) : rect.height) / height; 8554 if (!x2 || !Number.isFinite(x2)) { 8555 x2 = 1; 8556 } 8557 if (!y2 || !Number.isFinite(y2)) { 8558 y2 = 1; 8559 } 8560 return { 8561 x: x2, 8562 y: y2 8563 }; 8564 } 8565 var noOffsets = /* @__PURE__ */ createCoords(0); 8566 function getVisualOffsets(element) { 8567 const win = getWindow(element); 8568 if (!isWebKit() || !win.visualViewport) { 8569 return noOffsets; 8570 } 8571 return { 8572 x: win.visualViewport.offsetLeft, 8573 y: win.visualViewport.offsetTop 8574 }; 8575 } 8576 function shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) { 8577 if (isFixed === void 0) { 8578 isFixed = false; 8579 } 8580 return !!floatingOffsetParent && isFixed && floatingOffsetParent === getWindow(element); 8581 } 8582 function getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) { 8583 if (includeScale === void 0) { 8584 includeScale = false; 8585 } 8586 if (isFixedStrategy === void 0) { 8587 isFixedStrategy = false; 8588 } 8589 const clientRect = element.getBoundingClientRect(); 8590 const domElement = unwrapElement(element); 8591 let scale = createCoords(1); 8592 if (includeScale) { 8593 if (offsetParent) { 8594 if (isElement(offsetParent)) { 8595 scale = getScale(offsetParent); 8596 } 8597 } else { 8598 scale = getScale(element); 8599 } 8600 } 8601 const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0); 8602 let x2 = (clientRect.left + visualOffsets.x) / scale.x; 8603 let y2 = (clientRect.top + visualOffsets.y) / scale.y; 8604 let width = clientRect.width / scale.x; 8605 let height = clientRect.height / scale.y; 8606 if (domElement && offsetParent) { 8607 const win = getWindow(domElement); 8608 const offsetWin = isElement(offsetParent) ? getWindow(offsetParent) : offsetParent; 8609 let currentWin = win; 8610 let currentIFrame = getFrameElement(currentWin); 8611 while (currentIFrame && offsetWin !== currentWin) { 8612 const iframeScale = getScale(currentIFrame); 8613 const iframeRect = currentIFrame.getBoundingClientRect(); 8614 const css = getComputedStyle2(currentIFrame); 8615 const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x; 8616 const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y; 8617 x2 *= iframeScale.x; 8618 y2 *= iframeScale.y; 8619 width *= iframeScale.x; 8620 height *= iframeScale.y; 8621 x2 += left; 8622 y2 += top; 8623 currentWin = getWindow(currentIFrame); 8624 currentIFrame = getFrameElement(currentWin); 8625 } 8626 } 8627 return rectToClientRect({ 8628 width, 8629 height, 8630 x: x2, 8631 y: y2 8632 }); 8633 } 8634 function getWindowScrollBarX(element, rect) { 8635 const leftScroll = getNodeScroll(element).scrollLeft; 8636 if (!rect) { 8637 return getBoundingClientRect(getDocumentElement(element)).left + leftScroll; 8638 } 8639 return rect.left + leftScroll; 8640 } 8641 function getHTMLOffset(documentElement, scroll) { 8642 const htmlRect = documentElement.getBoundingClientRect(); 8643 const x2 = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect); 8644 const y2 = htmlRect.top + scroll.scrollTop; 8645 return { 8646 x: x2, 8647 y: y2 8648 }; 8649 } 8650 function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) { 8651 let { 8652 elements, 8653 rect, 8654 offsetParent, 8655 strategy 8656 } = _ref; 8657 const isFixed = strategy === "fixed"; 8658 const documentElement = getDocumentElement(offsetParent); 8659 const topLayer = elements ? isTopLayer(elements.floating) : false; 8660 if (offsetParent === documentElement || topLayer && isFixed) { 8661 return rect; 8662 } 8663 let scroll = { 8664 scrollLeft: 0, 8665 scrollTop: 0 8666 }; 8667 let scale = createCoords(1); 8668 const offsets = createCoords(0); 8669 const isOffsetParentAnElement = isHTMLElement(offsetParent); 8670 if (isOffsetParentAnElement || !isFixed) { 8671 if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) { 8672 scroll = getNodeScroll(offsetParent); 8673 } 8674 if (isOffsetParentAnElement) { 8675 const offsetRect = getBoundingClientRect(offsetParent); 8676 scale = getScale(offsetParent); 8677 offsets.x = offsetRect.x + offsetParent.clientLeft; 8678 offsets.y = offsetRect.y + offsetParent.clientTop; 8679 } 8680 } 8681 const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0); 8682 return { 8683 width: rect.width * scale.x, 8684 height: rect.height * scale.y, 8685 x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x, 8686 y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y 8687 }; 8688 } 8689 function getClientRects(element) { 8690 return element.getClientRects ? Array.from(element.getClientRects()) : []; 8691 } 8692 function getDocumentRect(html) { 8693 const scroll = getNodeScroll(html); 8694 const body = html.ownerDocument.body; 8695 const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth); 8696 const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight); 8697 let x2 = -scroll.scrollLeft + getWindowScrollBarX(html); 8698 const y2 = -scroll.scrollTop; 8699 if (getComputedStyle2(body).direction === "rtl") { 8700 x2 += max(html.clientWidth, body.clientWidth) - width; 8701 } 8702 return { 8703 width, 8704 height, 8705 x: x2, 8706 y: y2 8707 }; 8708 } 8709 var SCROLLBAR_MAX = 25; 8710 function getViewportRect(element, strategy, rootBoundary) { 8711 if (rootBoundary === void 0) { 8712 rootBoundary = "viewport"; 8713 } 8714 const isLayoutViewport = rootBoundary === "layoutViewport"; 8715 const win = getWindow(element); 8716 const html = getDocumentElement(element); 8717 const visualViewport = win.visualViewport; 8718 let width = html.clientWidth; 8719 let height = html.clientHeight; 8720 let x2 = 0; 8721 let y2 = 0; 8722 if (visualViewport) { 8723 const layoutRelativeClientCoords = !isWebKit() || strategy === "fixed"; 8724 if (isLayoutViewport) { 8725 if (!layoutRelativeClientCoords) { 8726 x2 = -visualViewport.offsetLeft; 8727 y2 = -visualViewport.offsetTop; 8728 } 8729 } else { 8730 width = visualViewport.width; 8731 height = visualViewport.height; 8732 if (layoutRelativeClientCoords) { 8733 x2 = visualViewport.offsetLeft; 8734 y2 = visualViewport.offsetTop; 8735 } 8736 } 8737 } 8738 const windowScrollbarX = getWindowScrollBarX(html); 8739 if (windowScrollbarX <= 0) { 8740 const doc = html.ownerDocument; 8741 const body = doc.body; 8742 const bodyStyles = getComputedStyle(body); 8743 const bodyMarginInline = doc.compatMode === "CSS1Compat" ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0; 8744 const reservedWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline); 8745 const gutter = getComputedStyle(html).scrollbarGutter === "stable both-edges" ? reservedWidth / 2 : reservedWidth; 8746 if (gutter <= SCROLLBAR_MAX) { 8747 width -= gutter; 8748 } 8749 } 8750 return { 8751 width, 8752 height, 8753 x: x2, 8754 y: y2 8755 }; 8756 } 8757 function getInnerBoundingClientRect(element, strategy) { 8758 const clientRect = getBoundingClientRect(element, true, strategy === "fixed"); 8759 const top = clientRect.top + element.clientTop; 8760 const left = clientRect.left + element.clientLeft; 8761 const scale = getScale(element); 8762 const width = element.clientWidth * scale.x; 8763 const height = element.clientHeight * scale.y; 8764 const x2 = left * scale.x; 8765 const y2 = top * scale.y; 8766 return { 8767 width, 8768 height, 8769 x: x2, 8770 y: y2 8771 }; 8772 } 8773 function getClientRectFromClippingAncestor(element, clippingAncestor, strategy) { 8774 let rect; 8775 if (clippingAncestor === "viewport" || clippingAncestor === "layoutViewport") { 8776 rect = getViewportRect(element, strategy, clippingAncestor); 8777 } else if (clippingAncestor === "document") { 8778 rect = getDocumentRect(getDocumentElement(element)); 8779 } else if (isElement(clippingAncestor)) { 8780 rect = getInnerBoundingClientRect(clippingAncestor, strategy); 8781 } else { 8782 const visualOffsets = getVisualOffsets(element); 8783 rect = { 8784 x: clippingAncestor.x - visualOffsets.x, 8785 y: clippingAncestor.y - visualOffsets.y, 8786 width: clippingAncestor.width, 8787 height: clippingAncestor.height 8788 }; 8789 } 8790 return rectToClientRect(rect); 8791 } 8792 function getClippingElementAncestors(element, cache2) { 8793 const cachedResult = cache2.get(element); 8794 if (cachedResult) { 8795 return cachedResult; 8796 } 8797 let result = getOverflowAncestors(element, [], false).filter((el) => isElement(el) && getNodeName(el) !== "body"); 8798 let lastKeptComputedStyle = null; 8799 const elementIsFixed = getComputedStyle2(element).position === "fixed"; 8800 let currentNode = elementIsFixed ? getParentNode(element) : element; 8801 while (isElement(currentNode) && !isLastTraversableNode(currentNode)) { 8802 const computedStyle = getComputedStyle2(currentNode); 8803 const currentNodeIsContaining = isContainingBlock(currentNode); 8804 const lastPosition = lastKeptComputedStyle ? lastKeptComputedStyle.position : elementIsFixed ? "fixed" : ""; 8805 const shouldDropCurrentNode = !currentNodeIsContaining && (lastPosition === "fixed" || lastPosition === "absolute" && computedStyle.position === "static"); 8806 if (shouldDropCurrentNode) { 8807 result = result.filter((ancestor) => ancestor !== currentNode); 8808 } else { 8809 lastKeptComputedStyle = computedStyle; 8810 } 8811 currentNode = getParentNode(currentNode); 8812 } 8813 cache2.set(element, result); 8814 return result; 8815 } 8816 function getClippingRect(_ref) { 8817 let { 8818 element, 8819 boundary, 8820 rootBoundary, 8821 strategy 8822 } = _ref; 8823 const elementClippingAncestors = boundary === "clippingAncestors" ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary); 8824 const clippingAncestors = [...elementClippingAncestors, rootBoundary]; 8825 const firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy); 8826 let top = firstRect.top; 8827 let right = firstRect.right; 8828 let bottom = firstRect.bottom; 8829 let left = firstRect.left; 8830 for (let i = 1; i < clippingAncestors.length; i++) { 8831 const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i], strategy); 8832 top = max(rect.top, top); 8833 right = min(rect.right, right); 8834 bottom = min(rect.bottom, bottom); 8835 left = max(rect.left, left); 8836 } 8837 return { 8838 width: right - left, 8839 height: bottom - top, 8840 x: left, 8841 y: top 8842 }; 8843 } 8844 function getDimensions(element) { 8845 const { 8846 width, 8847 height 8848 } = getCssDimensions(element); 8849 return { 8850 width, 8851 height 8852 }; 8853 } 8854 function getRectRelativeToOffsetParent(element, offsetParent, strategy) { 8855 const isOffsetParentAnElement = isHTMLElement(offsetParent); 8856 const documentElement = getDocumentElement(offsetParent); 8857 const isFixed = strategy === "fixed"; 8858 const rect = getBoundingClientRect(element, true, isFixed, offsetParent); 8859 let scroll = { 8860 scrollLeft: 0, 8861 scrollTop: 0 8862 }; 8863 const offsets = createCoords(0); 8864 if (isOffsetParentAnElement || !isFixed) { 8865 if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) { 8866 scroll = getNodeScroll(offsetParent); 8867 } 8868 if (isOffsetParentAnElement) { 8869 const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent); 8870 offsets.x = offsetRect.x + offsetParent.clientLeft; 8871 offsets.y = offsetRect.y + offsetParent.clientTop; 8872 } 8873 } 8874 if (!isOffsetParentAnElement && documentElement) { 8875 offsets.x = getWindowScrollBarX(documentElement); 8876 } 8877 const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0); 8878 const x2 = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x; 8879 const y2 = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y; 8880 return { 8881 x: x2, 8882 y: y2, 8883 width: rect.width, 8884 height: rect.height 8885 }; 8886 } 8887 function isStaticPositioned(element) { 8888 return getComputedStyle2(element).position === "static"; 8889 } 8890 function getTrueOffsetParent(element, polyfill) { 8891 if (!isHTMLElement(element) || getComputedStyle2(element).position === "fixed") { 8892 return null; 8893 } 8894 if (polyfill) { 8895 return polyfill(element); 8896 } 8897 let rawOffsetParent = element.offsetParent; 8898 if (getDocumentElement(element) === rawOffsetParent) { 8899 rawOffsetParent = rawOffsetParent.ownerDocument.body; 8900 } 8901 return rawOffsetParent; 8902 } 8903 function getOffsetParent(element, polyfill) { 8904 const win = getWindow(element); 8905 if (isTopLayer(element)) { 8906 return win; 8907 } 8908 if (!isHTMLElement(element)) { 8909 let svgOffsetParent = getParentNode(element); 8910 while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) { 8911 if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) { 8912 return svgOffsetParent; 8913 } 8914 svgOffsetParent = getParentNode(svgOffsetParent); 8915 } 8916 return win; 8917 } 8918 let offsetParent = getTrueOffsetParent(element, polyfill); 8919 while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) { 8920 offsetParent = getTrueOffsetParent(offsetParent, polyfill); 8921 } 8922 if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) { 8923 return win; 8924 } 8925 return offsetParent || getContainingBlock(element) || win; 8926 } 8927 var getElementRects = async function(data) { 8928 const getOffsetParentFn = this.getOffsetParent || getOffsetParent; 8929 const getDimensionsFn = this.getDimensions; 8930 const floatingDimensions = await getDimensionsFn(data.floating); 8931 return { 8932 reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy), 8933 floating: { 8934 x: 0, 8935 y: 0, 8936 width: floatingDimensions.width, 8937 height: floatingDimensions.height 8938 } 8939 }; 8940 }; 8941 function isRTL(element) { 8942 return getComputedStyle2(element).direction === "rtl"; 8943 } 8944 var platform2 = { 8945 convertOffsetParentRelativeRectToViewportRelativeRect, 8946 getDocumentElement, 8947 getClippingRect, 8948 getOffsetParent, 8949 getElementRects, 8950 getClientRects, 8951 getDimensions, 8952 getScale, 8953 isElement, 8954 isRTL 8955 }; 8956 function rectsAreEqual(a, b) { 8957 return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height; 8958 } 8959 function observeMove(element, onMove, ancestorResize) { 8960 let io = null; 8961 let timeoutId; 8962 const root = getDocumentElement(element); 8963 function cleanup() { 8964 var _io; 8965 clearTimeout(timeoutId); 8966 (_io = io) == null || _io.disconnect(); 8967 io = null; 8968 } 8969 function refresh(skip, threshold) { 8970 if (skip === void 0) { 8971 skip = false; 8972 } 8973 if (threshold === void 0) { 8974 threshold = 1; 8975 } 8976 cleanup(); 8977 const elementRectForRootMargin = element.getBoundingClientRect(); 8978 const { 8979 left, 8980 top, 8981 width, 8982 height 8983 } = elementRectForRootMargin; 8984 if (!skip) { 8985 onMove(); 8986 } 8987 if (!width || !height) { 8988 return; 8989 } 8990 const insetTop = floor(top); 8991 const insetRight = floor(root.clientWidth - (left + width)); 8992 const insetBottom = floor(root.clientHeight - (top + height)); 8993 const insetLeft = floor(left); 8994 const rootMargin = -insetTop + "px " + -insetRight + "px " + -insetBottom + "px " + -insetLeft + "px"; 8995 const options = { 8996 rootMargin, 8997 threshold: max(0, min(1, threshold)) || 1 8998 }; 8999 let isFirstUpdate = true; 9000 function handleObserve(entries) { 9001 const ratio = entries[0].intersectionRatio; 9002 if (!rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) { 9003 return refresh(); 9004 } 9005 if (ratio !== threshold) { 9006 if (!isFirstUpdate) { 9007 return refresh(); 9008 } 9009 if (!ratio) { 9010 timeoutId = setTimeout(() => { 9011 refresh(false, 1e-7); 9012 }, 1e3); 9013 } else { 9014 refresh(false, ratio); 9015 } 9016 } 9017 isFirstUpdate = false; 9018 } 9019 try { 9020 io = new IntersectionObserver(handleObserve, { 9021 ...options, 9022 // Handle <iframe>s 9023 root: root.ownerDocument 9024 }); 9025 } catch (_e) { 9026 io = new IntersectionObserver(handleObserve, options); 9027 } 9028 io.observe(element); 9029 } 9030 const win = getWindow(element); 9031 const handleResize = () => refresh(ancestorResize); 9032 win.addEventListener("resize", handleResize); 9033 refresh(true); 9034 return () => { 9035 win.removeEventListener("resize", handleResize); 9036 cleanup(); 9037 }; 9038 } 9039 function autoUpdate(reference, floating, update2, options) { 9040 if (options === void 0) { 9041 options = {}; 9042 } 9043 const { 9044 ancestorScroll = true, 9045 ancestorResize = true, 9046 elementResize = typeof ResizeObserver === "function", 9047 layoutShift = typeof IntersectionObserver === "function", 9048 animationFrame = false 9049 } = options; 9050 const referenceEl = unwrapElement(reference); 9051 const ancestors = ancestorScroll || ancestorResize ? [...referenceEl ? getOverflowAncestors(referenceEl) : [], ...floating ? getOverflowAncestors(floating) : []] : []; 9052 ancestors.forEach((ancestor) => { 9053 ancestorScroll && ancestor.addEventListener("scroll", update2); 9054 ancestorResize && ancestor.addEventListener("resize", update2); 9055 }); 9056 const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update2, ancestorResize) : null; 9057 let reobserveFrame = -1; 9058 let resizeObserver = null; 9059 if (elementResize) { 9060 resizeObserver = new ResizeObserver((_ref) => { 9061 let [firstEntry] = _ref; 9062 if (firstEntry && firstEntry.target === referenceEl && resizeObserver && floating) { 9063 resizeObserver.unobserve(floating); 9064 cancelAnimationFrame(reobserveFrame); 9065 reobserveFrame = requestAnimationFrame(() => { 9066 var _resizeObserver; 9067 (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating); 9068 }); 9069 } 9070 update2(); 9071 }); 9072 if (referenceEl && !animationFrame) { 9073 resizeObserver.observe(referenceEl); 9074 } 9075 if (floating) { 9076 resizeObserver.observe(floating); 9077 } 9078 } 9079 let frameId; 9080 let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null; 9081 if (animationFrame) { 9082 frameLoop(); 9083 } 9084 function frameLoop() { 9085 const nextRefRect = getBoundingClientRect(reference); 9086 if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) { 9087 update2(); 9088 } 9089 prevRefRect = nextRefRect; 9090 frameId = requestAnimationFrame(frameLoop); 9091 } 9092 update2(); 9093 return () => { 9094 var _resizeObserver2; 9095 ancestors.forEach((ancestor) => { 9096 ancestorScroll && ancestor.removeEventListener("scroll", update2); 9097 ancestorResize && ancestor.removeEventListener("resize", update2); 9098 }); 9099 cleanupIo == null || cleanupIo(); 9100 (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect(); 9101 resizeObserver = null; 9102 if (animationFrame) { 9103 cancelAnimationFrame(frameId); 9104 } 9105 }; 9106 } 9107 var offset2 = offset; 9108 var shift2 = shift; 9109 var flip2 = flip; 9110 var size2 = size; 9111 var limitShift2 = limitShift; 9112 var computePosition2 = (reference, floating, options) => { 9113 const cache2 = /* @__PURE__ */ new Map(); 9114 const mergedOptions = options != null ? options : {}; 9115 const platformWithCache = { 9116 ...platform2, 9117 ...mergedOptions.platform, 9118 _c: cache2 9119 }; 9120 return computePosition(reference, floating, { 9121 ...mergedOptions, 9122 platform: platformWithCache 9123 }); 9124 }; 9125 9126 // node_modules/.store/@floating-ui/react-dom@2.1.9-AxWcAwqlMfOrAFOinFKSVg/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs 9127 var React38 = __toESM(require_react(), 1); 9128 var import_react2 = __toESM(require_react(), 1); 9129 var ReactDOM5 = __toESM(require_react_dom(), 1); 9130 var isClient = typeof document !== "undefined"; 9131 var noop2 = function noop3() { 9132 }; 9133 var index = isClient ? import_react2.useLayoutEffect : noop2; 9134 function deepEqual(a, b) { 9135 if (a === b) { 9136 return true; 9137 } 9138 if (typeof a !== typeof b) { 9139 return false; 9140 } 9141 if (typeof a === "function" && a.toString() === b.toString()) { 9142 return true; 9143 } 9144 let length; 9145 let i; 9146 let keys; 9147 if (a && b && typeof a === "object") { 9148 if (Array.isArray(a)) { 9149 length = a.length; 9150 if (length !== b.length) return false; 9151 for (i = length; i-- !== 0; ) { 9152 if (!deepEqual(a[i], b[i])) { 9153 return false; 9154 } 9155 } 9156 return true; 9157 } 9158 keys = Object.keys(a); 9159 length = keys.length; 9160 if (length !== Object.keys(b).length) { 9161 return false; 9162 } 9163 for (i = length; i-- !== 0; ) { 9164 if (!{}.hasOwnProperty.call(b, keys[i])) { 9165 return false; 9166 } 9167 } 9168 for (i = length; i-- !== 0; ) { 9169 const key = keys[i]; 9170 if (key === "_owner" && a.$$typeof) { 9171 continue; 9172 } 9173 if (!deepEqual(a[key], b[key])) { 9174 return false; 9175 } 9176 } 9177 return true; 9178 } 9179 return a !== a && b !== b; 9180 } 9181 function getDPR(element) { 9182 if (typeof window === "undefined") { 9183 return 1; 9184 } 9185 const win = element.ownerDocument.defaultView || window; 9186 return win.devicePixelRatio || 1; 9187 } 9188 function roundByDPR(element, value) { 9189 const dpr = getDPR(element); 9190 return Math.round(value * dpr) / dpr; 9191 } 9192 function useLatestRef(value) { 9193 const ref = React38.useRef(value); 9194 index(() => { 9195 ref.current = value; 9196 }); 9197 return ref; 9198 } 9199 function useFloating(options) { 9200 if (options === void 0) { 9201 options = {}; 9202 } 9203 const { 9204 placement = "bottom", 9205 strategy = "absolute", 9206 middleware = [], 9207 platform: platform3, 9208 elements: { 9209 reference: externalReference, 9210 floating: externalFloating 9211 } = {}, 9212 transform = true, 9213 whileElementsMounted, 9214 open: open2 9215 } = options; 9216 const [data, setData] = React38.useState({ 9217 x: 0, 9218 y: 0, 9219 strategy, 9220 placement, 9221 middlewareData: {}, 9222 isPositioned: false 9223 }); 9224 const [latestMiddleware, setLatestMiddleware] = React38.useState(middleware); 9225 if (!deepEqual(latestMiddleware, middleware)) { 9226 setLatestMiddleware(middleware); 9227 } 9228 const [_reference, _setReference] = React38.useState(null); 9229 const [_floating, _setFloating] = React38.useState(null); 9230 const setReference = React38.useCallback((node) => { 9231 if (node !== referenceRef.current) { 9232 referenceRef.current = node; 9233 _setReference(node); 9234 } 9235 }, []); 9236 const setFloating = React38.useCallback((node) => { 9237 if (node !== floatingRef.current) { 9238 floatingRef.current = node; 9239 _setFloating(node); 9240 } 9241 }, []); 9242 const referenceEl = externalReference || _reference; 9243 const floatingEl = externalFloating || _floating; 9244 const referenceRef = React38.useRef(null); 9245 const floatingRef = React38.useRef(null); 9246 const dataRef = React38.useRef(data); 9247 const hasWhileElementsMounted = whileElementsMounted != null; 9248 const whileElementsMountedRef = useLatestRef(whileElementsMounted); 9249 const platformRef = useLatestRef(platform3); 9250 const openRef = useLatestRef(open2); 9251 const update2 = React38.useCallback(() => { 9252 if (!referenceRef.current || !floatingRef.current) { 9253 return; 9254 } 9255 const config = { 9256 placement, 9257 strategy, 9258 middleware: latestMiddleware 9259 }; 9260 if (platformRef.current) { 9261 config.platform = platformRef.current; 9262 } 9263 computePosition2(referenceRef.current, floatingRef.current, config).then((data2) => { 9264 const fullData = { 9265 ...data2, 9266 // The floating element's position may be recomputed while it's closed 9267 // but still mounted (such as when transitioning out). To ensure 9268 // `isPositioned` will be `false` initially on the next open, avoid 9269 // setting it to `true` when `open === false` (must be specified). 9270 isPositioned: openRef.current !== false 9271 }; 9272 if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) { 9273 dataRef.current = fullData; 9274 ReactDOM5.flushSync(() => { 9275 setData(fullData); 9276 }); 9277 } 9278 }); 9279 }, [latestMiddleware, placement, strategy, platformRef, openRef]); 9280 index(() => { 9281 if (open2 === false && dataRef.current.isPositioned) { 9282 dataRef.current.isPositioned = false; 9283 setData((data2) => ({ 9284 ...data2, 9285 isPositioned: false 9286 })); 9287 } 9288 }, [open2]); 9289 const isMountedRef = React38.useRef(false); 9290 index(() => { 9291 isMountedRef.current = true; 9292 return () => { 9293 isMountedRef.current = false; 9294 }; 9295 }, []); 9296 index(() => { 9297 if (referenceEl) referenceRef.current = referenceEl; 9298 if (floatingEl) floatingRef.current = floatingEl; 9299 if (referenceEl && floatingEl) { 9300 if (whileElementsMountedRef.current) { 9301 return whileElementsMountedRef.current(referenceEl, floatingEl, update2); 9302 } 9303 update2(); 9304 } 9305 }, [referenceEl, floatingEl, update2, whileElementsMountedRef, hasWhileElementsMounted]); 9306 const refs = React38.useMemo(() => ({ 9307 reference: referenceRef, 9308 floating: floatingRef, 9309 setReference, 9310 setFloating 9311 }), [setReference, setFloating]); 9312 const elements = React38.useMemo(() => ({ 9313 reference: referenceEl, 9314 floating: floatingEl 9315 }), [referenceEl, floatingEl]); 9316 const floatingStyles = React38.useMemo(() => { 9317 const initialStyles = { 9318 position: strategy, 9319 left: 0, 9320 top: 0 9321 }; 9322 if (!elements.floating) { 9323 return initialStyles; 9324 } 9325 const x2 = roundByDPR(elements.floating, data.x); 9326 const y2 = roundByDPR(elements.floating, data.y); 9327 if (transform) { 9328 return { 9329 ...initialStyles, 9330 transform: "translate(" + x2 + "px, " + y2 + "px)", 9331 ...getDPR(elements.floating) >= 1.5 && { 9332 willChange: "transform" 9333 } 9334 }; 9335 } 9336 return { 9337 position: strategy, 9338 left: x2, 9339 top: y2 9340 }; 9341 }, [strategy, transform, elements.floating, data.x, data.y]); 9342 return React38.useMemo(() => ({ 9343 ...data, 9344 update: update2, 9345 refs, 9346 elements, 9347 floatingStyles 9348 }), [data, update2, refs, elements, floatingStyles]); 9349 } 9350 var offset3 = (options, deps) => { 9351 const result = offset2(options); 9352 return { 9353 name: result.name, 9354 fn: result.fn, 9355 options: [options, deps] 9356 }; 9357 }; 9358 var shift3 = (options, deps) => { 9359 const result = shift2(options); 9360 return { 9361 name: result.name, 9362 fn: result.fn, 9363 options: [options, deps] 9364 }; 9365 }; 9366 var limitShift3 = (options, deps) => { 9367 const result = limitShift2(options); 9368 return { 9369 fn: result.fn, 9370 options: [options, deps] 9371 }; 9372 }; 9373 var flip3 = (options, deps) => { 9374 const result = flip2(options); 9375 return { 9376 name: result.name, 9377 fn: result.fn, 9378 options: [options, deps] 9379 }; 9380 }; 9381 var size3 = (options, deps) => { 9382 const result = size2(options); 9383 return { 9384 name: result.name, 9385 fn: result.fn, 9386 options: [options, deps] 9387 }; 9388 }; 9389 9390 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/NullStore.mjs 9391 var NullStore = class extends ReactStore { 9392 // `update`/`set`/`notifyAll` funnel through `setState` in the base `Store`, so overriding 9393 // `setState` alone would neutralize them today. They are overridden explicitly so the store stays 9394 // inert even if a future base-class change stops routing a mutator through `setState`. 9395 setState(_newState) { 9396 } 9397 update(_changes) { 9398 } 9399 set(_key, _value) { 9400 } 9401 notifyAll() { 9402 } 9403 }; 9404 9405 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/composite.mjs 9406 var ARROW_UP2 = "ArrowUp"; 9407 var ARROW_DOWN2 = "ArrowDown"; 9408 var ARROW_LEFT2 = "ArrowLeft"; 9409 var ARROW_RIGHT2 = "ArrowRight"; 9410 var HOME = "Home"; 9411 var END = "End"; 9412 var COMPOSITE_KEYS = /* @__PURE__ */ new Set([ARROW_UP2, ARROW_DOWN2, ARROW_LEFT2, ARROW_RIGHT2, HOME, END]); 9413 9414 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/inertValue.mjs 9415 function inertValue(value) { 9416 if (isReactVersionAtLeast(19)) { 9417 return value; 9418 } 9419 return value ? "true" : void 0; 9420 } 9421 9422 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/InternalBackdrop.mjs 9423 var React39 = __toESM(require_react(), 1); 9424 var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1); 9425 var InternalBackdrop = /* @__PURE__ */ React39.forwardRef(function InternalBackdrop2(props, ref) { 9426 const { 9427 cutout, 9428 ...otherProps 9429 } = props; 9430 let clipPath; 9431 if (cutout) { 9432 const rect = cutout.getBoundingClientRect(); 9433 clipPath = `polygon(0% 0%,100% 0%,100% 100%,0% 100%,0% 0%,$rect.left}px $rect.top}px,$rect.left}px $rect.bottom}px,$rect.right}px $rect.bottom}px,$rect.right}px $rect.top}px,$rect.left}px $rect.top}px)`; 9434 } 9435 return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { 9436 ref, 9437 role: "presentation", 9438 "data-base-ui-inert": "", 9439 ...otherProps, 9440 style: { 9441 position: "fixed", 9442 inset: 0, 9443 userSelect: "none", 9444 WebkitUserSelect: "none", 9445 clipPath 9446 } 9447 }); 9448 }); 9449 if (true) InternalBackdrop.displayName = "InternalBackdrop"; 9450 9451 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/useOpenInteractionType.mjs 9452 var React42 = __toESM(require_react(), 1); 9453 9454 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useEnhancedClickHandler.mjs 9455 var React40 = __toESM(require_react(), 1); 9456 function useEnhancedClickHandler(handler) { 9457 const lastClickInteractionTypeRef = React40.useRef(""); 9458 const handlePointerDown = React40.useCallback((event) => { 9459 if (event.defaultPrevented) { 9460 return; 9461 } 9462 lastClickInteractionTypeRef.current = event.pointerType; 9463 handler(event, event.pointerType); 9464 }, [handler]); 9465 const handleClick = React40.useCallback((event) => { 9466 if (event.detail === 0) { 9467 handler(event, "keyboard"); 9468 return; 9469 } 9470 if ("pointerType" in event) { 9471 handler(event, event.pointerType); 9472 } else { 9473 handler(event, lastClickInteractionTypeRef.current); 9474 } 9475 lastClickInteractionTypeRef.current = ""; 9476 }, [handler]); 9477 return { 9478 onClick: handleClick, 9479 onPointerDown: handlePointerDown 9480 }; 9481 } 9482 9483 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useValueChanged.mjs 9484 var React41 = __toESM(require_react(), 1); 9485 function useValueChanged(value, onChange) { 9486 const valueRef = React41.useRef(value); 9487 const onChangeCallback = useStableCallback(onChange); 9488 useIsoLayoutEffect(() => { 9489 if (valueRef.current !== value) { 9490 onChangeCallback(valueRef.current); 9491 } 9492 valueRef.current = value; 9493 }, [value, onChangeCallback]); 9494 } 9495 9496 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/useOpenInteractionType.mjs 9497 function useOpenMethodTriggerProps(open2, setOpenMethod) { 9498 const handleTriggerClick = useStableCallback((_, interactionType) => { 9499 const isOpen = typeof open2 === "function" ? open2() : open2; 9500 if (!isOpen) { 9501 setOpenMethod(interactionType || // On iOS Safari, the hitslop around touch targets means tapping outside an element's 9502 // bounds does not fire `pointerdown` but does fire `mousedown`. The `interactionType` 9503 // will be "" in that case. 9504 (parts_exports.os.ios ? "touch" : "")); 9505 } 9506 }); 9507 const { 9508 onClick, 9509 onPointerDown 9510 } = useEnhancedClickHandler(handleTriggerClick); 9511 return React42.useMemo(() => ({ 9512 onClick, 9513 onPointerDown 9514 }), [onClick, onPointerDown]); 9515 } 9516 function useOpenInteractionType(open2) { 9517 const [openMethod, setOpenMethod] = React42.useState(null); 9518 const triggerProps = useOpenMethodTriggerProps(open2, setOpenMethod); 9519 useValueChanged(open2, (previousOpen) => { 9520 if (previousOpen && !open2) { 9521 setOpenMethod(null); 9522 } 9523 }); 9524 return React42.useMemo(() => ({ 9525 openMethod, 9526 triggerProps 9527 }), [openMethod, triggerProps]); 9528 } 9529 9530 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useOnFirstRender.mjs 9531 var React43 = __toESM(require_react(), 1); 9532 function useOnFirstRender(fn) { 9533 const ref = React43.useRef(true); 9534 if (ref.current) { 9535 ref.current = false; 9536 fn(); 9537 } 9538 } 9539 9540 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/getHighlightReason.mjs 9541 function getHighlightReason(event) { 9542 if (event == null) { 9543 return reason_parts_exports.none; 9544 } 9545 if (event.type.startsWith("key")) { 9546 return reason_parts_exports.keyboard; 9547 } 9548 if (event.type.startsWith("mouse") || event.type.startsWith("pointer")) { 9549 return reason_parts_exports.pointer; 9550 } 9551 return reason_parts_exports.none; 9552 } 9553 9554 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/areArraysEqual.mjs 9555 function areArraysEqual(array1, array2, itemComparer = Object.is) { 9556 const { 9557 length 9558 } = array1; 9559 if (length !== array2.length) { 9560 return false; 9561 } 9562 for (let i = 0; i < length; i += 1) { 9563 if (!itemComparer(array1[i], array2[i])) { 9564 return false; 9565 } 9566 } 9567 return true; 9568 } 9569 9570 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/itemEquality.mjs 9571 var defaultItemEquality = (itemValue, selectedValue) => Object.is(itemValue, selectedValue); 9572 function compareItemEquality(itemValue, selectedValue, comparer) { 9573 if (itemValue == null || selectedValue == null) { 9574 return Object.is(itemValue, selectedValue); 9575 } 9576 return comparer(itemValue, selectedValue); 9577 } 9578 function isSelectedValueDirty(currentValue, initialValue, comparer) { 9579 if (Array.isArray(currentValue) && Array.isArray(initialValue)) { 9580 return !areArraysEqual(currentValue, initialValue, (itemValue, initialItemValue) => compareItemEquality(itemValue, initialItemValue, comparer)); 9581 } 9582 return currentValue !== initialValue; 9583 } 9584 function selectedValueIncludes(selectedValues, itemValue, comparer) { 9585 if (!selectedValues) { 9586 return false; 9587 } 9588 return selectedValues.some((selectedValue) => { 9589 if (selectedValue === void 0) { 9590 return false; 9591 } 9592 return compareItemEquality(itemValue, selectedValue, comparer); 9593 }); 9594 } 9595 function findItemIndex(itemValues, selectedValue, comparer) { 9596 if (!itemValues) { 9597 return -1; 9598 } 9599 return itemValues.findIndex((itemValue) => { 9600 if (itemValue === void 0) { 9601 return false; 9602 } 9603 return compareItemEquality(itemValue, selectedValue, comparer); 9604 }); 9605 } 9606 function createSelectionMatcher(selectedValues, comparer) { 9607 if (comparer !== defaultItemEquality) { 9608 return (itemValue) => selectedValueIncludes(selectedValues, itemValue, comparer); 9609 } 9610 const index2 = new Set(selectedValues); 9611 index2.delete(void 0); 9612 return (itemValue) => index2.has(itemValue) && (itemValue !== 0 || selectedValues.some((v2) => Object.is(itemValue, v2))); 9613 } 9614 function findSelectionIndex(itemValues, selectedValue, comparer, multiple) { 9615 const index2 = multiple && Array.isArray(selectedValue) ? ( 9616 // Anchor to the first selected item in rendered order so the index does not depend 9617 // on the order in which the values were added to the array. 9618 itemValues.findIndex(createSelectionMatcher(selectedValue, comparer)) 9619 ) : findItemIndex(itemValues, selectedValue, comparer); 9620 return index2 === -1 ? null : index2; 9621 } 9622 function resolveSelectedIndex(index2, itemValue, registry, selectedValues, comparer, currentIndex) { 9623 if (selectedValueIncludes(selectedValues, itemValue, comparer)) { 9624 return currentIndex != null && index2 > currentIndex && selectedValueIncludes(selectedValues, registry[currentIndex], comparer) ? currentIndex : index2; 9625 } 9626 return index2 === currentIndex ? findSelectionIndex(registry, selectedValues, comparer, true) : currentIndex; 9627 } 9628 function removeItem(selectedValues, itemValue, comparer) { 9629 return selectedValues.filter((selectedValue) => !compareItemEquality(itemValue, selectedValue, comparer)); 9630 } 9631 9632 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/resolveValueLabel.mjs 9633 var React44 = __toESM(require_react(), 1); 9634 9635 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/serializeValue.mjs 9636 function serializeValue(value) { 9637 if (value == null) { 9638 return ""; 9639 } 9640 if (typeof value === "string") { 9641 return value; 9642 } 9643 try { 9644 return JSON.stringify(value); 9645 } catch { 9646 return String(value); 9647 } 9648 } 9649 9650 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/resolveValueLabel.mjs 9651 var import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1); 9652 function isGroup(item) { 9653 return typeof item === "object" && item != null && Array.isArray(item.items); 9654 } 9655 function isGroupedItems(items) { 9656 return isGroup(items?.[0]); 9657 } 9658 function flattenLeafItems(items) { 9659 return isGroupedItems(items) ? items.flatMap((group) => group.items) : items; 9660 } 9661 function hasNullItemLabel(items) { 9662 if (!Array.isArray(items)) { 9663 return items != null && "null" in items; 9664 } 9665 const arrayItems = items; 9666 if (isGroupedItems(arrayItems)) { 9667 for (const group of arrayItems) { 9668 for (const item of group.items) { 9669 if (item && item.value == null && item.label != null) { 9670 return true; 9671 } 9672 } 9673 } 9674 return false; 9675 } 9676 for (const item of arrayItems) { 9677 if (item && item.value == null && item.label != null) { 9678 return true; 9679 } 9680 } 9681 return false; 9682 } 9683 function stringifyAsLabel(item, itemToStringLabel) { 9684 if (itemToStringLabel && item != null) { 9685 return itemToStringLabel(item) ?? ""; 9686 } 9687 if (item && typeof item === "object") { 9688 if ("label" in item && item.label != null) { 9689 return String(item.label); 9690 } 9691 if ("value" in item) { 9692 return String(item.value); 9693 } 9694 } 9695 return serializeValue(item); 9696 } 9697 function stringifyAsValue(item, itemToStringValue) { 9698 if (itemToStringValue && item != null) { 9699 return itemToStringValue(item) ?? ""; 9700 } 9701 if (item && typeof item === "object" && "value" in item && "label" in item) { 9702 return serializeValue(item.value); 9703 } 9704 return serializeValue(item); 9705 } 9706 function resolveSelectedLabel(value, items, itemToStringLabel) { 9707 function fallback() { 9708 return stringifyAsLabel(value, itemToStringLabel); 9709 } 9710 if (itemToStringLabel && value != null) { 9711 return itemToStringLabel(value); 9712 } 9713 if (value && typeof value === "object" && "label" in value && value.label != null) { 9714 return value.label; 9715 } 9716 if (items && !Array.isArray(items)) { 9717 const label = Object.hasOwn(items, value) ? items[value] : void 0; 9718 return label ?? fallback(); 9719 } 9720 if (Array.isArray(items)) { 9721 const arrayItems = items; 9722 const flatItems = flattenLeafItems(arrayItems); 9723 if (value == null || typeof value !== "object") { 9724 const match2 = flatItems.find((item) => item.value === value); 9725 if (match2 && match2.label != null) { 9726 return match2.label; 9727 } 9728 return fallback(); 9729 } 9730 if ("value" in value) { 9731 const match2 = flatItems.find((item) => item && item.value === value.value); 9732 if (match2 && match2.label != null) { 9733 return match2.label; 9734 } 9735 } 9736 } 9737 return fallback(); 9738 } 9739 function resolveMultipleLabels(values, items, itemToStringLabel) { 9740 return values.reduce((acc, value, index2) => { 9741 if (index2 > 0) { 9742 acc.push(", "); 9743 } 9744 acc.push(/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(React44.Fragment, { 9745 children: resolveSelectedLabel(value, items, itemToStringLabel) 9746 }, index2)); 9747 return acc; 9748 }, []); 9749 } 9750 9751 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/field-root-context/FieldRootContext.mjs 9752 var React45 = __toESM(require_react(), 1); 9753 9754 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/control/FieldControlDataAttributes.mjs 9755 var valid = "data-valid"; 9756 var invalid = "data-invalid"; 9757 9758 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/field-constants/constants.mjs 9759 var DEFAULT_VALIDITY_STATE = { 9760 badInput: false, 9761 customError: false, 9762 patternMismatch: false, 9763 rangeOverflow: false, 9764 rangeUnderflow: false, 9765 stepMismatch: false, 9766 tooLong: false, 9767 tooShort: false, 9768 typeMismatch: false, 9769 valid: null, 9770 valueMissing: false 9771 }; 9772 var DEFAULT_FIELD_STATE_ATTRIBUTES = { 9773 valid: null, 9774 touched: false, 9775 dirty: false, 9776 filled: false, 9777 focused: false 9778 }; 9779 var DEFAULT_FIELD_ROOT_STATE = { 9780 disabled: false, 9781 ...DEFAULT_FIELD_STATE_ATTRIBUTES 9782 }; 9783 var fieldValidityMapping = { 9784 valid(value) { 9785 if (value === null) { 9786 return null; 9787 } 9788 if (value) { 9789 return { 9790 [valid]: "" 9791 }; 9792 } 9793 return { 9794 [invalid]: "" 9795 }; 9796 } 9797 }; 9798 9799 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/field-root-context/FieldRootContext.mjs 9800 var DEFAULT_FIELD_ROOT_CONTEXT = { 9801 invalid: void 0, 9802 name: void 0, 9803 validityData: { 9804 state: DEFAULT_VALIDITY_STATE, 9805 errors: [], 9806 error: "", 9807 value: "", 9808 initialValue: null 9809 }, 9810 setValidityData: NOOP, 9811 disabled: void 0, 9812 setTouched: NOOP, 9813 setDirty: NOOP, 9814 setFilled: NOOP, 9815 setFocused: NOOP, 9816 focusOwnerRef: { 9817 current: void 0 9818 }, 9819 validationMode: "onSubmit", 9820 shouldValidateOnChange: () => false, 9821 state: DEFAULT_FIELD_ROOT_STATE, 9822 registerFieldControl: NOOP, 9823 validation: { 9824 getValidationProps: (_disabled, props = EMPTY_OBJECT) => props, 9825 inputRef: { 9826 current: null 9827 }, 9828 registeredInputs: /* @__PURE__ */ new Map(), 9829 registerInput: NOOP, 9830 getInputControl: () => null, 9831 commit: async () => { 9832 }, 9833 change: NOOP 9834 } 9835 }; 9836 var FieldRootContext = /* @__PURE__ */ React45.createContext(DEFAULT_FIELD_ROOT_CONTEXT); 9837 if (true) FieldRootContext.displayName = "FieldRootContext"; 9838 function useFieldRootContext(optional = true) { 9839 const context = React45.useContext(FieldRootContext); 9840 if (context.setValidityData === NOOP && !optional) { 9841 throw new Error(true ? "Base UI: FieldRootContext is missing. Field parts must be placed within <Field.Root>." : formatErrorMessage_default(28)); 9842 } 9843 return context; 9844 } 9845 9846 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/field-register-control/useRegisterFieldControl.mjs 9847 function useRegisterFieldControl(controlRef, id, value, getFormValueOverride, enabled = true, name2) { 9848 const { 9849 registerFieldControl 9850 } = useFieldRootContext(); 9851 const sourceRef = useRefWithInit(() => /* @__PURE__ */ Symbol()); 9852 useIsoLayoutEffect(() => { 9853 const source = sourceRef.current; 9854 if (!enabled) { 9855 registerFieldControl(source, void 0); 9856 return; 9857 } 9858 const registration = { 9859 controlRef, 9860 getValue: getFormValueOverride, 9861 id, 9862 name: name2, 9863 value 9864 }; 9865 registerFieldControl(source, registration); 9866 }, [controlRef, enabled, getFormValueOverride, id, name2, registerFieldControl, sourceRef, value]); 9867 useIsoLayoutEffect(() => { 9868 const source = sourceRef.current; 9869 return () => { 9870 registerFieldControl(source, void 0); 9871 }; 9872 }, [registerFieldControl, sourceRef]); 9873 } 9874 9875 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/form-context/FormContext.mjs 9876 var React46 = __toESM(require_react(), 1); 9877 var FormContext = /* @__PURE__ */ React46.createContext({ 9878 elementRef: { 9879 current: null 9880 }, 9881 formRef: { 9882 current: { 9883 fields: /* @__PURE__ */ new Map() 9884 } 9885 }, 9886 errors: {}, 9887 clearErrors: NOOP, 9888 validationMode: "onSubmit", 9889 submitCountRef: { 9890 current: 0 9891 } 9892 }); 9893 if (true) FormContext.displayName = "FormContext"; 9894 function useFormContext() { 9895 return React46.useContext(FormContext); 9896 } 9897 9898 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/labelable-provider/useLabelableId.mjs 9899 var React48 = __toESM(require_react(), 1); 9900 9901 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/labelable-provider/LabelableContext.mjs 9902 var React47 = __toESM(require_react(), 1); 9903 var LabelableContext = /* @__PURE__ */ React47.createContext({ 9904 controlId: void 0, 9905 registerControlId: NOOP, 9906 resetControlId: NOOP, 9907 labelId: void 0, 9908 setLabelId: NOOP, 9909 messageIds: [], 9910 setMessageIds: NOOP, 9911 getDescriptionProps: (externalProps) => externalProps 9912 }); 9913 if (true) LabelableContext.displayName = "LabelableContext"; 9914 function useLabelableContext() { 9915 return React47.useContext(LabelableContext); 9916 } 9917 9918 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/labelable-provider/useLabelableId.mjs 9919 function useLabelableId(params = {}) { 9920 const { 9921 id, 9922 enabled = true 9923 } = params; 9924 const { 9925 controlId, 9926 registerControlId, 9927 resetControlId 9928 } = useLabelableContext(); 9929 const defaultId = useBaseUiId(); 9930 const controlSourceRef = useRefWithInit(() => /* @__PURE__ */ Symbol()); 9931 const hasRegisteredRef = React48.useRef(false); 9932 const hadExplicitIdRef = React48.useRef(false); 9933 const unregisterControlId = useStableCallback(() => { 9934 if (!hasRegisteredRef.current || registerControlId === NOOP) { 9935 return; 9936 } 9937 hasRegisteredRef.current = false; 9938 registerControlId(controlSourceRef.current, void 0); 9939 }); 9940 useIsoLayoutEffect(() => { 9941 if (!enabled || registerControlId === NOOP) { 9942 unregisterControlId(); 9943 return void 0; 9944 } 9945 let nextId; 9946 if (id !== void 0) { 9947 hadExplicitIdRef.current = true; 9948 nextId = id; 9949 } else if (hadExplicitIdRef.current) { 9950 nextId = defaultId; 9951 } else { 9952 resetControlId(); 9953 return void 0; 9954 } 9955 if (nextId === void 0) { 9956 unregisterControlId(); 9957 return void 0; 9958 } 9959 hasRegisteredRef.current = true; 9960 registerControlId(controlSourceRef.current, nextId); 9961 return void 0; 9962 }, [id, enabled, registerControlId, resetControlId, defaultId, controlSourceRef, unregisterControlId]); 9963 useIsoLayoutEffect(() => { 9964 return unregisterControlId; 9965 }, [unregisterControlId]); 9966 return (enabled ? controlId : void 0) ?? id ?? defaultId; 9967 } 9968 9969 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/stringifyLocale.mjs 9970 function stringifyLocale(locale) { 9971 if (Array.isArray(locale)) { 9972 return locale.map((value) => stringifyLocale(value)).join(","); 9973 } 9974 if (locale == null) { 9975 return ""; 9976 } 9977 return String(locale); 9978 } 9979 9980 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/filter.mjs 9981 var filterCache = /* @__PURE__ */ new Map(); 9982 function getFilter(options = {}) { 9983 const { 9984 locale, 9985 ...restOptions 9986 } = options; 9987 const collatorOptions = { 9988 usage: "search", 9989 sensitivity: "base", 9990 ignorePunctuation: true, 9991 ...restOptions 9992 }; 9993 const cacheKey = `$stringifyLocale(locale)}|$JSON.stringify(collatorOptions)}`; 9994 const cachedFilter = filterCache.get(cacheKey); 9995 if (cachedFilter) { 9996 return cachedFilter; 9997 } 9998 const collator = new Intl.Collator(locale, collatorOptions); 9999 const filter = { 10000 contains(item, query, itemToString) { 10001 if (!query) { 10002 return true; 10003 } 10004 const itemString = stringifyAsLabel(item, itemToString); 10005 for (let i = 0; i <= itemString.length - query.length; i += 1) { 10006 if (collator.compare(itemString.slice(i, i + query.length), query) === 0) { 10007 return true; 10008 } 10009 } 10010 return false; 10011 }, 10012 startsWith(item, query, itemToString) { 10013 if (!query) { 10014 return true; 10015 } 10016 const itemString = stringifyAsLabel(item, itemToString); 10017 return collator.compare(itemString.slice(0, query.length), query) === 0; 10018 }, 10019 endsWith(item, query, itemToString) { 10020 if (!query) { 10021 return true; 10022 } 10023 const itemString = stringifyAsLabel(item, itemToString); 10024 const queryLength = query.length; 10025 return itemString.length >= queryLength && collator.compare(itemString.slice(itemString.length - queryLength), query) === 0; 10026 } 10027 }; 10028 filterCache.set(cacheKey, filter); 10029 return filter; 10030 } 10031 10032 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/direction-context/DirectionContext.mjs 10033 var React49 = __toESM(require_react(), 1); 10034 var DirectionContext = /* @__PURE__ */ React49.createContext(void 0); 10035 if (true) DirectionContext.displayName = "DirectionContext"; 10036 function useDirection() { 10037 const context = React49.useContext(DirectionContext); 10038 return context?.direction ?? "ltr"; 10039 } 10040 10041 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/field-root-context/useSetFieldFocused.mjs 10042 function useSetFieldFocused(disabled2, focusTargetRef, onFocusedChange) { 10043 const { 10044 setFocused, 10045 focusOwnerRef 10046 } = useFieldRootContext(); 10047 const setFieldFocused = useStableCallback((focused) => { 10048 if (focused ? !disabled2 : focusOwnerRef.current === setFieldFocused) { 10049 focusOwnerRef.current = focused && setFieldFocused; 10050 onFocusedChange?.(focused); 10051 setFocused(focused); 10052 } 10053 }); 10054 useIsoLayoutEffect(() => { 10055 const el = focusTargetRef.current; 10056 const root = el?.getRootNode(); 10057 if (root?.activeElement === el) { 10058 setFieldFocused(true); 10059 } 10060 return () => setFieldFocused(false); 10061 }, [disabled2, focusTargetRef, setFieldFocused]); 10062 return setFieldFocused; 10063 } 10064 10065 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/getPseudoElementBounds.mjs 10066 var BOUNDARY_OFFSET = 5; 10067 function isMouseWithinBounds(event, element) { 10068 const bounds = getPseudoElementBounds(element); 10069 return event.clientX >= bounds.left - BOUNDARY_OFFSET && event.clientX <= bounds.right + BOUNDARY_OFFSET && event.clientY >= bounds.top - BOUNDARY_OFFSET && event.clientY <= bounds.bottom + BOUNDARY_OFFSET; 10070 } 10071 function getPseudoElementBounds(element) { 10072 const elementRect = element.getBoundingClientRect(); 10073 const win = getWindow(element); 10074 if (parts_exports.env.jsdom) { 10075 return elementRect; 10076 } 10077 const beforeStyles = win.getComputedStyle(element, "::before"); 10078 const afterStyles = win.getComputedStyle(element, "::after"); 10079 const hasPseudoElements = beforeStyles.content !== "none" || afterStyles.content !== "none"; 10080 if (!hasPseudoElements) { 10081 return elementRect; 10082 } 10083 const beforeWidth = parseFloat(beforeStyles.width) || 0; 10084 const beforeHeight = parseFloat(beforeStyles.height) || 0; 10085 const afterWidth = parseFloat(afterStyles.width) || 0; 10086 const afterHeight = parseFloat(afterStyles.height) || 0; 10087 const totalWidth = Math.max(elementRect.width, beforeWidth, afterWidth); 10088 const totalHeight = Math.max(elementRect.height, beforeHeight, afterHeight); 10089 const widthDiff = totalWidth - elementRect.width; 10090 const heightDiff = totalHeight - elementRect.height; 10091 return { 10092 left: elementRect.left - widthDiff / 2, 10093 right: elementRect.right + widthDiff / 2, 10094 top: elementRect.top - heightDiff / 2, 10095 bottom: elementRect.bottom + heightDiff / 2 10096 }; 10097 } 10098 10099 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/resolveAriaLabelledBy.mjs 10100 function getDefaultLabelId(id) { 10101 return id == null ? void 0 : `$id}-label`; 10102 } 10103 function resolveAriaLabelledBy(fieldLabelId, localLabelId) { 10104 return fieldLabelId ?? localLabelId; 10105 } 10106 10107 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useInitialLiveRegionTextMutation.mjs 10108 var React50 = __toESM(require_react(), 1); 10109 var LIVE_REGION_MARKER = "\u2060"; 10110 var INITIAL_LIVE_REGION_TEXT_MUTATION_RESET_DELAY = 200; 10111 function findLastTextNode(root) { 10112 const walker = root.ownerDocument.createTreeWalker(root, NodeFilter.SHOW_TEXT); 10113 let lastTextNode = null; 10114 while (walker.nextNode()) { 10115 const textNode = walker.currentNode; 10116 if (textNode.nodeValue !== "") { 10117 lastTextNode = textNode; 10118 } 10119 } 10120 return lastTextNode; 10121 } 10122 function useInitialLiveRegionTextMutation(present = true) { 10123 const timeout = useTimeout(); 10124 const rootRef = React50.useRef(null); 10125 React50.useEffect(() => { 10126 if (!present || parts_exports.os.ios) { 10127 return void 0; 10128 } 10129 const root = rootRef.current; 10130 if (root == null) { 10131 return void 0; 10132 } 10133 const textNode = findLastTextNode(root); 10134 if (textNode == null) { 10135 return void 0; 10136 } 10137 const originalValue = textNode.data; 10138 const markedValue = `$originalValue}$LIVE_REGION_MARKER}`; 10139 textNode.nodeValue = markedValue; 10140 timeout.start(INITIAL_LIVE_REGION_TEXT_MUTATION_RESET_DELAY, () => { 10141 if (textNode.nodeValue === markedValue) { 10142 textNode.nodeValue = originalValue; 10143 } 10144 }); 10145 return () => { 10146 timeout.clear(); 10147 if (textNode.nodeValue === markedValue) { 10148 textNode.nodeValue = originalValue; 10149 } 10150 }; 10151 }, [present, rootRef, timeout]); 10152 return rootRef; 10153 } 10154 10155 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useAnchorPositioning.mjs 10156 var React52 = __toESM(require_react(), 1); 10157 10158 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useFloating.mjs 10159 var React51 = __toESM(require_react(), 1); 10160 function useBaseUIFloating(options) { 10161 const { 10162 nodeId, 10163 externalTree, 10164 rootContext: store 10165 } = options; 10166 const referenceElement = store.useState("referenceElement"); 10167 const floatingElement = store.useState("floatingElement"); 10168 const domReferenceElement = store.useState("domReferenceElement"); 10169 const open2 = store.useState("open"); 10170 const floatingId = store.useState("floatingId"); 10171 const [positionReference, setPositionReferenceRaw] = React51.useState(null); 10172 const domReferenceRef = React51.useRef(null); 10173 const tree = useFloatingTree(externalTree); 10174 const storeElements = React51.useMemo(() => ({ 10175 reference: referenceElement, 10176 floating: floatingElement, 10177 domReference: domReferenceElement 10178 }), [referenceElement, floatingElement, domReferenceElement]); 10179 const position = useFloating({ 10180 ...options, 10181 elements: { 10182 ...storeElements, 10183 ...positionReference && { 10184 reference: positionReference 10185 } 10186 } 10187 }); 10188 const setPositionReference = React51.useCallback((node) => { 10189 const computedPositionReference = isElement(node) ? { 10190 getBoundingClientRect: () => node.getBoundingClientRect(), 10191 getClientRects: () => node.getClientRects(), 10192 contextElement: node 10193 } : node; 10194 setPositionReferenceRaw(computedPositionReference); 10195 position.refs.setReference(computedPositionReference); 10196 }, [position.refs]); 10197 const refs = React51.useMemo(() => ({ 10198 ...position.refs, 10199 setPositionReference, 10200 domReference: domReferenceRef 10201 }), [position.refs, setPositionReference]); 10202 const elements = React51.useMemo(() => ({ 10203 ...position.elements, 10204 domReference: domReferenceElement 10205 }), [position.elements, domReferenceElement]); 10206 const context = React51.useMemo(() => ({ 10207 ...position, 10208 dataRef: store.context.dataRef, 10209 open: open2, 10210 onOpenChange: store.setOpen, 10211 events: store.context.events, 10212 floatingId, 10213 refs, 10214 elements, 10215 nodeId, 10216 rootStore: store 10217 }), [position, refs, elements, nodeId, store, open2, floatingId]); 10218 useIsoLayoutEffect(() => { 10219 if (domReferenceElement) { 10220 domReferenceRef.current = domReferenceElement; 10221 } 10222 }, [domReferenceElement]); 10223 useIsoLayoutEffect(() => { 10224 store.context.dataRef.current.floatingContext = context; 10225 const node = tree?.nodesRef.current.find((n) => n.id === nodeId); 10226 if (node) { 10227 node.context = context; 10228 } 10229 }); 10230 return React51.useMemo(() => ({ 10231 ...position, 10232 context, 10233 refs, 10234 elements, 10235 rootStore: store 10236 }), [position, refs, elements, context, store]); 10237 } 10238 10239 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/middleware/arrow.mjs 10240 var baseArrow = (options) => ({ 10241 name: "arrow", 10242 options, 10243 async fn(state) { 10244 const { 10245 x: x2, 10246 y: y2, 10247 placement, 10248 rects, 10249 platform: platform3, 10250 elements, 10251 middlewareData 10252 } = state; 10253 const { 10254 element, 10255 padding = 0 10256 } = evaluate(options, state) || {}; 10257 if (element == null) { 10258 return {}; 10259 } 10260 const paddingObject = getPaddingObject(padding); 10261 const coords = { 10262 x: x2, 10263 y: y2 10264 }; 10265 const axis = getAlignmentAxis(placement); 10266 const length = getAxisLength(axis); 10267 const arrowDimensions = await platform3.getDimensions(element); 10268 const isYAxis = axis === "y"; 10269 const minProp = isYAxis ? "top" : "left"; 10270 const maxProp = isYAxis ? "bottom" : "right"; 10271 const clientProp = isYAxis ? "clientHeight" : "clientWidth"; 10272 const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length]; 10273 const startDiff = coords[axis] - rects.reference[axis]; 10274 const clientSize = elements.floating[clientProp] || rects.floating[length]; 10275 const centerToReference = endDiff / 2 - startDiff / 2; 10276 const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1; 10277 const minPadding = Math.min(paddingObject[minProp], largestPossiblePadding); 10278 const maxPadding = Math.min(paddingObject[maxProp], largestPossiblePadding); 10279 const min2 = minPadding; 10280 const max2 = clientSize - arrowDimensions[length] - maxPadding; 10281 const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference; 10282 const offset4 = clamp(min2, center, max2); 10283 const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset4 && rects.reference[length] / 2 - (center < min2 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0; 10284 const alignmentOffset = shouldAddOffset ? center < min2 ? center - min2 : center - max2 : 0; 10285 return { 10286 [axis]: coords[axis] + alignmentOffset, 10287 data: { 10288 [axis]: offset4, 10289 centerOffset: center - offset4 - alignmentOffset, 10290 ...shouldAddOffset && { 10291 alignmentOffset 10292 } 10293 }, 10294 reset: shouldAddOffset 10295 }; 10296 } 10297 }); 10298 var arrow4 = (options, deps) => { 10299 const { 10300 name: name2, 10301 fn 10302 } = baseArrow(options); 10303 return { 10304 name: name2, 10305 fn, 10306 options: [options, deps] 10307 }; 10308 }; 10309 10310 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/hideMiddleware.mjs 10311 var hide4 = { 10312 name: "hide", 10313 async fn(state) { 10314 const { 10315 width, 10316 height, 10317 x: x2, 10318 y: y2 10319 } = state.rects.reference; 10320 const anchorHidden2 = width === 0 && height === 0 && x2 === 0 && y2 === 0; 10321 const overflow = await state.platform.detectOverflow(state, { 10322 elementContext: "reference" 10323 }); 10324 const referenceHidden = overflow.top - height >= 0 || overflow.right - width >= 0 || overflow.bottom - height >= 0 || overflow.left - width >= 0; 10325 return { 10326 data: { 10327 referenceHidden: referenceHidden || anchorHidden2 10328 } 10329 }; 10330 } 10331 }; 10332 10333 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/adaptiveOriginConstants.mjs 10334 var DEFAULT_SIDES = { 10335 sideX: "left", 10336 sideY: "top" 10337 }; 10338 10339 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/CommonPositionerCssVars.mjs 10340 var availableWidth = "--available-width"; 10341 var availableHeight = "--available-height"; 10342 var anchorWidth = "--anchor-width"; 10343 var anchorHeight = "--anchor-height"; 10344 var transformOrigin = "--transform-origin"; 10345 var positionerWidth = "--positioner-width"; 10346 var positionerHeight = "--positioner-height"; 10347 10348 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useAnchorPositioning.mjs 10349 var AVAILABLE_WIDTH_VAR = availableWidth; 10350 var AVAILABLE_HEIGHT_VAR = availableHeight; 10351 function getLogicalSide(sideParam, renderedSide, isRtl) { 10352 const isLogicalSideParam = sideParam === "inline-start" || sideParam === "inline-end"; 10353 const logicalRight = isRtl ? "inline-start" : "inline-end"; 10354 const logicalLeft = isRtl ? "inline-end" : "inline-start"; 10355 return { 10356 top: "top", 10357 right: isLogicalSideParam ? logicalRight : "right", 10358 bottom: "bottom", 10359 left: isLogicalSideParam ? logicalLeft : "left" 10360 }[renderedSide]; 10361 } 10362 function getOffsetData(state, sideParam, isRtl) { 10363 const { 10364 rects, 10365 placement 10366 } = state; 10367 const data = { 10368 side: getLogicalSide(sideParam, getSide(placement), isRtl), 10369 align: getAlignment(placement) || "center", 10370 anchor: { 10371 width: rects.reference.width, 10372 height: rects.reference.height 10373 }, 10374 positioner: { 10375 width: rects.floating.width, 10376 height: rects.floating.height 10377 } 10378 }; 10379 return data; 10380 } 10381 function useAnchorPositioning(params) { 10382 return useAnchorPositioningWithHook(params, useBaseUIFloating); 10383 } 10384 function useAnchorPositioningWithHook(params, useFloatingHook) { 10385 const { 10386 // Public parameters 10387 anchor, 10388 positionMethod = "absolute", 10389 side: sideParam = "bottom", 10390 sideOffset = 0, 10391 align = "center", 10392 alignOffset = 0, 10393 collisionBoundary, 10394 collisionPadding: collisionPaddingParam = 5, 10395 sticky = false, 10396 arrowPadding = 5, 10397 disableAnchorTracking = false, 10398 inline: inlineMiddleware, 10399 // Private parameters 10400 keepMounted = false, 10401 floatingRootContext, 10402 mounted, 10403 collisionAvoidance, 10404 shift: shift4, 10405 nodeId, 10406 adaptiveOrigin: adaptiveOrigin2, 10407 lazyFlip = false, 10408 externalTree 10409 } = params; 10410 const collisionAvoidanceSide = collisionAvoidance.side || "flip"; 10411 const collisionAvoidanceAlign = collisionAvoidance.align || "flip"; 10412 const collisionAvoidanceFallbackAxisSide = collisionAvoidance.fallbackAxisSide || "end"; 10413 const shiftCrossAxis = shift4?.crossAxis ?? false; 10414 const shiftRootBoundary = shift4?.rootBoundary; 10415 const anchorFn = typeof anchor === "function" ? anchor : void 0; 10416 const anchorFnCallback = useStableCallback(anchorFn); 10417 const anchorDep = anchorFn ? anchorFnCallback : anchor; 10418 const anchorValueRef = useValueAsRef(anchor); 10419 const mountedRef = useValueAsRef(mounted); 10420 const direction = useDirection(); 10421 const isRtl = direction === "rtl"; 10422 const [mountPlacement, setMountPlacement] = React52.useState(null); 10423 if (!mounted && mountPlacement !== null) { 10424 setMountPlacement(null); 10425 } 10426 const lockAlign = lazyFlip === "placement"; 10427 const mountSide = mountPlacement ? getSide(mountPlacement) : null; 10428 const mountAlign = mountPlacement && lockAlign ? getAlignment(mountPlacement) || "center" : null; 10429 const side = mountSide || { 10430 top: "top", 10431 right: "right", 10432 bottom: "bottom", 10433 left: "left", 10434 "inline-end": isRtl ? "left" : "right", 10435 "inline-start": isRtl ? "right" : "left" 10436 }[sideParam]; 10437 const placementAlign = mountAlign || align; 10438 const placement = placementAlign === "center" ? side : `$side}-$placementAlign}`; 10439 let collisionPadding = collisionPaddingParam; 10440 if (typeof collisionPadding === "number") { 10441 collisionPadding = { 10442 top: collisionPadding, 10443 right: collisionPadding, 10444 bottom: collisionPadding, 10445 left: collisionPadding 10446 }; 10447 } else if (collisionPadding) { 10448 collisionPadding = { 10449 top: collisionPadding.top || 0, 10450 right: collisionPadding.right || 0, 10451 bottom: collisionPadding.bottom || 0, 10452 left: collisionPadding.left || 0 10453 }; 10454 } 10455 const bias = 1; 10456 const biasTop = sideParam === "bottom" ? bias : 0; 10457 const biasBottom = sideParam === "top" ? bias : 0; 10458 const biasLeft = sideParam === "right" ? bias : 0; 10459 const biasRight = sideParam === "left" ? bias : 0; 10460 const commonCollisionProps = { 10461 boundary: collisionBoundary === "clipping-ancestors" ? "clippingAncestors" : collisionBoundary, 10462 padding: collisionPadding 10463 }; 10464 const arrowRef = React52.useRef(null); 10465 const sideOffsetRef = useValueAsRef(sideOffset); 10466 const alignOffsetRef = useValueAsRef(alignOffset); 10467 const sideOffsetDep = typeof sideOffset !== "function" ? sideOffset : 0; 10468 const alignOffsetDep = typeof alignOffset !== "function" ? alignOffset : 0; 10469 const middleware = []; 10470 if (inlineMiddleware) { 10471 middleware.push(inlineMiddleware); 10472 } 10473 middleware.push(offset3((state) => { 10474 const data = getOffsetData(state, sideParam, isRtl); 10475 const sideAxis = typeof sideOffsetRef.current === "function" ? sideOffsetRef.current(data) : sideOffsetRef.current; 10476 const alignAxis = typeof alignOffsetRef.current === "function" ? alignOffsetRef.current(data) : alignOffsetRef.current; 10477 return { 10478 mainAxis: sideAxis, 10479 crossAxis: alignAxis, 10480 alignmentAxis: alignAxis 10481 }; 10482 }, [sideOffsetDep, alignOffsetDep, isRtl, sideParam])); 10483 const shiftDisabled = collisionAvoidanceAlign === "none" && collisionAvoidanceSide !== "shift"; 10484 const crossAxisShiftEnabled = !shiftDisabled && (sticky || shiftCrossAxis || collisionAvoidanceSide === "shift"); 10485 const flipMiddleware = collisionAvoidanceSide === "none" ? null : flip3({ 10486 ...commonCollisionProps, 10487 // Ensure the popup flips if it's been limited by its --available-height and it resizes. 10488 // Since the size() padding is smaller than the flip() padding, flip() will take precedence. 10489 padding: { 10490 top: collisionPadding.top + bias + biasTop, 10491 right: collisionPadding.right + bias + biasRight, 10492 bottom: collisionPadding.bottom + bias + biasBottom, 10493 left: collisionPadding.left + bias + biasLeft 10494 }, 10495 mainAxis: !shiftCrossAxis && collisionAvoidanceSide === "flip", 10496 crossAxis: collisionAvoidanceAlign === "flip" ? "alignment" : false, 10497 fallbackAxisSideDirection: collisionAvoidanceFallbackAxisSide 10498 }); 10499 const shiftMiddleware = shiftDisabled ? null : shift3({ 10500 ...commonCollisionProps, 10501 // Use the Layout Viewport to avoid shifting around when pinch-zooming. 10502 rootBoundary: shiftRootBoundary, 10503 mainAxis: collisionAvoidanceAlign !== "none", 10504 crossAxis: crossAxisShiftEnabled, 10505 limiter: sticky || shiftCrossAxis ? void 0 : limitShift3((limitData) => { 10506 if (!arrowRef.current) { 10507 return {}; 10508 } 10509 const { 10510 width, 10511 height 10512 } = arrowRef.current.getBoundingClientRect(); 10513 const sideAxis = getSideAxis(getSide(limitData.placement)); 10514 const arrowSize = sideAxis === "y" ? width : height; 10515 const offsetAmount = sideAxis === "y" ? collisionPadding.left + collisionPadding.right : collisionPadding.top + collisionPadding.bottom; 10516 return { 10517 offset: arrowSize / 2 + offsetAmount / 2 10518 }; 10519 }) 10520 }, [commonCollisionProps, sticky, shiftCrossAxis, shiftRootBoundary, collisionPadding, collisionAvoidanceAlign]); 10521 if (collisionAvoidanceSide === "shift" || collisionAvoidanceAlign === "shift" || placementAlign === "center") { 10522 middleware.push(shiftMiddleware, flipMiddleware); 10523 } else { 10524 middleware.push(flipMiddleware, shiftMiddleware); 10525 } 10526 middleware.push(size3({ 10527 ...commonCollisionProps, 10528 apply({ 10529 elements: { 10530 floating 10531 }, 10532 availableWidth: availableWidth2, 10533 availableHeight: availableHeight2, 10534 rects 10535 }) { 10536 if (!mountedRef.current) { 10537 return; 10538 } 10539 const floatingStyle = floating.style; 10540 floatingStyle.setProperty(AVAILABLE_WIDTH_VAR, `$availableWidth2}px`); 10541 floatingStyle.setProperty(AVAILABLE_HEIGHT_VAR, `$availableHeight2}px`); 10542 const dpr = getWindow(floating).devicePixelRatio || 1; 10543 const { 10544 x: x3, 10545 y: y3, 10546 width, 10547 height 10548 } = rects.reference; 10549 const anchorWidth2 = (Math.round((x3 + width) * dpr) - Math.round(x3 * dpr)) / dpr; 10550 const anchorHeight2 = (Math.round((y3 + height) * dpr) - Math.round(y3 * dpr)) / dpr; 10551 floatingStyle.setProperty(anchorWidth, `$anchorWidth2}px`); 10552 floatingStyle.setProperty(anchorHeight, `$anchorHeight2}px`); 10553 } 10554 }), arrow4((state) => ({ 10555 // `transform-origin` calculations rely on an element existing. If the arrow hasn't been set, 10556 // we'll create a fake element. 10557 element: arrowRef.current || ownerDocument(state.elements.floating).createElement("div"), 10558 // No padding for the fake arrow: it would displace aligned popups on narrow anchors. 10559 padding: arrowRef.current ? arrowPadding : 0 10560 }), [arrowPadding]), { 10561 name: "transformOrigin", 10562 fn(state) { 10563 const { 10564 elements: { 10565 floating 10566 }, 10567 middlewareData: middlewareData2, 10568 placement: renderedPlacement2, 10569 platform: platform3, 10570 rects, 10571 y: y3 10572 } = state; 10573 const renderedSide2 = getSide(renderedPlacement2); 10574 const renderedAlign2 = getAlignment(renderedPlacement2); 10575 const isVertical = getSideAxis(renderedSide2) === "y"; 10576 const arrowEl = arrowRef.current; 10577 const sideOffsetValue = typeof sideOffset === "function" ? sideOffset(getOffsetData(state, sideParam, isRtl)) : sideOffset; 10578 let crossOrigin; 10579 if (!arrowEl && renderedAlign2 && Math.abs(isVertical ? middlewareData2.shift?.x || 0 : middlewareData2.shift?.y || 0) <= 1) { 10580 crossOrigin = renderedAlign2 === "start" === (isVertical && platform3.isRTL?.(floating) === true) ? "100%" : "0%"; 10581 } else { 10582 const arrowOffset = isVertical ? middlewareData2.arrow?.x || 0 : middlewareData2.arrow?.y || 0; 10583 const arrowSize = isVertical ? arrowEl?.clientWidth || 0 : arrowEl?.clientHeight || 0; 10584 crossOrigin = `$arrowOffset + arrowSize / 2}px`; 10585 } 10586 let sideOrigin = renderedSide2 === "top" || renderedSide2 === "left" ? `calc(100% + $sideOffsetValue}px)` : `${-sideOffsetValue}px`; 10587 if (crossAxisShiftEnabled && isVertical && Math.abs(middlewareData2.shift?.y || 0) > sideOffsetValue) { 10588 sideOrigin = `$rects.reference.y + rects.reference.height / 2 - y3}px`; 10589 } 10590 floating.style.setProperty(transformOrigin, isVertical ? `$crossOrigin} $sideOrigin}` : `$sideOrigin} $crossOrigin}`); 10591 return {}; 10592 } 10593 }, hide4, adaptiveOrigin2); 10594 useIsoLayoutEffect(() => { 10595 if (!mounted && floatingRootContext) { 10596 floatingRootContext.update({ 10597 referenceElement: null, 10598 floatingElement: null, 10599 domReferenceElement: null, 10600 positionReference: null 10601 }); 10602 } 10603 }, [mounted, floatingRootContext]); 10604 const autoUpdateOptions = React52.useMemo(() => ({ 10605 ancestorScroll: !disableAnchorTracking, 10606 elementResize: !disableAnchorTracking && typeof ResizeObserver !== "undefined", 10607 layoutShift: !disableAnchorTracking && typeof IntersectionObserver !== "undefined" 10608 }), [disableAnchorTracking]); 10609 const { 10610 refs, 10611 elements, 10612 x: x2, 10613 y: y2, 10614 middlewareData, 10615 update: update2, 10616 placement: renderedPlacement, 10617 context, 10618 isPositioned, 10619 floatingStyles: originalFloatingStyles 10620 } = useFloatingHook({ 10621 rootContext: floatingRootContext, 10622 open: keepMounted ? mounted : void 0, 10623 placement, 10624 middleware, 10625 strategy: positionMethod, 10626 whileElementsMounted: keepMounted ? void 0 : (...args) => autoUpdate(...args, autoUpdateOptions), 10627 nodeId, 10628 externalTree 10629 }); 10630 const { 10631 sideX, 10632 sideY 10633 } = middlewareData.adaptiveOrigin || DEFAULT_SIDES; 10634 const resolvedPosition = isPositioned ? positionMethod : "fixed"; 10635 const floatingStyles = React52.useMemo(() => { 10636 let base; 10637 if (!isPositioned) { 10638 base = { 10639 position: resolvedPosition, 10640 top: 0, 10641 left: 0 10642 }; 10643 } else if (adaptiveOrigin2) { 10644 base = { 10645 position: resolvedPosition, 10646 [sideX]: x2, 10647 [sideY]: y2 10648 }; 10649 } else { 10650 base = { 10651 ...originalFloatingStyles, 10652 position: resolvedPosition 10653 }; 10654 } 10655 base[AVAILABLE_WIDTH_VAR] = "100vw"; 10656 base[AVAILABLE_HEIGHT_VAR] = "100vh"; 10657 if (!isPositioned) { 10658 base.opacity = 0; 10659 } 10660 return base; 10661 }, [adaptiveOrigin2, resolvedPosition, sideX, x2, sideY, y2, originalFloatingStyles, isPositioned]); 10662 const registeredPositionReferenceRef = React52.useRef(null); 10663 useIsoLayoutEffect(() => { 10664 if (!mounted) { 10665 return; 10666 } 10667 const anchorValue = anchorValueRef.current; 10668 const resolvedAnchor = typeof anchorValue === "function" ? anchorValue() : anchorValue; 10669 const unwrappedElement = (isRef(resolvedAnchor) ? resolvedAnchor.current : resolvedAnchor) || null; 10670 const finalAnchor = unwrappedElement || null; 10671 if (finalAnchor !== registeredPositionReferenceRef.current) { 10672 refs.setPositionReference(finalAnchor); 10673 registeredPositionReferenceRef.current = finalAnchor; 10674 } 10675 }, [mounted, refs, anchorDep, anchorValueRef]); 10676 React52.useEffect(() => { 10677 if (!mounted) { 10678 return; 10679 } 10680 const anchorValue = anchorValueRef.current; 10681 if (typeof anchorValue === "function") { 10682 return; 10683 } 10684 if (isRef(anchorValue) && anchorValue.current !== registeredPositionReferenceRef.current) { 10685 refs.setPositionReference(anchorValue.current); 10686 registeredPositionReferenceRef.current = anchorValue.current; 10687 } 10688 }, [mounted, refs, anchorDep, anchorValueRef]); 10689 React52.useEffect(() => { 10690 if (keepMounted && mounted && elements.reference && elements.floating) { 10691 return autoUpdate(elements.reference, elements.floating, update2, autoUpdateOptions); 10692 } 10693 return void 0; 10694 }, [keepMounted, mounted, elements, update2, autoUpdateOptions]); 10695 const renderedSide = getSide(renderedPlacement); 10696 const logicalRenderedSide = getLogicalSide(sideParam, renderedSide, isRtl); 10697 const renderedAlign = getAlignment(renderedPlacement) || "center"; 10698 const anchorHidden2 = Boolean(middlewareData.hide?.referenceHidden); 10699 useIsoLayoutEffect(() => { 10700 if (lazyFlip && mounted && isPositioned && (renderedSide !== side || lockAlign && renderedAlign !== placementAlign)) { 10701 setMountPlacement(renderedPlacement); 10702 } 10703 }, [lazyFlip, lockAlign, mounted, isPositioned, renderedPlacement, renderedSide, renderedAlign, side, placementAlign]); 10704 const arrowStyles = React52.useMemo(() => ({ 10705 position: "absolute", 10706 top: middlewareData.arrow?.y, 10707 left: middlewareData.arrow?.x 10708 }), [middlewareData.arrow]); 10709 const arrowUncentered = middlewareData.arrow?.centerOffset !== 0; 10710 return React52.useMemo(() => ({ 10711 positionerStyles: floatingStyles, 10712 arrowStyles, 10713 arrowRef, 10714 arrowUncentered, 10715 side: logicalRenderedSide, 10716 align: renderedAlign, 10717 physicalSide: renderedSide, 10718 anchorHidden: anchorHidden2, 10719 refs, 10720 context, 10721 isPositioned, 10722 update: update2 10723 }), [floatingStyles, arrowStyles, arrowRef, arrowUncentered, logicalRenderedSide, renderedAlign, renderedSide, anchorHidden2, refs, context, isPositioned, update2]); 10724 } 10725 function isRef(param) { 10726 return param != null && "current" in param; 10727 } 10728 10729 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/getDisabledMountTransitionStyles.mjs 10730 function getDisabledMountTransitionStyles(transitionStatus) { 10731 return transitionStatus === "starting" ? DISABLED_TRANSITIONS_STYLE : EMPTY_OBJECT; 10732 } 10733 10734 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/usePositioner.mjs 10735 function usePositioner(componentProps, state, { 10736 styles, 10737 transitionStatus, 10738 props, 10739 refs, 10740 hidden, 10741 inert = false 10742 }) { 10743 const style = { 10744 ...styles 10745 }; 10746 if (inert) { 10747 style.pointerEvents = "none"; 10748 } 10749 return useRenderElement("div", componentProps, { 10750 state, 10751 ref: refs, 10752 props: [{ 10753 role: "presentation", 10754 hidden, 10755 style 10756 }, getDisabledMountTransitionStyles(transitionStatus), props], 10757 stateAttributesMapping: popupStateMapping 10758 }); 10759 } 10760 10761 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/useAnchoredPopupScrollLock.mjs 10762 var React53 = __toESM(require_react(), 1); 10763 var VIEWPORT_WIDTH_TOLERANCE_PX = 20; 10764 function useAnchoredPopupScrollLock(enabled, touchOpen, positionerElement, referenceElement) { 10765 const [touchOpenShouldLockScroll, setTouchOpenShouldLockScroll] = React53.useState(false); 10766 useIsoLayoutEffect(() => { 10767 if (!enabled || !touchOpen || positionerElement == null) { 10768 setTouchOpenShouldLockScroll(false); 10769 return; 10770 } 10771 const viewportWidth = ownerDocument(positionerElement).documentElement.clientWidth; 10772 const popupWidth2 = positionerElement.offsetWidth; 10773 setTouchOpenShouldLockScroll(viewportWidth > 0 && popupWidth2 > 0 && popupWidth2 >= viewportWidth - VIEWPORT_WIDTH_TOLERANCE_PX); 10774 }, [enabled, touchOpen, positionerElement]); 10775 useScrollLock(enabled && (!touchOpen || touchOpenShouldLockScroll), referenceElement); 10776 } 10777 10778 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/listbox-separator/ListboxSeparator.mjs 10779 var React54 = __toESM(require_react(), 1); 10780 var ListboxSeparator = /* @__PURE__ */ React54.forwardRef(function ListboxSeparator2(componentProps, forwardedRef) { 10781 const { 10782 className, 10783 render, 10784 orientation = "horizontal", 10785 style, 10786 ...elementProps 10787 } = componentProps; 10788 const state = { 10789 orientation 10790 }; 10791 return useRenderElement("div", componentProps, { 10792 state, 10793 ref: forwardedRef, 10794 props: [{ 10795 role: "presentation" 10796 }, elementProps] 10797 }); 10798 }); 10799 if (true) ListboxSeparator.displayName = "ListboxSeparator"; 10800 10801 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/useRegisteredLabelId.mjs 10802 function useRegisteredLabelId(idProp, setLabelId) { 10803 const id = useBaseUiId(idProp); 10804 useIsoLayoutEffect(() => { 10805 setLabelId(id); 10806 return () => { 10807 setLabelId((currentId) => currentId === id ? void 0 : currentId); 10808 }; 10809 }, [id, setLabelId]); 10810 return id; 10811 } 10812 10813 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/labelable-provider/useLabel.mjs 10814 function useLabel(params = {}) { 10815 const { 10816 id: idProp, 10817 fallbackControlId, 10818 native = false, 10819 setLabelId: setLabelIdProp, 10820 focusControl: focusControlProp 10821 } = params; 10822 const { 10823 controlId: contextControlId, 10824 setLabelId: setContextLabelId 10825 } = useLabelableContext(); 10826 const syncLabelId = useStableCallback((nextLabelId) => { 10827 setContextLabelId(nextLabelId); 10828 setLabelIdProp?.(nextLabelId); 10829 }); 10830 const id = useRegisteredLabelId(idProp, syncLabelId); 10831 const resolvedControlId = contextControlId ?? fallbackControlId; 10832 function focusControl(event) { 10833 if (focusControlProp) { 10834 focusControlProp(event, resolvedControlId); 10835 return; 10836 } 10837 if (!resolvedControlId) { 10838 return; 10839 } 10840 const controlElement = getControlById(event.currentTarget, resolvedControlId); 10841 if (isHTMLElement(controlElement)) { 10842 focusElementWithVisible(controlElement); 10843 } 10844 } 10845 function handleInteraction(event) { 10846 const target = getTarget(event.nativeEvent); 10847 if (closest(target, "button,input,select,textarea")) { 10848 return; 10849 } 10850 if (!event.defaultPrevented && event.detail > 1) { 10851 event.preventDefault(); 10852 } 10853 if (native) { 10854 return; 10855 } 10856 focusControl(event); 10857 } 10858 return native ? { 10859 id, 10860 htmlFor: resolvedControlId, 10861 onMouseDown: handleInteraction 10862 } : { 10863 id, 10864 onClick: handleInteraction, 10865 onPointerDown(event) { 10866 event.preventDefault(); 10867 } 10868 }; 10869 } 10870 function getControlById(label, id) { 10871 let root = label.getRootNode(); 10872 while (isShadowRoot(root)) { 10873 const element = root.getElementById(id); 10874 if (element) { 10875 return element; 10876 } 10877 root = root.host.getRootNode(); 10878 } 10879 return ownerDocument(label).getElementById(id); 10880 } 10881 function focusElementWithVisible(element) { 10882 element.focus({ 10883 // Available from Chrome 144+ (January 2026). 10884 // Safari and Firefox already support it. 10885 focusVisible: true 10886 }); 10887 } 10888 10889 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/ItemIndicator.mjs 10890 var React55 = __toESM(require_react(), 1); 10891 var ItemIndicator = /* @__PURE__ */ React55.memo(/* @__PURE__ */ React55.forwardRef(function ItemIndicator2(componentProps, forwardedRef) { 10892 const { 10893 render, 10894 className, 10895 style, 10896 keepMounted, 10897 selected, 10898 ...elementProps 10899 } = componentProps; 10900 const indicatorRef = React55.useRef(null); 10901 const { 10902 transitionStatus, 10903 setMounted 10904 } = useTransitionStatus(selected); 10905 const state = { 10906 selected, 10907 transitionStatus 10908 }; 10909 const element = useRenderElement("span", componentProps, { 10910 ref: [forwardedRef, indicatorRef], 10911 state, 10912 props: [{ 10913 "aria-hidden": true, 10914 children: "\u2714\uFE0F" 10915 }, elementProps], 10916 stateAttributesMapping: transitionStatusMapping 10917 }); 10918 useOpenChangeComplete({ 10919 batch: true, 10920 enabled: !selected, 10921 open: selected, 10922 ref: indicatorRef, 10923 onComplete() { 10924 if (!selected) { 10925 setMounted(false); 10926 } 10927 } 10928 }); 10929 return element; 10930 })); 10931 if (true) ItemIndicator.displayName = "ItemIndicator"; 10932 10933 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/context-menu/root/ContextMenuRootContext.mjs 10934 var React56 = __toESM(require_react(), 1); 10935 var ContextMenuRootContext = /* @__PURE__ */ React56.createContext(void 0); 10936 if (true) ContextMenuRootContext.displayName = "ContextMenuRootContext"; 10937 function useContextMenuRootContext(optional = true) { 10938 const context = React56.useContext(ContextMenuRootContext); 10939 if (context === void 0 && !optional) { 10940 throw new Error(true ? "Base UI: ContextMenuRootContext is missing. ContextMenu parts must be placed within <ContextMenu.Root>." : formatErrorMessage_default(25)); 10941 } 10942 return context; 10943 } 10944 10945 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/index.parts.mjs 10946 var index_parts_exports = {}; 10947 __export(index_parts_exports, { 10948 Arrow: () => MenuArrow, 10949 Backdrop: () => MenuBackdrop, 10950 CheckboxItem: () => MenuCheckboxItem, 10951 CheckboxItemIndicator: () => MenuCheckboxItemIndicator, 10952 Clear: () => MenuClear, 10953 Empty: () => MenuEmpty, 10954 FilterProvider: () => MenuFilterProvider, 10955 Group: () => MenuGroup, 10956 GroupLabel: () => MenuGroupLabel, 10957 Handle: () => MenuHandle, 10958 Input: () => MenuInput, 10959 Item: () => MenuItem, 10960 LinkItem: () => MenuLinkItem, 10961 List: () => MenuList, 10962 Popup: () => MenuPopup, 10963 Portal: () => MenuPortal, 10964 Positioner: () => MenuPositioner, 10965 RadioGroup: () => MenuRadioGroup, 10966 RadioItem: () => MenuRadioItem, 10967 RadioItemIndicator: () => MenuRadioItemIndicator, 10968 Root: () => MenuRoot, 10969 Separator: () => Separator, 10970 SubmenuRoot: () => MenuSubmenuRoot, 10971 SubmenuTrigger: () => MenuSubmenuTrigger, 10972 Trigger: () => MenuTrigger, 10973 Viewport: () => MenuViewport, 10974 createHandle: () => createMenuHandle, 10975 useFilter: () => getFilter 10976 }); 10977 10978 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/arrow/MenuArrow.mjs 10979 var React59 = __toESM(require_react(), 1); 10980 10981 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/positioner/MenuPositionerContext.mjs 10982 var React57 = __toESM(require_react(), 1); 10983 var MenuPositionerContext = /* @__PURE__ */ React57.createContext(void 0); 10984 if (true) MenuPositionerContext.displayName = "MenuPositionerContext"; 10985 function useMenuPositionerContext(optional) { 10986 const context = React57.useContext(MenuPositionerContext); 10987 if (context === void 0 && !optional) { 10988 throw new Error(true ? "Base UI: MenuPositionerContext is missing. MenuPositioner parts must be placed within <Menu.Positioner>." : formatErrorMessage_default(33)); 10989 } 10990 return context; 10991 } 10992 10993 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/root/MenuRootContext.mjs 10994 var React58 = __toESM(require_react(), 1); 10995 var MenuRootContext = /* @__PURE__ */ React58.createContext(void 0); 10996 if (true) MenuRootContext.displayName = "MenuRootContext"; 10997 function useMenuRootContext(optional) { 10998 const context = React58.useContext(MenuRootContext); 10999 if (context === void 0 && !optional) { 11000 throw new Error(true ? "Base UI: MenuRootContext is missing. Menu parts must be placed within <Menu.Root>." : formatErrorMessage_default(36)); 11001 } 11002 return context; 11003 } 11004 11005 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/arrow/MenuArrow.mjs 11006 var MenuArrow = /* @__PURE__ */ React59.forwardRef(function MenuArrow2(componentProps, forwardedRef) { 11007 const { 11008 render, 11009 className, 11010 style, 11011 ...elementProps 11012 } = componentProps; 11013 const { 11014 store 11015 } = useMenuRootContext(); 11016 const { 11017 arrowRef, 11018 side, 11019 align, 11020 arrowUncentered, 11021 arrowStyles 11022 } = useMenuPositionerContext(); 11023 const open2 = store.useState("open"); 11024 const state = { 11025 open: open2, 11026 side, 11027 align, 11028 uncentered: arrowUncentered 11029 }; 11030 return useRenderElement("div", componentProps, { 11031 ref: [arrowRef, forwardedRef], 11032 stateAttributesMapping: popupStateMapping, 11033 state, 11034 props: { 11035 style: arrowStyles, 11036 "aria-hidden": true, 11037 ...elementProps 11038 } 11039 }); 11040 }); 11041 if (true) MenuArrow.displayName = "MenuArrow"; 11042 11043 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/backdrop/MenuBackdrop.mjs 11044 var React60 = __toESM(require_react(), 1); 11045 var MenuBackdrop = /* @__PURE__ */ React60.forwardRef(function MenuBackdrop2(componentProps, forwardedRef) { 11046 const { 11047 render, 11048 className, 11049 style, 11050 ...elementProps 11051 } = componentProps; 11052 const { 11053 store 11054 } = useMenuRootContext(); 11055 const open2 = store.useState("open"); 11056 const mounted = store.useState("mounted"); 11057 const transitionStatus = store.useState("transitionStatus"); 11058 const lastOpenChangeReason = store.useState("lastOpenChangeReason"); 11059 const contextMenuContext = useContextMenuRootContext(); 11060 const state = { 11061 open: open2, 11062 transitionStatus 11063 }; 11064 return useRenderElement("div", componentProps, { 11065 ref: contextMenuContext?.backdropRef ? [forwardedRef, contextMenuContext.backdropRef] : forwardedRef, 11066 state, 11067 stateAttributesMapping: popupTransitionStateMapping, 11068 props: [{ 11069 role: "presentation", 11070 hidden: !mounted, 11071 style: { 11072 pointerEvents: lastOpenChangeReason === reason_parts_exports.triggerHover ? "none" : void 0, 11073 userSelect: "none", 11074 WebkitUserSelect: "none" 11075 } 11076 }, elementProps] 11077 }); 11078 }); 11079 if (true) MenuBackdrop.displayName = "MenuBackdrop"; 11080 11081 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/checkbox-item/MenuCheckboxItem.mjs 11082 var React65 = __toESM(require_react(), 1); 11083 11084 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/filter-root/MenuFilterContext.mjs 11085 var React61 = __toESM(require_react(), 1); 11086 var MenuFilterImplContext = /* @__PURE__ */ React61.createContext(null); 11087 if (true) MenuFilterImplContext.displayName = "MenuFilterImplContext"; 11088 function useMenuFilterImpl(scope = "root") { 11089 const impl = React61.useContext(MenuFilterImplContext); 11090 const root = React61.useContext(MenuRootContext); 11091 if (impl === null || root === void 0) { 11092 return null; 11093 } 11094 const filterable = scope === "submenu-trigger" ? root.virtualFocus || root.parentVirtualFocus : root.virtualFocus; 11095 return filterable ? impl : null; 11096 } 11097 function useMenuFilterPart(part) { 11098 if (useMenuFilterImpl() === null) { 11099 throw new Error(true ? `Base UI: <Menu.$part}> must be placed in a menu wrapped in <Menu.FilterProvider>. It reads the filter query and the matching items from the provider, which a plain menu does not have. Wrap the <Menu.Root> or <Menu.SubmenuRoot> it belongs to in <Menu.FilterProvider>. See https://base-ui.com/react/components/menu#filtering` : formatErrorMessage_default(104, part)); 11100 } 11101 } 11102 var UNFILTERED = { 11103 visible: true, 11104 ref: null 11105 }; 11106 function useUnfilteredItem() { 11107 return UNFILTERED; 11108 } 11109 function useMenuFilterItem(props, forwardedRef, scope = "root") { 11110 const impl = useMenuFilterImpl(scope); 11111 const useItem = (scope === "submenu-trigger" ? impl?.useSubmenuTrigger : impl?.useItem) ?? useUnfilteredItem; 11112 const item = useItem({ 11113 label: props.label, 11114 children: props.children, 11115 render: props.render 11116 }); 11117 const ref = useMergedRefs(forwardedRef, item.ref); 11118 return { 11119 visible: item.visible, 11120 ref, 11121 props: item.props 11122 }; 11123 } 11124 11125 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/checkbox-item/MenuCheckboxItemContext.mjs 11126 var React62 = __toESM(require_react(), 1); 11127 var MenuCheckboxItemContext = /* @__PURE__ */ React62.createContext(void 0); 11128 if (true) MenuCheckboxItemContext.displayName = "MenuCheckboxItemContext"; 11129 function useMenuCheckboxItemContext() { 11130 const context = React62.useContext(MenuCheckboxItemContext); 11131 if (context === void 0) { 11132 throw new Error(true ? "Base UI: MenuCheckboxItemContext is missing. MenuCheckboxItem parts must be placed within <Menu.CheckboxItem>." : formatErrorMessage_default(30)); 11133 } 11134 return context; 11135 } 11136 11137 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/item/useMenuItem.mjs 11138 var React64 = __toESM(require_react(), 1); 11139 11140 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/item/useMenuItemCommonProps.mjs 11141 var React63 = __toESM(require_react(), 1); 11142 function preventMouseDownDefault(event) { 11143 event.preventDefault(); 11144 } 11145 function useMenuItemCommonProps(params) { 11146 const { 11147 closeOnClick, 11148 highlighted, 11149 id, 11150 nodeId, 11151 store, 11152 typingRef, 11153 itemRef, 11154 itemMetadata 11155 } = params; 11156 const rootContext = useMenuRootContext(); 11157 const contextMenuContext = useContextMenuRootContext(true); 11158 const isSubmenuTrigger = itemMetadata.type === "submenu-trigger"; 11159 const virtualFocus = isSubmenuTrigger ? rootContext.parentVirtualFocus : rootContext.virtualFocus; 11160 const selectionStore = isSubmenuTrigger && rootContext.parent.type === "menu" ? rootContext.parent.store : rootContext.store; 11161 const ariaSelected = selectionStore.useState("webkitAriaSelected", highlighted); 11162 const { 11163 events: menuEvents 11164 } = store.useState("floatingTreeRoot"); 11165 const open2 = store.useState("open"); 11166 const isContextMenu = contextMenuContext !== void 0; 11167 const tabIndex = !virtualFocus && open2 && highlighted ? 0 : -1; 11168 return React63.useMemo(() => ({ 11169 id, 11170 role: "menuitem", 11171 tabIndex, 11172 "aria-selected": ariaSelected, 11173 // Real focus stays on the input or list that owns virtual navigation. 11174 onMouseDown: virtualFocus ? preventMouseDownDefault : void 0, 11175 onKeyDown(event) { 11176 if (event.key === " " && typingRef?.current) { 11177 event.preventDefault(); 11178 } 11179 }, 11180 onMouseMove(event) { 11181 if (!nodeId) { 11182 return; 11183 } 11184 menuEvents.emit("itemhover", { 11185 nodeId, 11186 target: event.currentTarget 11187 }); 11188 }, 11189 onClick(event) { 11190 if (closeOnClick) { 11191 menuEvents.emit("close", { 11192 domEvent: event.nativeEvent, 11193 reason: reason_parts_exports.itemPress 11194 }); 11195 } 11196 }, 11197 onMouseUp(event) { 11198 if (contextMenuContext) { 11199 const initialCursorPoint = contextMenuContext.initialCursorPointRef.current; 11200 contextMenuContext.initialCursorPointRef.current = null; 11201 if (isContextMenu && initialCursorPoint && Math.abs(event.clientX - initialCursorPoint.x) <= 1 && Math.abs(event.clientY - initialCursorPoint.y) <= 1) { 11202 return; 11203 } 11204 if (isContextMenu && !parts_exports.os.mac && event.button === 2) { 11205 return; 11206 } 11207 } 11208 if (itemRef.current && store.context.allowMouseUpTriggerRef.current && (!isContextMenu || event.button === 2)) { 11209 if (itemMetadata.type === "regular-item") { 11210 dispatchClickWithModifiers(itemRef.current, event, { 11211 detail: 1, 11212 pointerType: "mouse" 11213 }); 11214 } 11215 } 11216 } 11217 }), [closeOnClick, tabIndex, id, menuEvents, nodeId, store.context.allowMouseUpTriggerRef, typingRef, itemRef, contextMenuContext, isContextMenu, itemMetadata.type, ariaSelected, virtualFocus]); 11218 } 11219 11220 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/item/useMenuItem.mjs 11221 var REGULAR_ITEM = { 11222 type: "regular-item" 11223 }; 11224 function useMenuItem(params) { 11225 const { 11226 closeOnClick, 11227 disabled: disabled2, 11228 highlighted, 11229 id, 11230 store, 11231 typingRef = store.context.typingRef, 11232 nativeButton, 11233 itemMetadata, 11234 nodeId 11235 } = params; 11236 const itemRef = React64.useRef(null); 11237 const { 11238 getButtonProps, 11239 buttonRef 11240 } = useButton({ 11241 disabled: disabled2, 11242 focusableWhenDisabled: true, 11243 native: nativeButton, 11244 composite: true 11245 }); 11246 const commonProps = useMenuItemCommonProps({ 11247 closeOnClick, 11248 highlighted, 11249 id, 11250 nodeId, 11251 store, 11252 typingRef, 11253 itemRef, 11254 itemMetadata 11255 }); 11256 const getItemProps = React64.useCallback((externalProps) => { 11257 return mergeProps(commonProps, { 11258 onMouseEnter(event) { 11259 if (itemMetadata.type !== "submenu-trigger") { 11260 return; 11261 } 11262 itemMetadata.setActive(event.nativeEvent); 11263 } 11264 }, externalProps, getButtonProps); 11265 }, [commonProps, getButtonProps, itemMetadata]); 11266 const mergedRef = useMergedRefs(itemRef, buttonRef); 11267 return React64.useMemo(() => ({ 11268 getItemProps, 11269 itemRef: mergedRef 11270 }), [getItemProps, mergedRef]); 11271 } 11272 11273 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/checkbox-item/MenuCheckboxItemDataAttributes.mjs 11274 var checked = "data-checked"; 11275 var unchecked = "data-unchecked"; 11276 11277 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/utils/stateAttributesMapping.mjs 11278 var itemMapping = { 11279 checked(value) { 11280 if (value) { 11281 return { 11282 [checked]: "" 11283 }; 11284 } 11285 return { 11286 [unchecked]: "" 11287 }; 11288 }, 11289 ...transitionStatusMapping 11290 }; 11291 11292 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/checkbox-item/MenuCheckboxItem.mjs 11293 var import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1); 11294 var MenuCheckboxItemPlain = /* @__PURE__ */ React65.forwardRef(function MenuCheckboxItemPlain2(componentProps, forwardedRef) { 11295 const { 11296 render, 11297 className, 11298 id: idProp, 11299 label, 11300 nativeButton = false, 11301 disabled: disabledProp = false, 11302 closeOnClick = false, 11303 checked: checked2 = false, 11304 onCheckedChange, 11305 style, 11306 ...elementProps 11307 } = componentProps; 11308 const { 11309 store 11310 } = useMenuRootContext(); 11311 const listItem = useCompositeListItem({ 11312 guess: true, 11313 label 11314 }); 11315 const id = useBaseUiId(idProp); 11316 const rootDisabled = store.useState("disabled"); 11317 const highlighted = store.useState("isActive", listItem.index); 11318 const nodeId = store.useState("floatingNodeId"); 11319 const itemProps = store.useState("itemProps"); 11320 const disabled2 = disabledProp || rootDisabled; 11321 const { 11322 getItemProps, 11323 itemRef 11324 } = useMenuItem({ 11325 closeOnClick, 11326 disabled: disabled2, 11327 highlighted, 11328 id, 11329 store, 11330 nativeButton, 11331 nodeId, 11332 itemMetadata: REGULAR_ITEM 11333 }); 11334 const state = React65.useMemo(() => ({ 11335 disabled: disabled2, 11336 highlighted, 11337 checked: checked2 11338 }), [disabled2, highlighted, checked2]); 11339 function handleClick(event) { 11340 const details = createChangeEventDetails(reason_parts_exports.itemPress, event.nativeEvent, void 0, { 11341 preventUnmountOnClose: NOOP 11342 }); 11343 onCheckedChange?.(!checked2, details); 11344 } 11345 const element = useRenderElement("div", componentProps, { 11346 state, 11347 stateAttributesMapping: itemMapping, 11348 props: [itemProps, { 11349 role: "menuitemcheckbox", 11350 "aria-checked": checked2, 11351 onClick: handleClick 11352 }, elementProps, getItemProps], 11353 ref: [itemRef, forwardedRef, listItem.ref] 11354 }); 11355 return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(MenuCheckboxItemContext.Provider, { 11356 value: state, 11357 children: element 11358 }); 11359 }); 11360 if (true) MenuCheckboxItemPlain.displayName = "MenuCheckboxItemPlain"; 11361 var MenuCheckboxItem = /* @__PURE__ */ React65.forwardRef(function MenuCheckboxItem2(props, forwardedRef) { 11362 const { 11363 checked: checkedProp, 11364 defaultChecked, 11365 onCheckedChange, 11366 ...plainProps 11367 } = props; 11368 const [checked2, setChecked] = useControlled({ 11369 controlled: checkedProp, 11370 default: defaultChecked ?? false, 11371 name: "MenuCheckboxItem", 11372 state: "checked" 11373 }); 11374 const filterItem = useMenuFilterItem(props, forwardedRef); 11375 function handleCheckedChange(nextChecked, eventDetails) { 11376 onCheckedChange?.(nextChecked, eventDetails); 11377 if (!eventDetails.isCanceled) { 11378 setChecked(nextChecked); 11379 } 11380 } 11381 if (!filterItem.visible) { 11382 return null; 11383 } 11384 return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(MenuCheckboxItemPlain, { 11385 ...plainProps, 11386 checked: checked2, 11387 onCheckedChange: handleCheckedChange, 11388 ref: filterItem.ref 11389 }); 11390 }); 11391 if (true) MenuCheckboxItem.displayName = "MenuCheckboxItem"; 11392 11393 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/checkbox-item-indicator/MenuCheckboxItemIndicator.mjs 11394 var React66 = __toESM(require_react(), 1); 11395 var MenuCheckboxItemIndicator = /* @__PURE__ */ React66.forwardRef(function MenuCheckboxItemIndicator2(componentProps, forwardedRef) { 11396 const { 11397 render, 11398 className, 11399 style, 11400 keepMounted = false, 11401 ...elementProps 11402 } = componentProps; 11403 const item = useMenuCheckboxItemContext(); 11404 const indicatorRef = React66.useRef(null); 11405 const { 11406 transitionStatus, 11407 mounted, 11408 setMounted 11409 } = useTransitionStatus(item.checked); 11410 useOpenChangeComplete({ 11411 batch: true, 11412 enabled: !item.checked, 11413 open: item.checked, 11414 ref: indicatorRef, 11415 onComplete() { 11416 if (!item.checked) { 11417 setMounted(false); 11418 } 11419 } 11420 }); 11421 const state = { 11422 checked: item.checked, 11423 disabled: item.disabled, 11424 highlighted: item.highlighted, 11425 transitionStatus 11426 }; 11427 const element = useRenderElement("span", componentProps, { 11428 state, 11429 ref: [forwardedRef, indicatorRef], 11430 stateAttributesMapping: itemMapping, 11431 props: { 11432 "aria-hidden": true, 11433 ...elementProps 11434 }, 11435 enabled: keepMounted || mounted 11436 }); 11437 return element; 11438 }); 11439 if (true) MenuCheckboxItemIndicator.displayName = "MenuCheckboxItemIndicator"; 11440 11441 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/group/MenuGroup.mjs 11442 var React68 = __toESM(require_react(), 1); 11443 11444 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/group/MenuGroupContext.mjs 11445 var React67 = __toESM(require_react(), 1); 11446 var MenuGroupContext = /* @__PURE__ */ React67.createContext(void 0); 11447 if (true) MenuGroupContext.displayName = "MenuGroupContext"; 11448 function useMenuGroupRootContext() { 11449 const context = React67.useContext(MenuGroupContext); 11450 if (context === void 0) { 11451 throw new Error(true ? "Base UI: MenuGroupContext is missing. Menu group parts must be used within <Menu.Group> or <Menu.RadioGroup>." : formatErrorMessage_default(31)); 11452 } 11453 return context; 11454 } 11455 11456 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/group/MenuGroup.mjs 11457 var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1); 11458 var MenuGroupPlain = /* @__PURE__ */ React68.forwardRef(function MenuGroupPlain2(componentProps, forwardedRef) { 11459 const { 11460 render, 11461 className, 11462 style, 11463 ...elementProps 11464 } = componentProps; 11465 const [labelId, setLabelId] = React68.useState(void 0); 11466 const element = useRenderElement("div", componentProps, { 11467 ref: forwardedRef, 11468 props: { 11469 role: "group", 11470 "aria-labelledby": labelId, 11471 ...elementProps 11472 } 11473 }); 11474 return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(MenuGroupContext.Provider, { 11475 value: setLabelId, 11476 children: element 11477 }); 11478 }); 11479 if (true) MenuGroupPlain.displayName = "MenuGroupPlain"; 11480 var MenuGroup = /* @__PURE__ */ React68.forwardRef(function MenuGroup2(props, forwardedRef) { 11481 const Group3 = useMenuFilterImpl()?.Group ?? MenuGroupPlain; 11482 return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Group3, { 11483 ...props, 11484 ref: forwardedRef 11485 }); 11486 }); 11487 if (true) MenuGroup.displayName = "MenuGroup"; 11488 11489 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/group-label/MenuGroupLabel.mjs 11490 var React69 = __toESM(require_react(), 1); 11491 var MenuGroupLabel = /* @__PURE__ */ React69.forwardRef(function MenuGroupLabel2(componentProps, forwardedRef) { 11492 const { 11493 render, 11494 className, 11495 style, 11496 id: idProp, 11497 ...elementProps 11498 } = componentProps; 11499 const id = useBaseUiId(idProp); 11500 const setLabelId = useMenuGroupRootContext(); 11501 useIsoLayoutEffect(() => { 11502 setLabelId(id); 11503 return () => { 11504 setLabelId((currentId) => currentId === id ? void 0 : currentId); 11505 }; 11506 }, [setLabelId, id]); 11507 return useRenderElement("div", componentProps, { 11508 ref: forwardedRef, 11509 props: { 11510 id, 11511 "aria-hidden": true, 11512 ...elementProps 11513 } 11514 }); 11515 }); 11516 if (true) MenuGroupLabel.displayName = "MenuGroupLabel"; 11517 11518 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/item/MenuItem.mjs 11519 var React70 = __toESM(require_react(), 1); 11520 var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1); 11521 var MenuItemPlain = /* @__PURE__ */ React70.forwardRef(function MenuItemPlain2(componentProps, forwardedRef) { 11522 const { 11523 render, 11524 className, 11525 id: idProp, 11526 label, 11527 nativeButton = false, 11528 disabled: disabledProp = false, 11529 closeOnClick = true, 11530 style, 11531 ...elementProps 11532 } = componentProps; 11533 const { 11534 store 11535 } = useMenuRootContext(); 11536 const listItem = useCompositeListItem({ 11537 guess: true, 11538 label 11539 }); 11540 const id = useBaseUiId(idProp); 11541 const rootDisabled = store.useState("disabled"); 11542 const highlighted = store.useState("isActive", listItem.index); 11543 const nodeId = store.useState("floatingNodeId"); 11544 const itemProps = store.useState("itemProps"); 11545 const disabled2 = disabledProp || rootDisabled; 11546 const { 11547 getItemProps, 11548 itemRef 11549 } = useMenuItem({ 11550 closeOnClick, 11551 disabled: disabled2, 11552 highlighted, 11553 id, 11554 store, 11555 nativeButton, 11556 nodeId, 11557 itemMetadata: REGULAR_ITEM 11558 }); 11559 const state = { 11560 disabled: disabled2, 11561 highlighted 11562 }; 11563 return useRenderElement("div", componentProps, { 11564 state, 11565 props: [itemProps, elementProps, getItemProps], 11566 ref: [itemRef, forwardedRef, listItem.ref] 11567 }); 11568 }); 11569 if (true) MenuItemPlain.displayName = "MenuItemPlain"; 11570 var MenuItem = /* @__PURE__ */ React70.forwardRef(function MenuItem2(props, forwardedRef) { 11571 const filterItem = useMenuFilterItem(props, forwardedRef); 11572 if (!filterItem.visible) { 11573 return null; 11574 } 11575 return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(MenuItemPlain, { 11576 ...props, 11577 ref: filterItem.ref 11578 }); 11579 }); 11580 if (true) MenuItem.displayName = "MenuItem"; 11581 11582 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/link-item/MenuLinkItem.mjs 11583 var React71 = __toESM(require_react(), 1); 11584 var import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1); 11585 var MenuLinkItemPlain = /* @__PURE__ */ React71.forwardRef(function MenuLinkItemPlain2(componentProps, forwardedRef) { 11586 const { 11587 render, 11588 className, 11589 id: idProp, 11590 label, 11591 closeOnClick = false, 11592 style, 11593 ...elementProps 11594 } = componentProps; 11595 const { 11596 store 11597 } = useMenuRootContext(); 11598 const linkRef = React71.useRef(null); 11599 const listItem = useCompositeListItem({ 11600 guess: true, 11601 label 11602 }); 11603 const id = useBaseUiId(idProp); 11604 const highlighted = store.useState("isActive", listItem.index); 11605 const nodeId = store.useState("floatingNodeId"); 11606 const itemProps = store.useState("itemProps"); 11607 const typingRef = store.context.typingRef; 11608 const { 11609 getButtonProps, 11610 buttonRef 11611 } = useButton({ 11612 native: false, 11613 composite: true 11614 }); 11615 const commonProps = useMenuItemCommonProps({ 11616 closeOnClick, 11617 highlighted, 11618 id, 11619 nodeId, 11620 store, 11621 typingRef, 11622 itemRef: linkRef, 11623 itemMetadata: REGULAR_ITEM 11624 }); 11625 function getItemProps(externalProps) { 11626 return mergeProps(commonProps, externalProps, getButtonProps); 11627 } 11628 const state = { 11629 highlighted 11630 }; 11631 return useRenderElement("a", componentProps, { 11632 state, 11633 props: [itemProps, elementProps, getItemProps], 11634 ref: [linkRef, buttonRef, forwardedRef, listItem.ref] 11635 }); 11636 }); 11637 if (true) MenuLinkItemPlain.displayName = "MenuLinkItemPlain"; 11638 var MenuLinkItem = /* @__PURE__ */ React71.forwardRef(function MenuLinkItem2(props, forwardedRef) { 11639 const filterItem = useMenuFilterItem(props, forwardedRef); 11640 if (!filterItem.visible) { 11641 return null; 11642 } 11643 return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(MenuLinkItemPlain, { 11644 ...props, 11645 ref: filterItem.ref 11646 }); 11647 }); 11648 if (true) MenuLinkItem.displayName = "MenuLinkItem"; 11649 11650 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/popup/MenuPopup.mjs 11651 var React76 = __toESM(require_react(), 1); 11652 11653 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/toolbar/root/ToolbarRootContext.mjs 11654 var React72 = __toESM(require_react(), 1); 11655 var ToolbarRootContext = /* @__PURE__ */ React72.createContext(void 0); 11656 if (true) ToolbarRootContext.displayName = "ToolbarRootContext"; 11657 function useToolbarRootContext(optional) { 11658 const context = React72.useContext(ToolbarRootContext); 11659 if (context === void 0 && !optional) { 11660 throw new Error(true ? "Base UI: ToolbarRootContext is missing. Toolbar parts must be placed within <Toolbar.Root>." : formatErrorMessage_default(69)); 11661 } 11662 return context; 11663 } 11664 11665 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/submenu-root/MenuSubmenuRootContext.mjs 11666 var React73 = __toESM(require_react(), 1); 11667 var MenuSubmenuRootContext = /* @__PURE__ */ React73.createContext(void 0); 11668 if (true) MenuSubmenuRootContext.displayName = "MenuSubmenuRootContext"; 11669 function useMenuSubmenuRootContext() { 11670 return React73.useContext(MenuSubmenuRootContext); 11671 } 11672 11673 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/resolveRenderedId.mjs 11674 var React74 = __toESM(require_react(), 1); 11675 function resolveRenderedId(props, fallbackId) { 11676 const render = unwrapLazyRenderProp(props.render); 11677 if (/* @__PURE__ */ React74.isValidElement(render)) { 11678 const renderProps = render.props; 11679 if (Object.hasOwn(renderProps, "id")) { 11680 return renderProps.id ?? ""; 11681 } 11682 } 11683 return props.id ?? fallbackId; 11684 } 11685 function useRenderedId(props, defaultId, setId) { 11686 const id = resolveRenderedId(props, defaultId); 11687 const registeredId = id === defaultId ? void 0 : id; 11688 const ref = React74.useCallback((element) => setId?.(element ? registeredId : void 0), [registeredId, setId]); 11689 return [id, ref]; 11690 } 11691 11692 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/resolvePopupLabel.mjs 11693 var React75 = __toESM(require_react(), 1); 11694 function resolvePopupLabel(props, activeTriggerElement, activeTriggerId) { 11695 const render = unwrapLazyRenderProp(props.render); 11696 const renderedElementProps = /* @__PURE__ */ React75.isValidElement(render) ? render.props : void 0; 11697 const ariaLabel = props["aria-label"] ?? renderedElementProps?.["aria-label"]; 11698 let ariaLabelledBy = props["aria-labelledby"] ?? renderedElementProps?.["aria-labelledby"]; 11699 if (ariaLabelledBy == null && !ariaLabel) { 11700 ariaLabelledBy = activeTriggerElement ? activeTriggerElement.id || void 0 : activeTriggerId || void 0; 11701 } 11702 return ariaLabelledBy; 11703 } 11704 11705 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/popup/MenuPopup.mjs 11706 var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1); 11707 var MenuPopupPlain = /* @__PURE__ */ React76.forwardRef(function MenuPopupPlain2(componentProps, forwardedRef) { 11708 const { 11709 render, 11710 className, 11711 style, 11712 finalFocus, 11713 id: idProp, 11714 initialFocus: initialFocusProp, 11715 ...elementProps 11716 } = componentProps; 11717 const { 11718 store, 11719 defaultFloatingId, 11720 setRenderedFloatingId, 11721 virtualFocus, 11722 orientation 11723 } = useMenuRootContext(); 11724 const inheritedSubmenuRootContext = useMenuSubmenuRootContext(); 11725 const { 11726 side, 11727 align 11728 } = useMenuPositionerContext(); 11729 const insideToolbar = useToolbarRootContext(true) != null; 11730 const open2 = store.useState("open"); 11731 const transitionStatus = store.useState("transitionStatus"); 11732 const popupProps = store.useState("popupProps"); 11733 const mounted = store.useState("mounted"); 11734 const instantType = store.useState("instantType"); 11735 const activeTriggerElement = store.useState("activeTriggerElement"); 11736 const parent = store.useState("parent"); 11737 const lastOpenChangeReason = store.useState("lastOpenChangeReason"); 11738 const rootId = store.useState("rootId"); 11739 const floatingContext = store.useState("floatingRootContext"); 11740 const floatingTreeRoot = store.useState("floatingTreeRoot"); 11741 const closeDelay = store.useState("closeDelay"); 11742 const hoverEnabled = store.useState("hoverEnabled"); 11743 const disabled2 = store.useState("disabled"); 11744 const openMethod = store.useState("openMethod"); 11745 const activeTriggerId = store.useState("activeTriggerId"); 11746 const listElement = store.useState("listElement"); 11747 const [id, registerIdRef] = useRenderedId(componentProps, defaultFloatingId, setRenderedFloatingId); 11748 const ariaLabelledBy = resolvePopupLabel(componentProps, activeTriggerElement, activeTriggerId); 11749 const submenuRootContext = parent.type === "menu" ? inheritedSubmenuRootContext : void 0; 11750 const isContextMenu = parent.type === "context-menu"; 11751 let initialFocus = initialFocusProp ?? parent.type !== "menu"; 11752 if (initialFocusProp === void 0 && listElement && parent.type !== "menu") { 11753 initialFocus = () => { 11754 if (store.state.activeIndex !== null) { 11755 return false; 11756 } 11757 return listElement; 11758 }; 11759 } 11760 useOpenChangeComplete({ 11761 open: open2, 11762 ref: store.context.popupRef, 11763 onComplete() { 11764 if (open2) { 11765 store.context.onOpenChangeComplete?.(true); 11766 } 11767 } 11768 }); 11769 React76.useEffect(() => { 11770 function handleClose(event) { 11771 store.setOpen(false, createChangeEventDetails(event.reason, event.domEvent)); 11772 } 11773 floatingTreeRoot.events.on("close", handleClose); 11774 return () => { 11775 floatingTreeRoot.events.off("close", handleClose); 11776 }; 11777 }, [floatingTreeRoot.events, store]); 11778 useHoverFloatingInteraction(floatingContext, { 11779 enabled: hoverEnabled && !disabled2 && !isContextMenu && parent.type !== "menubar", 11780 closeDelay 11781 }); 11782 const setPopupElement = store.useStateSetter("popupElement"); 11783 const useParentHandoff = React76.useContext(MenuFilterImplContext)?.useParentHandoff ?? useNoParentHandoff; 11784 const { 11785 parentVirtualFocusRef, 11786 handleFocus 11787 } = useParentHandoff(store, parent, open2, virtualFocus); 11788 const state = { 11789 transitionStatus, 11790 side, 11791 align, 11792 open: open2, 11793 nested: parent.type === "menu", 11794 instant: instantType 11795 }; 11796 const element = useRenderElement("div", componentProps, { 11797 state, 11798 ref: [forwardedRef, store.context.popupRef, setPopupElement, registerIdRef], 11799 stateAttributesMapping: popupTransitionStateMapping, 11800 props: [popupProps, { 11801 id, 11802 // A rendered `Menu.List` carries the `menu` semantics instead. 11803 ...listElement ? { 11804 role: "presentation" 11805 } : { 11806 role: "menu", 11807 // `menu` is implicitly vertical, so only the non-default value needs to be 11808 // rendered. 11809 "aria-orientation": orientation === "horizontal" ? "horizontal" : void 0, 11810 "aria-labelledby": ariaLabelledBy 11811 }, 11812 onKeyDown(event) { 11813 submenuRootContext?.onPopupKeyDown?.(event); 11814 if (insideToolbar && COMPOSITE_KEYS.has(event.key)) { 11815 event.stopPropagation(); 11816 } 11817 }, 11818 onFocus: handleFocus 11819 }, getDisabledMountTransitionStyles(transitionStatus), elementProps, { 11820 "data-rootownerid": rootId 11821 }] 11822 }); 11823 let returnFocus = parent.type === void 0 || isContextMenu; 11824 if (activeTriggerElement || parent.type === "menubar" && lastOpenChangeReason !== reason_parts_exports.outsidePress) { 11825 returnFocus = true; 11826 } 11827 const dynamicReturnFocus = submenuRootContext?.getReturnElement ?? parentVirtualFocusRef; 11828 return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(FloatingFocusManager, { 11829 context: floatingContext, 11830 openInteractionType: openMethod, 11831 modal: isContextMenu, 11832 disabled: !mounted, 11833 returnFocus: finalFocus ?? dynamicReturnFocus ?? returnFocus, 11834 explicitReturnFocus: finalFocus === void 0 && dynamicReturnFocus ? false : void 0, 11835 initialFocus, 11836 restoreFocus: true, 11837 getInsideElements: parent.type === void 0 ? () => [store.context.beforeTriggerFocusGuardRef.current] : void 0, 11838 externalTree: parent.type !== "menubar" ? floatingTreeRoot : void 0, 11839 previousFocusableElement: activeTriggerElement, 11840 nextFocusableElement: parent.type === void 0 ? store.context.triggerFocusTargetRef : void 0, 11841 beforeContentFocusGuardRef: store.context.beforeContentFocusGuardRef, 11842 children: element 11843 }); 11844 }); 11845 if (true) MenuPopupPlain.displayName = "MenuPopupPlain"; 11846 var NO_PARENT_HANDOFF = { 11847 parentVirtualFocusRef: void 0, 11848 handleFocus: void 0 11849 }; 11850 function useNoParentHandoff() { 11851 return NO_PARENT_HANDOFF; 11852 } 11853 var MenuPopup = /* @__PURE__ */ React76.forwardRef(function MenuPopup2(props, forwardedRef) { 11854 const Popup4 = useMenuFilterImpl()?.Popup ?? MenuPopupPlain; 11855 return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Popup4, { 11856 ...props, 11857 ref: forwardedRef 11858 }); 11859 }); 11860 if (true) MenuPopup.displayName = "MenuPopup"; 11861 11862 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/portal/MenuPortal.mjs 11863 var React78 = __toESM(require_react(), 1); 11864 11865 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/portal/MenuPortalContext.mjs 11866 var React77 = __toESM(require_react(), 1); 11867 var MenuPortalContext = /* @__PURE__ */ React77.createContext(void 0); 11868 if (true) MenuPortalContext.displayName = "MenuPortalContext"; 11869 function useMenuPortalContext() { 11870 const value = React77.useContext(MenuPortalContext); 11871 if (value === void 0) { 11872 throw new Error(true ? "Base UI: <Menu.Portal> is missing." : formatErrorMessage_default(32)); 11873 } 11874 return value; 11875 } 11876 11877 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/portal/MenuPortal.mjs 11878 var import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1); 11879 var MenuPortal = /* @__PURE__ */ React78.forwardRef(function MenuPortal2(props, forwardedRef) { 11880 const { 11881 keepMounted = false, 11882 ...portalProps 11883 } = props; 11884 const { 11885 store, 11886 parent 11887 } = useMenuRootContext(); 11888 const mounted = store.useState("mounted"); 11889 const shouldRender = mounted || keepMounted; 11890 if (!shouldRender) { 11891 return null; 11892 } 11893 const portalOwnerRole = parent.type === "menu" || parent.type === "menubar" ? "group" : void 0; 11894 return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(MenuPortalContext.Provider, { 11895 value: keepMounted, 11896 children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(FloatingPortal, { 11897 ref: forwardedRef, 11898 ...portalProps, 11899 portalOwnerRole 11900 }) 11901 }); 11902 }); 11903 if (true) MenuPortal.displayName = "MenuPortal"; 11904 11905 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/positioner/MenuPositioner.mjs 11906 var React80 = __toESM(require_react(), 1); 11907 11908 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useTriggerSwitchTransition.mjs 11909 var React79 = __toESM(require_react(), 1); 11910 function useTriggerSwitchTransition(parameters) { 11911 const { 11912 store, 11913 domReference, 11914 positionerElement, 11915 open: open2 11916 } = parameters; 11917 const previousTriggerRef = React79.useRef(null); 11918 const pendingSwitchRef = React79.useRef(null); 11919 const runOnceAnimationsFinish = useAnimationsFinished(positionerElement); 11920 useIsoLayoutEffect(() => { 11921 if (open2) { 11922 return; 11923 } 11924 pendingSwitchRef.current?.abort(); 11925 pendingSwitchRef.current = null; 11926 if (store.state.instantType === "trigger-change") { 11927 store.set("instantType", void 0); 11928 } 11929 }, [open2, store]); 11930 useIsoLayoutEffect(() => { 11931 const currentTrigger = domReference; 11932 const previousTrigger = previousTriggerRef.current; 11933 if (currentTrigger) { 11934 previousTriggerRef.current = currentTrigger; 11935 } 11936 if (!previousTrigger || !currentTrigger || currentTrigger === previousTrigger) { 11937 return void 0; 11938 } 11939 if (!store.select("open")) { 11940 return void 0; 11941 } 11942 store.set("instantType", void 0); 11943 const abortController = new AbortController(); 11944 pendingSwitchRef.current = abortController; 11945 runOnceAnimationsFinish(() => { 11946 if (store.select("open")) { 11947 store.set("instantType", "trigger-change"); 11948 } 11949 }, abortController.signal); 11950 return () => { 11951 abortController.abort(); 11952 }; 11953 }, [domReference, runOnceAnimationsFinish, store]); 11954 } 11955 11956 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/positioner/MenuPositioner.mjs 11957 var import_jsx_runtime16 = __toESM(require_jsx_runtime(), 1); 11958 var MenuPositioner = /* @__PURE__ */ React80.forwardRef(function MenuPositioner2(componentProps, forwardedRef) { 11959 const { 11960 anchor: anchorProp, 11961 positionMethod: positionMethodProp = "absolute", 11962 className, 11963 render, 11964 side, 11965 align: alignProp, 11966 sideOffset: sideOffsetProp = 0, 11967 alignOffset: alignOffsetProp = 0, 11968 collisionBoundary = "clipping-ancestors", 11969 collisionPadding = 5, 11970 arrowPadding = 5, 11971 sticky = false, 11972 disableAnchorTracking = false, 11973 collisionAvoidance: collisionAvoidanceProp = DROPDOWN_COLLISION_AVOIDANCE, 11974 style, 11975 ...elementProps 11976 } = componentProps; 11977 const { 11978 store, 11979 virtualFocus, 11980 syncHighlightedItem 11981 } = useMenuRootContext(); 11982 const keepMounted = useMenuPortalContext(); 11983 const contextMenuContext = useContextMenuRootContext(true); 11984 const parent = store.useState("parent"); 11985 const floatingRootContext = store.useState("floatingRootContext"); 11986 const floatingTreeRoot = store.useState("floatingTreeRoot"); 11987 const mounted = store.useState("mounted"); 11988 const open2 = store.useState("open"); 11989 const modal = store.useState("modal"); 11990 const openMethod = store.useState("openMethod"); 11991 const triggerElement = store.useState("activeTriggerElement"); 11992 const transitionStatus = store.useState("transitionStatus"); 11993 const positionerElement = store.useState("positionerElement"); 11994 const instantType = store.useState("instantType"); 11995 const adaptiveOrigin2 = store.useState("adaptiveOrigin"); 11996 const lastOpenChangeReason = store.useState("lastOpenChangeReason"); 11997 const floatingNodeId = store.useState("floatingNodeId"); 11998 const floatingParentNodeId = store.useState("floatingParentNodeId"); 11999 const domReference = floatingRootContext.useState("domReferenceElement"); 12000 let anchor = anchorProp; 12001 let sideOffset = sideOffsetProp; 12002 let alignOffset = alignOffsetProp; 12003 let align = alignProp; 12004 let collisionAvoidance = collisionAvoidanceProp; 12005 if (parent.type === "context-menu") { 12006 anchor = anchorProp ?? parent.context?.anchor; 12007 align = align ?? "start"; 12008 if (!side && align !== "center") { 12009 alignOffset = componentProps.alignOffset ?? 2; 12010 sideOffset = componentProps.sideOffset ?? -5; 12011 } 12012 } 12013 let computedSide = side; 12014 let computedAlign = align; 12015 if (parent.type === "menu") { 12016 computedSide = computedSide ?? "inline-end"; 12017 computedAlign = computedAlign ?? "start"; 12018 collisionAvoidance = componentProps.collisionAvoidance ?? POPUP_COLLISION_AVOIDANCE; 12019 } else if (parent.type === "menubar") { 12020 computedSide = computedSide ?? (parent.context.orientation === "vertical" ? "inline-end" : "bottom"); 12021 computedAlign = computedAlign ?? "start"; 12022 } 12023 const contextMenu = parent.type === "context-menu"; 12024 const positioner = useAnchorPositioning({ 12025 anchor, 12026 floatingRootContext, 12027 positionMethod: contextMenuContext ? "fixed" : positionMethodProp, 12028 mounted, 12029 side: computedSide, 12030 sideOffset, 12031 align: computedAlign, 12032 alignOffset, 12033 arrowPadding: contextMenu ? 0 : arrowPadding, 12034 collisionBoundary, 12035 collisionPadding, 12036 sticky, 12037 nodeId: floatingNodeId, 12038 keepMounted, 12039 disableAnchorTracking, 12040 collisionAvoidance, 12041 shift: contextMenu ? { 12042 crossAxis: !("side" in collisionAvoidance && collisionAvoidance.side === "flip"), 12043 rootBoundary: "layoutViewport" 12044 } : void 0, 12045 externalTree: floatingTreeRoot, 12046 adaptiveOrigin: adaptiveOrigin2, 12047 lazyFlip: virtualFocus ? "placement" : false 12048 }); 12049 React80.useEffect(() => { 12050 function onMenuOpenChange(details) { 12051 if (details.open) { 12052 if (details.parentNodeId === floatingNodeId) { 12053 store.set("hoverEnabled", false); 12054 } 12055 if (details.nodeId !== floatingNodeId && details.parentNodeId === store.select("floatingParentNodeId")) { 12056 store.setOpen(false, createChangeEventDetails(reason_parts_exports.siblingOpen)); 12057 } 12058 } 12059 } 12060 floatingTreeRoot.events.on("menuopenchange", onMenuOpenChange); 12061 return () => { 12062 floatingTreeRoot.events.off("menuopenchange", onMenuOpenChange); 12063 }; 12064 }, [store, floatingTreeRoot.events, floatingNodeId]); 12065 React80.useEffect(() => { 12066 if (store.select("floatingParentNodeId") == null) { 12067 return void 0; 12068 } 12069 function onParentClose(details) { 12070 if (details.open || details.nodeId !== store.select("floatingParentNodeId")) { 12071 return; 12072 } 12073 const reason = details.reason ?? reason_parts_exports.siblingOpen; 12074 store.setOpen(false, createChangeEventDetails(reason)); 12075 } 12076 floatingTreeRoot.events.on("menuopenchange", onParentClose); 12077 return () => { 12078 floatingTreeRoot.events.off("menuopenchange", onParentClose); 12079 }; 12080 }, [floatingTreeRoot.events, store]); 12081 const closeTimeout = useTimeout(); 12082 React80.useEffect(() => { 12083 if (!open2) { 12084 closeTimeout.clear(); 12085 } 12086 }, [open2, closeTimeout]); 12087 React80.useEffect(() => { 12088 function onItemHover(event) { 12089 if (!open2 || event.nodeId !== store.select("floatingParentNodeId")) { 12090 return; 12091 } 12092 if (event.target && triggerElement && triggerElement !== event.target) { 12093 const delay = store.select("closeDelay"); 12094 if (delay > 0) { 12095 if (!closeTimeout.isStarted()) { 12096 closeTimeout.start(delay, () => { 12097 store.setOpen(false, createChangeEventDetails(reason_parts_exports.siblingOpen)); 12098 }); 12099 } 12100 } else { 12101 store.setOpen(false, createChangeEventDetails(reason_parts_exports.siblingOpen)); 12102 } 12103 } else { 12104 closeTimeout.clear(); 12105 } 12106 } 12107 floatingTreeRoot.events.on("itemhover", onItemHover); 12108 return () => { 12109 floatingTreeRoot.events.off("itemhover", onItemHover); 12110 }; 12111 }, [floatingTreeRoot.events, open2, triggerElement, store, closeTimeout]); 12112 React80.useEffect(() => { 12113 const eventDetails = { 12114 open: open2, 12115 nodeId: floatingNodeId, 12116 parentNodeId: floatingParentNodeId, 12117 reason: store.select("lastOpenChangeReason") 12118 }; 12119 floatingTreeRoot.events.emit("menuopenchange", eventDetails); 12120 }, [floatingTreeRoot.events, open2, store, floatingNodeId, floatingParentNodeId]); 12121 useTriggerSwitchTransition({ 12122 store, 12123 domReference, 12124 positionerElement, 12125 open: open2 12126 }); 12127 const state = { 12128 open: open2, 12129 side: positioner.side, 12130 align: positioner.align, 12131 anchorHidden: positioner.anchorHidden, 12132 nested: parent.type === "menu", 12133 instant: instantType 12134 }; 12135 const menubarModal = parent.type === "menubar" && parent.context.modal; 12136 const popupModal = modal && lastOpenChangeReason !== reason_parts_exports.triggerHover; 12137 useAnchoredPopupScrollLock(open2 && (menubarModal || popupModal), openMethod === "touch", positionerElement, triggerElement); 12138 const element = usePositioner(componentProps, state, { 12139 styles: positioner.positionerStyles, 12140 transitionStatus, 12141 props: elementProps, 12142 refs: [forwardedRef, store.useStateSetter("positionerElement")], 12143 hidden: !mounted, 12144 inert: !open2 12145 }); 12146 const shouldRenderBackdrop = mounted && parent.type !== "menu" && (parent.type !== "menubar" && modal && lastOpenChangeReason !== reason_parts_exports.triggerHover || parent.type === "menubar" && parent.context.modal); 12147 let backdropCutout = null; 12148 if (parent.type === "menubar") { 12149 backdropCutout = parent.context.contentElement; 12150 } else if (parent.type === void 0) { 12151 backdropCutout = triggerElement; 12152 } 12153 return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(MenuPositionerContext.Provider, { 12154 value: positioner, 12155 children: [shouldRenderBackdrop && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(InternalBackdrop, { 12156 ref: parent.type === "context-menu" || parent.type === "nested-context-menu" ? parent.context.internalBackdropRef : null, 12157 inert: inertValue(!open2), 12158 cutout: backdropCutout 12159 }), /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(FloatingNode, { 12160 id: floatingNodeId, 12161 children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(CompositeList, { 12162 elementsRef: store.context.itemDomElements, 12163 labelsRef: store.context.itemLabels, 12164 onMapChange: syncHighlightedItem, 12165 children: element 12166 }) 12167 })] 12168 }); 12169 }); 12170 if (true) MenuPositioner.displayName = "MenuPositioner"; 12171 12172 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/radio-group/MenuRadioGroup.mjs 12173 var React82 = __toESM(require_react(), 1); 12174 12175 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/radio-group/MenuRadioGroupContext.mjs 12176 var React81 = __toESM(require_react(), 1); 12177 var MenuRadioGroupContext = /* @__PURE__ */ React81.createContext(void 0); 12178 if (true) MenuRadioGroupContext.displayName = "MenuRadioGroupContext"; 12179 function useMenuRadioGroupContext() { 12180 const context = React81.useContext(MenuRadioGroupContext); 12181 if (context === void 0) { 12182 throw new Error(true ? "Base UI: MenuRadioGroupContext is missing. MenuRadioGroup parts must be placed within <Menu.RadioGroup>." : formatErrorMessage_default(34)); 12183 } 12184 return context; 12185 } 12186 12187 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/radio-group/MenuRadioGroup.mjs 12188 var import_jsx_runtime17 = __toESM(require_jsx_runtime(), 1); 12189 var MenuRadioGroupPlain = /* @__PURE__ */ React82.forwardRef(function MenuRadioGroupPlain2(componentProps, forwardedRef) { 12190 const { 12191 render, 12192 className, 12193 value: valueProp, 12194 defaultValue, 12195 onValueChange: onValueChangeProp, 12196 disabled: disabled2 = false, 12197 style, 12198 "aria-labelledby": ariaLabelledByProp, 12199 ...elementProps 12200 } = componentProps; 12201 const [labelId, setLabelId] = React82.useState(void 0); 12202 const [value, setValueUnwrapped] = useControlled({ 12203 controlled: valueProp, 12204 default: defaultValue, 12205 name: "MenuRadioGroup" 12206 }); 12207 const setValue = useStableCallback((newValue, eventDetails) => { 12208 onValueChangeProp?.(newValue, eventDetails); 12209 if (eventDetails.isCanceled) { 12210 return; 12211 } 12212 setValueUnwrapped(newValue); 12213 }); 12214 const state = { 12215 disabled: disabled2 12216 }; 12217 const element = useRenderElement("div", componentProps, { 12218 state, 12219 ref: forwardedRef, 12220 props: { 12221 role: "group", 12222 "aria-labelledby": ariaLabelledByProp ?? labelId, 12223 "aria-disabled": disabled2 || void 0, 12224 ...elementProps 12225 } 12226 }); 12227 const context = React82.useMemo(() => ({ 12228 value, 12229 setValue, 12230 disabled: disabled2 12231 }), [value, setValue, disabled2]); 12232 return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(MenuGroupContext.Provider, { 12233 value: setLabelId, 12234 children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(MenuRadioGroupContext.Provider, { 12235 value: context, 12236 children: element 12237 }) 12238 }); 12239 }); 12240 if (true) MenuRadioGroupPlain.displayName = "MenuRadioGroupPlain"; 12241 var MenuRadioGroup = /* @__PURE__ */ React82.memo(/* @__PURE__ */ React82.forwardRef(function MenuRadioGroup2(props, forwardedRef) { 12242 const RadioGroup2 = useMenuFilterImpl()?.RadioGroup ?? MenuRadioGroupPlain; 12243 return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(RadioGroup2, { 12244 ...props, 12245 ref: forwardedRef 12246 }); 12247 })); 12248 if (true) MenuRadioGroup.displayName = "MenuRadioGroup"; 12249 12250 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/radio-item/MenuRadioItem.mjs 12251 var React84 = __toESM(require_react(), 1); 12252 12253 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/radio-item/MenuRadioItemContext.mjs 12254 var React83 = __toESM(require_react(), 1); 12255 var MenuRadioItemContext = /* @__PURE__ */ React83.createContext(void 0); 12256 if (true) MenuRadioItemContext.displayName = "MenuRadioItemContext"; 12257 function useMenuRadioItemContext() { 12258 const context = React83.useContext(MenuRadioItemContext); 12259 if (context === void 0) { 12260 throw new Error(true ? "Base UI: MenuRadioItemContext is missing. MenuRadioItem parts must be placed within <Menu.RadioItem>." : formatErrorMessage_default(35)); 12261 } 12262 return context; 12263 } 12264 12265 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/radio-item/MenuRadioItem.mjs 12266 var import_jsx_runtime18 = __toESM(require_jsx_runtime(), 1); 12267 var MenuRadioItemPlain = /* @__PURE__ */ React84.forwardRef(function MenuRadioItemPlain2(componentProps, forwardedRef) { 12268 const { 12269 render, 12270 className, 12271 id: idProp, 12272 label, 12273 nativeButton = false, 12274 disabled: disabledProp = false, 12275 closeOnClick = false, 12276 value, 12277 style, 12278 ...elementProps 12279 } = componentProps; 12280 const { 12281 store 12282 } = useMenuRootContext(); 12283 const { 12284 value: selectedValue, 12285 setValue: setSelectedValue, 12286 disabled: groupDisabled 12287 } = useMenuRadioGroupContext(); 12288 const listItem = useCompositeListItem({ 12289 guess: true, 12290 label 12291 }); 12292 const id = useBaseUiId(idProp); 12293 const highlighted = store.useState("isActive", listItem.index); 12294 const nodeId = store.useState("floatingNodeId"); 12295 const itemProps = store.useState("itemProps"); 12296 const rootDisabled = store.useState("disabled"); 12297 const disabled2 = disabledProp || groupDisabled || rootDisabled; 12298 const checked2 = selectedValue === value; 12299 const { 12300 getItemProps, 12301 itemRef 12302 } = useMenuItem({ 12303 closeOnClick, 12304 disabled: disabled2, 12305 highlighted, 12306 id, 12307 store, 12308 nativeButton, 12309 nodeId, 12310 itemMetadata: REGULAR_ITEM 12311 }); 12312 const state = React84.useMemo(() => ({ 12313 disabled: disabled2, 12314 highlighted, 12315 checked: checked2 12316 }), [disabled2, highlighted, checked2]); 12317 function handleClick(event) { 12318 const details = createChangeEventDetails(reason_parts_exports.itemPress, event.nativeEvent, void 0, { 12319 preventUnmountOnClose: NOOP 12320 }); 12321 setSelectedValue(value, details); 12322 } 12323 const element = useRenderElement("div", componentProps, { 12324 state, 12325 stateAttributesMapping: itemMapping, 12326 props: [itemProps, { 12327 role: "menuitemradio", 12328 "aria-checked": checked2, 12329 onClick: handleClick 12330 }, elementProps, getItemProps], 12331 ref: [itemRef, forwardedRef, listItem.ref] 12332 }); 12333 return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(MenuRadioItemContext.Provider, { 12334 value: state, 12335 children: element 12336 }); 12337 }); 12338 if (true) MenuRadioItemPlain.displayName = "MenuRadioItemPlain"; 12339 var MenuRadioItem = /* @__PURE__ */ React84.forwardRef(function MenuRadioItem2(props, forwardedRef) { 12340 const filterItem = useMenuFilterItem(props, forwardedRef); 12341 if (!filterItem.visible) { 12342 return null; 12343 } 12344 return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(MenuRadioItemPlain, { 12345 ...props, 12346 ref: filterItem.ref 12347 }); 12348 }); 12349 if (true) MenuRadioItem.displayName = "MenuRadioItem"; 12350 12351 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/radio-item-indicator/MenuRadioItemIndicator.mjs 12352 var React85 = __toESM(require_react(), 1); 12353 var MenuRadioItemIndicator = /* @__PURE__ */ React85.forwardRef(function MenuRadioItemIndicator2(componentProps, forwardedRef) { 12354 const { 12355 render, 12356 className, 12357 style, 12358 keepMounted = false, 12359 ...elementProps 12360 } = componentProps; 12361 const item = useMenuRadioItemContext(); 12362 const indicatorRef = React85.useRef(null); 12363 const { 12364 transitionStatus, 12365 mounted, 12366 setMounted 12367 } = useTransitionStatus(item.checked); 12368 useOpenChangeComplete({ 12369 batch: true, 12370 enabled: !item.checked, 12371 open: item.checked, 12372 ref: indicatorRef, 12373 onComplete() { 12374 if (!item.checked) { 12375 setMounted(false); 12376 } 12377 } 12378 }); 12379 const state = { 12380 checked: item.checked, 12381 disabled: item.disabled, 12382 highlighted: item.highlighted, 12383 transitionStatus 12384 }; 12385 const element = useRenderElement("span", componentProps, { 12386 state, 12387 stateAttributesMapping: itemMapping, 12388 ref: [forwardedRef, indicatorRef], 12389 props: { 12390 "aria-hidden": true, 12391 ...elementProps 12392 }, 12393 enabled: keepMounted || mounted 12394 }); 12395 return element; 12396 }); 12397 if (true) MenuRadioItemIndicator.displayName = "MenuRadioItemIndicator"; 12398 12399 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/root/MenuRoot.mjs 12400 var React89 = __toESM(require_react(), 1); 12401 12402 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menubar/MenubarContext.mjs 12403 var React86 = __toESM(require_react(), 1); 12404 var MenubarContext = /* @__PURE__ */ React86.createContext(null); 12405 if (true) MenubarContext.displayName = "MenubarContext"; 12406 function useMenubarContext(optional) { 12407 const context = React86.useContext(MenubarContext); 12408 if (context === null && !optional) { 12409 throw new Error(true ? "Base UI: MenubarContext is missing. Menubar parts must be placed within <Menubar>." : formatErrorMessage_default(5)); 12410 } 12411 return context; 12412 } 12413 12414 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/store/MenuStore.mjs 12415 var React87 = __toESM(require_react(), 1); 12416 var selectors2 = { 12417 ...popupStoreSelectors, 12418 disabled: (state) => state.parent.type === "menubar" ? state.parent.context.disabled || state.disabled : state.disabled, 12419 modal: (state) => (state.parent.type === void 0 || state.parent.type === "context-menu") && (state.modal ?? true), 12420 openMethod: (state) => state.openMethod, 12421 keyboardOpen: (state) => state.keyboardOpen, 12422 allowMouseEnter: (state) => state.allowMouseEnter, 12423 highlightItemOnHover: (state) => state.highlightItemOnHover, 12424 parent: (state) => state.parent, 12425 rootId: (state) => { 12426 if (state.parent.type === "menu") { 12427 return state.parent.store.select("rootId"); 12428 } 12429 return state.parent.type !== void 0 ? state.parent.context.rootId : state.rootId; 12430 }, 12431 activeIndex: (state) => state.activeIndex, 12432 listElement: (state) => state.listElement, 12433 /** The trigger's `aria-controls`: the list when one holds the `menu` role, else the popup. */ 12434 triggerControlsId: (state, triggerId) => { 12435 const popupId = popupStoreSelectors.triggerPopupId(state, triggerId); 12436 return popupId ? state.listElement?.id || popupId : void 0; 12437 }, 12438 filterTriggerProps: (state) => state.filterTriggerProps, 12439 inputProps: (state) => state.inputProps, 12440 // `aria-selected` is invalid on `menuitem`, but Safari VoiceOver needs it for arrow-key 12441 // navigation. Limit it to WebKit while the input has focus so normal VoiceOver navigation 12442 // does not encounter the invalid attribute. 12443 webkitAriaSelected: (state, highlighted) => parts_exports.engine.webkit && state.inputFocused && highlighted ? true : void 0, 12444 highlightedItemId: (state) => state.highlightedItem?.id || void 0, 12445 isActive: (state, itemIndex) => state.activeIndex === itemIndex, 12446 hoverEnabled: (state) => state.hoverEnabled, 12447 // `trigger-change` describes a popup moving between triggers, which only has 12448 // meaning while it is open. Dropping it once closed keeps a late or stale 12449 // restoration from marking a closing popup instant and skipping its exit 12450 // transition, including on close paths that never reach `setOpen` — a 12451 // controlled consumer committing `open={false}` goes straight through the prop. 12452 instantType: (state) => state.instantType === "trigger-change" && !popupStoreSelectors.open(state) ? void 0 : state.instantType, 12453 lastOpenChangeReason: (state) => state.openChangeReason, 12454 floatingTreeRoot: (state) => { 12455 if (state.parent.type === "menu") { 12456 return state.parent.store.select("floatingTreeRoot"); 12457 } 12458 return state.floatingTreeRoot; 12459 }, 12460 floatingNodeId: (state) => state.floatingNodeId, 12461 floatingParentNodeId: (state) => state.floatingParentNodeId, 12462 itemProps: (state) => state.itemProps, 12463 closeDelay: (state) => state.closeDelay, 12464 adaptiveOrigin: (state) => state.adaptiveOrigin, 12465 keyboardEventRelay: (state) => { 12466 if (state.keyboardEventRelay) { 12467 return state.keyboardEventRelay; 12468 } 12469 if (state.parent.type === "menu") { 12470 return state.parent.store.select("keyboardEventRelay"); 12471 } 12472 return void 0; 12473 } 12474 }; 12475 var MenuStore = class extends ReactStore { 12476 constructor(initialState, floatingId, nested = false) { 12477 const triggerElements = new PopupTriggerMap(); 12478 const state = createInitialState(triggerElements, floatingId, nested, initialState); 12479 super(state, createInitialContext(triggerElements), selectors2); 12480 void this.observe("parent", (parent) => { 12481 if (parent.type === "menu") { 12482 this.context.allowMouseUpTriggerRef = parent.store.context.allowMouseUpTriggerRef; 12483 } else if (parent.type !== void 0) { 12484 this.context.allowMouseUpTriggerRef = parent.context.allowMouseUpTriggerRef; 12485 } 12486 }); 12487 } 12488 /** 12489 * Propagates changes of the parent menu's shared tree state to this store's subscribers. 12490 * The owning `Menu.Root` calls it from an effect so the parent store subscription is released 12491 * when the submenu unmounts. 12492 * @returns A function that removes the parent store subscription. 12493 */ 12494 subscribeToParentMenu() { 12495 const parent = this.state.parent; 12496 if (parent.type !== "menu") { 12497 return void 0; 12498 } 12499 let rootId = parent.store.select("rootId"); 12500 let floatingTreeRoot = parent.store.select("floatingTreeRoot"); 12501 let keyboardEventRelay = parent.store.select("keyboardEventRelay"); 12502 return parent.store.subscribe(() => { 12503 const nextRootId = parent.store.select("rootId"); 12504 const nextFloatingTreeRoot = parent.store.select("floatingTreeRoot"); 12505 const nextKeyboardEventRelay = parent.store.select("keyboardEventRelay"); 12506 if (rootId === nextRootId && floatingTreeRoot === nextFloatingTreeRoot && keyboardEventRelay === nextKeyboardEventRelay) { 12507 return; 12508 } 12509 rootId = nextRootId; 12510 floatingTreeRoot = nextFloatingTreeRoot; 12511 keyboardEventRelay = nextKeyboardEventRelay; 12512 this.notifyAll(); 12513 }); 12514 } 12515 setOpen(open2, eventDetails) { 12516 this.state.floatingRootContext.context.events.emit("setOpen", { 12517 open: open2, 12518 eventDetails 12519 }); 12520 } 12521 setActiveIndex(activeIndex, reason, event) { 12522 if (this.state.activeIndex !== activeIndex) { 12523 const item = activeIndex === null ? void 0 : this.context.itemDomElements.current[activeIndex]; 12524 const isWriteBack = item === this.context.reportedItem; 12525 this.context.highlightReason = isWriteBack ? "none" : reason; 12526 this.context.highlightEvent = isWriteBack ? void 0 : event; 12527 } 12528 this.set("activeIndex", activeIndex); 12529 } 12530 highlightItem(element, reason, event) { 12531 const index2 = this.context.itemDomElements.current.indexOf(element); 12532 if (index2 > -1) { 12533 this.setActiveIndex(index2, reason, event); 12534 } 12535 } 12536 }; 12537 function createNullMenuStore() { 12538 const triggerElements = new PopupTriggerMap(); 12539 const store = new NullStore(Object.freeze(createInitialState(triggerElements)), Object.freeze(createInitialContext(triggerElements)), selectors2); 12540 return Object.assign(store, { 12541 setOpen: NOOP 12542 }); 12543 } 12544 function createInitialContext(triggerElements) { 12545 return { 12546 positionerRef: /* @__PURE__ */ React87.createRef(), 12547 popupRef: /* @__PURE__ */ React87.createRef(), 12548 typingRef: { 12549 current: false 12550 }, 12551 itemDomElements: { 12552 current: [] 12553 }, 12554 itemLabels: { 12555 current: [] 12556 }, 12557 highlightReason: "none", 12558 highlightEvent: void 0, 12559 reportedItem: void 0, 12560 allowMouseUpTriggerRef: { 12561 current: false 12562 }, 12563 virtualFocusRef: void 0, 12564 triggerFocusTargetRef: /* @__PURE__ */ React87.createRef(), 12565 beforeTriggerFocusGuardRef: /* @__PURE__ */ React87.createRef(), 12566 beforeContentFocusGuardRef: /* @__PURE__ */ React87.createRef(), 12567 onOpenChangeComplete: void 0, 12568 triggerElements 12569 }; 12570 } 12571 function createInitialState(triggerElements, floatingId, nested = false, initialState) { 12572 return { 12573 ...createInitialPopupStoreState(triggerElements, floatingId, nested), 12574 disabled: false, 12575 modal: true, 12576 openMethod: null, 12577 keyboardOpen: false, 12578 allowMouseEnter: false, 12579 highlightItemOnHover: true, 12580 parent: { 12581 type: void 0 12582 }, 12583 rootId: void 0, 12584 activeIndex: null, 12585 listElement: null, 12586 filterTriggerProps: EMPTY_OBJECT, 12587 inputProps: EMPTY_OBJECT, 12588 inputFocused: false, 12589 highlightedItem: void 0, 12590 hoverEnabled: true, 12591 instantType: void 0, 12592 openChangeReason: null, 12593 floatingTreeRoot: new FloatingTreeStore(), 12594 floatingNodeId: void 0, 12595 floatingParentNodeId: null, 12596 itemProps: EMPTY_OBJECT, 12597 keyboardEventRelay: void 0, 12598 closeDelay: 0, 12599 adaptiveOrigin: void 0, 12600 ...initialState 12601 }; 12602 } 12603 12604 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/filter-provider/MenuFilterProviderContext.mjs 12605 var React88 = __toESM(require_react(), 1); 12606 var MenuFilterProviderContext = /* @__PURE__ */ React88.createContext(null); 12607 if (true) MenuFilterProviderContext.displayName = "MenuFilterProviderContext"; 12608 12609 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/utils/isKeyboardOpen.mjs 12610 function isKeyboardClick(reason, event) { 12611 return (reason === reason_parts_exports.triggerPress || reason === reason_parts_exports.itemPress) && event?.detail === 0; 12612 } 12613 function isKeyboardOpen(reason, event) { 12614 return reason === reason_parts_exports.listNavigation || isKeyboardClick(reason, event); 12615 } 12616 12617 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/root/MenuRoot.mjs 12618 var import_jsx_runtime19 = __toESM(require_jsx_runtime(), 1); 12619 var MenuRootInternal = fastComponent(function MenuRootInternal2(props) { 12620 const { 12621 children, 12622 open: openProp, 12623 onOpenChange, 12624 onOpenChangeComplete, 12625 onItemHighlighted: onItemHighlightedProp, 12626 defaultOpen = false, 12627 disabled: disabledProp = false, 12628 modal: modalProp, 12629 loopFocus = true, 12630 orientation = "vertical", 12631 actionsRef, 12632 closeParentOnEsc = false, 12633 handle, 12634 triggerId: triggerIdProp, 12635 defaultTriggerId: defaultTriggerIdProp = null, 12636 highlightItemOnHover = true, 12637 isSubmenu = false, 12638 virtualFocus = false, 12639 virtualFocusRef, 12640 allowEscape = true, 12641 resetOnPointerLeave = true 12642 } = props; 12643 const contextMenuContext = useContextMenuRootContext(true); 12644 const parentMenuRootContext = useMenuRootContext(true); 12645 const menubarContext = useMenubarContext(true); 12646 const enclosingMenuStore = parentMenuRootContext?.store; 12647 const parentVirtualFocus = parentMenuRootContext?.virtualFocus ?? false; 12648 const parentFromContext = React89.useMemo(() => { 12649 if (isSubmenu && enclosingMenuStore) { 12650 return { 12651 type: "menu", 12652 store: enclosingMenuStore 12653 }; 12654 } 12655 if (menubarContext) { 12656 return { 12657 type: "menubar", 12658 context: menubarContext 12659 }; 12660 } 12661 if (contextMenuContext && !enclosingMenuStore) { 12662 return { 12663 type: "context-menu", 12664 context: contextMenuContext 12665 }; 12666 } 12667 return { 12668 type: void 0 12669 }; 12670 }, [contextMenuContext, enclosingMenuStore, menubarContext, isSubmenu]); 12671 const rootId = useBaseUiId(); 12672 const defaultFloatingId = useBaseUiId(); 12673 const [renderedFloatingId, setRenderedFloatingId] = React89.useState(void 0); 12674 const floatingId = (renderedFloatingId ?? defaultFloatingId) || void 0; 12675 const floatingParentNodeIdFromContext = useFloatingParentNodeId(); 12676 const parentMenuStore = parentFromContext.type === "menu" ? parentFromContext.store : void 0; 12677 const animateInitialOpen = (openProp ?? defaultOpen) && parentMenuStore?.state.transitionStatus === "starting"; 12678 const seededInstantType = useRefWithInit(() => animateInitialOpen ? parentMenuStore?.state.instantType : void 0).current; 12679 const store = useRefWithInit(() => { 12680 const menuStore = new MenuStore({ 12681 open: defaultOpen, 12682 openProp, 12683 activeTriggerId: defaultTriggerIdProp, 12684 triggerIdProp, 12685 parent: parentFromContext, 12686 disabled: disabledProp, 12687 highlightItemOnHover, 12688 modal: parentFromContext.type === void 0 ? modalProp : void 0, 12689 rootId, 12690 instantType: seededInstantType 12691 }, floatingId, floatingParentNodeIdFromContext != null); 12692 menuStore.context.virtualFocusRef = virtualFocusRef; 12693 return menuStore; 12694 }).current; 12695 store.useControlledProp("openProp", openProp); 12696 store.useControlledProp("triggerIdProp", triggerIdProp); 12697 store.useContextCallback("onOpenChangeComplete", onOpenChangeComplete); 12698 const floatingTreeRoot = store.useState("floatingTreeRoot"); 12699 const floatingNodeIdFromContext = useFloatingNodeId(floatingTreeRoot); 12700 const open2 = store.useState("open"); 12701 const activeTriggerElement = store.useState("activeTriggerElement"); 12702 const positionerElement = store.useState("positionerElement"); 12703 const hoverEnabled = store.useState("hoverEnabled"); 12704 const disabled2 = store.useState("disabled"); 12705 const lastOpenChangeReason = store.useState("lastOpenChangeReason"); 12706 const parent = store.useState("parent"); 12707 const activeIndex = store.useState("activeIndex"); 12708 const keyboardOpen = store.useState("keyboardOpen"); 12709 const payload = store.useState("payload"); 12710 const floatingParentNodeId = store.useState("floatingParentNodeId"); 12711 const openEventRef = React89.useRef(null); 12712 const allowOutsidePressDismissalRef = React89.useRef(parent.type !== "context-menu"); 12713 const allowOutsidePressDismissalTimeout = useTimeout(); 12714 const allowTouchToCloseRef = React89.useRef(true); 12715 const allowTouchToCloseTimeout = useTimeout(); 12716 const nested = floatingParentNodeId != null; 12717 if (true) { 12718 if (parent.type !== void 0 && modalProp !== void 0) { 12719 console.warn("Base UI: The `modal` prop is not supported on nested menus. It will be ignored."); 12720 } 12721 } 12722 const { 12723 openMethod, 12724 triggerProps: interactionTypeProps 12725 } = useOpenInteractionType(open2); 12726 store.useSyncedValues({ 12727 disabled: disabledProp, 12728 highlightItemOnHover, 12729 modal: parent.type === void 0 ? modalProp : void 0, 12730 openMethod, 12731 rootId 12732 }); 12733 useImplicitActiveTrigger(store); 12734 const { 12735 forceUnmount, 12736 transitionStatus 12737 } = useOpenStateTransitions(open2, store, () => { 12738 store.set("allowMouseEnter", false); 12739 }, animateInitialOpen); 12740 const runOnceAnimationsFinish = useAnimationsFinished(store.context.popupRef); 12741 React89.useEffect(() => { 12742 if (seededInstantType === void 0) { 12743 return void 0; 12744 } 12745 const clearSeededInstantType = () => { 12746 if (store.state.instantType === seededInstantType) { 12747 store.set("instantType", void 0); 12748 } 12749 }; 12750 if (!open2) { 12751 clearSeededInstantType(); 12752 return void 0; 12753 } 12754 if (transitionStatus !== void 0) { 12755 return void 0; 12756 } 12757 if (store.context.popupRef.current == null) { 12758 clearSeededInstantType(); 12759 return void 0; 12760 } 12761 const abortController = new AbortController(); 12762 runOnceAnimationsFinish(clearSeededInstantType, abortController.signal); 12763 return () => { 12764 abortController.abort(); 12765 }; 12766 }, [seededInstantType, open2, transitionStatus, runOnceAnimationsFinish, store]); 12767 useIsoLayoutEffect(() => { 12768 if (contextMenuContext && !parentMenuRootContext) { 12769 store.update({ 12770 parent: { 12771 type: "context-menu", 12772 context: contextMenuContext 12773 }, 12774 floatingNodeId: floatingNodeIdFromContext, 12775 floatingParentNodeId: floatingParentNodeIdFromContext 12776 }); 12777 } else if (parentMenuRootContext || !store.select("activeTriggerElement")) { 12778 store.update({ 12779 floatingNodeId: floatingNodeIdFromContext, 12780 floatingParentNodeId: floatingParentNodeIdFromContext 12781 }); 12782 } 12783 }, [contextMenuContext, parentMenuRootContext, floatingNodeIdFromContext, floatingParentNodeIdFromContext, activeTriggerElement, store]); 12784 React89.useEffect(() => { 12785 if (!open2) { 12786 openEventRef.current = null; 12787 } 12788 if (parent.type !== "context-menu") { 12789 return; 12790 } 12791 if (!open2) { 12792 allowOutsidePressDismissalTimeout.clear(); 12793 allowOutsidePressDismissalRef.current = false; 12794 return; 12795 } 12796 allowOutsidePressDismissalTimeout.start(500, () => { 12797 allowOutsidePressDismissalRef.current = true; 12798 }); 12799 }, [allowOutsidePressDismissalTimeout, open2, parent.type]); 12800 useIsoLayoutEffect(() => { 12801 if (!open2 && !hoverEnabled) { 12802 store.set("hoverEnabled", true); 12803 } 12804 }, [open2, hoverEnabled, store]); 12805 const setOpen = useStableCallback((nextOpen, eventDetails) => { 12806 const reason = eventDetails.reason; 12807 if (!nextOpen && !store.select("open")) { 12808 return; 12809 } 12810 if (open2 === nextOpen && eventDetails.trigger === activeTriggerElement && lastOpenChangeReason === reason) { 12811 return; 12812 } 12813 const shouldPreventUnmountOnClose = attachPreventUnmountOnClose(eventDetails); 12814 if (!nextOpen && eventDetails.trigger == null) { 12815 eventDetails.trigger = activeTriggerElement ?? void 0; 12816 } 12817 onOpenChange?.(nextOpen, eventDetails); 12818 if (eventDetails.isCanceled) { 12819 return; 12820 } 12821 store.state.floatingRootContext.dispatchOpenChange(nextOpen, eventDetails); 12822 const nativeEvent = eventDetails.event; 12823 if (nextOpen === false && reason !== reason_parts_exports.itemPress && nativeEvent?.type === "click" && nativeEvent.pointerType === "touch" && !allowTouchToCloseRef.current) { 12824 return; 12825 } 12826 if (nextOpen && reason === reason_parts_exports.triggerFocus) { 12827 allowTouchToCloseRef.current = false; 12828 allowTouchToCloseTimeout.start(300, () => { 12829 allowTouchToCloseRef.current = true; 12830 }); 12831 } else { 12832 allowTouchToCloseRef.current = true; 12833 allowTouchToCloseTimeout.clear(); 12834 } 12835 const isDismissClose = !nextOpen && (reason === reason_parts_exports.escapeKey || reason == null); 12836 openEventRef.current = eventDetails.event; 12837 const popupOpenState = createPopupOpenState(store.state, nextOpen, eventDetails.trigger, shouldPreventUnmountOnClose()); 12838 popupOpenState.openChangeReason = reason; 12839 popupOpenState.keyboardOpen = nextOpen && isKeyboardOpen(reason, nativeEvent); 12840 if (parent.type === "menubar" && (reason === reason_parts_exports.triggerFocus || reason === reason_parts_exports.focusOut || reason === reason_parts_exports.triggerHover || reason === reason_parts_exports.listNavigation || reason === reason_parts_exports.siblingOpen)) { 12841 popupOpenState.instantType = "group"; 12842 } else if (isKeyboardClick(reason, nativeEvent)) { 12843 popupOpenState.instantType = "click"; 12844 } else if (isDismissClose) { 12845 popupOpenState.instantType = "dismiss"; 12846 } else { 12847 popupOpenState.instantType = void 0; 12848 } 12849 store.update(popupOpenState); 12850 }); 12851 const floatingRootContext = useSyncedFloatingRootContext({ 12852 popupStore: store, 12853 floatingRootContext: store.state.floatingRootContext, 12854 floatingId, 12855 nested: floatingParentNodeIdFromContext != null, 12856 onOpenChange: setOpen 12857 }); 12858 const floatingEvents = floatingRootContext.context.events; 12859 useIsoLayoutEffect(() => { 12860 const handleSetOpenEvent = ({ 12861 open: nextOpen, 12862 eventDetails 12863 }) => setOpen(nextOpen, eventDetails); 12864 floatingEvents.on("setOpen", handleSetOpenEvent); 12865 return () => { 12866 floatingEvents?.off("setOpen", handleSetOpenEvent); 12867 }; 12868 }, [floatingEvents, setOpen]); 12869 useIsoLayoutEffect(() => store.subscribeToParentMenu(), [store]); 12870 const handleImperativeClose = React89.useCallback(() => { 12871 store.setOpen(false, createChangeEventDetails(reason_parts_exports.imperativeAction)); 12872 }, [store]); 12873 React89.useImperativeHandle(actionsRef, () => ({ 12874 unmount: forceUnmount, 12875 close: handleImperativeClose 12876 }), [forceUnmount, handleImperativeClose]); 12877 let ctx; 12878 if (parent.type === "context-menu") { 12879 ctx = parent.context; 12880 } 12881 React89.useImperativeHandle(ctx?.positionerRef, () => positionerElement, [positionerElement]); 12882 React89.useImperativeHandle(ctx?.actionsRef, () => ({ 12883 setOpen 12884 }), [setOpen]); 12885 const dismiss = useDismiss(floatingRootContext, { 12886 enabled: !disabled2, 12887 bubbles: { 12888 escapeKey: closeParentOnEsc && parent.type === "menu" 12889 }, 12890 outsidePress() { 12891 if (parent.type !== "context-menu" || openEventRef.current?.type === "contextmenu") { 12892 return true; 12893 } 12894 return allowOutsidePressDismissalRef.current; 12895 }, 12896 externalTree: nested ? floatingTreeRoot : void 0 12897 }); 12898 const direction = useDirection(); 12899 const listNavigation2 = useListNavigation(floatingRootContext, { 12900 enabled: !disabled2, 12901 listRef: store.context.itemDomElements, 12902 activeIndex, 12903 virtual: virtualFocus, 12904 nested: parent.type === "menubar" || !virtualFocus && parent.type !== void 0, 12905 parentOrientation: parent.type === "menubar" ? parent.context.orientation : void 0, 12906 loopFocus, 12907 // Filtered menus keep DOM focus on the input, while keyboard and virtual opens initially 12908 // highlight an item as ordinary menus do. The input stays in the arrow-key loop unless the 12909 // filter highlights automatically. 12910 focusItemOnOpen: virtualFocus ? keyboardOpen : void 0, 12911 allowEscape: virtualFocus && loopFocus && allowEscape, 12912 orientation, 12913 // A virtual-focus list can navigate on either axis, but its trigger always opens on the 12914 // vertical one. 12915 triggerOrientation: virtualFocus ? "vertical" : orientation, 12916 rtl: direction === "rtl", 12917 disabledIndices: EMPTY_ARRAY, 12918 onNavigate(nextActiveIndex, event) { 12919 store.setActiveIndex(nextActiveIndex, getHighlightReason(event), event?.nativeEvent); 12920 }, 12921 // A virtual-focus submenu's keyboard opening is orchestrated by its navigation wrapper based 12922 // on both menus' orientations; the generic arrow-key opening would also react to the parent's 12923 // forwarded cross-axis keys while closed. 12924 openOnArrowKeyDown: parent.type !== "context-menu" && !(virtualFocus && isSubmenu), 12925 externalTree: !virtualFocus && nested ? floatingTreeRoot : void 0, 12926 nestedReturnFocusRef: parentMenuStore?.context.virtualFocusRef, 12927 focusItemOnHover: highlightItemOnHover, 12928 resetOnPointerLeave 12929 }); 12930 const onTyping = React89.useCallback((nextTyping) => { 12931 store.context.typingRef.current = nextTyping; 12932 }, [store]); 12933 const typeahead = useTypeahead(floatingRootContext, { 12934 // Under virtual focus the input owns typing, so typeahead would race the filter query. 12935 enabled: !disabled2 && !virtualFocus, 12936 listRef: store.context.itemLabels, 12937 elementsRef: store.context.itemDomElements, 12938 activeIndex, 12939 resetMs: TYPEAHEAD_RESET_MS, 12940 onMatch: (index2, event) => { 12941 if (open2 && index2 !== activeIndex) { 12942 store.setActiveIndex(index2, reason_parts_exports.keyboard, event.nativeEvent); 12943 } 12944 }, 12945 onTyping 12946 }); 12947 const onItemHighlighted = useStableCallback(onItemHighlightedProp); 12948 const lastHighlightIndexRef = React89.useRef(-1); 12949 const syncHighlightedItem = useStableCallback(() => { 12950 const index2 = store.state.activeIndex; 12951 const item = index2 === null ? void 0 : store.context.itemDomElements.current[index2] ?? void 0; 12952 if (item?.isConnected === false) { 12953 return; 12954 } 12955 const itemIndex = item === void 0 ? -1 : index2; 12956 if (lastHighlightIndexRef.current === itemIndex && store.context.reportedItem === item) { 12957 return; 12958 } 12959 lastHighlightIndexRef.current = itemIndex; 12960 store.context.reportedItem = item; 12961 if (virtualFocus) { 12962 store.set("highlightedItem", item); 12963 } 12964 const { 12965 highlightReason, 12966 highlightEvent 12967 } = store.context; 12968 store.context.highlightReason = reason_parts_exports.none; 12969 store.context.highlightEvent = void 0; 12970 if (!onItemHighlightedProp) { 12971 return; 12972 } 12973 onItemHighlighted(item, createGenericEventDetails(highlightReason, highlightEvent, { 12974 label: item === void 0 ? void 0 : store.context.itemLabels.current[itemIndex] ?? void 0 12975 })); 12976 }); 12977 useIsoLayoutEffect(() => { 12978 syncHighlightedItem(); 12979 }, [activeIndex, syncHighlightedItem]); 12980 const openTriggerProps = React89.useMemo(() => { 12981 if (!virtualFocus) { 12982 return listNavigation2.reference; 12983 } 12984 if (!listNavigation2.trigger) { 12985 return EMPTY_OBJECT; 12986 } 12987 const { 12988 onFocus, 12989 ...rest 12990 } = listNavigation2.trigger; 12991 return rest; 12992 }, [virtualFocus, listNavigation2.reference, listNavigation2.trigger]); 12993 store.useSyncedValue("inputProps", virtualFocus ? listNavigation2.reference ?? EMPTY_OBJECT : EMPTY_OBJECT); 12994 const activeTriggerProps = React89.useMemo(() => { 12995 const mergedProps = mergeProps(typeahead.reference, openTriggerProps, dismiss.reference, { 12996 onMouseMove() { 12997 store.set("allowMouseEnter", true); 12998 } 12999 }, interactionTypeProps); 13000 mergedProps["aria-haspopup"] = "menu"; 13001 mergedProps["aria-expanded"] = open2; 13002 return mergedProps; 13003 }, [store, typeahead.reference, openTriggerProps, dismiss.reference, interactionTypeProps, open2]); 13004 const inactiveTriggerProps = React89.useMemo(() => { 13005 const mergedProps = mergeProps(listNavigation2.trigger, dismiss.trigger, interactionTypeProps); 13006 mergedProps["aria-haspopup"] = "menu"; 13007 mergedProps["aria-expanded"] = false; 13008 return mergedProps; 13009 }, [listNavigation2.trigger, dismiss.trigger, interactionTypeProps]); 13010 useRefWithInit(() => { 13011 store.update({ 13012 inactiveTriggerProps 13013 }); 13014 return null; 13015 }); 13016 const popupProps = React89.useMemo(() => mergeProps(FOCUSABLE_POPUP_PROPS, { 13017 onMouseMove() { 13018 store.set("allowMouseEnter", true); 13019 if (parent.type === "menu") { 13020 store.set("hoverEnabled", false); 13021 } 13022 }, 13023 onClick() { 13024 if (store.select("hoverEnabled")) { 13025 store.set("hoverEnabled", false); 13026 } 13027 }, 13028 onKeyDown(event) { 13029 const relay = store.select("keyboardEventRelay"); 13030 if (relay && !event.isPropagationStopped()) { 13031 relay(event); 13032 } 13033 } 13034 }, typeahead.floating, listNavigation2.floating, dismiss.floating), [parent.type, store, typeahead.floating, listNavigation2.floating, dismiss.floating]); 13035 const itemProps = listNavigation2.item ?? EMPTY_OBJECT; 13036 usePopupInteractionProps(store, { 13037 floatingRootContext, 13038 activeTriggerProps, 13039 inactiveTriggerProps, 13040 popupProps, 13041 itemProps 13042 }); 13043 const context = React89.useMemo(() => ({ 13044 store, 13045 parent: parentFromContext, 13046 orientation, 13047 loopFocus, 13048 allowEscape, 13049 defaultFloatingId, 13050 setRenderedFloatingId, 13051 virtualFocus, 13052 parentVirtualFocus, 13053 syncHighlightedItem 13054 }), [store, parentFromContext, orientation, loopFocus, allowEscape, defaultFloatingId, virtualFocus, parentVirtualFocus, syncHighlightedItem]); 13055 const renderedChildren = typeof children === "function" ? children({ 13056 payload 13057 }) : children; 13058 let content = /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(MenuRootContext.Provider, { 13059 value: context, 13060 children: [handle && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(PopupHandleAttachment, { 13061 handle, 13062 store 13063 }), renderedChildren] 13064 }); 13065 if (parent.type === void 0 || parent.type === "context-menu") { 13066 content = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(FloatingTree, { 13067 externalTree: floatingTreeRoot, 13068 children: content 13069 }); 13070 } 13071 return content; 13072 }); 13073 if (true) MenuRootInternal.displayName = "MenuRootInternal"; 13074 function MenuRoot(props) { 13075 const filterProvider = React89.useContext(MenuFilterProviderContext); 13076 if (filterProvider === null) { 13077 return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(MenuRootInternal, { 13078 ...props 13079 }); 13080 } 13081 const FilterRoot = filterProvider.Root; 13082 return ( 13083 // The root consumes its provider so a plain submenu inside doesn't inherit it. 13084 /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(MenuFilterProviderContext.Provider, { 13085 value: null, 13086 children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(FilterRoot, { 13087 ...filterProvider.options, 13088 ...props 13089 }) 13090 }) 13091 ); 13092 } 13093 13094 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/submenu-root/MenuSubmenuRoot.mjs 13095 var React90 = __toESM(require_react(), 1); 13096 var import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1); 13097 var EMPTY_SUBMENU_ROOT_CONTEXT = {}; 13098 function MenuSubmenuRoot(props) { 13099 useMenuRootContext(); 13100 const filterProvider = React90.useContext(MenuFilterProviderContext); 13101 if (filterProvider !== null) { 13102 const FilterSubmenuRoot = filterProvider.SubmenuRoot; 13103 return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(MenuFilterProviderContext.Provider, { 13104 value: null, 13105 children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(FilterSubmenuRoot, { 13106 ...filterProvider.options, 13107 ...props 13108 }) 13109 }); 13110 } 13111 return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(MenuSubmenuRootContext.Provider, { 13112 value: EMPTY_SUBMENU_ROOT_CONTEXT, 13113 children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(MenuRootInternal, { 13114 ...props, 13115 isSubmenu: true 13116 }) 13117 }); 13118 } 13119 13120 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/trigger/MenuTrigger.mjs 13121 var React93 = __toESM(require_react(), 1); 13122 13123 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/item/useCompositeItem.mjs 13124 var React91 = __toESM(require_react(), 1); 13125 function useCompositeItem(params = {}) { 13126 const { 13127 highlightItemOnHover, 13128 highlightedIndex, 13129 onHighlightedIndexChange 13130 } = useCompositeRootContext(); 13131 const { 13132 ref, 13133 index: index2 13134 } = useCompositeListItem(params); 13135 const isHighlighted = highlightedIndex === index2; 13136 const itemRef = React91.useRef(null); 13137 const mergedRef = useMergedRefs(ref, itemRef); 13138 const compositeProps = { 13139 tabIndex: isHighlighted ? 0 : -1, 13140 onFocus() { 13141 onHighlightedIndexChange(index2); 13142 }, 13143 onMouseMove() { 13144 const item = itemRef.current; 13145 if (!highlightItemOnHover || !item) { 13146 return; 13147 } 13148 const disabled2 = item.hasAttribute("disabled") || item.ariaDisabled === "true"; 13149 if (!isHighlighted && !disabled2) { 13150 item.focus(); 13151 } 13152 } 13153 }; 13154 return { 13155 compositeProps, 13156 compositeRef: mergedRef, 13157 index: index2 13158 }; 13159 } 13160 13161 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/item/CompositeItem.mjs 13162 function CompositeItem(componentProps) { 13163 const { 13164 render, 13165 className, 13166 style, 13167 state = EMPTY_OBJECT, 13168 props = EMPTY_ARRAY, 13169 refs = EMPTY_ARRAY, 13170 metadata, 13171 stateAttributesMapping: stateAttributesMapping5, 13172 tag = "div", 13173 ...elementProps 13174 } = componentProps; 13175 const { 13176 compositeProps, 13177 compositeRef 13178 } = useCompositeItem({ 13179 metadata 13180 }); 13181 return useRenderElement(tag, componentProps, { 13182 state, 13183 // The composite ref attaches first so an outer item wins when nested items share a DOM node. 13184 ref: [compositeRef, ...refs], 13185 props: [compositeProps, ...props, elementProps], 13186 stateAttributesMapping: stateAttributesMapping5 13187 }); 13188 } 13189 13190 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/utils/findRootOwnerId.mjs 13191 function findRootOwnerId(node) { 13192 if (isHTMLElement(node) && node.hasAttribute("data-rootownerid")) { 13193 return node.getAttribute("data-rootownerid"); 13194 } 13195 if (isLastTraversableNode(node)) { 13196 return void 0; 13197 } 13198 return findRootOwnerId(getParentNode(node)); 13199 } 13200 13201 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popups/useTriggerFocusGuards.mjs 13202 var ReactDOM6 = __toESM(require_react_dom(), 1); 13203 function useTriggerFocusGuards(store, triggerElementRef) { 13204 function closeAndFocus(event, direction, positionerElement) { 13205 const guard = event.currentTarget; 13206 ReactDOM6.flushSync(() => { 13207 store.setOpen(false, createChangeEventDetails(reason_parts_exports.focusOut, event.nativeEvent, guard)); 13208 }); 13209 getTabbableNearElement(guard.isConnected ? guard : triggerElementRef.current, direction, positionerElement)?.focus(); 13210 } 13211 function handlePreFocusGuardFocus(event) { 13212 closeAndFocus(event, -1, store.select("positionerElement")); 13213 } 13214 function handleFocusTargetFocus(event) { 13215 const positionerElement = store.select("positionerElement"); 13216 if (positionerElement && isOutsideEvent(event, positionerElement)) { 13217 store.context.beforeContentFocusGuardRef.current?.focus(); 13218 } else { 13219 closeAndFocus(event, 1, positionerElement); 13220 } 13221 } 13222 return { 13223 handlePreFocusGuardFocus, 13224 handleFocusTargetFocus 13225 }; 13226 } 13227 13228 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/useMixedToggleClickHandler.mjs 13229 var React92 = __toESM(require_react(), 1); 13230 function useMixedToggleClickHandler(params) { 13231 const { 13232 enabled = true, 13233 mouseDownAction, 13234 open: open2 13235 } = params; 13236 const ignoreClickRef = React92.useRef(false); 13237 return React92.useMemo(() => { 13238 if (!enabled) { 13239 return EMPTY_OBJECT; 13240 } 13241 return { 13242 onMouseDown: (event) => { 13243 if (mouseDownAction === "open" && !open2 || mouseDownAction === "close" && open2) { 13244 ignoreClickRef.current = true; 13245 ownerDocument(event.currentTarget).addEventListener("click", () => { 13246 ignoreClickRef.current = false; 13247 }, { 13248 once: true 13249 }); 13250 } 13251 }, 13252 onClick: (event) => { 13253 if (ignoreClickRef.current) { 13254 ignoreClickRef.current = false; 13255 event.preventBaseUIHandler(); 13256 } 13257 } 13258 }; 13259 }, [enabled, mouseDownAction, open2]); 13260 } 13261 13262 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/trigger/MenuTrigger.mjs 13263 var import_jsx_runtime21 = __toESM(require_jsx_runtime(), 1); 13264 var MenuTrigger = fastComponentRef(function MenuTrigger2(componentProps, forwardedRef) { 13265 const { 13266 render, 13267 className, 13268 style, 13269 disabled: disabledProp = false, 13270 nativeButton = true, 13271 id: idProp, 13272 openOnHover: openOnHoverProp, 13273 delay = 100, 13274 closeDelay = 0, 13275 handle, 13276 payload, 13277 ...elementProps 13278 } = componentProps; 13279 const rootContext = useMenuRootContext(true); 13280 const handleStore = usePopupHandleStore(handle); 13281 const store = handleStore ?? rootContext?.store; 13282 if (!store) { 13283 throw new Error(true ? "Base UI: <Menu.Trigger> must be either used within a <Menu.Root> component or provided with a handle." : formatErrorMessage_default(85)); 13284 } 13285 const thisTriggerId = useBaseUiId(idProp); 13286 const isTriggerActive = store.useState("isTriggerActive", thisTriggerId); 13287 const floatingRootContext = store.useState("floatingRootContext"); 13288 const isOpenedByThisTrigger = store.useState("isOpenedByTrigger", thisTriggerId); 13289 const controlsId = store.useState("triggerControlsId", thisTriggerId); 13290 const triggerElementRef = React93.useRef(null); 13291 const parent = useMenuParent(); 13292 const compositeRootContext = useCompositeRootContext(true); 13293 const floatingTreeRootFromContext = useFloatingTree(); 13294 const floatingTreeRoot = React93.useMemo(() => { 13295 return floatingTreeRootFromContext ?? new FloatingTreeStore(); 13296 }, [floatingTreeRootFromContext]); 13297 const floatingNodeId = useFloatingNodeId(floatingTreeRoot); 13298 const floatingParentNodeId = useFloatingParentNodeId(); 13299 const { 13300 registerTrigger, 13301 isMountedByThisTrigger 13302 } = useTriggerDataForwarding(thisTriggerId, triggerElementRef, store, { 13303 payload, 13304 closeDelay, 13305 parent, 13306 floatingTreeRoot, 13307 floatingNodeId, 13308 floatingParentNodeId, 13309 keyboardEventRelay: compositeRootContext?.relayKeyboardEvent 13310 }); 13311 const isInMenubar = parent.type === "menubar"; 13312 const rootDisabled = store.useState("disabled"); 13313 const disabled2 = disabledProp || rootDisabled || isInMenubar && parent.context.disabled; 13314 const { 13315 getButtonProps, 13316 buttonRef 13317 } = useButton({ 13318 disabled: disabled2, 13319 native: nativeButton 13320 }); 13321 React93.useEffect(() => { 13322 if (!isOpenedByThisTrigger && parent.type === void 0) { 13323 store.context.allowMouseUpTriggerRef.current = false; 13324 } 13325 }, [store, isOpenedByThisTrigger, parent.type]); 13326 const triggerRef = React93.useRef(null); 13327 const allowMouseUpTriggerTimeout = useTimeout(); 13328 const handleDocumentMouseUp = useStableCallback((mouseEvent) => { 13329 if (!triggerRef.current) { 13330 return; 13331 } 13332 allowMouseUpTriggerTimeout.clear(); 13333 store.context.allowMouseUpTriggerRef.current = false; 13334 const mouseUpTarget = mouseEvent.target; 13335 if (contains(triggerRef.current, mouseUpTarget) || contains(store.select("positionerElement"), mouseUpTarget) || mouseUpTarget === triggerRef.current) { 13336 return; 13337 } 13338 if (mouseUpTarget != null && findRootOwnerId(mouseUpTarget) === store.select("rootId")) { 13339 return; 13340 } 13341 if (isMouseWithinBounds(mouseEvent, triggerRef.current)) { 13342 return; 13343 } 13344 floatingTreeRoot.events.emit("close", { 13345 domEvent: mouseEvent, 13346 reason: reason_parts_exports.cancelOpen 13347 }); 13348 }); 13349 React93.useEffect(() => { 13350 const doc = ownerDocument(triggerRef.current); 13351 if (isOpenedByThisTrigger && store.select("lastOpenChangeReason") === reason_parts_exports.triggerHover) { 13352 doc.addEventListener("mouseup", handleDocumentMouseUp, { 13353 once: true 13354 }); 13355 return () => { 13356 doc.removeEventListener("mouseup", handleDocumentMouseUp); 13357 }; 13358 } 13359 return void 0; 13360 }, [isOpenedByThisTrigger, handleDocumentMouseUp, store]); 13361 const parentMenubarHasSubmenuOpen = isInMenubar && parent.context.hasSubmenuOpen; 13362 const openOnHover = openOnHoverProp ?? parentMenubarHasSubmenuOpen; 13363 const hoverProps = useHoverReferenceInteraction(floatingRootContext, { 13364 enabled: openOnHover && !disabled2 && (!isInMenubar || parentMenubarHasSubmenuOpen && !isMountedByThisTrigger), 13365 handleClose: safePolygon({ 13366 blockPointerEvents: !isInMenubar 13367 }), 13368 mouseOnly: true, 13369 move: false, 13370 restMs: parent.type === void 0 ? delay : void 0, 13371 delay: { 13372 close: closeDelay 13373 }, 13374 triggerElementRef, 13375 externalTree: floatingTreeRoot, 13376 isActiveTrigger: isTriggerActive, 13377 isClosing: () => store.select("transitionStatus") === "ending" 13378 }); 13379 const stickIfOpen = useStickIfOpen(isOpenedByThisTrigger, store.select("lastOpenChangeReason")); 13380 const click = useClick(floatingRootContext, { 13381 enabled: !disabled2, 13382 event: isOpenedByThisTrigger && isInMenubar ? "click" : "mousedown", 13383 toggle: true, 13384 ignoreMouse: false, 13385 stickIfOpen: parent.type === void 0 ? stickIfOpen : false 13386 }); 13387 const focus = useFocus(floatingRootContext, { 13388 enabled: !disabled2 && parentMenubarHasSubmenuOpen 13389 }); 13390 const mixedToggleHandlers = useMixedToggleClickHandler({ 13391 open: isOpenedByThisTrigger, 13392 enabled: isInMenubar, 13393 mouseDownAction: "open" 13394 }); 13395 const localInteractionProps = React93.useMemo(() => mergeProps(focus.reference, click.reference), [focus.reference, click.reference]); 13396 const rootTriggerProps = store.useState("triggerProps", isMountedByThisTrigger); 13397 const filterTriggerProps = store.useState("filterTriggerProps"); 13398 const { 13399 handlePreFocusGuardFocus, 13400 handleFocusTargetFocus 13401 } = useTriggerFocusGuards(store, triggerElementRef); 13402 const state = { 13403 disabled: disabled2, 13404 open: isOpenedByThisTrigger 13405 }; 13406 const ref = [triggerRef, forwardedRef, buttonRef, registerTrigger, triggerElementRef]; 13407 const props = [localInteractionProps, hoverProps ?? EMPTY_OBJECT, rootTriggerProps, { 13408 "aria-haspopup": "menu", 13409 "aria-controls": controlsId, 13410 id: thisTriggerId, 13411 onMouseDown: (event) => { 13412 if (store.select("open")) { 13413 return; 13414 } 13415 allowMouseUpTriggerTimeout.start(200, () => { 13416 store.context.allowMouseUpTriggerRef.current = true; 13417 }); 13418 const doc = ownerDocument(event.currentTarget); 13419 doc.addEventListener("mouseup", handleDocumentMouseUp, { 13420 once: true 13421 }); 13422 } 13423 }, filterTriggerProps, isInMenubar ? { 13424 role: "menuitem" 13425 } : {}, mixedToggleHandlers, elementProps, getButtonProps]; 13426 const element = useRenderElement("button", componentProps, { 13427 enabled: !isInMenubar, 13428 stateAttributesMapping: pressableTriggerOpenStateMapping, 13429 state, 13430 ref, 13431 props 13432 }); 13433 if (isInMenubar) { 13434 return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(CompositeItem, { 13435 tag: "button", 13436 render, 13437 className, 13438 style, 13439 state, 13440 refs: ref, 13441 props, 13442 stateAttributesMapping: pressableTriggerOpenStateMapping 13443 }); 13444 } 13445 if (isOpenedByThisTrigger) { 13446 return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(React93.Fragment, { 13447 children: [/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(FocusGuard, { 13448 ref: store.context.beforeTriggerFocusGuardRef, 13449 onFocus: handlePreFocusGuardFocus 13450 }, `$thisTriggerId}-pre-focus-guard`), /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(React93.Fragment, { 13451 children: element 13452 }, thisTriggerId), /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(FocusGuard, { 13453 ref: store.context.triggerFocusTargetRef, 13454 onFocus: handleFocusTargetFocus 13455 }, `$thisTriggerId}-post-focus-guard`)] 13456 }); 13457 } 13458 return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(React93.Fragment, { 13459 children: element 13460 }, thisTriggerId); 13461 }); 13462 if (true) MenuTrigger.displayName = "MenuTrigger"; 13463 function useStickIfOpen(open2, openReason) { 13464 const stickIfOpenTimeout = useTimeout(); 13465 const [stickIfOpen, setStickIfOpen] = React93.useState(false); 13466 useIsoLayoutEffect(() => { 13467 if (open2 && openReason === reason_parts_exports.triggerHover) { 13468 setStickIfOpen(true); 13469 stickIfOpenTimeout.start(PATIENT_CLICK_THRESHOLD, () => { 13470 setStickIfOpen(false); 13471 }); 13472 } else if (!open2) { 13473 stickIfOpenTimeout.clear(); 13474 setStickIfOpen(false); 13475 } 13476 }, [open2, openReason, stickIfOpenTimeout]); 13477 return stickIfOpen; 13478 } 13479 function useMenuParent() { 13480 const menubarContext = useMenubarContext(true); 13481 const parent = React93.useMemo(() => { 13482 if (menubarContext) { 13483 return { 13484 type: "menubar", 13485 context: menubarContext 13486 }; 13487 } 13488 return { 13489 type: void 0 13490 }; 13491 }, [menubarContext]); 13492 return parent; 13493 } 13494 13495 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/viewport/MenuViewport.mjs 13496 var React98 = __toESM(require_react(), 1); 13497 13498 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/usePopupViewport.mjs 13499 var React97 = __toESM(require_react(), 1); 13500 var ReactDOM7 = __toESM(require_react_dom(), 1); 13501 13502 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/usePreviousValue.mjs 13503 var React94 = __toESM(require_react(), 1); 13504 function usePreviousValue(value) { 13505 const [state, setState] = React94.useState({ 13506 current: value, 13507 previous: null 13508 }); 13509 if (!Object.is(value, state.current)) { 13510 setState({ 13511 current: value, 13512 previous: state.current 13513 }); 13514 } 13515 return state.previous; 13516 } 13517 13518 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/usePopupAutoResize.mjs 13519 var React95 = __toESM(require_react(), 1); 13520 13521 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/getCssDimensions.mjs 13522 function getCssDimensions2(element) { 13523 const css = getComputedStyle2(element); 13524 let width = parseFloat(css.width) || 0; 13525 let height = parseFloat(css.height) || 0; 13526 const hasOffset = isHTMLElement(element); 13527 const offsetWidth = hasOffset ? element.offsetWidth : width; 13528 const offsetHeight = hasOffset ? element.offsetHeight : height; 13529 const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight; 13530 if (shouldFallback) { 13531 width = offsetWidth; 13532 height = offsetHeight; 13533 } 13534 return { 13535 width, 13536 height 13537 }; 13538 } 13539 13540 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/CommonPopupCssVars.mjs 13541 var popupWidth = "--popup-width"; 13542 var popupHeight = "--popup-height"; 13543 13544 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/usePopupAutoResize.mjs 13545 function usePopupAutoResize(parameters) { 13546 const { 13547 popupElement, 13548 positionerElement, 13549 content, 13550 mounted, 13551 onMeasureLayout: onMeasureLayoutParam, 13552 onMeasureLayoutComplete: onMeasureLayoutCompleteParam, 13553 side, 13554 direction 13555 } = parameters; 13556 const runOnceAnimationsFinish = useAnimationsFinished(popupElement, true); 13557 const animationFrame = useAnimationFrame(); 13558 const committedDimensionsRef = React95.useRef(null); 13559 const onMeasureLayout = useStableCallback(onMeasureLayoutParam); 13560 const onMeasureLayoutComplete = useStableCallback(onMeasureLayoutCompleteParam); 13561 const anchoringStyles = React95.useMemo(() => getPopupAnchoringStyles(side, direction), [side, direction]); 13562 useIsoLayoutEffect(() => { 13563 if (!mounted) { 13564 committedDimensionsRef.current = null; 13565 return void 0; 13566 } 13567 if (!popupElement || !positionerElement) { 13568 return void 0; 13569 } 13570 const restoreAnchoringStyles = applyElementStyles(popupElement, anchoringStyles); 13571 setPopupCssSize(popupElement, "auto"); 13572 const restorePopupPosition = overrideElementStyle(popupElement, "position", "static"); 13573 const restorePopupTransform = overrideElementStyle(popupElement, "transform", "none"); 13574 const restorePopupScale = overrideElementStyle(popupElement, "scale", "1"); 13575 const restorePositionerAvailableSize = applyElementStyles(positionerElement, { 13576 [availableWidth]: "max-content", 13577 [availableHeight]: "max-content" 13578 }); 13579 function restoreMeasurementOverrides() { 13580 restorePopupPosition(); 13581 restorePopupTransform(); 13582 restorePositionerAvailableSize(); 13583 restorePopupScale(); 13584 } 13585 onMeasureLayout?.(); 13586 if (committedDimensionsRef.current === null) { 13587 setPositionerCssSize(positionerElement, "max-content"); 13588 const dimensions = getCssDimensions2(popupElement); 13589 committedDimensionsRef.current = dimensions; 13590 setPositionerCssSize(positionerElement, dimensions); 13591 restoreMeasurementOverrides(); 13592 onMeasureLayoutComplete?.(null, dimensions); 13593 return restoreAnchoringStyles; 13594 } 13595 setPositionerCssSize(positionerElement, "max-content"); 13596 const previousDimensions = committedDimensionsRef.current; 13597 const newDimensions = getCssDimensions2(popupElement); 13598 committedDimensionsRef.current = newDimensions; 13599 setPopupCssSize(popupElement, previousDimensions); 13600 restoreMeasurementOverrides(); 13601 onMeasureLayoutComplete?.(previousDimensions, newDimensions); 13602 setPositionerCssSize(positionerElement, newDimensions); 13603 const abortController = new AbortController(); 13604 animationFrame.request(() => { 13605 setPopupCssSize(popupElement, newDimensions); 13606 runOnceAnimationsFinish(() => { 13607 popupElement.style.setProperty(popupWidth, "auto"); 13608 popupElement.style.setProperty(popupHeight, "auto"); 13609 }, abortController.signal); 13610 }); 13611 return () => { 13612 abortController.abort(); 13613 animationFrame.cancel(); 13614 restoreAnchoringStyles(); 13615 }; 13616 }, [content, popupElement, positionerElement, runOnceAnimationsFinish, animationFrame, mounted, onMeasureLayout, onMeasureLayoutComplete, anchoringStyles]); 13617 } 13618 function getPopupAnchoringStyles(side, direction) { 13619 const isPhysicalTop = side === "top"; 13620 const isPhysicalLeft = side === "left" || side === (direction === "rtl" ? "inline-end" : "inline-start"); 13621 if (!isPhysicalTop && !isPhysicalLeft) { 13622 return EMPTY_OBJECT; 13623 } 13624 return { 13625 position: "absolute", 13626 [isPhysicalTop ? "bottom" : "top"]: "0", 13627 [isPhysicalLeft ? "right" : "left"]: "0" 13628 }; 13629 } 13630 function overrideElementStyle(element, property, value) { 13631 const originalValue = element.style.getPropertyValue(property); 13632 element.style.setProperty(property, value); 13633 return () => { 13634 element.style.setProperty(property, originalValue); 13635 }; 13636 } 13637 function applyElementStyles(element, styles) { 13638 const restorers = []; 13639 for (const [key, value] of Object.entries(styles)) { 13640 restorers.push(overrideElementStyle(element, key, value)); 13641 } 13642 return restorers.length ? () => { 13643 restorers.forEach((restore) => restore()); 13644 } : NOOP; 13645 } 13646 function setPopupCssSize(popupElement, size4) { 13647 const width = size4 === "auto" ? "auto" : `$size4.width}px`; 13648 const height = size4 === "auto" ? "auto" : `$size4.height}px`; 13649 popupElement.style.setProperty(popupWidth, width); 13650 popupElement.style.setProperty(popupHeight, height); 13651 } 13652 function setPositionerCssSize(positionerElement, size4) { 13653 const width = size4 === "max-content" ? "max-content" : `$size4.width}px`; 13654 const height = size4 === "max-content" ? "max-content" : `$size4.height}px`; 13655 positionerElement.style.setProperty(positionerWidth, width); 13656 positionerElement.style.setProperty(positionerHeight, height); 13657 } 13658 13659 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/direction-provider/DirectionProvider.mjs 13660 var React96 = __toESM(require_react(), 1); 13661 var import_jsx_runtime22 = __toESM(require_jsx_runtime(), 1); 13662 var DirectionProvider = function DirectionProvider2(props) { 13663 const { 13664 direction = "ltr" 13665 } = props; 13666 const contextValue = React96.useMemo(() => ({ 13667 direction 13668 }), [direction]); 13669 return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(DirectionContext.Provider, { 13670 value: contextValue, 13671 children: props.children 13672 }); 13673 }; 13674 if (true) DirectionProvider.displayName = "DirectionProvider"; 13675 13676 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/adaptiveOriginMiddleware.mjs 13677 var adaptiveOrigin = { 13678 name: "adaptiveOrigin", 13679 async fn(state) { 13680 const { 13681 x: rawX, 13682 y: rawY, 13683 rects: { 13684 floating: floatRect 13685 }, 13686 elements: { 13687 floating 13688 }, 13689 platform: platform3, 13690 strategy, 13691 placement 13692 } = state; 13693 const win = getWindow(floating); 13694 const styles = win.getComputedStyle(floating); 13695 const hasTransition = styles.transitionDuration !== "0s" && styles.transitionDuration !== ""; 13696 if (!hasTransition) { 13697 return { 13698 x: rawX, 13699 y: rawY, 13700 data: DEFAULT_SIDES 13701 }; 13702 } 13703 const offsetParent = await platform3.getOffsetParent?.(floating); 13704 let offsetDimensions = { 13705 width: 0, 13706 height: 0 13707 }; 13708 if (strategy === "fixed" && win?.visualViewport) { 13709 offsetDimensions = { 13710 width: win.visualViewport.width, 13711 height: win.visualViewport.height 13712 }; 13713 } else if (offsetParent === win) { 13714 const doc = ownerDocument(floating); 13715 offsetDimensions = { 13716 width: doc.documentElement.clientWidth, 13717 height: doc.documentElement.clientHeight 13718 }; 13719 } else if (await platform3.isElement?.(offsetParent)) { 13720 offsetDimensions = await platform3.getDimensions(offsetParent); 13721 } 13722 const currentSide = getSide(placement); 13723 let x2 = rawX; 13724 let y2 = rawY; 13725 if (currentSide === "left") { 13726 x2 = offsetDimensions.width - (rawX + floatRect.width); 13727 } 13728 if (currentSide === "top") { 13729 y2 = offsetDimensions.height - (rawY + floatRect.height); 13730 } 13731 const sideX = currentSide === "left" ? "right" : DEFAULT_SIDES.sideX; 13732 const sideY = currentSide === "top" ? "bottom" : DEFAULT_SIDES.sideY; 13733 return { 13734 x: x2, 13735 y: y2, 13736 data: { 13737 sideX, 13738 sideY 13739 } 13740 }; 13741 } 13742 }; 13743 13744 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/CommonViewportDataAttributes.mjs 13745 var activationDirection = "data-activation-direction"; 13746 13747 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/usePopupViewport.mjs 13748 var import_jsx_runtime23 = __toESM(require_jsx_runtime(), 1); 13749 var popupViewportStateMapping = { 13750 activationDirection: (value) => value ? { 13751 [activationDirection]: value 13752 } : null 13753 }; 13754 function usePopupViewport(parameters) { 13755 const { 13756 store, 13757 side, 13758 children 13759 } = parameters; 13760 const direction = useDirection(); 13761 const activeTrigger = store.useState("activeTriggerElement"); 13762 const activeTriggerId = store.useState("activeTriggerId"); 13763 const open2 = store.useState("open"); 13764 const payload = store.useState("payload"); 13765 const mounted = store.useState("mounted"); 13766 const popupElement = store.useState("popupElement"); 13767 const positionerElement = store.useState("positionerElement"); 13768 const previousActiveTrigger = usePreviousValue(open2 ? activeTrigger : null); 13769 const currentContentKey = usePopupContentKey(activeTriggerId, payload); 13770 const capturedNodeRef = React97.useRef(null); 13771 const [previousContentNode, setPreviousContentNode] = React97.useState(null); 13772 const [newTriggerOffset, setNewTriggerOffset] = React97.useState(null); 13773 const currentContainerRef = React97.useRef(null); 13774 const previousContainerRef = React97.useRef(null); 13775 const onAnimationsFinished = useAnimationsFinished(currentContainerRef, true); 13776 const cleanupFrame = useAnimationFrame(); 13777 const cleanupControllerRef = React97.useRef(null); 13778 const [previousContentDimensions, setPreviousContentDimensions] = React97.useState(null); 13779 const [showStartingStyleAttribute, setShowStartingStyleAttribute] = React97.useState(false); 13780 useIsoLayoutEffect(() => { 13781 store.set("adaptiveOrigin", adaptiveOrigin); 13782 return () => { 13783 store.set("adaptiveOrigin", void 0); 13784 }; 13785 }, [store]); 13786 const handleMeasureLayout = useStableCallback(() => { 13787 currentContainerRef.current?.style.setProperty("animation", "none"); 13788 currentContainerRef.current?.style.setProperty("transition", "none"); 13789 previousContainerRef.current?.style.setProperty("display", "none"); 13790 }); 13791 const handleMeasureLayoutComplete = useStableCallback((previousDimensions) => { 13792 currentContainerRef.current?.style.removeProperty("animation"); 13793 currentContainerRef.current?.style.removeProperty("transition"); 13794 previousContainerRef.current?.style.removeProperty("display"); 13795 if (previousDimensions) { 13796 setPreviousContentDimensions(previousDimensions); 13797 } 13798 }); 13799 const armViewportCleanup = useStableCallback(() => { 13800 cleanupControllerRef.current?.abort(); 13801 const controller = new AbortController(); 13802 cleanupControllerRef.current = controller; 13803 onAnimationsFinished(() => { 13804 setPreviousContentNode(null); 13805 setPreviousContentDimensions(null); 13806 capturedNodeRef.current = null; 13807 }, controller.signal); 13808 }); 13809 const lastHandledTriggerRef = React97.useRef(null); 13810 useIsoLayoutEffect(() => { 13811 if (!open2 || !mounted) { 13812 lastHandledTriggerRef.current = null; 13813 } 13814 }, [open2, mounted]); 13815 useIsoLayoutEffect(() => { 13816 if (open2 && activeTrigger && previousActiveTrigger && activeTrigger !== previousActiveTrigger && lastHandledTriggerRef.current !== activeTrigger && capturedNodeRef.current) { 13817 setPreviousContentNode(capturedNodeRef.current); 13818 setShowStartingStyleAttribute(true); 13819 const offset4 = calculateRelativePosition(previousActiveTrigger, activeTrigger); 13820 setNewTriggerOffset(offset4); 13821 lastHandledTriggerRef.current = activeTrigger; 13822 } 13823 }, [open2, activeTrigger, previousActiveTrigger]); 13824 useIsoLayoutEffect(() => { 13825 if (previousContentNode == null) { 13826 return; 13827 } 13828 cleanupControllerRef.current?.abort(); 13829 setShowStartingStyleAttribute(true); 13830 cleanupFrame.request(() => { 13831 ReactDOM7.flushSync(() => { 13832 setShowStartingStyleAttribute(false); 13833 }); 13834 armViewportCleanup(); 13835 }); 13836 }, [currentContentKey, previousContentNode, armViewportCleanup, cleanupFrame]); 13837 useIsoLayoutEffect(() => { 13838 const source = currentContainerRef.current; 13839 if (!source) { 13840 return; 13841 } 13842 const wrapper = ownerDocument(source).createElement("div"); 13843 for (const child of Array.from(source.childNodes)) { 13844 wrapper.appendChild(child.cloneNode(true)); 13845 } 13846 capturedNodeRef.current = wrapper; 13847 }); 13848 const isTransitioning = previousContentNode != null; 13849 let childrenToRender; 13850 if (!isTransitioning) { 13851 childrenToRender = /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { 13852 "data-current": true, 13853 ref: currentContainerRef, 13854 children 13855 }, currentContentKey); 13856 } else { 13857 childrenToRender = /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(React97.Fragment, { 13858 children: [/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { 13859 "data-previous": true, 13860 inert: inertValue(true), 13861 ref: previousContainerRef, 13862 style: { 13863 ...previousContentDimensions ? { 13864 [popupWidth]: `$previousContentDimensions.width}px`, 13865 [popupHeight]: `$previousContentDimensions.height}px` 13866 } : null, 13867 position: "absolute" 13868 }, 13869 "data-ending-style": showStartingStyleAttribute ? void 0 : "" 13870 }, "previous"), /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { 13871 "data-current": true, 13872 ref: currentContainerRef, 13873 "data-starting-style": showStartingStyleAttribute ? "" : void 0, 13874 children 13875 }, currentContentKey)] 13876 }); 13877 } 13878 useIsoLayoutEffect(() => { 13879 const container = previousContainerRef.current; 13880 if (!container || !previousContentNode) { 13881 return; 13882 } 13883 container.replaceChildren(...Array.from(previousContentNode.childNodes)); 13884 }, [previousContentNode]); 13885 usePopupAutoResize({ 13886 popupElement, 13887 positionerElement, 13888 mounted, 13889 content: payload, 13890 onMeasureLayout: handleMeasureLayout, 13891 onMeasureLayoutComplete: handleMeasureLayoutComplete, 13892 side, 13893 direction 13894 }); 13895 const state = { 13896 activationDirection: getActivationDirection(newTriggerOffset), 13897 transitioning: isTransitioning 13898 }; 13899 return { 13900 children: childrenToRender, 13901 state 13902 }; 13903 } 13904 function getActivationDirection(offset4) { 13905 if (!offset4) { 13906 return void 0; 13907 } 13908 return `$getValueWithTolerance(offset4.horizontal, 5, "right", "left")} $getValueWithTolerance(offset4.vertical, 5, "down", "up")}`; 13909 } 13910 function getValueWithTolerance(value, tolerance, positiveLabel, negativeLabel) { 13911 if (value > tolerance) { 13912 return positiveLabel; 13913 } 13914 if (value < -tolerance) { 13915 return negativeLabel; 13916 } 13917 return ""; 13918 } 13919 function calculateRelativePosition(from, to) { 13920 const fromRect = from.getBoundingClientRect(); 13921 const toRect = to.getBoundingClientRect(); 13922 const fromCenter = { 13923 x: fromRect.left + fromRect.width / 2, 13924 y: fromRect.top + fromRect.height / 2 13925 }; 13926 const toCenter = { 13927 x: toRect.left + toRect.width / 2, 13928 y: toRect.top + toRect.height / 2 13929 }; 13930 return { 13931 horizontal: toCenter.x - fromCenter.x, 13932 vertical: toCenter.y - fromCenter.y 13933 }; 13934 } 13935 function usePopupContentKey(activeTriggerId, payload) { 13936 const [contentKey, setContentKey] = React97.useState(0); 13937 const previousActiveTriggerIdRef = React97.useRef(activeTriggerId); 13938 const previousPayloadRef = React97.useRef(payload); 13939 const pendingPayloadUpdateRef = React97.useRef(false); 13940 useIsoLayoutEffect(() => { 13941 const previousActiveTriggerId = previousActiveTriggerIdRef.current; 13942 const previousPayload = previousPayloadRef.current; 13943 const triggerIdChanged = activeTriggerId !== previousActiveTriggerId; 13944 const payloadChanged = payload !== previousPayload; 13945 if (triggerIdChanged) { 13946 setContentKey((value) => value + 1); 13947 pendingPayloadUpdateRef.current = !payloadChanged; 13948 } else if (pendingPayloadUpdateRef.current && payloadChanged) { 13949 setContentKey((value) => value + 1); 13950 pendingPayloadUpdateRef.current = false; 13951 } 13952 previousActiveTriggerIdRef.current = activeTriggerId; 13953 previousPayloadRef.current = payload; 13954 }, [activeTriggerId, payload]); 13955 return `$activeTriggerId ?? "current"}-$contentKey}`; 13956 } 13957 13958 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/viewport/MenuViewport.mjs 13959 var MenuViewport = /* @__PURE__ */ React98.forwardRef(function MenuViewport2(componentProps, forwardedRef) { 13960 const { 13961 render, 13962 className, 13963 style, 13964 children, 13965 ...elementProps 13966 } = componentProps; 13967 const { 13968 store 13969 } = useMenuRootContext(); 13970 const { 13971 side 13972 } = useMenuPositionerContext(); 13973 const instantType = store.useState("instantType"); 13974 const { 13975 children: childrenToRender, 13976 state: viewportState 13977 } = usePopupViewport({ 13978 store, 13979 side, 13980 children 13981 }); 13982 const state = { 13983 activationDirection: viewportState.activationDirection, 13984 transitioning: viewportState.transitioning, 13985 instant: instantType 13986 }; 13987 return useRenderElement("div", componentProps, { 13988 state, 13989 ref: forwardedRef, 13990 props: [elementProps, { 13991 children: childrenToRender 13992 }], 13993 stateAttributesMapping: popupViewportStateMapping 13994 }); 13995 }); 13996 if (true) MenuViewport.displayName = "MenuViewport"; 13997 13998 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/separator/Separator.mjs 13999 var React99 = __toESM(require_react(), 1); 14000 var Separator = /* @__PURE__ */ React99.forwardRef(function SeparatorComponent(componentProps, forwardedRef) { 14001 const { 14002 className, 14003 render, 14004 orientation = "horizontal", 14005 style, 14006 ...elementProps 14007 } = componentProps; 14008 const state = { 14009 orientation 14010 }; 14011 const element = useRenderElement("div", componentProps, { 14012 state, 14013 ref: forwardedRef, 14014 props: [{ 14015 role: "separator", 14016 "aria-orientation": orientation 14017 }, elementProps] 14018 }); 14019 return element; 14020 }); 14021 if (true) Separator.displayName = "Separator"; 14022 14023 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/submenu-trigger/MenuSubmenuTrigger.mjs 14024 var React100 = __toESM(require_react(), 1); 14025 14026 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/isElementDisabled.mjs 14027 function isElementDisabled(element) { 14028 return element == null || element.hasAttribute("disabled") || element.getAttribute("aria-disabled") === "true"; 14029 } 14030 14031 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/submenu-trigger/MenuSubmenuTrigger.mjs 14032 var import_jsx_runtime24 = __toESM(require_jsx_runtime(), 1); 14033 var VOICE_OVER_EXPANDED_PROPS = { 14034 "aria-expanded": void 0 14035 }; 14036 var MenuSubmenuTriggerPlain = /* @__PURE__ */ React100.forwardRef(function MenuSubmenuTriggerPlain2(componentProps, forwardedRef) { 14037 const { 14038 render, 14039 className, 14040 style, 14041 label, 14042 id: idProp, 14043 nativeButton = false, 14044 openOnHover = true, 14045 delay = 100, 14046 closeDelay = 0, 14047 disabled: disabledProp = false, 14048 ...elementProps 14049 } = componentProps; 14050 const context = useMenuRootContext(true); 14051 if (context?.parent.type !== "menu") { 14052 throw new Error(true ? "Base UI: <Menu.SubmenuTrigger> must be placed in <Menu.SubmenuRoot>." : formatErrorMessage_default(37)); 14053 } 14054 const menuPositionerContext = useMenuPositionerContext(); 14055 const submenuRootContext = useMenuSubmenuRootContext(); 14056 const { 14057 store, 14058 parentVirtualFocus 14059 } = context; 14060 const parentMenuStore = context.parent.store; 14061 const listItem = useCompositeListItem({ 14062 guess: true, 14063 label 14064 }); 14065 const thisTriggerId = useBaseUiId(idProp); 14066 const open2 = store.useState("open"); 14067 const focusReturnedThroughGuardRef = React100.useRef(false); 14068 const positionerElement = store.useState("positionerElement"); 14069 const floatingRootContext = store.useState("floatingRootContext"); 14070 const floatingTreeRoot = store.useState("floatingTreeRoot"); 14071 const popupId = store.useState("triggerPopupId", thisTriggerId); 14072 const baseRegisterTrigger = useTriggerRegistration(thisTriggerId, store); 14073 const registerTrigger = useStableCallback((element2) => { 14074 baseRegisterTrigger(element2); 14075 const activeTriggerElement = store.select("activeTriggerElement"); 14076 if (element2 !== null && store.select("open") && (activeTriggerElement === element2 || store.select("activeTriggerId") == null)) { 14077 store.update({ 14078 activeTriggerId: thisTriggerId ?? null, 14079 activeTriggerElement: element2, 14080 closeDelay 14081 }); 14082 } 14083 }); 14084 const triggerElementRef = React100.useRef(null); 14085 const handleTriggerElementRef = React100.useCallback((el) => { 14086 triggerElementRef.current = el; 14087 store.set("activeTriggerElement", el); 14088 }, [store]); 14089 useIsoLayoutEffect(() => { 14090 registerTrigger(triggerElementRef.current); 14091 return () => registerTrigger(null); 14092 }, [registerTrigger, thisTriggerId, store]); 14093 useIsoLayoutEffect(() => { 14094 if (!open2 || !positionerElement) { 14095 return void 0; 14096 } 14097 function handleGuardFocusOut(event) { 14098 if (getTarget(event) === store.context.beforeContentFocusGuardRef.current) { 14099 focusReturnedThroughGuardRef.current = event.relatedTarget === triggerElementRef.current; 14100 } 14101 } 14102 positionerElement.addEventListener("focusout", handleGuardFocusOut, true); 14103 return () => { 14104 focusReturnedThroughGuardRef.current = false; 14105 positionerElement.removeEventListener("focusout", handleGuardFocusOut, true); 14106 }; 14107 }, [open2, positionerElement, store]); 14108 store.useSyncedValue("closeDelay", closeDelay); 14109 const rootDisabled = store.useState("disabled"); 14110 const parentDisabled = parentMenuStore.useState("disabled"); 14111 const disabled2 = disabledProp || rootDisabled || parentDisabled; 14112 if (true) { 14113 React100.useEffect(() => { 14114 const element2 = triggerElementRef.current; 14115 if (element2 && isElementDisabled(element2) && !disabled2) { 14116 const ownerStackMessage = SafeReact.captureOwnerStack?.() || ""; 14117 warn(`A disabled element was detected on <Menu.SubmenuTrigger>. To properly disable the trigger, use the \`disabled\` prop on the component instead of setting it on the rendered element.$ownerStackMessage}`); 14118 } 14119 }); 14120 } 14121 const itemProps = parentMenuStore.useState("itemProps"); 14122 const highlighted = parentMenuStore.useState("isActive", listItem.index); 14123 const itemMetadata = React100.useMemo(() => ({ 14124 type: "submenu-trigger", 14125 setActive(event) { 14126 if (parentMenuStore.select("highlightItemOnHover")) { 14127 parentMenuStore.setActiveIndex(listItem.index, reason_parts_exports.pointer, event); 14128 } 14129 } 14130 }), [parentMenuStore, listItem.index]); 14131 const { 14132 getItemProps, 14133 itemRef 14134 } = useMenuItem({ 14135 closeOnClick: false, 14136 disabled: disabled2, 14137 highlighted, 14138 id: thisTriggerId, 14139 store, 14140 typingRef: parentMenuStore.context.typingRef, 14141 nativeButton, 14142 itemMetadata, 14143 nodeId: menuPositionerContext?.context.nodeId 14144 }); 14145 const hoverEnabled = store.useState("hoverEnabled"); 14146 const hoverProps = useHoverReferenceInteraction(floatingRootContext, { 14147 enabled: hoverEnabled && openOnHover && !disabled2, 14148 handleClose: safePolygon({ 14149 blockPointerEvents: true 14150 }), 14151 mouseOnly: true, 14152 move: true, 14153 restMs: delay, 14154 delay: { 14155 open: delay, 14156 close: closeDelay 14157 }, 14158 shouldOpen: delay > 0 ? () => parentMenuStore.select("allowMouseEnter") : void 0, 14159 triggerElementRef, 14160 externalTree: floatingTreeRoot, 14161 isClosing: () => store.select("transitionStatus") === "ending", 14162 // Chrome can drop the trigger's `mouseleave` during a fast pointer sweep, 14163 // leaving a stale submenu open (see #5152) — cancel from `mouseout` too. 14164 guardStaleOpen: true 14165 }); 14166 const click = useClick(floatingRootContext, { 14167 enabled: !disabled2, 14168 event: "mousedown", 14169 // Without toggling, TalkBack users cannot close the submenu to reach the next parent menu 14170 // item: moving the virtual cursor outside does not close it, and moving forward again 14171 // re-enters the still-open submenu. Keep toggling enabled so activating its trigger closes it. 14172 // Toggling applies to touch and keyboard activation. In hover mode, mouse presses are 14173 // ignored and the first activation after hover-opening keeps the submenu open. 14174 toggle: true, 14175 ignoreMouse: openOnHover, 14176 stickIfOpen: openOnHover 14177 }); 14178 const localInteractionProps = click.reference ?? EMPTY_OBJECT; 14179 const rootTriggerProps = store.useState("triggerProps", true); 14180 delete rootTriggerProps.id; 14181 const state = { 14182 disabled: disabled2, 14183 highlighted, 14184 open: open2 14185 }; 14186 const openMethod = store.useState("openMethod"); 14187 const lastOpenChangeReason = store.useState("lastOpenChangeReason"); 14188 const openedByKeyboard = lastOpenChangeReason === reason_parts_exports.listNavigation || openMethod === "keyboard"; 14189 const shouldOmitExpanded = open2 && openedByKeyboard && parts_exports.screenReader.voiceOver; 14190 const submenuKeyDownProps = submenuRootContext?.onTriggerKeyDown ? { 14191 onKeyDown: submenuRootContext.onTriggerKeyDown 14192 } : void 0; 14193 const element = useRenderElement("div", componentProps, { 14194 state, 14195 stateAttributesMapping: triggerOpenStateMapping, 14196 props: [ 14197 localInteractionProps, 14198 hoverProps, 14199 rootTriggerProps, 14200 // MenuFilterSubmenuRoot overrides the generic trigger handler because entry and exit 14201 // depend on both the parent and child menu orientations. 14202 submenuKeyDownProps, 14203 itemProps, 14204 // Opening a submenu changes the trigger's expanded state while the trigger still holds 14205 // focus, and VoiceOver announces that state change instead of the submenu item that focus 14206 // moves to a moment later, so the first item is never announced. Dropping the state while 14207 // the submenu is open avoids the announcement without claiming the submenu is collapsed; 14208 // `aria-haspopup` still conveys that the item opens a submenu. 14209 shouldOmitExpanded ? VOICE_OVER_EXPANDED_PROPS : void 0, 14210 { 14211 "aria-controls": popupId, 14212 // A virtually focused parent keeps real focus on its input, so the trigger must stay out 14213 // of the tab order. 14214 tabIndex: parentVirtualFocus || !(open2 || highlighted) ? -1 : 0, 14215 onFocus(event) { 14216 if (store.select("open") && focusReturnedThroughGuardRef.current) { 14217 focusReturnedThroughGuardRef.current = false; 14218 store.setOpen(false, createChangeEventDetails(reason_parts_exports.focusOut, event.nativeEvent)); 14219 } 14220 }, 14221 onBlur() { 14222 if (highlighted) { 14223 parentMenuStore.setActiveIndex(null, reason_parts_exports.none); 14224 } 14225 } 14226 }, 14227 elementProps, 14228 // `getItemProps` stays last so `useButton` keeps gating consumer handlers while disabled. 14229 getItemProps 14230 ], 14231 ref: [forwardedRef, listItem.ref, itemRef, registerTrigger, handleTriggerElementRef] 14232 }); 14233 return element; 14234 }); 14235 if (true) MenuSubmenuTriggerPlain.displayName = "MenuSubmenuTriggerPlain"; 14236 var MenuSubmenuTrigger = /* @__PURE__ */ React100.forwardRef(function MenuSubmenuTrigger2(props, forwardedRef) { 14237 const filterItem = useMenuFilterItem(props, forwardedRef, "submenu-trigger"); 14238 if (!filterItem.visible) { 14239 return null; 14240 } 14241 const mergedProps = filterItem.props ? mergeProps(filterItem.props, props) : props; 14242 return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(MenuSubmenuTriggerPlain, { 14243 ...mergedProps, 14244 ref: filterItem.ref 14245 }); 14246 }); 14247 if (true) MenuSubmenuTrigger.displayName = "MenuSubmenuTrigger"; 14248 14249 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/store/MenuHandle.mjs 14250 var MenuHandle = class extends BasePopupHandle { 14251 constructor() { 14252 super(createNullMenuStore(), "Menu"); 14253 } 14254 /** 14255 * Opens the menu and associates it with the trigger with the given id. 14256 * 14257 * This method should only be called in an event handler or an effect (not during rendering). 14258 * 14259 * @param triggerId ID of the trigger to associate with the menu. The trigger must be a matching 14260 * `Menu.Trigger` with this handle passed as a prop. 14261 */ 14262 open(triggerId) { 14263 this.openByTrigger(triggerId); 14264 } 14265 /** 14266 * Closes the menu. 14267 * 14268 * This method should only be called in an event handler or an effect (not during rendering). 14269 */ 14270 close() { 14271 this.closePopup(); 14272 } 14273 /** 14274 * Whether the menu is currently open. Returns `false` while no root is attached to the handle. 14275 */ 14276 get isOpen() { 14277 return this.attachedStore?.select("open") ?? false; 14278 } 14279 }; 14280 function createMenuHandle() { 14281 return new MenuHandle(); 14282 } 14283 14284 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/filter-provider/MenuFilterProvider.mjs 14285 var React117 = __toESM(require_react(), 1); 14286 14287 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/filter-root/MenuFilterRoot.mjs 14288 var React115 = __toESM(require_react(), 1); 14289 14290 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/filter-root/MenuFilterDropdown.mjs 14291 var React113 = __toESM(require_react(), 1); 14292 14293 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/filter-dropdown/root/FilterDropdownRoot.mjs 14294 var React103 = __toESM(require_react(), 1); 14295 14296 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useItemRegistry.mjs 14297 var React101 = __toESM(require_react(), 1); 14298 function useItemRegistry() { 14299 const itemRegistry = useRefWithInit(() => /* @__PURE__ */ new Map()).current; 14300 const [registryVersion, setRegistryVersion] = React101.useState(0); 14301 const isUpdateScheduledRef = React101.useRef(false); 14302 const scheduleRegistryUpdate = useStableCallback(() => { 14303 if (isUpdateScheduledRef.current) { 14304 return; 14305 } 14306 isUpdateScheduledRef.current = true; 14307 setRegistryVersion((version2) => version2 + 1); 14308 }); 14309 const registerItem = useStableCallback((key, item) => { 14310 itemRegistry.set(key, item); 14311 scheduleRegistryUpdate(); 14312 return () => { 14313 itemRegistry.delete(key); 14314 scheduleRegistryUpdate(); 14315 }; 14316 }); 14317 const registeredItems = React101.useMemo( 14318 () => new Map(itemRegistry), 14319 // The mutable registry is stable. Its version explicitly controls when to publish a copy. 14320 // eslint-disable-next-line react-hooks/exhaustive-deps 14321 [registryVersion] 14322 ); 14323 useIsoLayoutEffect(() => { 14324 isUpdateScheduledRef.current = false; 14325 }, [registryVersion]); 14326 return { 14327 items: registeredItems, 14328 registerItem, 14329 liveItems: itemRegistry 14330 }; 14331 } 14332 14333 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/filter-dropdown/root/FilterDropdownRootContext.mjs 14334 var React102 = __toESM(require_react(), 1); 14335 function throwMissingFilterRoot() { 14336 throw new Error(true ? "Base UI: Filter parts are missing their filter context and cannot access the query or items. Wrap the component root in its filter provider." : formatErrorMessage_default(103)); 14337 } 14338 var FilterDropdownItemContext = /* @__PURE__ */ React102.createContext(null); 14339 if (true) FilterDropdownItemContext.displayName = "FilterDropdownItemContext"; 14340 function useFilterDropdownItemContext(optional = false) { 14341 const context = React102.useContext(FilterDropdownItemContext); 14342 if (context === null && !optional) { 14343 throwMissingFilterRoot(); 14344 } 14345 return context; 14346 } 14347 var FilterDropdownRootContext = /* @__PURE__ */ React102.createContext(null); 14348 if (true) FilterDropdownRootContext.displayName = "FilterDropdownRootContext"; 14349 function useFilterDropdownRootContext(optional = false) { 14350 const context = React102.useContext(FilterDropdownRootContext); 14351 if (context === null && !optional) { 14352 throwMissingFilterRoot(); 14353 } 14354 return context; 14355 } 14356 function useFilterContextForList(listRef) { 14357 let context = React102.useContext(FilterDropdownItemContext); 14358 if (listRef === null) { 14359 return null; 14360 } 14361 while (context !== null && context.listRef !== listRef) { 14362 context = context.parent; 14363 } 14364 return context; 14365 } 14366 var FilterDropdownValueContext = /* @__PURE__ */ React102.createContext(""); 14367 if (true) FilterDropdownValueContext.displayName = "FilterDropdownValueContext"; 14368 function useFilterDropdownValueContext() { 14369 return React102.useContext(FilterDropdownValueContext); 14370 } 14371 14372 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/filter-dropdown/store.mjs 14373 var selectors3 = { 14374 // A null `visibleItemIds` means no query, so fall back to whether anything registered. 14375 isEmpty: (state) => state.visibleItemIds === null ? state.registeredItemCount === 0 : state.visibleItemIds.size === 0, 14376 isItemVisible: (state, id) => state.visibleItemIds === null || state.visibleItemIds.has(id) 14377 }; 14378 var FilterDropdownStore = class extends ReactStore { 14379 constructor() { 14380 super({ 14381 visibleItemIds: null, 14382 registeredItemCount: 0 14383 }, EMPTY_OBJECT, selectors3); 14384 } 14385 }; 14386 var DETACHED_OWNER = { 14387 registerItem: () => NOOP, 14388 store: new FilterDropdownStore() 14389 }; 14390 14391 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/filter-dropdown/root/FilterDropdownRoot.mjs 14392 var import_jsx_runtime25 = __toESM(require_jsx_runtime(), 1); 14393 function FilterDropdownRoot(props) { 14394 const { 14395 children, 14396 open: open2, 14397 disabled: disabled2 = false, 14398 openedByKeyboard = false, 14399 locale, 14400 value, 14401 query, 14402 onValueChange, 14403 filter, 14404 autoHighlight = false, 14405 triggerId: triggerIdProp, 14406 listRef, 14407 getActiveIndex, 14408 setActiveIndex, 14409 focusOwnerRef: focusOwnerRefProp 14410 } = props; 14411 const parentItemContext = React103.useContext(FilterDropdownItemContext); 14412 const [renderedListId, setRenderedListId] = React103.useState(void 0); 14413 const [inputFocusVisible, setInputFocusVisible] = React103.useState(openedByKeyboard); 14414 const [keyboardModality, setKeyboardModality] = React103.useState(openedByKeyboard); 14415 const [previousOpenedByKeyboard, setPreviousOpenedByKeyboard] = React103.useState(openedByKeyboard); 14416 if (openedByKeyboard !== previousOpenedByKeyboard) { 14417 setPreviousOpenedByKeyboard(openedByKeyboard); 14418 setInputFocusVisible(openedByKeyboard); 14419 setKeyboardModality(openedByKeyboard); 14420 } 14421 const { 14422 items: registeredItems, 14423 registerItem: registerInRegistry, 14424 liveItems 14425 } = useItemRegistry(); 14426 const defaultId = useBaseUiId(); 14427 const store = useRefWithInit(() => new FilterDropdownStore()).current; 14428 const registerItem = useStableCallback((id, item) => { 14429 const unregister = registerInRegistry(id, item); 14430 store.set("registeredItemCount", liveItems.size); 14431 return () => { 14432 unregister(); 14433 store.set("registeredItemCount", liveItems.size); 14434 }; 14435 }); 14436 const fallbackFocusOwnerRef = React103.useRef(null); 14437 const lastFilterQueryRef = React103.useRef(null); 14438 const defaultMatchItem = React103.useMemo(() => getFilter({ 14439 locale 14440 }).contains, [locale]); 14441 const focusOwnerRef = focusOwnerRefProp ?? fallbackFocusOwnerRef; 14442 const filterQuery = (query ?? value).trim(); 14443 const matchItem = filterQuery === "" || filter === null ? null : filter ?? defaultMatchItem; 14444 const autoHighlightEnabled = open2 && (autoHighlight === "always" || autoHighlight && filterQuery !== ""); 14445 const defaultListId = defaultId ? `$defaultId}-list` : void 0; 14446 const listId = (renderedListId ?? defaultListId) || void 0; 14447 const triggerId = triggerIdProp || void 0; 14448 const handleValueChange = useStableCallback((nextValue, eventDetails) => { 14449 onValueChange?.(nextValue, eventDetails); 14450 if (!eventDetails.isCanceled && !autoHighlight) { 14451 setActiveIndex(null); 14452 } 14453 }); 14454 const handleItemsChange = useStableCallback((previousItems) => { 14455 const items = listRef.current; 14456 const activeIndex = getActiveIndex(); 14457 if (activeIndex != null && items[activeIndex] != null && items[activeIndex] === previousItems[activeIndex]) { 14458 return; 14459 } 14460 setActiveIndex(autoHighlightEnabled && items.length > 0 ? 0 : null); 14461 }); 14462 useIsoLayoutEffect(() => { 14463 if (!open2 && query === void 0) { 14464 return; 14465 } 14466 const queryChanged = lastFilterQueryRef.current !== null && lastFilterQueryRef.current !== filterQuery; 14467 lastFilterQueryRef.current = filterQuery; 14468 if (matchItem === null) { 14469 store.set("visibleItemIds", null); 14470 if (autoHighlightEnabled && liveItems.size > 0) { 14471 if (queryChanged || getActiveIndex() == null) { 14472 setActiveIndex(0); 14473 } 14474 } else if (filterQuery === "" && queryChanged) { 14475 setActiveIndex(null); 14476 } 14477 return; 14478 } 14479 const currentIds = store.state.visibleItemIds; 14480 if (currentIds === null && liveItems.size === 0) { 14481 return; 14482 } 14483 const nextIds = /* @__PURE__ */ new Set(); 14484 let hasNewMatch = currentIds === null; 14485 liveItems.forEach(({ 14486 getText 14487 }, id) => { 14488 const text = getText(); 14489 if (text != null && matchItem(text, filterQuery)) { 14490 nextIds.add(id); 14491 hasNewMatch ||= !currentIds?.has(id); 14492 } 14493 }); 14494 if (hasNewMatch || currentIds?.size !== nextIds.size) { 14495 if (autoHighlightEnabled && nextIds.size > 0) { 14496 setActiveIndex(0); 14497 } else if (currentIds !== null || queryChanged) { 14498 setActiveIndex(null); 14499 } 14500 store.set("visibleItemIds", nextIds); 14501 } else if (autoHighlightEnabled && queryChanged && nextIds.size > 0) { 14502 setActiveIndex(0); 14503 } 14504 }, [open2, query, filterQuery, registeredItems, liveItems, matchItem, autoHighlightEnabled, store, setActiveIndex, getActiveIndex]); 14505 const contextValue = React103.useMemo(() => ({ 14506 open: open2, 14507 disabled: disabled2, 14508 inputFocusVisible, 14509 setInputFocusVisible, 14510 keyboardModality, 14511 setKeyboardModality, 14512 autoHighlight, 14513 triggerId, 14514 defaultListId, 14515 listId, 14516 setRenderedListId, 14517 focusOwnerRef, 14518 setActiveIndex, 14519 onItemsChange: handleItemsChange, 14520 onValueChange: handleValueChange 14521 }), [open2, disabled2, inputFocusVisible, keyboardModality, autoHighlight, triggerId, defaultListId, listId, focusOwnerRef, setActiveIndex, handleItemsChange, handleValueChange]); 14522 const itemContextValue = React103.useMemo(() => ({ 14523 parent: parentItemContext, 14524 store, 14525 registerItem, 14526 listRef 14527 }), [parentItemContext, store, registerItem, listRef]); 14528 return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(FilterDropdownItemContext.Provider, { 14529 value: itemContextValue, 14530 children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(FilterDropdownRootContext.Provider, { 14531 value: contextValue, 14532 children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(FilterDropdownValueContext.Provider, { 14533 value: query ?? value, 14534 children 14535 }) 14536 }) 14537 }); 14538 } 14539 14540 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/filter-dropdown/root/useFilterDropdownCloseQuery.mjs 14541 var React104 = __toESM(require_react(), 1); 14542 function useFilterDropdownCloseQuery(parameters) { 14543 const { 14544 open: open2, 14545 mounted, 14546 value, 14547 onValueChange 14548 } = parameters; 14549 const [closeQuery, setCloseQuery] = React104.useState(null); 14550 const previousOpenRef = React104.useRef(open2); 14551 useIsoLayoutEffect(() => { 14552 const wasOpen = previousOpenRef.current; 14553 previousOpenRef.current = open2; 14554 if (wasOpen && !open2 && value !== "") { 14555 setCloseQuery(value); 14556 onValueChange("", createChangeEventDetails(reason_parts_exports.popupClose)); 14557 } else if ((open2 || !mounted) && closeQuery !== null) { 14558 setCloseQuery(null); 14559 } 14560 }, [open2, mounted, value, closeQuery, onValueChange]); 14561 return !open2 && closeQuery !== null ? closeQuery : value; 14562 } 14563 14564 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/filter-root/MenuFilterPopup.mjs 14565 var React106 = __toESM(require_react(), 1); 14566 14567 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/filter-root/useMenuFilterPopup.mjs 14568 var React105 = __toESM(require_react(), 1); 14569 14570 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/filter-dropdown/utils/refocusOwner.mjs 14571 var refocusing = false; 14572 function refocusOwner(owner) { 14573 refocusing = true; 14574 try { 14575 owner.focus({ 14576 preventScroll: true 14577 }); 14578 } finally { 14579 refocusing = false; 14580 } 14581 } 14582 function isRefocusingOwner() { 14583 return refocusing; 14584 } 14585 14586 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/filter-root/useMenuFilterPopup.mjs 14587 function useMenuFilterPopup(orientation) { 14588 const context = useFilterDropdownRootContext(); 14589 const direction = useDirection(); 14590 const { 14591 focusOwnerRef 14592 } = context; 14593 const nestedFocusRef = React105.useRef(null); 14594 const pointerTypeRef = React105.useRef("mouse"); 14595 function trackPointerType(event) { 14596 pointerTypeRef.current = event.pointerType || "mouse"; 14597 } 14598 if (true) { 14599 React105.useEffect(() => { 14600 if (context.open && focusOwnerRef.current === null) { 14601 warn("A filterable menu opened without a <Menu.Input>. Render the input inside <Menu.Popup>, or drop <Menu.FilterProvider> for a menu that does not filter."); 14602 } 14603 }, [context.open, focusOwnerRef]); 14604 } 14605 function restoreInputFocus(event, enteredTrigger) { 14606 const focusOwner = focusOwnerRef.current; 14607 if (!context.open || !focusOwner) { 14608 return; 14609 } 14610 const activeEl = activeElement(ownerDocument(event.currentTarget)); 14611 if (activeEl === focusOwner || contains(event.currentTarget, activeEl)) { 14612 return; 14613 } 14614 let submenuTrigger = null; 14615 const nearestPopup = event.nativeEvent.composedPath().find((node) => { 14616 if (!isHTMLElement(node)) { 14617 return false; 14618 } 14619 if (node.getAttribute("role") === "dialog" || node.hasAttribute("data-rootownerid")) { 14620 return true; 14621 } 14622 if (node.hasAttribute("aria-haspopup")) { 14623 submenuTrigger = node; 14624 } 14625 return false; 14626 }); 14627 if (nearestPopup !== event.currentTarget) { 14628 return; 14629 } 14630 if (nestedFocusRef.current && !(enteredTrigger && submenuTrigger)) { 14631 return; 14632 } 14633 if (enteredTrigger && submenuTrigger && isElement(event.relatedTarget) && contains(submenuTrigger, event.relatedTarget)) { 14634 return; 14635 } 14636 refocusOwner(focusOwner); 14637 } 14638 return { 14639 // The input owns virtual focus. 14640 "aria-activedescendant": void 0, 14641 // Not valid on a dialog; the list's implicit orientation is already vertical. 14642 "aria-orientation": void 0, 14643 onMouseDown(event) { 14644 if (getTarget(event.nativeEvent) === event.currentTarget) { 14645 event.preventDefault(); 14646 } 14647 }, 14648 onPointerDown: trackPointerType, 14649 // `pointerover` precedes the compatibility `mouseover`, so a mouse entering right after a tap 14650 // is recognized before the handoff below. 14651 onPointerOver: trackPointerType, 14652 onPointerMove: trackPointerType, 14653 onMouseMove(event) { 14654 if (pointerTypeRef.current === "mouse") { 14655 restoreInputFocus(event, false); 14656 } 14657 }, 14658 onMouseOver(event) { 14659 if (pointerTypeRef.current === "mouse" && nestedFocusRef.current) { 14660 restoreInputFocus(event, true); 14661 } 14662 }, 14663 onFocus(event) { 14664 const target = getTarget(event.nativeEvent); 14665 if (target === focusOwnerRef.current) { 14666 nestedFocusRef.current = null; 14667 } else if (isHTMLElement(target) && !contains(event.currentTarget, target) && !isRefocusingOwner()) { 14668 nestedFocusRef.current = target; 14669 } 14670 if (context.open && target === event.currentTarget) { 14671 focusOwnerRef.current?.focus({ 14672 preventScroll: true 14673 }); 14674 } 14675 }, 14676 onKeyDown(event) { 14677 const target = getTarget(event.nativeEvent); 14678 if (target === focusOwnerRef.current || isTypeableElement(target)) { 14679 return; 14680 } 14681 if (isCrossOrientationCloseKey(event.key, orientation, direction === "rtl", false)) { 14682 focusOwnerRef.current?.focus({ 14683 preventScroll: true 14684 }); 14685 event.stopPropagation(); 14686 } 14687 } 14688 }; 14689 } 14690 14691 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/filter-root/MenuFilterPopup.mjs 14692 var import_jsx_runtime26 = __toESM(require_jsx_runtime(), 1); 14693 var MenuFilterPopup = /* @__PURE__ */ React106.forwardRef(function MenuFilterPopup2(props, forwardedRef) { 14694 const { 14695 store, 14696 orientation 14697 } = useMenuRootContext(); 14698 const open2 = store.useState("open"); 14699 const parent = store.useState("parent"); 14700 const openMethod = store.useState("openMethod"); 14701 const lastOpenChangeReason = store.useState("lastOpenChangeReason"); 14702 const interactionProps = useMenuFilterPopup(orientation); 14703 const openedByHover = open2 && lastOpenChangeReason === reason_parts_exports.triggerHover; 14704 const mayFocusInput = parent.type !== "menu" || open2 && (openMethod === "keyboard" || lastOpenChangeReason === reason_parts_exports.listNavigation || lastOpenChangeReason === reason_parts_exports.triggerHover || lastOpenChangeReason === reason_parts_exports.triggerPress); 14705 let initialFocus = false; 14706 if (mayFocusInput) { 14707 initialFocus = () => { 14708 const touchOpen = (openMethod === "touch" || openMethod === "pen") && !store.context.virtualPress; 14709 if (openedByHover || touchOpen) { 14710 return false; 14711 } 14712 return store.context.virtualFocusRef?.current ?? false; 14713 }; 14714 } 14715 const popupProps = mergeProps(interactionProps, props); 14716 return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(MenuPopupPlain, { 14717 ...popupProps, 14718 role: "dialog", 14719 initialFocus, 14720 ref: forwardedRef 14721 }); 14722 }); 14723 if (true) MenuFilterPopup.displayName = "MenuFilterPopup"; 14724 14725 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/filter-root/MenuFilterList.mjs 14726 var React109 = __toESM(require_react(), 1); 14727 14728 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/filter-dropdown/list/FilterDropdownList.mjs 14729 var React108 = __toESM(require_react(), 1); 14730 14731 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/filter-dropdown/group/FilterDropdownGroupContext.mjs 14732 var React107 = __toESM(require_react(), 1); 14733 var FilterDropdownGroupContext = /* @__PURE__ */ React107.createContext(null); 14734 if (true) FilterDropdownGroupContext.displayName = "FilterDropdownGroupContext"; 14735 function useFilterDropdownGroupContext() { 14736 return React107.useContext(FilterDropdownGroupContext); 14737 } 14738 14739 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/filter-dropdown/list/FilterDropdownList.mjs 14740 var import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1); 14741 var FilterDropdownList = /* @__PURE__ */ React108.forwardRef(function FilterDropdownList2(componentProps, forwardedRef) { 14742 const { 14743 render, 14744 className, 14745 style, 14746 id: idProp, 14747 ...elementProps 14748 } = componentProps; 14749 const context = useFilterDropdownRootContext(); 14750 const [id, registerIdRef] = useRenderedId(componentProps, context.defaultListId, context.setRenderedListId); 14751 const defaultProps = { 14752 // Chromium includes scrollable elements in sequential focus navigation by default. 14753 tabIndex: -1, 14754 id, 14755 onFocus(event) { 14756 const owner = context.focusOwnerRef.current; 14757 if (owner && event.relatedTarget === owner && getTarget(event.nativeEvent) === event.currentTarget) { 14758 refocusOwner(owner); 14759 } 14760 }, 14761 onPointerMove() { 14762 context.setKeyboardModality(false); 14763 }, 14764 onPointerDown() { 14765 context.setKeyboardModality(false); 14766 } 14767 }; 14768 return useRenderElement("div", componentProps, { 14769 ref: [forwardedRef, registerIdRef], 14770 props: [defaultProps, elementProps, { 14771 // The list's groups and items belong to this root's query. A nested root's list renders 14772 // inside an enclosing group, which must not count them as its own members. 14773 children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(FilterDropdownGroupContext.Provider, { 14774 value: null, 14775 children: elementProps.children 14776 }) 14777 }] 14778 }); 14779 }); 14780 if (true) FilterDropdownList.displayName = "FilterDropdownList"; 14781 14782 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/filter-root/useMenuFilterKeyDown.mjs 14783 function getMenuFilterKeyAction(event, context) { 14784 const { 14785 orientation, 14786 rtl, 14787 hasActiveItem, 14788 activeItemOpensSubmenu, 14789 hasValue 14790 } = context; 14791 const { 14792 key 14793 } = event; 14794 if (event.which === 229) { 14795 return "ignore"; 14796 } 14797 if (key === "Tab") { 14798 return event.shiftKey ? "close" : "ignore"; 14799 } 14800 if (key === "Enter") { 14801 return hasActiveItem ? "activate" : "navigate"; 14802 } 14803 const isArrow = key.startsWith("Arrow"); 14804 const isBoundary = key === "Home" || key === "End"; 14805 if (event.shiftKey || event.ctrlKey || event.altKey || event.metaKey) { 14806 return isArrow || isBoundary || key.length === 1 ? "edit" : "navigate"; 14807 } 14808 if (key.length === 1) { 14809 return "edit"; 14810 } 14811 if (isBoundary) { 14812 return hasActiveItem && !hasValue ? "navigate" : "edit"; 14813 } 14814 if (!isArrow) { 14815 return "navigate"; 14816 } 14817 if (isMainOrientationKey(key, orientation)) { 14818 return orientation === "horizontal" && !hasActiveItem && hasValue ? "edit" : "navigate"; 14819 } 14820 if (activeItemOpensSubmenu && (isCrossOrientationOpenKey(key, orientation, rtl) || isCrossOrientationCloseKey(key, orientation, rtl, false))) { 14821 return "submenu"; 14822 } 14823 if (orientation === "horizontal" && !hasActiveItem) { 14824 return "enter-list"; 14825 } 14826 return hasValue ? "edit" : "navigate"; 14827 } 14828 function useMenuFilterKeyDown(hasValue) { 14829 const { 14830 orientation, 14831 store 14832 } = useMenuRootContext(); 14833 const submenuContext = useMenuSubmenuRootContext(); 14834 const direction = useDirection(); 14835 return useStableCallback((event) => { 14836 if (!store.select("open")) { 14837 return; 14838 } 14839 const activeItem = store.state.highlightedItem; 14840 const action = getMenuFilterKeyAction(event, { 14841 orientation, 14842 rtl: direction === "rtl", 14843 hasActiveItem: activeItem != null, 14844 activeItemOpensSubmenu: activeItem?.hasAttribute("aria-haspopup") ?? false, 14845 hasValue 14846 }); 14847 switch (action) { 14848 case "edit": 14849 event.stopPropagation(); 14850 if (event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey) { 14851 store.state.inputProps.onKeyDown?.(event); 14852 } 14853 break; 14854 case "navigate": { 14855 if (isMainOrientationKey(event.key, orientation)) { 14856 event.stopPropagation(); 14857 } 14858 store.state.inputProps.onKeyDown?.(event); 14859 break; 14860 } 14861 case "enter-list": { 14862 event.stopPropagation(); 14863 const listRef = store.context.itemDomElements; 14864 const index2 = event.key === "ArrowDown" ? getMinListIndex(listRef, EMPTY_ARRAY) : getMaxListIndex(listRef, EMPTY_ARRAY); 14865 if (listRef.current[index2]) { 14866 event.preventDefault(); 14867 store.setActiveIndex(index2, reason_parts_exports.keyboard, event.nativeEvent); 14868 } 14869 break; 14870 } 14871 case "submenu": { 14872 stopEvent(event); 14873 const KeyboardEventConstructor = getWindow(activeItem).KeyboardEvent; 14874 activeItem.dispatchEvent(new KeyboardEventConstructor(event.type, event.nativeEvent)); 14875 break; 14876 } 14877 case "activate": 14878 event.preventDefault(); 14879 dispatchClickWithModifiers(activeItem, event); 14880 break; 14881 case "close": { 14882 stopEvent(event); 14883 const returnElement = store.state.parent.type === "menu" && submenuContext?.getReturnElement?.() || store.state.activeTriggerElement; 14884 const details = createChangeEventDetails(reason_parts_exports.focusOut, event.nativeEvent); 14885 store.setOpen(false, details); 14886 if (!details.isCanceled && isHTMLElement(returnElement)) { 14887 returnElement.focus(); 14888 } 14889 break; 14890 } 14891 default: 14892 break; 14893 } 14894 }); 14895 } 14896 14897 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/filter-root/moveHighlightFrom.mjs 14898 function moveHighlightFrom(store, item, event, options) { 14899 const { 14900 orientation, 14901 rtl, 14902 loopFocus, 14903 allowEscape 14904 } = options; 14905 const listRef = store.context.itemDomElements; 14906 const items = listRef.current; 14907 const { 14908 index: index2 14909 } = getNextListIndex(items, items.indexOf(item), { 14910 decrement: !isMainOrientationToEndKey(event.key, orientation, rtl), 14911 loopFocus, 14912 allowEscape, 14913 // Match the menu's list navigation: `aria-disabled` items stay reachable. 14914 disabledIndices: EMPTY_ARRAY, 14915 minIndex: getMinListIndex(listRef, EMPTY_ARRAY), 14916 maxIndex: getMaxListIndex(listRef, EMPTY_ARRAY) 14917 }); 14918 const next = items[index2]; 14919 if (next) { 14920 store.setActiveIndex(index2, reason_parts_exports.keyboard, event.nativeEvent); 14921 next.scrollIntoView?.({ 14922 block: "nearest", 14923 inline: "nearest" 14924 }); 14925 } 14926 return next ?? void 0; 14927 } 14928 14929 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/filter-root/MenuFilterList.mjs 14930 var import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1); 14931 var MenuFilterList = /* @__PURE__ */ React109.forwardRef(function MenuFilterList2(componentProps, forwardedRef) { 14932 const { 14933 store, 14934 orientation, 14935 loopFocus, 14936 allowEscape 14937 } = useMenuRootContext(); 14938 const direction = useDirection(); 14939 const { 14940 onItemsChange, 14941 focusOwnerRef, 14942 triggerId 14943 } = useFilterDropdownRootContext(); 14944 const { 14945 listRef 14946 } = useFilterDropdownItemContext(); 14947 const { 14948 subscribeMapChange 14949 } = useCompositeListContext(); 14950 const value = useFilterDropdownValueContext(); 14951 const handleInputKeyDown = useMenuFilterKeyDown(value !== ""); 14952 const handleKeyDown = useStableCallback((event) => { 14953 const owner = focusOwnerRef.current; 14954 const target = getTarget(event.nativeEvent); 14955 const ownerFocused = owner != null && activeElement(ownerDocument(owner)) === owner; 14956 const fromNestedPopup = !contains(event.currentTarget, target); 14957 if (owner == null || ownerFocused || fromNestedPopup) { 14958 if (event.which !== 229 && !event.shiftKey && !event.ctrlKey && !event.metaKey && !event.altKey && isMainOrientationKey(event.key, orientation)) { 14959 event.stopPropagation(); 14960 const trigger = fromNestedPopup && ownerFocused ? getNestedPopupTrigger(target) : void 0; 14961 if (trigger) { 14962 moveHighlightFrom(store, trigger, event, { 14963 orientation, 14964 rtl: direction === "rtl", 14965 loopFocus, 14966 allowEscape 14967 }); 14968 } 14969 } 14970 return; 14971 } 14972 if (event.defaultPrevented) { 14973 return; 14974 } 14975 refocusOwner(owner); 14976 handleInputKeyDown(event); 14977 }); 14978 function getNestedPopupTrigger(target) { 14979 const root = target.getRootNode(); 14980 return listRef.current.find((item) => { 14981 const popupId = item?.getAttribute("aria-controls"); 14982 return popupId != null && isHTMLElement(item) && contains(root.getElementById(popupId), target); 14983 }); 14984 } 14985 const previousItemsRef = React109.useRef(null); 14986 const handleItemMapChange = useStableCallback(() => { 14987 const items = [...listRef.current]; 14988 const previousItems = previousItemsRef.current; 14989 const changed = previousItems === null || previousItems.length !== items.length || items.some((item, index2) => item !== previousItems[index2]); 14990 if (changed && previousItems !== null) { 14991 onItemsChange(previousItems); 14992 } 14993 previousItemsRef.current = items; 14994 }); 14995 useIsoLayoutEffect(() => { 14996 return subscribeMapChange(handleItemMapChange); 14997 }, [subscribeMapChange, handleItemMapChange]); 14998 const ariaLabelledBy = resolvePopupLabel(componentProps, null, triggerId ?? null); 14999 const listProps = mergeProps({ 15000 role: "menu", 15001 "aria-labelledby": ariaLabelledBy, 15002 "aria-orientation": orientation === "horizontal" ? "horizontal" : void 0, 15003 onKeyDown: handleKeyDown 15004 }, componentProps); 15005 return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(FilterDropdownList, { 15006 ...listProps, 15007 ref: forwardedRef 15008 }); 15009 }); 15010 if (true) MenuFilterList.displayName = "MenuFilterList"; 15011 15012 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/filter-root/MenuFilterGroup.mjs 15013 var React111 = __toESM(require_react(), 1); 15014 15015 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/filter-dropdown/group/useFilterDropdownGroup.mjs 15016 var React110 = __toESM(require_react(), 1); 15017 function isGroupHidden(state, items) { 15018 if (state.visibleItemIds === null || items.size === 0) { 15019 return false; 15020 } 15021 for (const [id, retained] of items) { 15022 if (retained || state.visibleItemIds.has(id)) { 15023 return false; 15024 } 15025 } 15026 return true; 15027 } 15028 function useFilterDropdownGroup() { 15029 const { 15030 store 15031 } = useFilterDropdownItemContext(); 15032 const parentContext = useFilterDropdownGroupContext(); 15033 const { 15034 items, 15035 registerItem 15036 } = useItemRegistry(); 15037 const hidden = useStore(store, isGroupHidden, items); 15038 const groupId = useRefWithInit(() => /* @__PURE__ */ Symbol("filter-dropdown-group")).current; 15039 const registerInParent = parentContext?.registerItem; 15040 useIsoLayoutEffect(() => registerInParent?.(groupId, !hidden), [registerInParent, groupId, hidden]); 15041 const context = React110.useMemo(() => ({ 15042 registerItem 15043 }), [registerItem]); 15044 return { 15045 hidden, 15046 context 15047 }; 15048 } 15049 15050 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/filter-root/MenuFilterGroup.mjs 15051 var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1); 15052 var MenuFilterGroup = /* @__PURE__ */ React111.forwardRef(function MenuFilterGroup2(props, forwardedRef) { 15053 const { 15054 hidden, 15055 context 15056 } = useFilterDropdownGroup(); 15057 return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(FilterDropdownGroupContext.Provider, { 15058 value: context, 15059 children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(MenuGroupPlain, { 15060 ...props, 15061 hidden: hidden || props.hidden || void 0, 15062 ref: forwardedRef 15063 }) 15064 }); 15065 }); 15066 if (true) MenuFilterGroup.displayName = "MenuFilterGroup"; 15067 var MenuFilterRadioGroup = /* @__PURE__ */ React111.forwardRef(function MenuFilterRadioGroup2(props, forwardedRef) { 15068 const { 15069 hidden, 15070 context 15071 } = useFilterDropdownGroup(); 15072 return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(FilterDropdownGroupContext.Provider, { 15073 value: context, 15074 children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(MenuRadioGroupPlain, { 15075 ...props, 15076 hidden: hidden || props.hidden || void 0, 15077 ref: forwardedRef 15078 }) 15079 }); 15080 }); 15081 if (true) MenuFilterRadioGroup.displayName = "MenuFilterRadioGroup"; 15082 15083 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/filter-dropdown/item/useFilterDropdownItem.mjs 15084 var React112 = __toESM(require_react(), 1); 15085 function childrenText(children) { 15086 if (typeof children === "string" || typeof children === "number") { 15087 return String(children); 15088 } 15089 if (Array.isArray(children)) { 15090 return children.map(childrenText).join(""); 15091 } 15092 if (/* @__PURE__ */ React112.isValidElement(children)) { 15093 return childrenText(children.props.children); 15094 } 15095 return ""; 15096 } 15097 function useFilterDropdownItem(params) { 15098 const { 15099 label, 15100 retainGroup = false, 15101 children, 15102 render, 15103 context 15104 } = params; 15105 const nearestContext = useFilterDropdownItemContext(context !== void 0); 15106 const groupContext = useFilterDropdownGroupContext(); 15107 const owner = context === void 0 ? nearestContext : context; 15108 const { 15109 registerItem, 15110 store 15111 } = owner ?? DETACHED_OWNER; 15112 const registerGroupItem = groupContext?.registerItem; 15113 const itemId = useRefWithInit(() => /* @__PURE__ */ Symbol("filter-dropdown-item")).current; 15114 const ref = React112.useRef(null); 15115 const registeredTextRef = React112.useRef(void 0); 15116 const matched = useStore(store, selectors3.isItemVisible, itemId); 15117 const [registered, setRegistered] = React112.useState(matched); 15118 const childrenRef = useValueAsRef(children); 15119 const renderRef = useValueAsRef(render); 15120 const childrenTextRef = React112.useRef(void 0); 15121 const resolveText = React112.useCallback(() => { 15122 if (label != null) { 15123 return label; 15124 } 15125 const fromChildren = childrenText(childrenRef.current ?? unwrapLazyRenderProp(renderRef.current)); 15126 const previousChildrenText = childrenTextRef.current; 15127 childrenTextRef.current = fromChildren; 15128 if (ref.current !== null) { 15129 return ref.current.textContent ?? ""; 15130 } 15131 if (registeredTextRef.current !== void 0 && fromChildren === previousChildrenText) { 15132 return registeredTextRef.current; 15133 } 15134 return fromChildren; 15135 }, [label, childrenRef, renderRef]); 15136 const register2 = React112.useCallback((resolvedText) => { 15137 const text = resolvedText ?? resolveText(); 15138 if (text) { 15139 registeredTextRef.current = text; 15140 } 15141 return registerItem(itemId, { 15142 getText() { 15143 if (label == null && ref.current) { 15144 registeredTextRef.current = ref.current.textContent ?? ""; 15145 } 15146 return registeredTextRef.current; 15147 } 15148 }); 15149 }, [itemId, label, registerItem, resolveText]); 15150 useIsoLayoutEffect(() => { 15151 const unregister = register2(); 15152 setRegistered(true); 15153 return unregister; 15154 }, [register2]); 15155 useIsoLayoutEffect(() => registerGroupItem?.(itemId, retainGroup), [registerGroupItem, itemId, retainGroup]); 15156 useIsoLayoutEffect(() => { 15157 const text = resolveText(); 15158 if (text !== registeredTextRef.current) { 15159 registeredTextRef.current = text; 15160 void register2(text); 15161 } 15162 }, [register2, resolveText, children, render, label]); 15163 return { 15164 visible: !registered || matched, 15165 ref 15166 }; 15167 } 15168 15169 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/filter-root/useMenuFilterSubmenuTrigger.mjs 15170 function useMenuFilterSubmenuTrigger(params) { 15171 const { 15172 store, 15173 virtualFocus 15174 } = useMenuRootContext(); 15175 const open2 = store.useState("open"); 15176 const mounted = store.useState("mounted"); 15177 const parent = store.useState("parent"); 15178 const parentListRef = parent.type === "menu" ? parent.store.context.itemDomElements : null; 15179 const parentContext = useFilterContextForList(parentListRef); 15180 const { 15181 visible, 15182 ref 15183 } = useFilterDropdownItem({ 15184 ...params, 15185 context: parentContext, 15186 retainGroup: mounted 15187 }); 15188 useIsoLayoutEffect(() => { 15189 if (visible || !open2) { 15190 return; 15191 } 15192 store.setOpen(false, createChangeEventDetails(reason_parts_exports.none)); 15193 }, [visible, open2, store]); 15194 const clickProps = useEnhancedClickHandler((event, interactionType) => { 15195 if (event.type === "click" && store.select("open") && (interactionType === "keyboard" || interactionType === "mouse" && store.select("lastOpenChangeReason") === reason_parts_exports.triggerPress)) { 15196 store.context.virtualFocusRef?.current?.focus({ 15197 preventScroll: true 15198 }); 15199 } 15200 }); 15201 const props = { 15202 // Omitted rather than `undefined`, which would clear the `'menu'` the root puts on every 15203 // trigger. 15204 ...virtualFocus ? { 15205 "aria-haspopup": "dialog" 15206 } : void 0, 15207 ...clickProps, 15208 onPointerDown(event) { 15209 clickProps.onPointerDown(event); 15210 store.context.virtualPress = isVirtualPointerEvent(event.nativeEvent); 15211 }, 15212 onFocus(event) { 15213 const focusOwner = store.context.virtualFocusRef?.current; 15214 if (focusOwner && store.select("open") && event.relatedTarget === focusOwner) { 15215 event.preventBaseUIHandler(); 15216 focusOwner.focus({ 15217 preventScroll: true 15218 }); 15219 } 15220 } 15221 }; 15222 if (parentContext === null) { 15223 return { 15224 visible: true, 15225 ref: null, 15226 props 15227 }; 15228 } 15229 return { 15230 visible: visible || mounted, 15231 ref, 15232 props 15233 }; 15234 } 15235 15236 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/filter-root/useVirtualFocusParentHandoff.mjs 15237 function useVirtualFocusParentHandoff(store, parent, open2, virtualFocus) { 15238 const parentStore = parent.type === "menu" ? parent.store : null; 15239 const parentVirtualFocusRef = parentStore?.context.virtualFocusRef; 15240 const returnToParent = useStableCallback((trigger, reason) => { 15241 const focusOwner = parentVirtualFocusRef?.current; 15242 if (virtualFocus || store.select("open") || !parentStore?.select("open") || !focusOwner) { 15243 return; 15244 } 15245 if (contains(store.context.popupRef.current, activeElement(ownerDocument(focusOwner)))) { 15246 focusOwner.focus({ 15247 preventScroll: true 15248 }); 15249 } 15250 if ((reason === reason_parts_exports.listNavigation || reason === reason_parts_exports.escapeKey) && parentStore.state.activeIndex == null) { 15251 parentStore.highlightItem(trigger, reason_parts_exports.none); 15252 } 15253 }); 15254 useIsoLayoutEffect(() => { 15255 if (!open2) { 15256 const trigger = store.state.activeTriggerElement; 15257 const reason = store.select("lastOpenChangeReason"); 15258 queueMicrotask(() => returnToParent(trigger, reason)); 15259 } 15260 }, [open2, store, returnToParent]); 15261 function handleFocus() { 15262 if (!virtualFocus && parentVirtualFocusRef && parentStore?.state.activeIndex != null) { 15263 parentStore.setActiveIndex(null, reason_parts_exports.none); 15264 } 15265 } 15266 return { 15267 parentVirtualFocusRef, 15268 handleFocus 15269 }; 15270 } 15271 15272 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/filter-root/MenuFilterImpl.mjs 15273 var MENU_FILTER_IMPL = { 15274 Popup: MenuFilterPopup, 15275 List: MenuFilterList, 15276 Group: MenuFilterGroup, 15277 RadioGroup: MenuFilterRadioGroup, 15278 useItem: useFilterDropdownItem, 15279 useSubmenuTrigger: useMenuFilterSubmenuTrigger, 15280 useParentHandoff: useVirtualFocusParentHandoff 15281 }; 15282 15283 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/filter-root/MenuFilterDropdown.mjs 15284 var import_jsx_runtime30 = __toESM(require_jsx_runtime(), 1); 15285 function MenuFilterDropdown(props) { 15286 const { 15287 value: valueProp, 15288 defaultValue = "", 15289 onValueChange, 15290 ...dropdownProps 15291 } = props; 15292 const { 15293 store 15294 } = useMenuRootContext(); 15295 const open2 = store.useState("open"); 15296 const mounted = store.useState("mounted"); 15297 const keyboardOpen = store.useState("keyboardOpen"); 15298 const activeTriggerId = store.useState("activeTriggerId"); 15299 const activeTriggerElement = store.useState("activeTriggerElement"); 15300 const disabled2 = store.useState("disabled"); 15301 const [value, setValue] = useControlled({ 15302 controlled: valueProp, 15303 default: defaultValue, 15304 name: "MenuFilterProvider", 15305 state: "value" 15306 }); 15307 const handleValueChange = useStableCallback((nextValue, eventDetails) => { 15308 onValueChange?.(nextValue, eventDetails); 15309 if (!eventDetails.isCanceled) { 15310 setValue(nextValue); 15311 } 15312 }); 15313 const getActiveIndex = useStableCallback(() => store.state.activeIndex); 15314 const setActiveIndex = useStableCallback((index2) => { 15315 store.setActiveIndex(index2, reason_parts_exports.none); 15316 }); 15317 const query = useFilterDropdownCloseQuery({ 15318 open: open2, 15319 mounted, 15320 value, 15321 onValueChange: handleValueChange 15322 }); 15323 const filterTriggerProps = useFilterTriggerProps(value !== ""); 15324 useRefWithInit(() => { 15325 store.set("filterTriggerProps", filterTriggerProps); 15326 return null; 15327 }); 15328 store.useSyncedValue("filterTriggerProps", filterTriggerProps); 15329 useIsoLayoutEffect(() => { 15330 if (!open2) { 15331 store.set("keyboardOpen", false); 15332 } 15333 }, [open2, store]); 15334 const triggerId = activeTriggerElement ? activeTriggerElement.id || null : activeTriggerId; 15335 return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(MenuFilterImplContext.Provider, { 15336 value: MENU_FILTER_IMPL, 15337 children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(FilterDropdownRoot, { 15338 ...dropdownProps, 15339 open: open2, 15340 openedByKeyboard: keyboardOpen, 15341 disabled: disabled2, 15342 value, 15343 query, 15344 onValueChange: handleValueChange, 15345 triggerId, 15346 listRef: store.context.itemDomElements, 15347 getActiveIndex, 15348 setActiveIndex, 15349 focusOwnerRef: store.context.virtualFocusRef 15350 }) 15351 }); 15352 } 15353 function useFilterTriggerProps(hasValue) { 15354 const { 15355 store 15356 } = useMenuRootContext(); 15357 const isInMenubar = useMenubarContext(true) != null; 15358 const handleInputKeyDown = useMenuFilterKeyDown(hasValue); 15359 return React113.useMemo(() => ({ 15360 "aria-haspopup": "dialog", 15361 onPointerDown(event) { 15362 store.context.virtualPress = isVirtualPointerEvent(event.nativeEvent); 15363 }, 15364 onKeyDown(event) { 15365 const focusOwner = store.context.virtualFocusRef?.current; 15366 if (!store.select("open") || !focusOwner || isInMenubar) { 15367 return; 15368 } 15369 if (event.key === "ArrowUp" || event.key === "ArrowDown") { 15370 focusOwner.focus({ 15371 preventScroll: true 15372 }); 15373 handleInputKeyDown(event); 15374 event.preventDefault(); 15375 event.preventBaseUIHandler(); 15376 } else if (event.key === "ArrowLeft" || event.key === "ArrowRight") { 15377 event.preventBaseUIHandler(); 15378 } else if (isTypeaheadKey(event)) { 15379 focusOwner.focus({ 15380 preventScroll: true 15381 }); 15382 } 15383 } 15384 }), [store, isInMenubar, handleInputKeyDown]); 15385 } 15386 function isTypeaheadKey(event) { 15387 return event.key.length === 1 && event.key !== " " && !event.ctrlKey && !event.metaKey && !event.altKey; 15388 } 15389 15390 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/filter-root/useMenuFilterRoot.mjs 15391 var React114 = __toESM(require_react(), 1); 15392 function useMenuFilterRoot(props) { 15393 const { 15394 children, 15395 value, 15396 defaultValue, 15397 onValueChange, 15398 filter, 15399 autoHighlight = false, 15400 locale, 15401 ...otherProps 15402 } = props; 15403 const virtualFocusRef = React114.useRef(null); 15404 return { 15405 children, 15406 rootProps: { 15407 ...otherProps, 15408 virtualFocus: true, 15409 virtualFocusRef, 15410 allowEscape: !autoHighlight, 15411 resetOnPointerLeave: autoHighlight !== "always" 15412 }, 15413 dropdownProps: { 15414 value, 15415 defaultValue, 15416 onValueChange, 15417 filter, 15418 autoHighlight, 15419 locale 15420 } 15421 }; 15422 } 15423 15424 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/filter-root/MenuFilterRoot.mjs 15425 var import_jsx_runtime31 = __toESM(require_jsx_runtime(), 1); 15426 function MenuFilterRoot(props) { 15427 const { 15428 children, 15429 rootProps, 15430 dropdownProps 15431 } = useMenuFilterRoot(props); 15432 return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(MenuRootInternal, { 15433 ...rootProps, 15434 children: (payload) => /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(MenuFilterDropdown, { 15435 ...dropdownProps, 15436 children: typeof children === "function" ? children(payload) : children 15437 }) 15438 }); 15439 } 15440 15441 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/filter-submenu-root/MenuFilterSubmenuRoot.mjs 15442 var React116 = __toESM(require_react(), 1); 15443 var import_jsx_runtime32 = __toESM(require_jsx_runtime(), 1); 15444 function MenuFilterSubmenuRoot(props) { 15445 const parent = useMenuRootContext(); 15446 const parentStore = parent.store; 15447 const parentDisabled = parentStore.useState("disabled"); 15448 const { 15449 rootProps, 15450 dropdownProps 15451 } = useMenuFilterRoot(props); 15452 const parentReferenceRef = React116.useRef(null); 15453 function handleSubmenuEnter(trigger, event) { 15454 const focusedElement = parent.virtualFocus ? parentStore.context.virtualFocusRef?.current : activeElement(ownerDocument(trigger)); 15455 if (isHTMLElement(focusedElement)) { 15456 parentReferenceRef.current = { 15457 reference: focusedElement, 15458 trigger 15459 }; 15460 parentStore.setActiveIndex(null, event ? reason_parts_exports.keyboard : reason_parts_exports.none, event); 15461 } 15462 } 15463 function highlightTrigger(trigger, event) { 15464 parentStore.highlightItem(trigger, reason_parts_exports.keyboard, event); 15465 } 15466 function handleSubmenuExit(event) { 15467 const parentReference = parentReferenceRef.current; 15468 if (!parentReference) { 15469 return; 15470 } 15471 parentReference.reference.focus({ 15472 preventScroll: true 15473 }); 15474 highlightTrigger(parentReference.trigger, event); 15475 } 15476 function handleOpenChange(nextOpen, details) { 15477 rootProps.onOpenChange?.(nextOpen, details); 15478 if (details.isCanceled) { 15479 return; 15480 } 15481 if (!nextOpen) { 15482 if (details.reason === reason_parts_exports.escapeKey && isHTMLElement(details.trigger)) { 15483 highlightTrigger(details.trigger, details.event); 15484 parentReferenceRef.current = { 15485 reference: parent.virtualFocus ? parentStore.context.virtualFocusRef?.current ?? details.trigger : details.trigger, 15486 trigger: details.trigger 15487 }; 15488 } 15489 return; 15490 } 15491 parentReferenceRef.current = null; 15492 if (isHTMLElement(details.trigger) && isKeyboardOpen(details.reason, details.event)) { 15493 handleSubmenuEnter(details.trigger, details.reason === reason_parts_exports.listNavigation ? details.event : void 0); 15494 } 15495 } 15496 return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(MenuRootInternal, { 15497 ...rootProps, 15498 isSubmenu: true, 15499 disabled: parentDisabled || props.disabled, 15500 onOpenChange: handleOpenChange, 15501 children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(MenuFilterSubmenuNavigation, { 15502 parentStore, 15503 parentVirtualFocus: parent.virtualFocus, 15504 parentAllowEscape: parent.virtualFocus && parent.allowEscape, 15505 parentOrientation: parent.orientation, 15506 parentLoopFocus: parent.loopFocus, 15507 getReturnElement: () => parentReferenceRef.current?.reference ?? (parent.virtualFocus ? parentStore.context.virtualFocusRef?.current : null) ?? null, 15508 onSubmenuEnter: handleSubmenuEnter, 15509 onSubmenuExit: handleSubmenuExit, 15510 children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(MenuFilterDropdown, { 15511 ...dropdownProps, 15512 children: props.children 15513 }) 15514 }) 15515 }); 15516 } 15517 function MenuFilterSubmenuNavigation(props) { 15518 const { 15519 children, 15520 parentStore, 15521 parentVirtualFocus, 15522 parentAllowEscape, 15523 parentOrientation, 15524 parentLoopFocus, 15525 onSubmenuEnter, 15526 onSubmenuExit, 15527 getReturnElement 15528 } = props; 15529 const { 15530 store, 15531 orientation 15532 } = useMenuRootContext(); 15533 const direction = useDirection(); 15534 const mounted = store.useState("mounted"); 15535 const wasMountedRef = React116.useRef(false); 15536 const handleReturnFocus = useStableCallback(() => { 15537 const [ownTrigger] = store.context.triggerElements.elements(); 15538 return getReturnElement() ?? (isHTMLElement(ownTrigger) ? ownTrigger : null); 15539 }); 15540 useIsoLayoutEffect(() => { 15541 const wasMounted = wasMountedRef.current; 15542 wasMountedRef.current = mounted; 15543 if (mounted || !wasMounted) { 15544 return; 15545 } 15546 const returnElement = handleReturnFocus(); 15547 if (!returnElement || !parentStore.select("open")) { 15548 return; 15549 } 15550 const doc = ownerDocument(returnElement); 15551 const activeEl = activeElement(doc); 15552 if (activeEl === doc.body || contains(store.select("popupElement"), activeEl)) { 15553 returnElement.focus({ 15554 preventScroll: true 15555 }); 15556 } 15557 }, [mounted, store, parentStore, handleReturnFocus]); 15558 function moveInParent(from, event) { 15559 const item = moveHighlightFrom(parentStore, from, event, { 15560 orientation: parentOrientation, 15561 rtl: direction === "rtl", 15562 loopFocus: parentLoopFocus, 15563 allowEscape: parentAllowEscape 15564 }); 15565 if (!parentVirtualFocus) { 15566 item?.focus({ 15567 preventScroll: true 15568 }); 15569 } 15570 } 15571 function close(event) { 15572 if (!store.select("open")) { 15573 return; 15574 } 15575 stopEvent(event); 15576 const trigger = store.select("activeTriggerElement"); 15577 const eventDetails = createChangeEventDetails(reason_parts_exports.listNavigation, event.nativeEvent); 15578 store.setOpen(false, eventDetails); 15579 if (!eventDetails.isCanceled) { 15580 onSubmenuExit(event.nativeEvent); 15581 } 15582 const returnElement = getReturnElement() ?? store.select("activeTriggerElement"); 15583 if (!store.select("open") && isHTMLElement(returnElement) && activeElement(ownerDocument(returnElement)) !== returnElement) { 15584 returnElement.focus(); 15585 } 15586 if (!store.select("open") && isHTMLElement(trigger) && isMainOrientationKey(event.key, parentOrientation)) { 15587 moveInParent(trigger, event); 15588 } 15589 } 15590 const handleTriggerKeyDown = useStableCallback((event) => { 15591 if (isMainOrientationKey(event.key, parentOrientation)) { 15592 moveInParent(event.currentTarget, event); 15593 event.preventBaseUIHandler(); 15594 stopEvent(event); 15595 return; 15596 } 15597 const open2 = store.select("open"); 15598 const isRtl = direction === "rtl"; 15599 const isCloseKey = isCrossOrientationCloseKey(event.key, orientation, isRtl, false); 15600 if (open2 && isCloseKey) { 15601 close(event); 15602 return; 15603 } 15604 const isOpenKey = isCrossOrientationOpenKey(event.key, parentOrientation, isRtl); 15605 if (!isOpenKey) { 15606 return; 15607 } 15608 stopEvent(event); 15609 if (open2) { 15610 onSubmenuEnter(event.currentTarget, event.nativeEvent); 15611 store.context.virtualFocusRef?.current?.focus({ 15612 preventScroll: true 15613 }); 15614 return; 15615 } 15616 store.setOpen(true, createChangeEventDetails(reason_parts_exports.listNavigation, event.nativeEvent, event.currentTarget)); 15617 }); 15618 const handlePopupKeyDown = useStableCallback((event) => { 15619 if (event.which === 229) { 15620 return; 15621 } 15622 const isCloseKey = isCrossOrientationCloseKey(event.key, orientation, direction === "rtl", false); 15623 if (isCloseKey) { 15624 close(event); 15625 } 15626 }); 15627 const contextValue = React116.useMemo(() => ({ 15628 getReturnElement: handleReturnFocus, 15629 onTriggerKeyDown: handleTriggerKeyDown, 15630 onPopupKeyDown: handlePopupKeyDown 15631 }), [handleReturnFocus, handleTriggerKeyDown, handlePopupKeyDown]); 15632 return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(MenuSubmenuRootContext.Provider, { 15633 value: contextValue, 15634 children 15635 }); 15636 } 15637 15638 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/filter-provider/MenuFilterProvider.mjs 15639 var import_jsx_runtime33 = __toESM(require_jsx_runtime(), 1); 15640 function MenuFilterProvider(props) { 15641 const { 15642 children, 15643 filter, 15644 value, 15645 defaultValue, 15646 onValueChange, 15647 autoHighlight, 15648 locale 15649 } = props; 15650 const contextValue = React117.useMemo(() => ({ 15651 Root: MenuFilterRoot, 15652 SubmenuRoot: MenuFilterSubmenuRoot, 15653 options: { 15654 filter, 15655 value, 15656 defaultValue, 15657 onValueChange, 15658 autoHighlight, 15659 locale 15660 } 15661 }), [filter, value, defaultValue, onValueChange, autoHighlight, locale]); 15662 return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(MenuFilterProviderContext.Provider, { 15663 value: contextValue, 15664 children 15665 }); 15666 } 15667 15668 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/input/MenuInput.mjs 15669 var React119 = __toESM(require_react(), 1); 15670 15671 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/filter-dropdown/input/FilterDropdownInput.mjs 15672 var React118 = __toESM(require_react(), 1); 15673 var FilterDropdownInput = /* @__PURE__ */ React118.forwardRef(function FilterDropdownInput2(componentProps, forwardedRef) { 15674 const { 15675 render, 15676 className, 15677 style, 15678 id: idProp, 15679 disabled: disabled2, 15680 activeItemId, 15681 navigationProps, 15682 ...elementProps 15683 } = componentProps; 15684 const id = useBaseUiId(idProp); 15685 const context = useFilterDropdownRootContext(); 15686 const { 15687 listRef 15688 } = useFilterDropdownItemContext(); 15689 const value = useFilterDropdownValueContext(); 15690 const [composingValue, setComposingValue] = React118.useState(null); 15691 const isComposingRef = React118.useRef(false); 15692 function commitValue(nextValue, nativeEvent) { 15693 if (!context.open) { 15694 return; 15695 } 15696 const reason = nextValue === "" ? reason_parts_exports.inputClear : reason_parts_exports.inputChange; 15697 context.onValueChange(nextValue, createChangeEventDetails(reason, nativeEvent)); 15698 } 15699 const state = { 15700 highlighted: context.inputFocusVisible && (!context.keyboardModality || activeItemId == null) 15701 }; 15702 return useRenderElement("input", componentProps, { 15703 state, 15704 ref: [forwardedRef, context.focusOwnerRef], 15705 props: [navigationProps, { 15706 id, 15707 type: "text", 15708 disabled: context.disabled || disabled2, 15709 "aria-activedescendant": activeItemId, 15710 role: "searchbox", 15711 inputMode: "search", 15712 autoComplete: "off", 15713 spellCheck: "false", 15714 autoCorrect: "off", 15715 autoCapitalize: "none", 15716 // The aria-autocomplete 'list' value is only valid with `aria-haspopup` so we depend 15717 // on the searchbox role to communicate affordance, with an input label as fallback 15718 // https://w3c.github.io/aria/#aria-autocomplete 15719 "aria-autocomplete": void 0, 15720 "aria-controls": context.listId, 15721 value: composingValue ?? value, 15722 onCompositionStart(event) { 15723 if (parts_exports.os.android) { 15724 return; 15725 } 15726 isComposingRef.current = true; 15727 setComposingValue(event.currentTarget.value); 15728 }, 15729 onCompositionEnd(event) { 15730 if (!isComposingRef.current) { 15731 return; 15732 } 15733 isComposingRef.current = false; 15734 setComposingValue(null); 15735 commitValue(event.currentTarget.value, event.nativeEvent); 15736 }, 15737 onChange(event) { 15738 if (isComposingRef.current) { 15739 setComposingValue(event.currentTarget.value); 15740 return; 15741 } 15742 commitValue(event.currentTarget.value, event.nativeEvent); 15743 }, 15744 onKeyDown() { 15745 context.setKeyboardModality(true); 15746 }, 15747 onPointerDown() { 15748 context.setKeyboardModality(false); 15749 }, 15750 onMouseEnter(event) { 15751 context.setKeyboardModality(false); 15752 if (context.open) { 15753 refocusOwner(event.currentTarget); 15754 } 15755 }, 15756 onFocus(event) { 15757 context.setInputFocusVisible(true); 15758 if (context.autoHighlight === "always" || isRefocusingOwner()) { 15759 return; 15760 } 15761 const from = event.relatedTarget; 15762 if (from !== null && listRef.current.includes(from)) { 15763 context.setActiveIndex(null); 15764 } 15765 }, 15766 onBlur() { 15767 context.setInputFocusVisible(false); 15768 } 15769 }, elementProps] 15770 }); 15771 }); 15772 if (true) FilterDropdownInput.displayName = "FilterDropdownInput"; 15773 15774 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/input/MenuInput.mjs 15775 var import_jsx_runtime34 = __toESM(require_jsx_runtime(), 1); 15776 var MenuInput = /* @__PURE__ */ React119.forwardRef(function MenuInput2(componentProps, forwardedRef) { 15777 useMenuFilterPart("Input"); 15778 const { 15779 store 15780 } = useMenuRootContext(); 15781 const value = useFilterDropdownValueContext(); 15782 const { 15783 onKeyDown, 15784 ...navigationProps 15785 } = store.useState("inputProps"); 15786 const activeItemId = store.useState("highlightedItemId"); 15787 const handleKeyDown = useMenuFilterKeyDown(value !== ""); 15788 const handleInputRef = React119.useCallback((input) => { 15789 store.set("inputFocused", input !== null && activeElement(ownerDocument(input)) === input); 15790 }, [store]); 15791 const mergedRefs = useMergedRefs(forwardedRef, handleInputRef); 15792 const inputProps = mergeProps({ 15793 onKeyDown: handleKeyDown, 15794 onFocus() { 15795 store.set("inputFocused", true); 15796 }, 15797 onBlur() { 15798 store.set("inputFocused", false); 15799 } 15800 }, componentProps); 15801 return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(FilterDropdownInput, { 15802 ...inputProps, 15803 activeItemId, 15804 navigationProps, 15805 ref: mergedRefs 15806 }); 15807 }); 15808 if (true) MenuInput.displayName = "MenuInput"; 15809 15810 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/list/MenuList.mjs 15811 var React120 = __toESM(require_react(), 1); 15812 var import_jsx_runtime35 = __toESM(require_jsx_runtime(), 1); 15813 var MenuListPlain = /* @__PURE__ */ React120.forwardRef(function MenuListPlain2(componentProps, forwardedRef) { 15814 const { 15815 render, 15816 className, 15817 style, 15818 id: idProp, 15819 ...elementProps 15820 } = componentProps; 15821 const { 15822 store, 15823 orientation 15824 } = useMenuRootContext(); 15825 const activeTriggerId = store.useState("activeTriggerId"); 15826 const activeTriggerElement = store.useState("activeTriggerElement"); 15827 const setListElement = store.useStateSetter("listElement"); 15828 const id = useBaseUiId(idProp); 15829 const renderedIdRef = React120.useRef(id); 15830 useIsoLayoutEffect(() => { 15831 if (renderedIdRef.current !== id) { 15832 renderedIdRef.current = id; 15833 store.notifyAll(); 15834 } 15835 }, [id, store]); 15836 const ariaLabelledBy = resolvePopupLabel(componentProps, activeTriggerElement, activeTriggerId); 15837 return useRenderElement("div", componentProps, { 15838 ref: [forwardedRef, setListElement], 15839 props: [{ 15840 id, 15841 role: "menu", 15842 // The popup focuses the list on a pointer open in place of itself. 15843 tabIndex: -1, 15844 // `menu` is implicitly vertical, so only the non-default value needs to be rendered. 15845 "aria-orientation": orientation === "horizontal" ? "horizontal" : void 0, 15846 "aria-labelledby": ariaLabelledBy 15847 }, elementProps] 15848 }); 15849 }); 15850 if (true) MenuListPlain.displayName = "MenuListPlain"; 15851 var MenuList = /* @__PURE__ */ React120.forwardRef(function MenuList2(props, forwardedRef) { 15852 const List = useMenuFilterImpl()?.List ?? MenuListPlain; 15853 return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(List, { 15854 ...props, 15855 ref: forwardedRef 15856 }); 15857 }); 15858 if (true) MenuList.displayName = "MenuList"; 15859 15860 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/clear/MenuClear.mjs 15861 var React122 = __toESM(require_react(), 1); 15862 15863 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/filter-dropdown/clear/FilterDropdownClear.mjs 15864 var React121 = __toESM(require_react(), 1); 15865 var FilterDropdownClear = /* @__PURE__ */ React121.forwardRef(function FilterDropdownClear2(componentProps, forwardedRef) { 15866 const { 15867 render, 15868 className, 15869 style, 15870 disabled: disabledProp = false, 15871 nativeButton = true, 15872 ...elementProps 15873 } = componentProps; 15874 const context = useFilterDropdownRootContext(); 15875 const value = useFilterDropdownValueContext(); 15876 const disabled2 = context.disabled || disabledProp; 15877 const visible = value !== ""; 15878 const { 15879 buttonRef, 15880 getButtonProps 15881 } = useButton({ 15882 disabled: disabled2, 15883 native: nativeButton 15884 }); 15885 const state = { 15886 disabled: disabled2 15887 }; 15888 return useRenderElement("button", componentProps, { 15889 enabled: visible, 15890 state, 15891 ref: [forwardedRef, buttonRef], 15892 props: [{ 15893 tabIndex: -1, 15894 "aria-hidden": true, 15895 onMouseDown(event) { 15896 event.preventDefault(); 15897 }, 15898 onClick(event) { 15899 const eventDetails = createChangeEventDetails(reason_parts_exports.clearPress, event.nativeEvent); 15900 context.onValueChange("", eventDetails); 15901 context.focusOwnerRef.current?.focus({ 15902 preventScroll: true 15903 }); 15904 } 15905 }, elementProps, getButtonProps] 15906 }); 15907 }); 15908 if (true) FilterDropdownClear.displayName = "FilterDropdownClear"; 15909 15910 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/clear/MenuClear.mjs 15911 var import_jsx_runtime36 = __toESM(require_jsx_runtime(), 1); 15912 var MenuClear = /* @__PURE__ */ React122.forwardRef(function MenuClear2(props, forwardedRef) { 15913 useMenuFilterPart("Clear"); 15914 return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(FilterDropdownClear, { 15915 ...props, 15916 ref: forwardedRef 15917 }); 15918 }); 15919 if (true) MenuClear.displayName = "MenuClear"; 15920 15921 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/empty/MenuEmpty.mjs 15922 var React124 = __toESM(require_react(), 1); 15923 15924 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/filter-dropdown/empty/FilterDropdownEmpty.mjs 15925 var React123 = __toESM(require_react(), 1); 15926 var FilterDropdownEmpty = /* @__PURE__ */ React123.forwardRef(function FilterDropdownEmpty2(componentProps, forwardedRef) { 15927 const { 15928 render, 15929 className, 15930 style, 15931 ...elementProps 15932 } = componentProps; 15933 const { 15934 store 15935 } = useFilterDropdownItemContext(); 15936 const isEmpty = useStore(store, selectors3.isEmpty); 15937 const [ready, setReady] = React123.useState(false); 15938 useIsoLayoutEffect(() => { 15939 setReady(true); 15940 }, []); 15941 const visible = ready && isEmpty; 15942 const emptyRef = useInitialLiveRegionTextMutation(visible); 15943 return useRenderElement("div", componentProps, { 15944 enabled: visible, 15945 ref: [forwardedRef, emptyRef], 15946 props: [{ 15947 role: "status", 15948 "aria-live": "polite", 15949 "aria-atomic": true 15950 }, elementProps] 15951 }); 15952 }); 15953 if (true) FilterDropdownEmpty.displayName = "FilterDropdownEmpty"; 15954 15955 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/menu/empty/MenuEmpty.mjs 15956 var import_jsx_runtime37 = __toESM(require_jsx_runtime(), 1); 15957 var MenuEmpty = /* @__PURE__ */ React124.forwardRef(function MenuEmpty2(props, forwardedRef) { 15958 useMenuFilterPart("Empty"); 15959 return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(FilterDropdownEmpty, { 15960 ...props, 15961 ref: forwardedRef 15962 }); 15963 }); 15964 if (true) MenuEmpty.displayName = "MenuEmpty"; 15965 15966 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/csp-context/CSPContext.mjs 15967 var React125 = __toESM(require_react(), 1); 15968 var CSPContext = /* @__PURE__ */ React125.createContext(void 0); 15969 if (true) CSPContext.displayName = "CSPContext"; 15970 var DEFAULT_CSP_CONTEXT_VALUE = { 15971 disableStyleElements: false 15972 }; 15973 function useCSPContext() { 15974 return React125.useContext(CSPContext) ?? DEFAULT_CSP_CONTEXT_VALUE; 15975 } 15976 15977 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/clamp.mjs 15978 function clamp2(val, min2 = Number.MIN_SAFE_INTEGER, max2 = Number.MAX_SAFE_INTEGER) { 15979 return Math.max(min2, Math.min(val, max2)); 15980 } 15981 15982 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/formatNumber.mjs 15983 var cache = /* @__PURE__ */ new Map(); 15984 function getFormatter(locale, options) { 15985 const optionsString = JSON.stringify({ 15986 locale: stringifyLocale(locale), 15987 options 15988 }); 15989 const cachedFormatter = cache.get(optionsString); 15990 if (cachedFormatter) { 15991 return cachedFormatter; 15992 } 15993 const formatter = new Intl.NumberFormat(locale, options); 15994 cache.set(optionsString, formatter); 15995 return formatter; 15996 } 15997 function formatNumber(value, locale, options) { 15998 if (value == null) { 15999 return ""; 16000 } 16001 return getFormatter(locale, options).format(value); 16002 } 16003 16004 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/valueToPercent.mjs 16005 function valueToPercent(value, min2, max2) { 16006 return (value - min2) * 100 / (max2 - min2); 16007 } 16008 16009 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/FloatingPortalLite.mjs 16010 var React126 = __toESM(require_react(), 1); 16011 var ReactDOM8 = __toESM(require_react_dom(), 1); 16012 var import_jsx_runtime38 = __toESM(require_jsx_runtime(), 1); 16013 var FloatingPortalLite = /* @__PURE__ */ React126.forwardRef(function FloatingPortalLite2(componentProps, forwardedRef) { 16014 const { 16015 children, 16016 container, 16017 className, 16018 render, 16019 style, 16020 ...elementProps 16021 } = componentProps; 16022 const { 16023 node: portalNode, 16024 subtree: portalSubtree 16025 } = useFloatingPortalNode({ 16026 container, 16027 ref: forwardedRef, 16028 componentProps, 16029 elementProps 16030 }); 16031 if (!portalSubtree && !portalNode) { 16032 return null; 16033 } 16034 return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(React126.Fragment, { 16035 children: [portalSubtree, portalNode && /* @__PURE__ */ ReactDOM8.createPortal(children, portalNode)] 16036 }); 16037 }); 16038 if (true) FloatingPortalLite.displayName = "FloatingPortalLite"; 16039 16040 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/progress/index.parts.mjs 16041 var index_parts_exports2 = {}; 16042 __export(index_parts_exports2, { 16043 Indicator: () => ProgressIndicator, 16044 Label: () => ProgressLabel, 16045 Root: () => ProgressRoot, 16046 Track: () => ProgressTrack, 16047 Value: () => ProgressValue 16048 }); 16049 16050 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/progress/root/ProgressRoot.mjs 16051 var React128 = __toESM(require_react(), 1); 16052 16053 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/progress/root/ProgressRootContext.mjs 16054 var React127 = __toESM(require_react(), 1); 16055 var ProgressRootContext = /* @__PURE__ */ React127.createContext(void 0); 16056 if (true) ProgressRootContext.displayName = "ProgressRootContext"; 16057 function useProgressRootContext() { 16058 const context = React127.useContext(ProgressRootContext); 16059 if (context === void 0) { 16060 throw new Error(true ? "Base UI: ProgressRootContext is missing. Progress parts must be placed within <Progress.Root>." : formatErrorMessage_default(51)); 16061 } 16062 return context; 16063 } 16064 16065 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/progress/root/ProgressRootDataAttributes.mjs 16066 var complete = "data-complete"; 16067 var indeterminate = "data-indeterminate"; 16068 var progressing = "data-progressing"; 16069 16070 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/progress/root/stateAttributesMapping.mjs 16071 var progressStateAttributesMapping = { 16072 status(value) { 16073 if (value === "progressing") { 16074 return { 16075 [progressing]: "" 16076 }; 16077 } 16078 if (value === "complete") { 16079 return { 16080 [complete]: "" 16081 }; 16082 } 16083 if (value === "indeterminate") { 16084 return { 16085 [indeterminate]: "" 16086 }; 16087 } 16088 return null; 16089 } 16090 }; 16091 16092 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/progress/root/ProgressRoot.mjs 16093 var import_jsx_runtime39 = __toESM(require_jsx_runtime(), 1); 16094 var ProgressRoot = /* @__PURE__ */ React128.forwardRef(function ProgressRoot2(componentProps, forwardedRef) { 16095 const { 16096 format, 16097 getAriaValueText, 16098 locale, 16099 max: max2 = 100, 16100 min: min2 = 0, 16101 value, 16102 render, 16103 className, 16104 children, 16105 style, 16106 ...elementProps 16107 } = componentProps; 16108 const [labelId, setLabelId] = React128.useState(); 16109 let status = "indeterminate"; 16110 let percentageValue = null; 16111 let clampedValue = null; 16112 let formattedValue = ""; 16113 let defaultAriaValueText = "indeterminate progress"; 16114 if (value != null && Number.isFinite(value)) { 16115 const rawPercentage = valueToPercent(value, min2, max2); 16116 percentageValue = clamp2(Number.isNaN(rawPercentage) ? 0 : rawPercentage, 0, 100); 16117 clampedValue = clamp2(value, min2, max2); 16118 status = clampedValue === max2 ? "complete" : "progressing"; 16119 formattedValue = format ? formatNumber(clampedValue, locale, format) : formatNumber(percentageValue / 100, locale, { 16120 style: "percent" 16121 }); 16122 defaultAriaValueText = formattedValue; 16123 } 16124 const state = React128.useMemo(() => ({ 16125 status 16126 }), [status]); 16127 const defaultProps = { 16128 "aria-labelledby": labelId, 16129 "aria-valuemax": max2, 16130 "aria-valuemin": min2, 16131 "aria-valuenow": clampedValue ?? void 0, 16132 "aria-valuetext": getAriaValueText ? getAriaValueText(formattedValue, value) : defaultAriaValueText, 16133 role: "progressbar", 16134 children: /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(React128.Fragment, { 16135 children: [children, /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { 16136 role: "presentation", 16137 style: visuallyHidden, 16138 children: "x" 16139 })] 16140 }) 16141 }; 16142 const contextValue = React128.useMemo(() => ({ 16143 formattedValue, 16144 percentageValue, 16145 setLabelId, 16146 state, 16147 value 16148 }), [formattedValue, percentageValue, setLabelId, state, value]); 16149 const element = useRenderElement("div", componentProps, { 16150 state, 16151 ref: forwardedRef, 16152 props: [defaultProps, elementProps], 16153 stateAttributesMapping: progressStateAttributesMapping 16154 }); 16155 return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(ProgressRootContext.Provider, { 16156 value: contextValue, 16157 children: element 16158 }); 16159 }); 16160 if (true) ProgressRoot.displayName = "ProgressRoot"; 16161 16162 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/progress/track/ProgressTrack.mjs 16163 var React129 = __toESM(require_react(), 1); 16164 var ProgressTrack = /* @__PURE__ */ React129.forwardRef(function ProgressTrack2(componentProps, forwardedRef) { 16165 const { 16166 render, 16167 className, 16168 style, 16169 ...elementProps 16170 } = componentProps; 16171 const { 16172 state 16173 } = useProgressRootContext(); 16174 const element = useRenderElement("div", componentProps, { 16175 state, 16176 ref: forwardedRef, 16177 props: elementProps, 16178 stateAttributesMapping: progressStateAttributesMapping 16179 }); 16180 return element; 16181 }); 16182 if (true) ProgressTrack.displayName = "ProgressTrack"; 16183 16184 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/progress/indicator/ProgressIndicator.mjs 16185 var React130 = __toESM(require_react(), 1); 16186 var ProgressIndicator = /* @__PURE__ */ React130.forwardRef(function ProgressIndicator2(componentProps, forwardedRef) { 16187 const { 16188 render, 16189 className, 16190 style, 16191 ...elementProps 16192 } = componentProps; 16193 const { 16194 percentageValue, 16195 state 16196 } = useProgressRootContext(); 16197 const indicatorStyle = percentageValue == null ? {} : { 16198 insetInlineStart: 0, 16199 height: "inherit", 16200 width: `$percentageValue}%` 16201 }; 16202 const element = useRenderElement("div", componentProps, { 16203 state, 16204 ref: forwardedRef, 16205 props: [{ 16206 style: indicatorStyle 16207 }, elementProps], 16208 stateAttributesMapping: progressStateAttributesMapping 16209 }); 16210 return element; 16211 }); 16212 if (true) ProgressIndicator.displayName = "ProgressIndicator"; 16213 16214 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/progress/value/ProgressValue.mjs 16215 var React131 = __toESM(require_react(), 1); 16216 var ProgressValue = /* @__PURE__ */ React131.forwardRef(function ProgressValue2(componentProps, forwardedRef) { 16217 const { 16218 className, 16219 render, 16220 children, 16221 style, 16222 ...elementProps 16223 } = componentProps; 16224 const { 16225 value, 16226 formattedValue, 16227 state 16228 } = useProgressRootContext(); 16229 const indeterminate2 = state.status === "indeterminate"; 16230 const formattedValueArg = indeterminate2 ? "indeterminate" : formattedValue; 16231 const formattedValueDisplay = indeterminate2 ? null : formattedValue; 16232 const element = useRenderElement("span", componentProps, { 16233 state, 16234 ref: forwardedRef, 16235 props: [{ 16236 "aria-hidden": true, 16237 children: typeof children === "function" ? children(formattedValueArg, value) : formattedValueDisplay 16238 }, elementProps], 16239 stateAttributesMapping: progressStateAttributesMapping 16240 }); 16241 return element; 16242 }); 16243 if (true) ProgressValue.displayName = "ProgressValue"; 16244 16245 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/progress/label/ProgressLabel.mjs 16246 var React132 = __toESM(require_react(), 1); 16247 var ProgressLabel = /* @__PURE__ */ React132.forwardRef(function ProgressLabel2(componentProps, forwardedRef) { 16248 const { 16249 render, 16250 className, 16251 style, 16252 id: idProp, 16253 ...elementProps 16254 } = componentProps; 16255 const { 16256 setLabelId, 16257 state 16258 } = useProgressRootContext(); 16259 const id = useRegisteredLabelId(idProp, setLabelId); 16260 const element = useRenderElement("span", componentProps, { 16261 state, 16262 ref: forwardedRef, 16263 props: [{ 16264 id, 16265 role: "presentation" 16266 }, elementProps], 16267 stateAttributesMapping: progressStateAttributesMapping 16268 }); 16269 return element; 16270 }); 16271 if (true) ProgressLabel.displayName = "ProgressLabel"; 16272 16273 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/styles.mjs 16274 var import_jsx_runtime40 = __toESM(require_jsx_runtime(), 1); 16275 var DISABLE_SCROLLBAR_CLASS_NAME = "base-ui-disable-scrollbar"; 16276 var styleDisableScrollbar = { 16277 className: DISABLE_SCROLLBAR_CLASS_NAME, 16278 getElement(nonce) { 16279 return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("style", { 16280 nonce, 16281 href: DISABLE_SCROLLBAR_CLASS_NAME, 16282 precedence: "base-ui:low", 16283 children: `.$DISABLE_SCROLLBAR_CLASS_NAME}{scrollbar-width:none}.$DISABLE_SCROLLBAR_CLASS_NAME}::-webkit-scrollbar{display:none}` 16284 }); 16285 } 16286 }; 16287 if (true) styleDisableScrollbar.getElement.displayName = "styleDisableScrollbar.getElement"; 16288 16289 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/scrollEdges.mjs 16290 var SCROLL_EDGE_TOLERANCE_PX = 1; 16291 function getMaxScrollOffset(scrollSize, clientSize) { 16292 return Math.max(0, scrollSize - clientSize); 16293 } 16294 function normalizeScrollOffset(value, max2) { 16295 if (max2 <= 0) { 16296 return 0; 16297 } 16298 const clamped = clamp2(value, 0, max2); 16299 const startDistance = clamped; 16300 const endDistance = max2 - clamped; 16301 const withinStartTolerance = startDistance <= SCROLL_EDGE_TOLERANCE_PX; 16302 const withinEndTolerance = endDistance <= SCROLL_EDGE_TOLERANCE_PX; 16303 if (withinStartTolerance && withinEndTolerance) { 16304 return startDistance <= endDistance ? 0 : max2; 16305 } 16306 if (withinStartTolerance) { 16307 return 0; 16308 } 16309 if (withinEndTolerance) { 16310 return max2; 16311 } 16312 return clamped; 16313 } 16314 16315 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/index.parts.mjs 16316 var index_parts_exports3 = {}; 16317 __export(index_parts_exports3, { 16318 Arrow: () => SelectArrow, 16319 Backdrop: () => SelectBackdrop, 16320 Group: () => SelectGroup, 16321 GroupLabel: () => SelectGroupLabel, 16322 Icon: () => SelectIcon, 16323 Item: () => SelectItem, 16324 ItemIndicator: () => SelectItemIndicator, 16325 ItemText: () => SelectItemText, 16326 Label: () => SelectLabel, 16327 List: () => SelectList, 16328 Popup: () => SelectPopup, 16329 Portal: () => SelectPortal, 16330 Positioner: () => SelectPositioner, 16331 Root: () => SelectRoot, 16332 ScrollDownArrow: () => SelectScrollDownArrow, 16333 ScrollUpArrow: () => SelectScrollUpArrow, 16334 Separator: () => SelectSeparator, 16335 Trigger: () => SelectTrigger, 16336 Value: () => SelectValue 16337 }); 16338 16339 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/root/SelectRoot.mjs 16340 var React134 = __toESM(require_react(), 1); 16341 16342 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/root/SelectRootContext.mjs 16343 var React133 = __toESM(require_react(), 1); 16344 var SelectRootContext = /* @__PURE__ */ React133.createContext(void 0); 16345 if (true) SelectRootContext.displayName = "SelectRootContext"; 16346 var SelectFloatingContext = /* @__PURE__ */ React133.createContext(void 0); 16347 if (true) SelectFloatingContext.displayName = "SelectFloatingContext"; 16348 function useSelectRootContext() { 16349 const store = React133.useContext(SelectRootContext); 16350 if (store === void 0) { 16351 throw new Error(true ? "Base UI: SelectRootContext is missing. Select parts must be placed within <Select.Root>." : formatErrorMessage_default(60)); 16352 } 16353 return store; 16354 } 16355 function useSelectFloatingContext() { 16356 const context = React133.useContext(SelectFloatingContext); 16357 if (context === void 0) { 16358 throw new Error(true ? "Base UI: SelectFloatingContext is missing. Select parts must be placed within <Select.Root>." : formatErrorMessage_default(61)); 16359 } 16360 return context; 16361 } 16362 16363 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/store.mjs 16364 var selectors4 = { 16365 id: (state) => state.id, 16366 labelId: (state) => state.labelId, 16367 modal: (state) => state.modal, 16368 multiple: (state) => state.multiple, 16369 disabled: (state) => state.disabled, 16370 readOnly: (state) => state.readOnly, 16371 required: (state) => state.required, 16372 highlightItemOnHover: (state) => state.highlightItemOnHover, 16373 items: (state) => state.items, 16374 itemToStringLabel: (state) => state.itemToStringLabel, 16375 isItemEqualToValue: (state) => state.isItemEqualToValue, 16376 value: (state) => state.value, 16377 hasSelectedValue: (state) => { 16378 const { 16379 value, 16380 multiple, 16381 itemToStringValue 16382 } = state; 16383 if (value == null) { 16384 return false; 16385 } 16386 if (multiple && Array.isArray(value)) { 16387 return value.length > 0; 16388 } 16389 return stringifyAsValue(value, itemToStringValue) !== ""; 16390 }, 16391 hasNullItemLabel: (state, enabled) => { 16392 return enabled ? hasNullItemLabel(state.items) : false; 16393 }, 16394 open: (state) => state.open, 16395 mounted: (state) => state.mounted, 16396 forceMount: (state) => state.forceMount, 16397 transitionStatus: (state) => state.transitionStatus, 16398 openMethod: (state) => state.openMethod, 16399 activeIndex: (state) => state.activeIndex, 16400 selectedIndex: (state) => state.selectedIndex, 16401 isActive: (state, index2) => state.activeIndex === index2, 16402 isSelected: (state, itemValue) => { 16403 const comparer = state.isItemEqualToValue; 16404 const storeValue = state.value; 16405 if (state.multiple) { 16406 return Array.isArray(storeValue) && storeValue.some((selectedItem) => compareItemEquality(itemValue, selectedItem, comparer)); 16407 } 16408 return compareItemEquality(itemValue, storeValue, comparer); 16409 }, 16410 isSelectedByFocus: (state, index2) => { 16411 return state.selectedIndex === index2; 16412 }, 16413 popupProps: (state) => state.popupProps, 16414 triggerProps: (state) => state.triggerProps, 16415 itemRoot: (state) => state.itemRoot, 16416 triggerElement: (state) => state.triggerElement, 16417 positionerElement: (state) => state.positionerElement, 16418 listElement: (state) => state.listElement, 16419 popupSide: (state) => state.popupSide, 16420 scrollUpArrowVisible: (state) => state.scrollUpArrowVisible, 16421 scrollDownArrowVisible: (state) => state.scrollDownArrowVisible, 16422 hasScrollArrows: (state) => state.hasScrollArrows 16423 }; 16424 16425 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/root/SelectRoot.mjs 16426 var import_jsx_runtime41 = __toESM(require_jsx_runtime(), 1); 16427 function SelectRoot(props) { 16428 const { 16429 id, 16430 value: valueProp, 16431 defaultValue = null, 16432 onValueChange, 16433 open: openProp, 16434 defaultOpen = false, 16435 onOpenChange, 16436 name: nameProp, 16437 form, 16438 autoComplete, 16439 disabled: disabledProp = false, 16440 readOnly = false, 16441 required = false, 16442 modal = true, 16443 actionsRef, 16444 inputRef, 16445 onOpenChangeComplete, 16446 items, 16447 multiple = false, 16448 itemToStringLabel, 16449 itemToStringValue, 16450 isItemEqualToValue = defaultItemEquality, 16451 highlightItemOnHover = true, 16452 children 16453 } = props; 16454 const { 16455 clearErrors 16456 } = useFormContext(); 16457 const { 16458 setDirty, 16459 setTouched, 16460 setFocused, 16461 validityData, 16462 setFilled, 16463 name: fieldName, 16464 disabled: fieldDisabled, 16465 validation, 16466 validationMode 16467 } = useFieldRootContext(); 16468 const generatedId = useLabelableId({ 16469 id 16470 }); 16471 const disabled2 = fieldDisabled || disabledProp; 16472 const name2 = fieldName ?? nameProp; 16473 const [value, setValueUnwrapped] = useControlled({ 16474 controlled: valueProp, 16475 default: multiple ? defaultValue ?? EMPTY_ARRAY : defaultValue, 16476 name: "Select", 16477 state: "value" 16478 }); 16479 const [open2, setOpenUnwrapped] = useControlled({ 16480 controlled: openProp, 16481 default: defaultOpen, 16482 name: "Select", 16483 state: "open" 16484 }); 16485 const listRef = React134.useRef([]); 16486 const labelsRef = React134.useRef([]); 16487 const popupRef = React134.useRef(null); 16488 const scrollHandlerRef = React134.useRef(null); 16489 const scrollArrowsMountedCountRef = React134.useRef(0); 16490 const valueRef = React134.useRef(null); 16491 const valuesRef = React134.useRef([]); 16492 const typingRef = React134.useRef(false); 16493 const firstItemTextRef = React134.useRef(null); 16494 const selectedItemTextRef = React134.useRef(null); 16495 const selectionRef = React134.useRef({ 16496 allowSelectedMouseUp: false, 16497 allowUnselectedMouseUp: false, 16498 dragY: 0 16499 }); 16500 const alignItemWithTriggerActiveRef = React134.useRef(false); 16501 const initialValueRef = React134.useRef(value); 16502 const { 16503 openMethod, 16504 triggerProps: interactionTypeProps 16505 } = useOpenInteractionType(open2); 16506 const store = useRefWithInit(() => new ReactStore({ 16507 id: generatedId, 16508 labelId: void 0, 16509 modal, 16510 multiple, 16511 disabled: disabled2, 16512 readOnly, 16513 required, 16514 highlightItemOnHover, 16515 itemToStringLabel, 16516 itemToStringValue, 16517 isItemEqualToValue, 16518 value, 16519 open: open2, 16520 // Seeded with the initial values of `useUnmountAfterClose`, which is called after the 16521 // store because its unmount cleanup writes to it. `useSyncedValues` keeps them in sync. 16522 mounted: open2, 16523 transitionStatus: void 0, 16524 items, 16525 forceMount: false, 16526 openMethod: null, 16527 activeIndex: null, 16528 selectedIndex: null, 16529 popupProps: EMPTY_OBJECT, 16530 triggerProps: EMPTY_OBJECT, 16531 itemRoot: { 16532 props: EMPTY_OBJECT, 16533 multiple, 16534 disabled: disabled2, 16535 readOnly, 16536 isItemEqualToValue 16537 }, 16538 triggerElement: null, 16539 positionerElement: null, 16540 listElement: null, 16541 popupSide: null, 16542 scrollUpArrowVisible: false, 16543 scrollDownArrowVisible: false, 16544 hasScrollArrows: false 16545 }, { 16546 setValue: NOOP, 16547 setOpen: NOOP, 16548 handleScrollArrowVisibility: NOOP, 16549 onOpenChangeComplete: NOOP, 16550 listRef, 16551 popupRef, 16552 scrollHandlerRef, 16553 scrollArrowsMountedCountRef, 16554 valueRef, 16555 valuesRef, 16556 labelsRef, 16557 typingRef, 16558 selectionRef, 16559 firstItemTextRef, 16560 selectedItemTextRef, 16561 alignItemWithTriggerActiveRef, 16562 initialValueRef 16563 }, selectors4)).current; 16564 const [preventUnmountOnClose, setPreventUnmountOnClose] = React134.useState(false); 16565 const { 16566 mounted, 16567 transitionStatus, 16568 forceUnmount: handleUnmount 16569 } = useUnmountAfterClose({ 16570 open: open2, 16571 ref: popupRef, 16572 preventUnmountOnClose, 16573 setPreventUnmountOnClose, 16574 onUnmount() { 16575 store.update({ 16576 activeIndex: null, 16577 openMethod: null, 16578 scrollUpArrowVisible: false, 16579 scrollDownArrowVisible: false 16580 }); 16581 onOpenChangeComplete?.(false); 16582 } 16583 }); 16584 const activeIndex = store.useState("activeIndex"); 16585 const selectedIndex = store.useState("selectedIndex"); 16586 const triggerElement = store.useState("triggerElement"); 16587 const positionerElement = store.useState("positionerElement"); 16588 const previousOpenMethod = usePreviousValue(openMethod); 16589 const renderedOpenMethod = openMethod ?? previousOpenMethod; 16590 const serializedValue = React134.useMemo(() => { 16591 if (multiple) { 16592 return ""; 16593 } 16594 return stringifyAsValue(value, itemToStringValue); 16595 }, [multiple, value, itemToStringValue]); 16596 const fieldStringValue = React134.useMemo(() => { 16597 if (multiple && Array.isArray(value)) { 16598 return value.map((currentValue) => stringifyAsValue(currentValue, itemToStringValue)); 16599 } 16600 return stringifyAsValue(value, itemToStringValue); 16601 }, [multiple, value, itemToStringValue]); 16602 const controlRef = useValueAsRef(triggerElement); 16603 const getStringifiedValueForForm = useStableCallback(() => fieldStringValue); 16604 useRegisterFieldControl(controlRef, generatedId, value, getStringifiedValueForForm, !disabled2, nameProp); 16605 const hasSelectedValue = multiple ? Array.isArray(value) && value.length > 0 : value != null && serializedValue !== ""; 16606 useIsoLayoutEffect(() => { 16607 setFilled(hasSelectedValue); 16608 }, [hasSelectedValue, setFilled]); 16609 useIsoLayoutEffect(function syncSelectedIndex() { 16610 const nextIndex = findSelectionIndex(valuesRef.current, value, isItemEqualToValue, multiple); 16611 if (nextIndex === null) { 16612 selectedItemTextRef.current = null; 16613 } 16614 if (open2) { 16615 return; 16616 } 16617 store.set("selectedIndex", nextIndex); 16618 }, [multiple, open2, value, isItemEqualToValue, store]); 16619 useValueChanged(value, () => { 16620 clearErrors(name2); 16621 setDirty(isSelectedValueDirty(value, validityData.initialValue, isItemEqualToValue)); 16622 validation.change(value); 16623 }); 16624 const setOpen = useStableCallback((nextOpen, eventDetails) => { 16625 const openEventDetails = eventDetails; 16626 const shouldPreventUnmountOnClose = attachPreventUnmountOnClose(openEventDetails); 16627 onOpenChange?.(nextOpen, openEventDetails); 16628 if (eventDetails.isCanceled) { 16629 return; 16630 } 16631 if (!nextOpen) { 16632 setPreventUnmountOnClose(shouldPreventUnmountOnClose()); 16633 } 16634 setOpenUnwrapped(nextOpen); 16635 if (!nextOpen && (eventDetails.reason === reason_parts_exports.focusOut || eventDetails.reason === reason_parts_exports.outsidePress)) { 16636 setTouched(true); 16637 setFocused(false); 16638 if (validationMode === "onBlur") { 16639 validation.commit(value); 16640 } 16641 } 16642 }); 16643 React134.useImperativeHandle(actionsRef, () => ({ 16644 unmount: handleUnmount, 16645 close: () => { 16646 if (store.state.open) { 16647 setOpen(false, createChangeEventDetails(reason_parts_exports.imperativeAction)); 16648 } 16649 } 16650 }), [handleUnmount, setOpen, store]); 16651 const setValue = useStableCallback((nextValue, eventDetails) => { 16652 onValueChange?.(nextValue, eventDetails); 16653 if (eventDetails.isCanceled) { 16654 return; 16655 } 16656 setValueUnwrapped(nextValue); 16657 }); 16658 const handleScrollArrowVisibility = useStableCallback((scroller) => { 16659 const maxScrollTop = getMaxScrollOffset(scroller.scrollHeight, scroller.clientHeight); 16660 const scrollTop = normalizeScrollOffset(scroller.scrollTop, maxScrollTop); 16661 const shouldShowUp = scrollTop > 0; 16662 const shouldShowDown = scrollTop < maxScrollTop; 16663 store.set("scrollUpArrowVisible", shouldShowUp); 16664 store.set("scrollDownArrowVisible", shouldShowDown); 16665 }); 16666 const floatingContext = useFloatingRootContext({ 16667 open: open2, 16668 onOpenChange: setOpen, 16669 elements: { 16670 reference: triggerElement, 16671 floating: positionerElement 16672 } 16673 }); 16674 const click = useClick(floatingContext, { 16675 enabled: !disabled2, 16676 event: "mousedown" 16677 }); 16678 const dismiss = useDismiss(floatingContext); 16679 const listNavigation2 = useListNavigation(floatingContext, { 16680 enabled: !disabled2, 16681 listRef, 16682 activeIndex, 16683 selectedIndex, 16684 disabledIndices: EMPTY_ARRAY, 16685 onNavigate(nextActiveIndex) { 16686 if (nextActiveIndex === null && !open2) { 16687 return; 16688 } 16689 store.set("activeIndex", nextActiveIndex); 16690 }, 16691 focusItemOnHover: highlightItemOnHover 16692 }); 16693 const typeahead = useTypeahead(floatingContext, { 16694 // Typeahead on an open popup only moves the highlight, so it remains available while 16695 // `readOnly`. The closed-trigger variant commits a value instead, so it doesn't. 16696 enabled: !disabled2 && (open2 || !readOnly && !multiple), 16697 listRef: labelsRef, 16698 activeIndex, 16699 selectedIndex, 16700 // Skip disabled items while matching so typeahead advances to the next selectable item 16701 // (a click can never select a disabled item and native `<select>` skips them too). Resolve 16702 // the disabled state from the element via the attribute-only `isElementDisabled` so the 16703 // hidden, force-mounted items used for closed-trigger typeahead aren't dropped by the 16704 // `elementsRef`/visibility filter that `disabledIndices` deliberately sidesteps. 16705 disabledIndices: (index2) => isElementDisabled(listRef.current[index2]), 16706 onMatch(index2) { 16707 if (open2) { 16708 store.set("activeIndex", index2); 16709 } else { 16710 setValue(valuesRef.current[index2], createChangeEventDetails(reason_parts_exports.none)); 16711 } 16712 }, 16713 onTyping(typing) { 16714 typingRef.current = typing; 16715 } 16716 }); 16717 const mergedTriggerProps = React134.useMemo(() => mergeProps(typeahead.reference, listNavigation2.reference, dismiss.reference, click.reference, interactionTypeProps), [click.reference, typeahead.reference, listNavigation2.reference, dismiss.reference, interactionTypeProps]); 16718 const popupProps = React134.useMemo(() => mergeProps(FOCUSABLE_POPUP_PROPS, typeahead.floating, listNavigation2.floating, dismiss.floating), [typeahead.floating, listNavigation2.floating, dismiss.floating]); 16719 const itemProps = listNavigation2.item ?? EMPTY_OBJECT; 16720 const itemRoot = React134.useMemo(() => ({ 16721 props: itemProps, 16722 multiple, 16723 disabled: disabled2, 16724 readOnly, 16725 isItemEqualToValue 16726 }), [itemProps, multiple, disabled2, readOnly, isItemEqualToValue]); 16727 store.useContextCallback("setValue", setValue); 16728 store.useContextCallback("setOpen", setOpen); 16729 store.useContextCallback("handleScrollArrowVisibility", handleScrollArrowVisibility); 16730 store.useContextCallback("onOpenChangeComplete", onOpenChangeComplete); 16731 useOnFirstRender(() => { 16732 store.update({ 16733 popupProps, 16734 triggerProps: mergedTriggerProps, 16735 itemRoot 16736 }); 16737 }); 16738 store.useSyncedValues({ 16739 id: generatedId, 16740 modal, 16741 multiple, 16742 disabled: disabled2, 16743 readOnly, 16744 required, 16745 highlightItemOnHover, 16746 value, 16747 open: open2, 16748 mounted, 16749 transitionStatus, 16750 popupProps, 16751 triggerProps: mergedTriggerProps, 16752 itemRoot, 16753 items, 16754 itemToStringLabel, 16755 itemToStringValue, 16756 isItemEqualToValue, 16757 openMethod: renderedOpenMethod 16758 }); 16759 const ref = useMergedRefs(inputRef, validation.inputRef); 16760 const hiddenInputName = multiple ? void 0 : name2; 16761 const hiddenInputs = React134.useMemo(() => { 16762 if (!multiple || !Array.isArray(value) || !name2) { 16763 return null; 16764 } 16765 return value.map((v2) => { 16766 const currentSerializedValue = stringifyAsValue(v2, itemToStringValue); 16767 return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("input", { 16768 type: "hidden", 16769 form, 16770 name: name2, 16771 value: currentSerializedValue, 16772 disabled: disabled2 16773 }, currentSerializedValue); 16774 }); 16775 }, [multiple, value, form, name2, itemToStringValue, disabled2]); 16776 return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(SelectRootContext.Provider, { 16777 value: store, 16778 children: [/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(SelectFloatingContext.Provider, { 16779 value: floatingContext, 16780 children 16781 }), /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("input", { 16782 ...validation.getValidationProps(disabled2, { 16783 onFocus() { 16784 store.state.triggerElement?.focus({ 16785 // Supported in Chrome from 144 (January 2026) 16786 focusVisible: true 16787 }); 16788 }, 16789 // Handle browser autofill. 16790 onChange(event) { 16791 if (event.nativeEvent.defaultPrevented || disabled2 || readOnly) { 16792 return; 16793 } 16794 const nextValue = event.currentTarget.value; 16795 const details = createChangeEventDetails(reason_parts_exports.none, event.nativeEvent); 16796 function handleChange() { 16797 if (multiple) { 16798 return; 16799 } 16800 const nextValueLower = nextValue.toLowerCase(); 16801 let matchingIndex = valuesRef.current.findIndex((candidate) => stringifyAsValue(candidate, itemToStringValue).toLowerCase() === nextValueLower || stringifyAsLabel(candidate, itemToStringLabel).toLowerCase() === nextValueLower); 16802 if (matchingIndex === -1) { 16803 matchingIndex = valuesRef.current.findIndex((_, index2) => { 16804 const renderedLabel = labelsRef.current[index2]; 16805 return renderedLabel != null && renderedLabel.toLowerCase() === nextValueLower; 16806 }); 16807 } 16808 const matchingValue = valuesRef.current[matchingIndex]; 16809 if (matchingValue != null) { 16810 setValue(matchingValue, details); 16811 } 16812 } 16813 store.set("forceMount", true); 16814 queueMicrotask(handleChange); 16815 } 16816 }), 16817 id: generatedId && hiddenInputName == null ? `$generatedId}-hidden-input` : void 0, 16818 form, 16819 name: hiddenInputName, 16820 autoComplete, 16821 value: serializedValue, 16822 disabled: disabled2, 16823 required: required && !(multiple && hasSelectedValue), 16824 readOnly, 16825 ref, 16826 style: name2 ? visuallyHiddenInput : visuallyHidden, 16827 tabIndex: -1, 16828 "aria-hidden": true, 16829 suppressHydrationWarning: true 16830 }), hiddenInputs] 16831 }); 16832 } 16833 16834 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/label/SelectLabel.mjs 16835 var React135 = __toESM(require_react(), 1); 16836 var SelectLabel = /* @__PURE__ */ React135.forwardRef(function SelectLabel2(componentProps, forwardedRef) { 16837 const { 16838 render, 16839 className, 16840 style, 16841 ...elementProps 16842 } = componentProps; 16843 const elementPropsWithoutId = elementProps; 16844 delete elementPropsWithoutId.id; 16845 const fieldRootContext = useFieldRootContext(); 16846 const store = useSelectRootContext(); 16847 const triggerElement = store.useState("triggerElement"); 16848 const rootId = store.useState("id"); 16849 const defaultLabelId = getDefaultLabelId(rootId); 16850 const labelProps = useLabel({ 16851 id: defaultLabelId, 16852 fallbackControlId: triggerElement?.id ?? rootId, 16853 setLabelId(nextLabelId) { 16854 const resolvedLabelId = typeof nextLabelId === "function" ? nextLabelId(store.state.labelId) : nextLabelId; 16855 store.set("labelId", resolvedLabelId); 16856 } 16857 }); 16858 return useRenderElement("div", componentProps, { 16859 ref: forwardedRef, 16860 state: fieldRootContext.state, 16861 props: [labelProps, elementProps], 16862 stateAttributesMapping: fieldValidityMapping 16863 }); 16864 }); 16865 if (true) SelectLabel.displayName = "SelectLabel"; 16866 16867 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/trigger/SelectTrigger.mjs 16868 var React136 = __toESM(require_react(), 1); 16869 16870 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/trigger/SelectTriggerDataAttributes.mjs 16871 var popupOpen3 = CommonTriggerDataAttributes_exports.popupOpen; 16872 var pressed2 = CommonTriggerDataAttributes_exports.pressed; 16873 var popupSide = "data-popup-side"; 16874 16875 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/trigger/SelectTrigger.mjs 16876 var SELECTED_DELAY = 400; 16877 var stateAttributesMapping = { 16878 ...pressableTriggerOpenStateMapping, 16879 ...fieldValidityMapping, 16880 popupSide: (side) => side ? { 16881 [popupSide]: side 16882 } : null, 16883 value: () => null 16884 }; 16885 var SelectTrigger = /* @__PURE__ */ React136.forwardRef(function SelectTrigger2(componentProps, forwardedRef) { 16886 const { 16887 render, 16888 className, 16889 id: idProp, 16890 disabled: disabledProp = false, 16891 nativeButton = true, 16892 style, 16893 ...elementProps 16894 } = componentProps; 16895 const { 16896 setTouched, 16897 validationMode, 16898 validation, 16899 state: fieldState, 16900 disabled: fieldDisabled 16901 } = useFieldRootContext(); 16902 const { 16903 labelId: fieldLabelId 16904 } = useLabelableContext(); 16905 const store = useSelectRootContext(); 16906 const readOnly = store.useState("readOnly"); 16907 const required = store.useState("required"); 16908 const selectDisabled = store.useState("disabled"); 16909 const disabled2 = fieldDisabled || selectDisabled || disabledProp; 16910 const open2 = store.useState("open"); 16911 const mounted = store.useState("mounted"); 16912 const value = store.useState("value"); 16913 const triggerProps = store.useState("triggerProps"); 16914 const positionerElement = store.useState("positionerElement"); 16915 const listElement = store.useState("listElement"); 16916 const popupSideValue = store.useState("popupSide"); 16917 const rootId = store.useState("id"); 16918 const selectLabelId = store.useState("labelId"); 16919 const hasSelectedValue = store.useState("hasSelectedValue"); 16920 const popupSide2 = mounted && positionerElement ? popupSideValue : null; 16921 const id = idProp ?? rootId; 16922 const ariaLabelledBy = resolveAriaLabelledBy(fieldLabelId, selectLabelId); 16923 useLabelableId({ 16924 id: idProp 16925 }); 16926 const positionerRef = useValueAsRef(positionerElement); 16927 const triggerRef = React136.useRef(null); 16928 const setFocused = useSetFieldFocused(disabled2, triggerRef); 16929 const { 16930 getButtonProps, 16931 buttonRef 16932 } = useButton({ 16933 disabled: disabled2, 16934 native: nativeButton 16935 }); 16936 const setTriggerElement = store.useStateSetter("triggerElement"); 16937 const timeoutFocus = useTimeout(); 16938 const timeoutMouseDown = useTimeout(); 16939 const selectedDelayTimeout = useTimeout(); 16940 React136.useEffect(() => { 16941 if (open2) { 16942 selectedDelayTimeout.start(SELECTED_DELAY, () => { 16943 store.context.selectionRef.current.allowUnselectedMouseUp = true; 16944 store.context.selectionRef.current.allowSelectedMouseUp = true; 16945 }); 16946 return () => { 16947 selectedDelayTimeout.clear(); 16948 }; 16949 } 16950 store.context.selectionRef.current = { 16951 allowSelectedMouseUp: false, 16952 allowUnselectedMouseUp: false, 16953 dragY: 0 16954 }; 16955 timeoutMouseDown.clear(); 16956 return void 0; 16957 }, [open2, store, timeoutMouseDown, selectedDelayTimeout]); 16958 const mergedProps = mergeProps(triggerProps, { 16959 id, 16960 role: "combobox", 16961 "aria-expanded": open2, 16962 "aria-haspopup": "listbox", 16963 "aria-controls": open2 ? listElement?.id ?? getFloatingFocusElement(positionerElement)?.id : void 0, 16964 "aria-labelledby": ariaLabelledBy, 16965 "aria-readonly": readOnly || void 0, 16966 "aria-required": required || void 0, 16967 tabIndex: disabled2 ? -1 : 0, 16968 onFocus(event) { 16969 setFocused(true); 16970 if (open2 && store.context.alignItemWithTriggerActiveRef.current) { 16971 store.context.setOpen(false, createChangeEventDetails(reason_parts_exports.none, event.nativeEvent)); 16972 } 16973 timeoutFocus.start(0, () => { 16974 store.set("forceMount", true); 16975 }); 16976 }, 16977 onBlur(event) { 16978 if (contains(positionerElement, event.relatedTarget)) { 16979 return; 16980 } 16981 setTouched(true); 16982 setFocused(false); 16983 if (validationMode === "onBlur") { 16984 validation.commit(value); 16985 } 16986 }, 16987 onMouseDown(event) { 16988 if (open2) { 16989 return; 16990 } 16991 const doc = ownerDocument(event.currentTarget); 16992 function handleMouseUp(mouseEvent) { 16993 if (!triggerRef.current) { 16994 return; 16995 } 16996 const mouseUpTarget = mouseEvent.target; 16997 if (contains(triggerRef.current, mouseUpTarget) || contains(positionerRef.current, mouseUpTarget)) { 16998 return; 16999 } 17000 if (isMouseWithinBounds(mouseEvent, triggerRef.current)) { 17001 return; 17002 } 17003 store.context.setOpen(false, createChangeEventDetails(reason_parts_exports.cancelOpen, mouseEvent)); 17004 } 17005 timeoutMouseDown.start(0, () => { 17006 doc.addEventListener("mouseup", handleMouseUp, { 17007 once: true 17008 }); 17009 }); 17010 } 17011 }, elementProps, getButtonProps); 17012 const props = validation.getValidationProps(disabled2, mergedProps); 17013 props.role = "combobox"; 17014 const state = { 17015 ...fieldState, 17016 open: open2, 17017 disabled: disabled2, 17018 value, 17019 readOnly, 17020 popupSide: popupSide2, 17021 placeholder: !hasSelectedValue 17022 }; 17023 return useRenderElement("button", componentProps, { 17024 ref: [forwardedRef, triggerRef, buttonRef, setTriggerElement], 17025 state, 17026 stateAttributesMapping, 17027 props 17028 }); 17029 }); 17030 if (true) SelectTrigger.displayName = "SelectTrigger"; 17031 17032 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/value/SelectValue.mjs 17033 var React137 = __toESM(require_react(), 1); 17034 var stateAttributesMapping2 = { 17035 value: () => null 17036 }; 17037 var SelectValue = /* @__PURE__ */ React137.forwardRef(function SelectValue2(componentProps, forwardedRef) { 17038 const { 17039 className, 17040 render, 17041 children: childrenProp, 17042 placeholder, 17043 style, 17044 ...elementProps 17045 } = componentProps; 17046 const store = useSelectRootContext(); 17047 const value = store.useState("value"); 17048 const items = store.useState("items"); 17049 const itemToStringLabel = store.useState("itemToStringLabel"); 17050 const hasSelectedValue = store.useState("hasSelectedValue"); 17051 const shouldCheckNullItemLabel = !hasSelectedValue && placeholder != null && childrenProp == null; 17052 const hasNullLabel = store.useState("hasNullItemLabel", shouldCheckNullItemLabel); 17053 const state = { 17054 value, 17055 placeholder: !hasSelectedValue 17056 }; 17057 let children = null; 17058 if (typeof childrenProp === "function") { 17059 children = childrenProp(value); 17060 } else if (childrenProp != null) { 17061 children = childrenProp; 17062 } else if (shouldCheckNullItemLabel && !hasNullLabel) { 17063 children = placeholder; 17064 } else if (Array.isArray(value)) { 17065 children = resolveMultipleLabels(value, items, itemToStringLabel); 17066 } else { 17067 children = resolveSelectedLabel(value, items, itemToStringLabel); 17068 } 17069 const element = useRenderElement("span", componentProps, { 17070 state, 17071 ref: [forwardedRef, store.context.valueRef], 17072 props: [{ 17073 children 17074 }, elementProps], 17075 stateAttributesMapping: stateAttributesMapping2 17076 }); 17077 return element; 17078 }); 17079 if (true) SelectValue.displayName = "SelectValue"; 17080 17081 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/icon/SelectIcon.mjs 17082 var React138 = __toESM(require_react(), 1); 17083 var SelectIcon = /* @__PURE__ */ React138.forwardRef(function SelectIcon2(componentProps, forwardedRef) { 17084 const { 17085 render, 17086 className, 17087 style, 17088 ...elementProps 17089 } = componentProps; 17090 const store = useSelectRootContext(); 17091 const open2 = store.useState("open"); 17092 const state = { 17093 open: open2 17094 }; 17095 const element = useRenderElement("span", componentProps, { 17096 state, 17097 ref: forwardedRef, 17098 props: [{ 17099 "aria-hidden": true, 17100 children: "\u25BC" 17101 }, elementProps], 17102 stateAttributesMapping: triggerOpenStateMapping 17103 }); 17104 return element; 17105 }); 17106 if (true) SelectIcon.displayName = "SelectIcon"; 17107 17108 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/portal/SelectPortal.mjs 17109 var React139 = __toESM(require_react(), 1); 17110 var import_jsx_runtime42 = __toESM(require_jsx_runtime(), 1); 17111 var SelectPortal = /* @__PURE__ */ React139.forwardRef(function SelectPortal2(portalProps, forwardedRef) { 17112 const store = useSelectRootContext(); 17113 const mounted = store.useState("mounted"); 17114 const forceMount = store.useState("forceMount"); 17115 const shouldRender = mounted || forceMount; 17116 if (!shouldRender) { 17117 return null; 17118 } 17119 return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(FloatingPortal, { 17120 ref: forwardedRef, 17121 ...portalProps 17122 }); 17123 }); 17124 if (true) SelectPortal.displayName = "SelectPortal"; 17125 17126 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/backdrop/SelectBackdrop.mjs 17127 var React140 = __toESM(require_react(), 1); 17128 var stateAttributesMapping3 = { 17129 ...popupStateMapping, 17130 ...transitionStatusMapping 17131 }; 17132 var SelectBackdrop = /* @__PURE__ */ React140.forwardRef(function SelectBackdrop2(componentProps, forwardedRef) { 17133 const { 17134 render, 17135 className, 17136 style, 17137 ...elementProps 17138 } = componentProps; 17139 const store = useSelectRootContext(); 17140 const open2 = store.useState("open"); 17141 const mounted = store.useState("mounted"); 17142 const transitionStatus = store.useState("transitionStatus"); 17143 const state = { 17144 open: open2, 17145 transitionStatus 17146 }; 17147 const element = useRenderElement("div", componentProps, { 17148 state, 17149 ref: forwardedRef, 17150 props: [{ 17151 role: "presentation", 17152 hidden: !mounted, 17153 style: { 17154 userSelect: "none", 17155 WebkitUserSelect: "none" 17156 } 17157 }, elementProps], 17158 stateAttributesMapping: stateAttributesMapping3 17159 }); 17160 return element; 17161 }); 17162 if (true) SelectBackdrop.displayName = "SelectBackdrop"; 17163 17164 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/positioner/SelectPositioner.mjs 17165 var React142 = __toESM(require_react(), 1); 17166 17167 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/positioner/SelectPositionerContext.mjs 17168 var React141 = __toESM(require_react(), 1); 17169 var SelectPositionerContext = /* @__PURE__ */ React141.createContext(void 0); 17170 if (true) SelectPositionerContext.displayName = "SelectPositionerContext"; 17171 function useSelectPositionerContext() { 17172 const context = React141.useContext(SelectPositionerContext); 17173 if (!context) { 17174 throw new Error(true ? "Base UI: SelectPositionerContext is missing. SelectPositioner parts must be placed within <Select.Positioner>." : formatErrorMessage_default(59)); 17175 } 17176 return context; 17177 } 17178 17179 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/popup/utils.mjs 17180 function clearStyles(element, originalStyles) { 17181 if (element) { 17182 Object.assign(element.style, originalStyles); 17183 } 17184 } 17185 var LIST_FUNCTIONAL_STYLES = { 17186 position: "relative", 17187 maxHeight: "100%", 17188 overflowX: "hidden", 17189 overflowY: "auto" 17190 }; 17191 17192 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/positioner/SelectPositioner.mjs 17193 var import_jsx_runtime43 = __toESM(require_jsx_runtime(), 1); 17194 var FIXED = { 17195 position: "fixed" 17196 }; 17197 var SelectPositioner = /* @__PURE__ */ React142.forwardRef(function SelectPositioner2(componentProps, forwardedRef) { 17198 const { 17199 anchor, 17200 className, 17201 render, 17202 // `useAnchorPositioning` applies the same defaults to the undefined values; the names 17203 // remain destructured to exclude the props from `elementProps`. 17204 positionMethod, 17205 side, 17206 align, 17207 sideOffset, 17208 alignOffset, 17209 collisionBoundary = "clipping-ancestors", 17210 collisionPadding, 17211 arrowPadding, 17212 sticky, 17213 disableAnchorTracking, 17214 alignItemWithTrigger = true, 17215 collisionAvoidance = DROPDOWN_COLLISION_AVOIDANCE, 17216 style, 17217 ...elementProps 17218 } = componentProps; 17219 const store = useSelectRootContext(); 17220 const floatingRootContext = useSelectFloatingContext(); 17221 const open2 = store.useState("open"); 17222 const mounted = store.useState("mounted"); 17223 const modal = store.useState("modal"); 17224 const value = store.useState("value"); 17225 const openMethod = store.useState("openMethod"); 17226 const positionerElement = store.useState("positionerElement"); 17227 const triggerElement = store.useState("triggerElement"); 17228 const isItemEqualToValue = store.useState("isItemEqualToValue"); 17229 const transitionStatus = store.useState("transitionStatus"); 17230 const scrollUpArrowRef = React142.useRef(null); 17231 const scrollDownArrowRef = React142.useRef(null); 17232 const [controlledAlignItemWithTrigger, setControlledAlignItemWithTrigger] = React142.useState(alignItemWithTrigger); 17233 const alignItemWithTriggerActive = mounted && controlledAlignItemWithTrigger && openMethod !== "touch"; 17234 if (!mounted && controlledAlignItemWithTrigger !== alignItemWithTrigger) { 17235 setControlledAlignItemWithTrigger(alignItemWithTrigger); 17236 } 17237 React142.useImperativeHandle(store.context.alignItemWithTriggerActiveRef, () => alignItemWithTriggerActive); 17238 useAnchoredPopupScrollLock((alignItemWithTriggerActive || modal) && open2, openMethod === "touch", positionerElement, triggerElement); 17239 const positioning = useAnchorPositioning({ 17240 anchor, 17241 floatingRootContext, 17242 positionMethod, 17243 mounted, 17244 side, 17245 sideOffset, 17246 align, 17247 alignOffset, 17248 arrowPadding, 17249 collisionBoundary, 17250 collisionPadding, 17251 sticky, 17252 disableAnchorTracking: disableAnchorTracking ?? alignItemWithTriggerActive, 17253 collisionAvoidance, 17254 keepMounted: true 17255 }); 17256 const renderedSide = alignItemWithTriggerActive ? "none" : positioning.side; 17257 const positionerStyles = alignItemWithTriggerActive ? FIXED : positioning.positionerStyles; 17258 const state = { 17259 open: open2, 17260 side: renderedSide, 17261 align: positioning.align, 17262 anchorHidden: positioning.anchorHidden 17263 }; 17264 useIsoLayoutEffect(() => { 17265 store.set("popupSide", positioning.side); 17266 }, [store, positioning.side]); 17267 const setPositionerElement = store.useStateSetter("positionerElement"); 17268 const element = usePositioner(componentProps, state, { 17269 styles: positionerStyles, 17270 transitionStatus, 17271 props: elementProps, 17272 refs: [forwardedRef, setPositionerElement], 17273 hidden: !mounted, 17274 inert: !open2 17275 }); 17276 const prevMapSizeRef = React142.useRef(0); 17277 const onMapChange = useStableCallback((map) => { 17278 if (store.context.valuesRef.current.length === 0) { 17279 return; 17280 } 17281 const prevSize = prevMapSizeRef.current; 17282 prevMapSizeRef.current = map.size; 17283 const eventDetails = createChangeEventDetails(reason_parts_exports.none); 17284 if (prevSize !== 0 && !store.state.multiple && value !== null) { 17285 const selectedValueIndex = findItemIndex(store.context.valuesRef.current, value, isItemEqualToValue); 17286 if (selectedValueIndex === -1) { 17287 const initialSelectedValue = store.context.initialValueRef.current; 17288 const hasInitial = initialSelectedValue != null && findItemIndex(store.context.valuesRef.current, initialSelectedValue, isItemEqualToValue) !== -1; 17289 const nextValue = hasInitial ? initialSelectedValue : null; 17290 store.context.setValue(nextValue, eventDetails); 17291 if (nextValue === null) { 17292 store.set("selectedIndex", null); 17293 store.context.selectedItemTextRef.current = null; 17294 } 17295 } 17296 } 17297 if (prevSize !== 0 && store.state.multiple && Array.isArray(value)) { 17298 const nextValue = value.filter((selectedItemValue) => findItemIndex(store.context.valuesRef.current, selectedItemValue, isItemEqualToValue) !== -1); 17299 if (nextValue.length !== value.length) { 17300 store.context.setValue(nextValue, eventDetails); 17301 if (nextValue.length === 0) { 17302 store.set("selectedIndex", null); 17303 store.context.selectedItemTextRef.current = null; 17304 } 17305 } 17306 } 17307 if (open2 && alignItemWithTriggerActive) { 17308 store.update({ 17309 scrollUpArrowVisible: false, 17310 scrollDownArrowVisible: false 17311 }); 17312 const stylesToClear = { 17313 height: "" 17314 }; 17315 clearStyles(positionerElement, stylesToClear); 17316 clearStyles(store.context.popupRef.current, stylesToClear); 17317 } 17318 }); 17319 const contextValue = React142.useMemo(() => ({ 17320 ...positioning, 17321 side: renderedSide, 17322 alignItemWithTriggerActive, 17323 setControlledAlignItemWithTrigger, 17324 scrollUpArrowRef, 17325 scrollDownArrowRef 17326 }), [positioning, renderedSide, alignItemWithTriggerActive, setControlledAlignItemWithTrigger]); 17327 return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(CompositeList, { 17328 elementsRef: store.context.listRef, 17329 labelsRef: store.context.labelsRef, 17330 onMapChange, 17331 children: /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(SelectPositionerContext.Provider, { 17332 value: contextValue, 17333 children: [mounted && modal && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(InternalBackdrop, { 17334 inert: inertValue(!open2), 17335 cutout: triggerElement 17336 }), element] 17337 }) 17338 }); 17339 }); 17340 if (true) SelectPositioner.displayName = "SelectPositioner"; 17341 17342 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/popup/SelectPopup.mjs 17343 var React143 = __toESM(require_react(), 1); 17344 17345 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/positioner/SelectPositionerCssVars.mjs 17346 var transformOrigin2 = "--transform-origin"; 17347 17348 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/popup/SelectPopup.mjs 17349 var import_jsx_runtime44 = __toESM(require_jsx_runtime(), 1); 17350 var stateAttributesMapping4 = { 17351 ...popupStateMapping, 17352 ...transitionStatusMapping 17353 }; 17354 var SelectPopup = /* @__PURE__ */ React143.forwardRef(function SelectPopup2(componentProps, forwardedRef) { 17355 const { 17356 render, 17357 className, 17358 style, 17359 finalFocus, 17360 ...elementProps 17361 } = componentProps; 17362 const store = useSelectRootContext(); 17363 const multiple = store.useState("multiple"); 17364 const readOnly = store.useState("readOnly"); 17365 const highlightItemOnHover = store.useState("highlightItemOnHover"); 17366 const floatingRootContext = useSelectFloatingContext(); 17367 const { 17368 side, 17369 align, 17370 alignItemWithTriggerActive, 17371 isPositioned, 17372 setControlledAlignItemWithTrigger 17373 } = useSelectPositionerContext(); 17374 const insideToolbar = useToolbarRootContext(true) != null; 17375 const direction = useDirection(); 17376 const { 17377 nonce, 17378 disableStyleElements 17379 } = useCSPContext(); 17380 const id = store.useState("id"); 17381 const open2 = store.useState("open"); 17382 const openMethod = store.useState("openMethod"); 17383 const mounted = store.useState("mounted"); 17384 const popupProps = store.useState("popupProps"); 17385 const transitionStatus = store.useState("transitionStatus"); 17386 const triggerElement = store.useState("triggerElement"); 17387 const positionerElement = store.useState("positionerElement"); 17388 const listElement = store.useState("listElement"); 17389 const reachedMaxHeightRef = React143.useRef(false); 17390 const initialPlacedRef = React143.useRef(false); 17391 const originalPositionerStylesRef = React143.useRef({}); 17392 const scrollArrowFrame = useAnimationFrame(); 17393 const handleScroll = useStableCallback((scroller) => { 17394 if (!positionerElement || !store.context.popupRef.current || !initialPlacedRef.current) { 17395 return; 17396 } 17397 const isTopPositioned = positionerElement.style.top === "0px"; 17398 const isBottomPositioned = positionerElement.style.bottom === "0px"; 17399 if (reachedMaxHeightRef.current || !alignItemWithTriggerActive || !isTopPositioned && !isBottomPositioned) { 17400 store.context.handleScrollArrowVisibility(scroller); 17401 return; 17402 } 17403 const scale = getScale2(positionerElement); 17404 const currentHeight = normalizeSize(positionerElement.getBoundingClientRect().height, "y", scale); 17405 const doc = ownerDocument(positionerElement); 17406 const win = getWindow(positionerElement); 17407 const positionerStyles = win.getComputedStyle(positionerElement); 17408 const marginTop = parseFloat(positionerStyles.marginTop); 17409 const marginBottom = parseFloat(positionerStyles.marginBottom); 17410 const maxPopupHeight = getMaxPopupHeight(win.getComputedStyle(store.context.popupRef.current)); 17411 const maxAvailableHeight = Math.min(doc.documentElement.clientHeight - marginTop - marginBottom, maxPopupHeight); 17412 const scrollTop = scroller.scrollTop; 17413 const maxScrollTop = getMaxScrollTop(scroller); 17414 let nextScrollTop = null; 17415 const setHeight = (height) => { 17416 positionerElement.style.height = `$height}px`; 17417 }; 17418 const diff = isTopPositioned ? maxScrollTop - scrollTop : scrollTop; 17419 const nextHeight = Math.min(currentHeight + diff, maxAvailableHeight); 17420 if (diff <= SCROLL_EDGE_TOLERANCE_PX) { 17421 const heightDelta = clamp2(diff, 0, maxAvailableHeight - currentHeight); 17422 if (heightDelta > 0) { 17423 setHeight(currentHeight + heightDelta); 17424 } 17425 scroller.scrollTop = isTopPositioned ? maxScrollTop : 0; 17426 if (maxAvailableHeight - (currentHeight + heightDelta) <= SCROLL_EDGE_TOLERANCE_PX) { 17427 reachedMaxHeightRef.current = true; 17428 } 17429 store.context.handleScrollArrowVisibility(scroller); 17430 return; 17431 } 17432 if (maxAvailableHeight - nextHeight > SCROLL_EDGE_TOLERANCE_PX) { 17433 nextScrollTop = isTopPositioned ? Infinity : 0; 17434 } else if (isBottomPositioned && scrollTop < maxScrollTop) { 17435 const overshoot = currentHeight + diff - maxAvailableHeight; 17436 nextScrollTop = scrollTop - (diff - overshoot); 17437 } 17438 const nextPositionerHeight = Math.ceil(nextHeight); 17439 if (nextPositionerHeight !== 0) { 17440 setHeight(nextPositionerHeight); 17441 } 17442 if (nextScrollTop != null) { 17443 const target = clamp2(nextScrollTop, 0, getMaxScrollTop(scroller)); 17444 if (Math.abs(scroller.scrollTop - target) > SCROLL_EDGE_TOLERANCE_PX) { 17445 scroller.scrollTop = target; 17446 } 17447 } 17448 if (nextPositionerHeight >= maxAvailableHeight - SCROLL_EDGE_TOLERANCE_PX) { 17449 reachedMaxHeightRef.current = true; 17450 } 17451 store.context.handleScrollArrowVisibility(scroller); 17452 }); 17453 React143.useImperativeHandle(store.context.scrollHandlerRef, () => handleScroll, [handleScroll]); 17454 useOpenChangeComplete({ 17455 open: open2, 17456 ref: store.context.popupRef, 17457 onComplete() { 17458 if (open2) { 17459 store.context.onOpenChangeComplete(true); 17460 } 17461 } 17462 }); 17463 const state = { 17464 open: open2, 17465 transitionStatus, 17466 side, 17467 align 17468 }; 17469 useIsoLayoutEffect(() => { 17470 if (!positionerElement || !store.context.popupRef.current || Object.keys(originalPositionerStylesRef.current).length) { 17471 return; 17472 } 17473 originalPositionerStylesRef.current = { 17474 top: positionerElement.style.top || "0", 17475 left: positionerElement.style.left || "0", 17476 right: positionerElement.style.right, 17477 height: positionerElement.style.height, 17478 bottom: positionerElement.style.bottom, 17479 minHeight: positionerElement.style.minHeight, 17480 maxHeight: positionerElement.style.maxHeight, 17481 marginTop: positionerElement.style.marginTop, 17482 marginBottom: positionerElement.style.marginBottom 17483 }; 17484 }, [store, positionerElement]); 17485 useIsoLayoutEffect(() => { 17486 if (open2 || alignItemWithTriggerActive) { 17487 return; 17488 } 17489 initialPlacedRef.current = false; 17490 reachedMaxHeightRef.current = false; 17491 clearStyles(positionerElement, originalPositionerStylesRef.current); 17492 }, [open2, alignItemWithTriggerActive, positionerElement]); 17493 useIsoLayoutEffect(() => { 17494 const popupElement = store.context.popupRef.current; 17495 if (!open2 || !triggerElement || !positionerElement || !popupElement || alignItemWithTriggerActive && !isPositioned || store.state.transitionStatus === "ending") { 17496 return; 17497 } 17498 initialPlacedRef.current = true; 17499 popupElement.style.removeProperty(transformOrigin2); 17500 if (!alignItemWithTriggerActive) { 17501 scrollArrowFrame.request(() => store.context.handleScrollArrowVisibility(listElement || popupElement)); 17502 return; 17503 } 17504 const restoreTransformStyles = unsetTransformStyles(popupElement); 17505 try { 17506 let textElement = store.context.selectedItemTextRef.current; 17507 if (!textElement?.isConnected) { 17508 const hasSelectedValue = store.select("hasSelectedValue"); 17509 textElement = !hasSelectedValue && store.context.firstItemTextRef.current?.isConnected ? store.context.firstItemTextRef.current : null; 17510 } 17511 const valueElement = store.context.valueRef.current; 17512 const win = getWindow(positionerElement); 17513 const positionerStyles = win.getComputedStyle(positionerElement); 17514 const popupStyles = win.getComputedStyle(popupElement); 17515 const doc = ownerDocument(triggerElement); 17516 const scale = getScale2(triggerElement); 17517 const triggerRect = normalizeRect(triggerElement.getBoundingClientRect(), scale); 17518 const positionerRect = normalizeRect(positionerElement.getBoundingClientRect(), scale); 17519 const triggerHeight = triggerRect.height; 17520 const scroller = listElement || popupElement; 17521 const scrollHeight = scroller.scrollHeight; 17522 const borderBottom = parseFloat(popupStyles.borderBottomWidth); 17523 const marginTop = parseFloat(positionerStyles.marginTop) || 10; 17524 const marginBottom = parseFloat(positionerStyles.marginBottom) || 10; 17525 const minHeight = parseFloat(positionerStyles.minHeight) || 100; 17526 const maxPopupHeight = getMaxPopupHeight(popupStyles); 17527 const paddingLeft = 5; 17528 const paddingRight = 5; 17529 const triggerCollisionThreshold = 20; 17530 const viewportHeight = doc.documentElement.clientHeight - marginTop - marginBottom; 17531 const viewportWidth = doc.documentElement.clientWidth; 17532 const availableSpaceBeneathTrigger = viewportHeight - triggerRect.bottom + triggerHeight; 17533 let textRect; 17534 let alignedLeft = direction === "rtl" ? triggerRect.right - positionerRect.width : triggerRect.left; 17535 let offsetY = 0; 17536 if (textElement && valueElement) { 17537 const valueRect = normalizeRect(valueElement.getBoundingClientRect(), scale); 17538 textRect = normalizeRect(textElement.getBoundingClientRect(), scale); 17539 alignedLeft = positionerRect.left + (direction === "rtl" ? valueRect.right - textRect.right : valueRect.left - textRect.left); 17540 const valueCenterFromTriggerTop = valueRect.top - triggerRect.top + valueRect.height / 2; 17541 const textCenterFromPositionerTop = textRect.top - positionerRect.top + textRect.height / 2; 17542 offsetY = textCenterFromPositionerTop - valueCenterFromTriggerTop; 17543 } 17544 const idealHeight = availableSpaceBeneathTrigger + offsetY + marginBottom + borderBottom; 17545 let height = Math.min(viewportHeight, idealHeight); 17546 const maxHeight = viewportHeight - marginTop - marginBottom; 17547 const scrollTop = idealHeight - height; 17548 const maxRight = viewportWidth - paddingRight; 17549 positionerElement.style.left = `$clamp2(alignedLeft, paddingLeft, maxRight - positionerRect.width)}px`; 17550 positionerElement.style.height = `$height}px`; 17551 positionerElement.style.maxHeight = "none"; 17552 positionerElement.style.marginTop = `$marginTop}px`; 17553 positionerElement.style.marginBottom = `$marginBottom}px`; 17554 popupElement.style.height = "100%"; 17555 const maxScrollTop = getMaxScrollTop(scroller); 17556 const isTopPositioned = scrollTop >= maxScrollTop - SCROLL_EDGE_TOLERANCE_PX; 17557 if (isTopPositioned) { 17558 height = Math.min(viewportHeight, positionerRect.height) - (scrollTop - maxScrollTop); 17559 } 17560 const fallbackToAlignPopupToTrigger = triggerRect.top < triggerCollisionThreshold || triggerRect.bottom > viewportHeight - triggerCollisionThreshold || Math.ceil(height) + SCROLL_EDGE_TOLERANCE_PX < Math.min(scrollHeight, minHeight); 17561 const isPinchZoomed = (win.visualViewport?.scale ?? 1) !== 1 && parts_exports.engine.webkit; 17562 if (fallbackToAlignPopupToTrigger || isPinchZoomed) { 17563 clearStyles(positionerElement, originalPositionerStylesRef.current); 17564 setControlledAlignItemWithTrigger(false); 17565 return; 17566 } 17567 const initialHeight = Math.max(minHeight, height); 17568 if (isTopPositioned) { 17569 const topOffset = Math.max(0, viewportHeight - idealHeight); 17570 positionerElement.style.top = positionerRect.height >= maxHeight ? "0" : `$topOffset}px`; 17571 positionerElement.style.height = `$height}px`; 17572 scroller.scrollTop = getMaxScrollTop(scroller); 17573 } else { 17574 positionerElement.style.bottom = "0"; 17575 scroller.scrollTop = scrollTop; 17576 } 17577 if (textRect) { 17578 const popupTop = positionerRect.top; 17579 const popupHeight2 = positionerRect.height; 17580 const textCenterY = textRect.top + textRect.height / 2; 17581 const clampedY = clamp2(popupHeight2 > 0 ? (textCenterY - popupTop) / popupHeight2 * 100 : 50, 0, 100); 17582 popupElement.style.setProperty(transformOrigin2, `50% $clampedY}%`); 17583 } 17584 if (initialHeight === viewportHeight || height >= maxPopupHeight) { 17585 reachedMaxHeightRef.current = true; 17586 } 17587 store.context.handleScrollArrowVisibility(scroller); 17588 if (highlightItemOnHover && store.state.selectedIndex === null && store.state.activeIndex === null && store.context.listRef.current[0] != null) { 17589 store.set("activeIndex", 0); 17590 } 17591 } finally { 17592 restoreTransformStyles(); 17593 } 17594 }, [store, open2, positionerElement, triggerElement, alignItemWithTriggerActive, setControlledAlignItemWithTrigger, scrollArrowFrame, listElement, highlightItemOnHover, direction, isPositioned]); 17595 React143.useEffect(() => { 17596 if (!alignItemWithTriggerActive || !positionerElement || !open2) { 17597 return void 0; 17598 } 17599 const win = getWindow(positionerElement); 17600 function handleResize(event) { 17601 store.context.setOpen(false, createChangeEventDetails(reason_parts_exports.windowResize, event)); 17602 } 17603 return addEventListener(win, "resize", handleResize); 17604 }, [store, alignItemWithTriggerActive, positionerElement, open2]); 17605 const defaultProps = { 17606 ...listElement ? { 17607 role: "presentation" 17608 } : { 17609 role: "listbox", 17610 "aria-multiselectable": multiple || void 0, 17611 "aria-readonly": readOnly || void 0, 17612 id: `$id}-list` 17613 }, 17614 onKeyDown(event) { 17615 if (insideToolbar && COMPOSITE_KEYS.has(event.key)) { 17616 event.stopPropagation(); 17617 } 17618 }, 17619 onScroll(event) { 17620 if (listElement) { 17621 return; 17622 } 17623 handleScroll(event.currentTarget); 17624 }, 17625 ...alignItemWithTriggerActive && { 17626 style: listElement ? { 17627 height: "100%" 17628 } : LIST_FUNCTIONAL_STYLES 17629 }, 17630 className: !listElement && alignItemWithTriggerActive ? styleDisableScrollbar.className : void 0 17631 }; 17632 const element = useRenderElement("div", componentProps, { 17633 ref: [forwardedRef, store.context.popupRef], 17634 state, 17635 stateAttributesMapping: stateAttributesMapping4, 17636 props: [popupProps, defaultProps, getDisabledMountTransitionStyles(transitionStatus), elementProps] 17637 }); 17638 return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(React143.Fragment, { 17639 children: [!disableStyleElements && styleDisableScrollbar.getElement(nonce), /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(FloatingFocusManager, { 17640 context: floatingRootContext, 17641 modal: false, 17642 disabled: !mounted, 17643 openInteractionType: openMethod, 17644 returnFocus: finalFocus, 17645 restoreFocus: true, 17646 children: element 17647 })] 17648 }); 17649 }); 17650 if (true) SelectPopup.displayName = "SelectPopup"; 17651 function getMaxPopupHeight(popupStyles) { 17652 const maxHeightStyle = popupStyles.maxHeight; 17653 return maxHeightStyle.endsWith("px") ? parseFloat(maxHeightStyle) || Infinity : Infinity; 17654 } 17655 function getMaxScrollTop(scroller) { 17656 return getMaxScrollOffset(scroller.scrollHeight, scroller.clientHeight); 17657 } 17658 function getScale2(element) { 17659 return platform2.getScale(element); 17660 } 17661 function normalizeSize(size4, axis, scale) { 17662 return size4 / scale[axis]; 17663 } 17664 function normalizeRect(rect, scale) { 17665 return rectToClientRect({ 17666 x: normalizeSize(rect.x, "x", scale), 17667 y: normalizeSize(rect.y, "y", scale), 17668 width: normalizeSize(rect.width, "x", scale), 17669 height: normalizeSize(rect.height, "y", scale) 17670 }); 17671 } 17672 var TRANSFORM_STYLE_RESETS = [["transform", "none"], ["scale", "1"], ["translate", "0 0"]]; 17673 function unsetTransformStyles(popupElement) { 17674 const { 17675 style 17676 } = popupElement; 17677 const originalStyles = {}; 17678 for (const [property, value] of TRANSFORM_STYLE_RESETS) { 17679 originalStyles[property] = style.getPropertyValue(property); 17680 style.setProperty(property, value, "important"); 17681 } 17682 return () => { 17683 for (const [property] of TRANSFORM_STYLE_RESETS) { 17684 const originalValue = originalStyles[property]; 17685 if (originalValue) { 17686 style.setProperty(property, originalValue); 17687 } else { 17688 style.removeProperty(property); 17689 } 17690 } 17691 }; 17692 } 17693 17694 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/list/SelectList.mjs 17695 var React144 = __toESM(require_react(), 1); 17696 var SelectList = /* @__PURE__ */ React144.forwardRef(function SelectList2(componentProps, forwardedRef) { 17697 const { 17698 render, 17699 className, 17700 style, 17701 ...elementProps 17702 } = componentProps; 17703 const store = useSelectRootContext(); 17704 const multiple = store.useState("multiple"); 17705 const readOnly = store.useState("readOnly"); 17706 const { 17707 alignItemWithTriggerActive 17708 } = useSelectPositionerContext(); 17709 const hasScrollArrows = store.useState("hasScrollArrows"); 17710 const openMethod = store.useState("openMethod"); 17711 const id = store.useState("id"); 17712 const defaultProps = { 17713 id: `$id}-list`, 17714 role: "listbox", 17715 "aria-multiselectable": multiple || void 0, 17716 "aria-readonly": readOnly || void 0, 17717 onScroll(event) { 17718 store.context.scrollHandlerRef.current?.(event.currentTarget); 17719 }, 17720 ...alignItemWithTriggerActive && { 17721 style: LIST_FUNCTIONAL_STYLES 17722 }, 17723 className: hasScrollArrows && openMethod !== "touch" ? styleDisableScrollbar.className : void 0 17724 }; 17725 const setListElement = store.useStateSetter("listElement"); 17726 return useRenderElement("div", componentProps, { 17727 ref: [forwardedRef, setListElement], 17728 props: [defaultProps, elementProps] 17729 }); 17730 }); 17731 if (true) SelectList.displayName = "SelectList"; 17732 17733 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/item/SelectItem.mjs 17734 var React146 = __toESM(require_react(), 1); 17735 17736 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/item/SelectItemContext.mjs 17737 var React145 = __toESM(require_react(), 1); 17738 var SelectItemContext = /* @__PURE__ */ React145.createContext(void 0); 17739 if (true) SelectItemContext.displayName = "SelectItemContext"; 17740 function useSelectItemContext() { 17741 const context = React145.useContext(SelectItemContext); 17742 if (!context) { 17743 throw new Error(true ? "Base UI: SelectItemContext is missing. SelectItem parts must be placed within <Select.Item>." : formatErrorMessage_default(57)); 17744 } 17745 return context; 17746 } 17747 17748 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/item/SelectItem.mjs 17749 var import_jsx_runtime45 = __toESM(require_jsx_runtime(), 1); 17750 var SelectItem = /* @__PURE__ */ React146.memo(/* @__PURE__ */ React146.forwardRef(function SelectItem2(componentProps, forwardedRef) { 17751 const { 17752 render, 17753 className, 17754 style, 17755 value: itemValue = null, 17756 label, 17757 disabled: disabledProp = false, 17758 nativeButton = false, 17759 ...elementProps 17760 } = componentProps; 17761 const textRef = React146.useRef(null); 17762 const listItem = useCompositeListItem({ 17763 guess: true, 17764 label, 17765 textRef 17766 }); 17767 const store = useSelectRootContext(); 17768 const { 17769 props: itemProps, 17770 multiple, 17771 disabled: selectDisabled, 17772 readOnly, 17773 isItemEqualToValue 17774 } = store.useState("itemRoot"); 17775 const disabled2 = selectDisabled || disabledProp; 17776 const highlighted = store.useState("isActive", listItem.index); 17777 const open2 = store.useState("open"); 17778 const selected = store.useState("isSelected", itemValue); 17779 const selectedByFocus = store.useState("isSelectedByFocus", listItem.index); 17780 const index2 = listItem.index; 17781 const itemRef = React146.useRef(null); 17782 useIsoLayoutEffect(() => { 17783 const values = store.context.valuesRef.current; 17784 values[index2] = itemValue; 17785 return () => { 17786 delete values[index2]; 17787 }; 17788 }, [index2, itemValue, store]); 17789 useIsoLayoutEffect(() => { 17790 const selectedValue = store.state.value; 17791 const currentIndex = store.state.selectedIndex; 17792 let nextIndex = currentIndex; 17793 let claims; 17794 if (multiple && Array.isArray(selectedValue)) { 17795 nextIndex = resolveSelectedIndex(index2, itemValue, store.context.valuesRef.current, selectedValue, isItemEqualToValue, currentIndex); 17796 claims = nextIndex === index2; 17797 if (index2 === currentIndex && !claims) { 17798 store.context.selectedItemTextRef.current = null; 17799 } 17800 } else { 17801 claims = selectedValue !== void 0 && compareItemEquality(itemValue, selectedValue, isItemEqualToValue); 17802 if (claims) { 17803 nextIndex = index2; 17804 } 17805 } 17806 store.set("selectedIndex", nextIndex); 17807 if (claims && textRef.current) { 17808 store.context.selectedItemTextRef.current = textRef.current; 17809 } 17810 }, [index2, multiple, isItemEqualToValue, store, itemValue]); 17811 const pointerTypeRef = React146.useRef("mouse"); 17812 const allowMouseSelectionRef = React146.useRef(false); 17813 const { 17814 getButtonProps, 17815 buttonRef 17816 } = useButton({ 17817 disabled: disabled2, 17818 focusableWhenDisabled: true, 17819 native: nativeButton, 17820 composite: true 17821 }); 17822 const state = { 17823 disabled: disabled2, 17824 selected, 17825 highlighted 17826 }; 17827 function commitSelection(event) { 17828 if (selectDisabled || readOnly) { 17829 return; 17830 } 17831 const selectedValue = store.state.value; 17832 if (multiple) { 17833 const currentValue = Array.isArray(selectedValue) ? selectedValue : []; 17834 const nextValue = selected ? removeItem(currentValue, itemValue, isItemEqualToValue) : [...currentValue, itemValue]; 17835 store.context.setValue(nextValue, createChangeEventDetails(reason_parts_exports.itemPress, event)); 17836 } else { 17837 store.context.setValue(itemValue, createChangeEventDetails(reason_parts_exports.itemPress, event)); 17838 store.context.setOpen(false, createChangeEventDetails(reason_parts_exports.itemPress, event)); 17839 } 17840 } 17841 function resetDragMovement() { 17842 store.context.selectionRef.current.dragY = 0; 17843 } 17844 const defaultProps = { 17845 role: "option", 17846 "aria-selected": selected, 17847 tabIndex: open2 && highlighted ? 0 : -1, 17848 onKeyDown(event) { 17849 store.set("activeIndex", index2); 17850 if (event.key === " " && store.context.typingRef.current) { 17851 event.preventDefault(); 17852 } 17853 }, 17854 onClick(event) { 17855 const isMouseClick = pointerTypeRef.current !== "touch"; 17856 const clickPointerType = event.nativeEvent.pointerType; 17857 const isVirtualMouseClick = isMouseClick && isVirtualClick(event.nativeEvent) && // Generic no-pointer `detail === 0` clicks stay tied to highlight state. Virtual 17858 // clicks that carry browser pointer data, including an empty string from assistive 17859 // technology, can activate unhighlighted items. 17860 (clickPointerType !== void 0 || highlighted); 17861 const isInvalidMouseClick = isMouseClick && !isVirtualMouseClick && !allowMouseSelectionRef.current; 17862 allowMouseSelectionRef.current = false; 17863 if (disabled2 || isInvalidMouseClick) { 17864 return; 17865 } 17866 commitSelection(event.nativeEvent); 17867 }, 17868 onPointerEnter(event) { 17869 pointerTypeRef.current = event.pointerType; 17870 }, 17871 onPointerMove(event) { 17872 if (event.pointerType === "mouse" && event.buttons === 1) { 17873 const selection = store.context.selectionRef.current; 17874 selection.dragY += event.movementY; 17875 if (selection.dragY ** 2 >= 64) { 17876 selection.allowUnselectedMouseUp = true; 17877 } 17878 } 17879 }, 17880 onPointerDown(event) { 17881 pointerTypeRef.current = event.pointerType; 17882 allowMouseSelectionRef.current = true; 17883 resetDragMovement(); 17884 }, 17885 onMouseUp() { 17886 resetDragMovement(); 17887 if (disabled2 || pointerTypeRef.current === "touch") { 17888 return; 17889 } 17890 if (allowMouseSelectionRef.current) { 17891 return; 17892 } 17893 const disallowSelectedMouseUp = !store.context.selectionRef.current.allowSelectedMouseUp && selected; 17894 const disallowUnselectedMouseUp = !store.context.selectionRef.current.allowUnselectedMouseUp && !selected; 17895 if (disallowSelectedMouseUp || disallowUnselectedMouseUp) { 17896 return; 17897 } 17898 allowMouseSelectionRef.current = true; 17899 itemRef.current?.click(); 17900 allowMouseSelectionRef.current = false; 17901 } 17902 }; 17903 const element = useRenderElement("div", componentProps, { 17904 ref: [buttonRef, forwardedRef, listItem.ref, itemRef], 17905 state, 17906 props: [itemProps, defaultProps, elementProps, getButtonProps] 17907 }); 17908 const contextValue = React146.useMemo(() => ({ 17909 selected, 17910 index: index2, 17911 textRef, 17912 selectedByFocus 17913 }), [selected, index2, textRef, selectedByFocus]); 17914 return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(SelectItemContext.Provider, { 17915 value: contextValue, 17916 children: element 17917 }); 17918 })); 17919 if (true) SelectItem.displayName = "SelectItem"; 17920 17921 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/item-indicator/SelectItemIndicator.mjs 17922 var React147 = __toESM(require_react(), 1); 17923 var import_jsx_runtime46 = __toESM(require_jsx_runtime(), 1); 17924 var SelectItemIndicator = /* @__PURE__ */ React147.forwardRef(function SelectItemIndicator2(componentProps, forwardedRef) { 17925 const { 17926 selected 17927 } = useSelectItemContext(); 17928 const shouldRender = componentProps.keepMounted || selected; 17929 if (!shouldRender) { 17930 return null; 17931 } 17932 return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(ItemIndicator, { 17933 ...componentProps, 17934 selected, 17935 ref: forwardedRef 17936 }); 17937 }); 17938 if (true) SelectItemIndicator.displayName = "SelectItemIndicator"; 17939 17940 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/item-text/SelectItemText.mjs 17941 var React148 = __toESM(require_react(), 1); 17942 var SelectItemText = /* @__PURE__ */ React148.memo(/* @__PURE__ */ React148.forwardRef(function SelectItemText2(componentProps, forwardedRef) { 17943 const { 17944 index: index2, 17945 textRef, 17946 selectedByFocus 17947 } = useSelectItemContext(); 17948 const store = useSelectRootContext(); 17949 const { 17950 render, 17951 className, 17952 style, 17953 ...elementProps 17954 } = componentProps; 17955 const localRef = React148.useCallback((node) => { 17956 if (!node) { 17957 return; 17958 } 17959 if (index2 === 0) { 17960 store.context.firstItemTextRef.current = node; 17961 } 17962 if (selectedByFocus) { 17963 store.context.selectedItemTextRef.current = node; 17964 } 17965 }, [store, index2, selectedByFocus]); 17966 const element = useRenderElement("div", componentProps, { 17967 ref: [localRef, forwardedRef, textRef], 17968 props: elementProps 17969 }); 17970 return element; 17971 })); 17972 if (true) SelectItemText.displayName = "SelectItemText"; 17973 17974 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/arrow/SelectArrow.mjs 17975 var React149 = __toESM(require_react(), 1); 17976 var SelectArrow = /* @__PURE__ */ React149.forwardRef(function SelectArrow2(componentProps, forwardedRef) { 17977 const { 17978 render, 17979 className, 17980 style, 17981 ...elementProps 17982 } = componentProps; 17983 const store = useSelectRootContext(); 17984 const { 17985 side, 17986 align, 17987 arrowRef, 17988 arrowStyles, 17989 arrowUncentered, 17990 alignItemWithTriggerActive 17991 } = useSelectPositionerContext(); 17992 const open2 = store.useState("open"); 17993 const state = { 17994 open: open2, 17995 side, 17996 align, 17997 uncentered: arrowUncentered 17998 }; 17999 const element = useRenderElement("div", componentProps, { 18000 state, 18001 ref: [arrowRef, forwardedRef], 18002 props: [{ 18003 style: arrowStyles, 18004 "aria-hidden": true 18005 }, elementProps], 18006 stateAttributesMapping: popupTransitionStateMapping 18007 }); 18008 if (alignItemWithTriggerActive) { 18009 return null; 18010 } 18011 return element; 18012 }); 18013 if (true) SelectArrow.displayName = "SelectArrow"; 18014 18015 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/scroll-down-arrow/SelectScrollDownArrow.mjs 18016 var React151 = __toESM(require_react(), 1); 18017 18018 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/scroll-arrow/SelectScrollArrow.mjs 18019 var React150 = __toESM(require_react(), 1); 18020 var SelectScrollArrow = /* @__PURE__ */ React150.forwardRef(function SelectScrollArrow2(componentProps, forwardedRef) { 18021 const { 18022 render, 18023 className, 18024 style, 18025 direction, 18026 keepMounted, 18027 ...elementProps 18028 } = componentProps; 18029 const isUp = direction === "up"; 18030 const store = useSelectRootContext(); 18031 const { 18032 side, 18033 scrollDownArrowRef, 18034 scrollUpArrowRef 18035 } = useSelectPositionerContext(); 18036 const visibleSelector = isUp ? "scrollUpArrowVisible" : "scrollDownArrowVisible"; 18037 const stateVisible = store.useState(visibleSelector); 18038 const openMethod = store.useState("openMethod"); 18039 const visible = stateVisible && openMethod !== "touch"; 18040 const timeout = useTimeout(); 18041 const scrollArrowRef = isUp ? scrollUpArrowRef : scrollDownArrowRef; 18042 const { 18043 mounted, 18044 transitionStatus, 18045 setMounted 18046 } = useTransitionStatus(visible); 18047 useIsoLayoutEffect(() => { 18048 store.context.scrollArrowsMountedCountRef.current += 1; 18049 store.set("hasScrollArrows", true); 18050 return () => { 18051 store.context.scrollArrowsMountedCountRef.current = Math.max(0, store.context.scrollArrowsMountedCountRef.current - 1); 18052 if (store.context.scrollArrowsMountedCountRef.current === 0) { 18053 store.set("hasScrollArrows", false); 18054 } 18055 }; 18056 }, [store]); 18057 useOpenChangeComplete({ 18058 open: visible, 18059 ref: scrollArrowRef, 18060 onComplete() { 18061 if (!visible) { 18062 setMounted(false); 18063 } 18064 } 18065 }); 18066 const state = { 18067 direction, 18068 visible, 18069 side, 18070 transitionStatus 18071 }; 18072 const defaultProps = { 18073 "aria-hidden": true, 18074 children: isUp ? "\u25B2" : "\u25BC", 18075 style: { 18076 position: "absolute" 18077 }, 18078 onMouseMove(event) { 18079 if (event.movementX === 0 && event.movementY === 0 || timeout.isStarted()) { 18080 return; 18081 } 18082 store.set("activeIndex", null); 18083 function scrollNextItem() { 18084 const scroller = store.state.listElement ?? store.context.popupRef.current; 18085 if (!scroller) { 18086 return; 18087 } 18088 store.set("activeIndex", null); 18089 store.context.handleScrollArrowVisibility(scroller); 18090 const maxScrollTop = getMaxScrollOffset(scroller.scrollHeight, scroller.clientHeight); 18091 const scrollTop = normalizeScrollOffset(scroller.scrollTop, maxScrollTop); 18092 const isScrolledToEdge = scrollTop === (isUp ? 0 : maxScrollTop); 18093 const items = store.context.listRef.current; 18094 if (scrollTop !== scroller.scrollTop) { 18095 scroller.scrollTop = scrollTop; 18096 } 18097 if (isScrolledToEdge) { 18098 timeout.clear(); 18099 return; 18100 } 18101 if (items.length > 0) { 18102 const scrollArrowHeight = scrollArrowRef.current?.offsetHeight || 0; 18103 scroller.scrollTop = getTargetScrollTop(items, isUp, scrollTop, scroller.clientHeight, scrollArrowHeight, maxScrollTop); 18104 } 18105 timeout.start(40, scrollNextItem); 18106 } 18107 timeout.start(40, scrollNextItem); 18108 }, 18109 onMouseLeave() { 18110 timeout.clear(); 18111 } 18112 }; 18113 const element = useRenderElement("div", componentProps, { 18114 ref: [forwardedRef, scrollArrowRef], 18115 state, 18116 props: [defaultProps, elementProps], 18117 stateAttributesMapping: transitionStatusMapping 18118 }); 18119 const shouldRender = mounted || keepMounted; 18120 if (!shouldRender) { 18121 return null; 18122 } 18123 return element; 18124 }); 18125 if (true) SelectScrollArrow.displayName = "SelectScrollArrow"; 18126 function getTargetScrollTop(items, isUp, scrollTop, clientHeight, scrollArrowHeight, maxScrollTop) { 18127 if (isUp) { 18128 let firstVisibleIndex = 0; 18129 const visibleTop = scrollTop + scrollArrowHeight - SCROLL_EDGE_TOLERANCE_PX; 18130 for (let i = 0; i < items.length; i += 1) { 18131 const item = items[i]; 18132 if (item && item.offsetTop >= visibleTop) { 18133 firstVisibleIndex = i; 18134 break; 18135 } 18136 } 18137 const targetIndex2 = Math.max(0, firstVisibleIndex - 1); 18138 const targetItem2 = items[targetIndex2]; 18139 return targetIndex2 < firstVisibleIndex && targetItem2 ? normalizeScrollOffset(targetItem2.offsetTop - scrollArrowHeight, maxScrollTop) : 0; 18140 } 18141 let lastVisibleIndex = items.length - 1; 18142 const visibleBottom = scrollTop + clientHeight - scrollArrowHeight + SCROLL_EDGE_TOLERANCE_PX; 18143 for (let i = 0; i < items.length; i += 1) { 18144 const item = items[i]; 18145 if (item && item.offsetTop + item.offsetHeight > visibleBottom) { 18146 lastVisibleIndex = Math.max(0, i - 1); 18147 break; 18148 } 18149 } 18150 const targetIndex = Math.min(items.length - 1, lastVisibleIndex + 1); 18151 const targetItem = items[targetIndex]; 18152 return targetIndex > lastVisibleIndex && targetItem ? normalizeScrollOffset(targetItem.offsetTop + targetItem.offsetHeight - clientHeight + scrollArrowHeight, maxScrollTop) : maxScrollTop; 18153 } 18154 18155 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/scroll-down-arrow/SelectScrollDownArrow.mjs 18156 var import_jsx_runtime47 = __toESM(require_jsx_runtime(), 1); 18157 var SelectScrollDownArrow = /* @__PURE__ */ React151.forwardRef(function SelectScrollDownArrow2(props, forwardedRef) { 18158 return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(SelectScrollArrow, { 18159 ...props, 18160 ref: forwardedRef, 18161 direction: "down" 18162 }); 18163 }); 18164 if (true) SelectScrollDownArrow.displayName = "SelectScrollDownArrow"; 18165 18166 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/scroll-up-arrow/SelectScrollUpArrow.mjs 18167 var React152 = __toESM(require_react(), 1); 18168 var import_jsx_runtime48 = __toESM(require_jsx_runtime(), 1); 18169 var SelectScrollUpArrow = /* @__PURE__ */ React152.forwardRef(function SelectScrollUpArrow2(props, forwardedRef) { 18170 return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(SelectScrollArrow, { 18171 ...props, 18172 ref: forwardedRef, 18173 direction: "up" 18174 }); 18175 }); 18176 if (true) SelectScrollUpArrow.displayName = "SelectScrollUpArrow"; 18177 18178 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/group/SelectGroup.mjs 18179 var React154 = __toESM(require_react(), 1); 18180 18181 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/group/SelectGroupContext.mjs 18182 var React153 = __toESM(require_react(), 1); 18183 var SelectGroupContext = /* @__PURE__ */ React153.createContext(void 0); 18184 if (true) SelectGroupContext.displayName = "SelectGroupContext"; 18185 function useSelectGroupContext() { 18186 const context = React153.useContext(SelectGroupContext); 18187 if (context === void 0) { 18188 throw new Error(true ? "Base UI: SelectGroupContext is missing. SelectGroup parts must be placed within <Select.Group>." : formatErrorMessage_default(56)); 18189 } 18190 return context; 18191 } 18192 18193 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/group/SelectGroup.mjs 18194 var import_jsx_runtime49 = __toESM(require_jsx_runtime(), 1); 18195 var SelectGroup = /* @__PURE__ */ React154.forwardRef(function SelectGroup2(componentProps, forwardedRef) { 18196 const { 18197 render, 18198 className, 18199 style, 18200 ...elementProps 18201 } = componentProps; 18202 const [labelId, setLabelId] = React154.useState(); 18203 const contextValue = React154.useMemo(() => ({ 18204 labelId, 18205 setLabelId 18206 }), [labelId, setLabelId]); 18207 const element = useRenderElement("div", componentProps, { 18208 ref: forwardedRef, 18209 props: [{ 18210 role: "group", 18211 "aria-labelledby": labelId 18212 }, elementProps] 18213 }); 18214 return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(SelectGroupContext.Provider, { 18215 value: contextValue, 18216 children: element 18217 }); 18218 }); 18219 if (true) SelectGroup.displayName = "SelectGroup"; 18220 18221 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/group-label/SelectGroupLabel.mjs 18222 var React155 = __toESM(require_react(), 1); 18223 var SelectGroupLabel = /* @__PURE__ */ React155.forwardRef(function SelectGroupLabel2(componentProps, forwardedRef) { 18224 const { 18225 render, 18226 className, 18227 style, 18228 id: idProp, 18229 ...elementProps 18230 } = componentProps; 18231 const { 18232 setLabelId 18233 } = useSelectGroupContext(); 18234 const id = useBaseUiId(idProp); 18235 useIsoLayoutEffect(() => { 18236 setLabelId(id); 18237 return () => { 18238 setLabelId((currentId) => currentId === id ? void 0 : currentId); 18239 }; 18240 }, [id, setLabelId]); 18241 const element = useRenderElement("div", componentProps, { 18242 ref: forwardedRef, 18243 props: [{ 18244 id, 18245 "aria-hidden": true 18246 }, elementProps] 18247 }); 18248 return element; 18249 }); 18250 if (true) SelectGroupLabel.displayName = "SelectGroupLabel"; 18251 18252 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/separator/SelectSeparator.mjs 18253 var SelectSeparator = ListboxSeparator; 18254 18255 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/index.parts.mjs 18256 var index_parts_exports4 = {}; 18257 __export(index_parts_exports4, { 18258 Arrow: () => TooltipArrow, 18259 Handle: () => TooltipHandle, 18260 Popup: () => TooltipPopup, 18261 Portal: () => TooltipPortal, 18262 Positioner: () => TooltipPositioner, 18263 Provider: () => TooltipProvider, 18264 Root: () => TooltipRoot, 18265 Trigger: () => TooltipTrigger, 18266 Viewport: () => TooltipViewport, 18267 createHandle: () => createTooltipHandle 18268 }); 18269 18270 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/root/TooltipRoot.mjs 18271 var React158 = __toESM(require_react(), 1); 18272 18273 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/root/TooltipRootContext.mjs 18274 var React156 = __toESM(require_react(), 1); 18275 var TooltipRootContext = /* @__PURE__ */ React156.createContext(void 0); 18276 if (true) TooltipRootContext.displayName = "TooltipRootContext"; 18277 function useTooltipRootContext(optional) { 18278 const context = React156.useContext(TooltipRootContext); 18279 if (context === void 0 && !optional) { 18280 throw new Error(true ? "Base UI: TooltipRootContext is missing. Tooltip parts must be placed within <Tooltip.Root>." : formatErrorMessage_default(72)); 18281 } 18282 return context; 18283 } 18284 18285 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/store/TooltipStore.mjs 18286 var React157 = __toESM(require_react(), 1); 18287 var selectors5 = { 18288 ...popupStoreSelectors, 18289 disabled: (state) => state.disabled, 18290 instantType: (state) => state.instantType, 18291 isInstantPhase: (state) => state.isInstantPhase, 18292 trackCursorAxis: (state) => state.trackCursorAxis, 18293 disableHoverablePopup: (state) => state.disableHoverablePopup, 18294 lastOpenChangeReason: (state) => state.openChangeReason, 18295 closeOnClick: (state) => state.closeOnClick, 18296 // Active and inactive trigger props are the same object, so a constant for triggers that discard 18297 // them keeps those triggers from re-rendering when the props change. 18298 appliedTriggerProps: (state, apply) => apply ? state.activeTriggerProps : void 0, 18299 closeDelay: (state) => state.closeDelay, 18300 adaptiveOrigin: (state) => state.adaptiveOrigin 18301 }; 18302 var TooltipStore = class extends ReactStore { 18303 constructor(initialState, floatingId, nested) { 18304 const triggerElements = new PopupTriggerMap(); 18305 super(createInitialState2(initialState, triggerElements, floatingId, nested), createInitialContext2(triggerElements), selectors5); 18306 } 18307 setOpen = (nextOpen, eventDetails) => { 18308 applyPopupOpenChange(this, nextOpen, eventDetails, { 18309 extraState: { 18310 openChangeReason: eventDetails.reason 18311 } 18312 }); 18313 }; 18314 // Used by trigger clicks to clear a delayed hover open without reporting a public open-state change. 18315 cancelPendingOpen(event) { 18316 this.state.floatingRootContext.dispatchOpenChange(false, createChangeEventDetails(reason_parts_exports.triggerPress, event)); 18317 } 18318 }; 18319 function createNullTooltipStore() { 18320 const triggerElements = new PopupTriggerMap(); 18321 const store = new NullStore(Object.freeze(createInitialState2(void 0, triggerElements)), Object.freeze(createInitialContext2(triggerElements)), selectors5); 18322 return Object.assign(store, { 18323 setOpen: NOOP, 18324 cancelPendingOpen: NOOP 18325 }); 18326 } 18327 function createInitialState2(initialState, triggerElements, floatingId, nested = false) { 18328 const state = { 18329 ...createInitialPopupStoreState(triggerElements, floatingId, nested), 18330 disabled: false, 18331 instantType: void 0, 18332 isInstantPhase: false, 18333 trackCursorAxis: "none", 18334 disableHoverablePopup: false, 18335 openChangeReason: null, 18336 closeOnClick: true, 18337 closeDelay: 0, 18338 adaptiveOrigin: void 0, 18339 ...initialState 18340 }; 18341 return state; 18342 } 18343 function createInitialContext2(triggerElements) { 18344 return { 18345 popupRef: /* @__PURE__ */ React157.createRef(), 18346 onOpenChange: void 0, 18347 onOpenChangeComplete: void 0, 18348 triggerElements 18349 }; 18350 } 18351 18352 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/root/TooltipRoot.mjs 18353 var import_jsx_runtime50 = __toESM(require_jsx_runtime(), 1); 18354 var TooltipRoot = fastComponent(function TooltipRoot2(props) { 18355 const { 18356 disabled: disabled2 = false, 18357 defaultOpen = false, 18358 open: openProp, 18359 disableHoverablePopup = false, 18360 trackCursorAxis = "none", 18361 actionsRef, 18362 onOpenChange, 18363 onOpenChangeComplete, 18364 handle, 18365 triggerId: triggerIdProp, 18366 defaultTriggerId: defaultTriggerIdProp = null, 18367 children 18368 } = props; 18369 const store = usePopupRootStore((floatingId, nested) => new TooltipStore({ 18370 open: defaultOpen, 18371 openProp, 18372 activeTriggerId: defaultTriggerIdProp, 18373 triggerIdProp 18374 }, floatingId, nested)); 18375 store.useControlledProp("openProp", openProp); 18376 store.useControlledProp("triggerIdProp", triggerIdProp); 18377 store.useContextCallback("onOpenChange", onOpenChange); 18378 store.useContextCallback("onOpenChangeComplete", onOpenChangeComplete); 18379 const openState = store.useState("open"); 18380 const open2 = !disabled2 && openState; 18381 const activeTriggerId = store.useState("activeTriggerId"); 18382 const mounted = store.useState("mounted"); 18383 const payload = store.useState("payload"); 18384 store.useSyncedValues({ 18385 trackCursorAxis, 18386 disableHoverablePopup, 18387 disabled: disabled2 18388 }); 18389 useImplicitActiveTrigger(store, { 18390 closeOnActiveTriggerUnmount: true 18391 }); 18392 const { 18393 forceUnmount, 18394 transitionStatus 18395 } = useOpenStateTransitions(open2, store); 18396 const isInstantPhase = store.useState("isInstantPhase"); 18397 const instantType = store.useState("instantType"); 18398 const lastOpenChangeReason = store.useState("lastOpenChangeReason"); 18399 const previousInstantTypeRef = React158.useRef(null); 18400 useIsoLayoutEffect(() => { 18401 if (openState && disabled2) { 18402 store.setOpen(false, createChangeEventDetails(reason_parts_exports.disabled)); 18403 } 18404 }, [openState, disabled2, store]); 18405 useIsoLayoutEffect(() => { 18406 if (transitionStatus === "ending" && lastOpenChangeReason === reason_parts_exports.none || transitionStatus !== "ending" && isInstantPhase) { 18407 if (instantType !== "delay") { 18408 previousInstantTypeRef.current = instantType; 18409 } 18410 store.set("instantType", "delay"); 18411 } else if (previousInstantTypeRef.current !== null) { 18412 store.set("instantType", previousInstantTypeRef.current); 18413 previousInstantTypeRef.current = null; 18414 } 18415 }, [transitionStatus, isInstantPhase, lastOpenChangeReason, instantType, store]); 18416 useIsoLayoutEffect(() => { 18417 if (open2) { 18418 if (activeTriggerId == null) { 18419 store.set("payload", void 0); 18420 } 18421 } 18422 }, [store, activeTriggerId, open2]); 18423 React158.useImperativeHandle(actionsRef, () => ({ 18424 unmount: forceUnmount, 18425 close: () => store.setOpen(false, createChangeEventDetails(reason_parts_exports.imperativeAction)) 18426 }), [forceUnmount, store]); 18427 const shouldRenderInteractions = open2 || mounted || !disabled2 && trackCursorAxis !== "none"; 18428 return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(TooltipRootContext.Provider, { 18429 value: store, 18430 children: [handle && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(PopupHandleAttachment, { 18431 handle, 18432 store 18433 }), shouldRenderInteractions && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(TooltipInteractions, { 18434 store, 18435 disabled: disabled2, 18436 trackCursorAxis 18437 }), typeof children === "function" ? children({ 18438 payload 18439 }) : children] 18440 }); 18441 }); 18442 if (true) TooltipRoot.displayName = "TooltipRoot"; 18443 function TooltipInteractions({ 18444 store, 18445 disabled: disabled2, 18446 trackCursorAxis 18447 }) { 18448 const floatingRootContext = store.useState("floatingRootContext"); 18449 const dismiss = useDismiss(floatingRootContext, { 18450 enabled: !disabled2, 18451 referencePress: () => store.select("closeOnClick") 18452 }); 18453 const clientPoint = useClientPoint(floatingRootContext, { 18454 enabled: !disabled2 && trackCursorAxis !== "none", 18455 axis: trackCursorAxis === "none" ? void 0 : trackCursorAxis 18456 }); 18457 const triggerProps = React158.useMemo(() => mergeProps(clientPoint.reference, dismiss.reference), [clientPoint.reference, dismiss.reference]); 18458 usePopupInteractionProps(store, { 18459 activeTriggerProps: triggerProps, 18460 inactiveTriggerProps: triggerProps, 18461 popupProps: dismiss.floating ?? EMPTY_OBJECT 18462 }); 18463 return null; 18464 } 18465 18466 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/trigger/TooltipTrigger.mjs 18467 var React160 = __toESM(require_react(), 1); 18468 18469 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/provider/TooltipProviderContext.mjs 18470 var React159 = __toESM(require_react(), 1); 18471 var TooltipProviderContext = /* @__PURE__ */ React159.createContext(void 0); 18472 if (true) TooltipProviderContext.displayName = "TooltipProviderContext"; 18473 function useTooltipProviderContext() { 18474 return React159.useContext(TooltipProviderContext); 18475 } 18476 18477 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/utils/constants.mjs 18478 var OPEN_DELAY = 600; 18479 18480 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/trigger/TooltipTrigger.mjs 18481 var TOOLTIP_TRIGGER_IDENTIFIER = "data-base-ui-tooltip-trigger"; 18482 function getTargetElement(event) { 18483 const target = getTarget(event); 18484 return isElement(target) ? target : null; 18485 } 18486 var TooltipTrigger = fastComponentRef(function TooltipTrigger2(componentProps, forwardedRef) { 18487 const { 18488 render, 18489 className, 18490 style, 18491 handle, 18492 payload, 18493 disabled: disabledProp, 18494 delay, 18495 closeOnClick = true, 18496 closeDelay, 18497 id: idProp, 18498 ...elementProps 18499 } = componentProps; 18500 const rootContext = useTooltipRootContext(true); 18501 const handleStore = usePopupHandleStore(handle); 18502 const store = handleStore ?? rootContext; 18503 if (!store) { 18504 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)); 18505 } 18506 const thisTriggerId = useBaseUiId(idProp); 18507 const isTriggerActive = store.useState("isTriggerActive", thisTriggerId); 18508 const isOpenedByThisTrigger = store.useState("isOpenedByTrigger", thisTriggerId); 18509 const floatingRootContext = store.useState("floatingRootContext"); 18510 const triggerElementRef = React160.useRef(null); 18511 const closeDelayWithDefault = closeDelay ?? 0; 18512 const { 18513 registerTrigger, 18514 isMountedByThisTrigger 18515 } = useTriggerDataForwarding(thisTriggerId, triggerElementRef, store, { 18516 payload, 18517 closeOnClick, 18518 closeDelay: closeDelayWithDefault 18519 }); 18520 const providerDelay = useTooltipProviderContext(); 18521 const { 18522 activeIdRef, 18523 delayRef, 18524 isInstantPhase, 18525 hasProvider 18526 } = useDelayGroup(floatingRootContext, { 18527 open: isOpenedByThisTrigger 18528 }); 18529 const hoverInteraction = useHoverInteractionSharedState(floatingRootContext); 18530 store.useSyncedValue("isInstantPhase", isInstantPhase); 18531 const rootDisabled = store.useState("disabled"); 18532 const disabled2 = disabledProp ?? rootDisabled; 18533 const disabledRef = useValueAsRef(disabled2); 18534 const trackCursorAxis = store.useState("trackCursorAxis"); 18535 const disableHoverablePopup = store.useState("disableHoverablePopup"); 18536 const isNestedTriggerHoveredRef = React160.useRef(false); 18537 const nestedTriggerOpenTimeout = useTimeout(); 18538 const pointerTypeRef = React160.useRef(void 0); 18539 function getOpenDelay() { 18540 if (hasProvider && activeIdRef.current != null) { 18541 return 0; 18542 } 18543 return delay ?? providerDelay ?? OPEN_DELAY; 18544 } 18545 function isEnabledNestedTriggerTarget(target) { 18546 const triggerEl = triggerElementRef.current; 18547 if (!triggerEl || !target) { 18548 return false; 18549 } 18550 const nearestTrigger = closest(target, `[$TOOLTIP_TRIGGER_IDENTIFIER}]`); 18551 return nearestTrigger !== null && nearestTrigger !== triggerEl && contains(triggerEl, nearestTrigger); 18552 } 18553 function detectNestedTriggerHover(target) { 18554 const nestedTriggerHovered = isEnabledNestedTriggerTarget(target); 18555 isNestedTriggerHoveredRef.current = nestedTriggerHovered; 18556 if (nestedTriggerHovered) { 18557 hoverInteraction.openChangeTimeout.clear(); 18558 hoverInteraction.restTimeout.clear(); 18559 hoverInteraction.restTimeoutPending = false; 18560 nestedTriggerOpenTimeout.clear(); 18561 } 18562 return nestedTriggerHovered; 18563 } 18564 const hoverProps = useHoverReferenceInteraction(floatingRootContext, { 18565 enabled: !disabled2, 18566 mouseOnly: true, 18567 move: false, 18568 handleClose: !disableHoverablePopup && trackCursorAxis !== "both" ? safePolygon() : null, 18569 restMs: getOpenDelay, 18570 delay() { 18571 if (closeDelay == null && hasProvider) { 18572 return { 18573 close: getDelay(delayRef.current, "close") 18574 }; 18575 } 18576 return { 18577 close: closeDelayWithDefault 18578 }; 18579 }, 18580 triggerElementRef, 18581 isActiveTrigger: isTriggerActive, 18582 isClosing: () => store.select("transitionStatus") === "ending", 18583 shouldOpen() { 18584 return !isNestedTriggerHoveredRef.current; 18585 } 18586 }); 18587 const focusProps = useFocus(floatingRootContext, { 18588 enabled: !disabled2 18589 }).reference; 18590 const handleNestedTriggerHover = (event) => { 18591 const wasNestedTriggerHovered = isNestedTriggerHoveredRef.current; 18592 const target = getTargetElement(event); 18593 const nestedTriggerHovered = detectNestedTriggerHover(target); 18594 const triggerEl = triggerElementRef.current; 18595 const targetInsideTrigger = triggerEl && target && contains(triggerEl, target); 18596 if (nestedTriggerHovered && store.select("open") && store.select("lastOpenChangeReason") === reason_parts_exports.triggerHover) { 18597 store.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerHover, event)); 18598 return; 18599 } 18600 if (wasNestedTriggerHovered && !nestedTriggerHovered && targetInsideTrigger && !disabledRef.current && !store.select("open") && triggerEl && // Match the hover hook's non-strict mouse fallback for mouse-only event sequences. 18601 isMouseLikePointerType(pointerTypeRef.current)) { 18602 const open2 = () => { 18603 if (!isNestedTriggerHoveredRef.current && !disabledRef.current && !store.select("open")) { 18604 store.setOpen(true, createChangeEventDetails(reason_parts_exports.triggerHover, event, triggerEl)); 18605 } 18606 }; 18607 const openDelay = getOpenDelay(); 18608 if (openDelay === 0) { 18609 nestedTriggerOpenTimeout.clear(); 18610 open2(); 18611 } else { 18612 nestedTriggerOpenTimeout.start(openDelay, open2); 18613 } 18614 } 18615 }; 18616 const rootTriggerProps = store.useState("appliedTriggerProps", isMountedByThisTrigger || trackCursorAxis !== "none"); 18617 const state = { 18618 open: isOpenedByThisTrigger 18619 }; 18620 const element = useRenderElement("button", componentProps, { 18621 state, 18622 ref: [forwardedRef, registerTrigger, triggerElementRef], 18623 props: [hoverProps, focusProps, rootTriggerProps, { 18624 onMouseOver(event) { 18625 handleNestedTriggerHover(event.nativeEvent); 18626 }, 18627 onFocus(event) { 18628 if (isEnabledNestedTriggerTarget(getTargetElement(event.nativeEvent))) { 18629 event.preventBaseUIHandler(); 18630 } 18631 }, 18632 onMouseLeave() { 18633 isNestedTriggerHoveredRef.current = false; 18634 nestedTriggerOpenTimeout.clear(); 18635 pointerTypeRef.current = void 0; 18636 }, 18637 onPointerEnter(event) { 18638 pointerTypeRef.current = event.pointerType; 18639 }, 18640 onPointerDown(event) { 18641 pointerTypeRef.current = event.pointerType; 18642 store.set("closeOnClick", closeOnClick); 18643 if (closeOnClick && !store.select("open")) { 18644 store.cancelPendingOpen(event.nativeEvent); 18645 } 18646 }, 18647 onClick(event) { 18648 if (closeOnClick && !store.select("open")) { 18649 store.cancelPendingOpen(event.nativeEvent); 18650 } 18651 }, 18652 id: thisTriggerId, 18653 [triggerDisabled]: disabled2 ? "" : void 0, 18654 [TOOLTIP_TRIGGER_IDENTIFIER]: disabled2 ? void 0 : "" 18655 }, elementProps], 18656 stateAttributesMapping: triggerOpenStateMapping 18657 }); 18658 return element; 18659 }); 18660 if (true) TooltipTrigger.displayName = "TooltipTrigger"; 18661 18662 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/portal/TooltipPortal.mjs 18663 var React162 = __toESM(require_react(), 1); 18664 18665 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/portal/TooltipPortalContext.mjs 18666 var React161 = __toESM(require_react(), 1); 18667 var TooltipPortalContext = /* @__PURE__ */ React161.createContext(void 0); 18668 if (true) TooltipPortalContext.displayName = "TooltipPortalContext"; 18669 function useTooltipPortalContext() { 18670 const value = React161.useContext(TooltipPortalContext); 18671 if (value === void 0) { 18672 throw new Error(true ? "Base UI: <Tooltip.Portal> is missing." : formatErrorMessage_default(70)); 18673 } 18674 return value; 18675 } 18676 18677 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/portal/TooltipPortal.mjs 18678 var import_jsx_runtime51 = __toESM(require_jsx_runtime(), 1); 18679 var TooltipPortal = /* @__PURE__ */ React162.forwardRef(function TooltipPortal2(props, forwardedRef) { 18680 const { 18681 keepMounted = false, 18682 ...portalProps 18683 } = props; 18684 const store = useTooltipRootContext(); 18685 const mounted = store.useState("mounted"); 18686 const shouldRender = mounted || keepMounted; 18687 if (!shouldRender) { 18688 return null; 18689 } 18690 return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(TooltipPortalContext.Provider, { 18691 value: keepMounted, 18692 children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(FloatingPortalLite, { 18693 ref: forwardedRef, 18694 ...portalProps 18695 }) 18696 }); 18697 }); 18698 if (true) TooltipPortal.displayName = "TooltipPortal"; 18699 18700 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/positioner/TooltipPositioner.mjs 18701 var React164 = __toESM(require_react(), 1); 18702 18703 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/positioner/TooltipPositionerContext.mjs 18704 var React163 = __toESM(require_react(), 1); 18705 var TooltipPositionerContext = /* @__PURE__ */ React163.createContext(void 0); 18706 if (true) TooltipPositionerContext.displayName = "TooltipPositionerContext"; 18707 function useTooltipPositionerContext() { 18708 const context = React163.useContext(TooltipPositionerContext); 18709 if (context === void 0) { 18710 throw new Error(true ? "Base UI: TooltipPositionerContext is missing. TooltipPositioner parts must be placed within <Tooltip.Positioner>." : formatErrorMessage_default(71)); 18711 } 18712 return context; 18713 } 18714 18715 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/positioner/TooltipPositioner.mjs 18716 var import_jsx_runtime52 = __toESM(require_jsx_runtime(), 1); 18717 var TooltipPositioner = /* @__PURE__ */ React164.forwardRef(function TooltipPositioner2(componentProps, forwardedRef) { 18718 const { 18719 render, 18720 className, 18721 anchor, 18722 positionMethod = "absolute", 18723 side = "top", 18724 align = "center", 18725 sideOffset = 0, 18726 alignOffset = 0, 18727 collisionBoundary = "clipping-ancestors", 18728 collisionPadding = 5, 18729 arrowPadding = 5, 18730 sticky = false, 18731 disableAnchorTracking = false, 18732 collisionAvoidance = POPUP_COLLISION_AVOIDANCE, 18733 style, 18734 ...elementProps 18735 } = componentProps; 18736 const store = useTooltipRootContext(); 18737 const keepMounted = useTooltipPortalContext(); 18738 const open2 = store.useState("open"); 18739 const mounted = store.useState("mounted"); 18740 const trackCursorAxis = store.useState("trackCursorAxis"); 18741 const disableHoverablePopup = store.useState("disableHoverablePopup"); 18742 const floatingRootContext = store.useState("floatingRootContext"); 18743 const instantType = store.useState("instantType"); 18744 const transitionStatus = store.useState("transitionStatus"); 18745 const adaptiveOrigin2 = store.useState("adaptiveOrigin"); 18746 const positioning = useAnchorPositioning({ 18747 anchor, 18748 positionMethod, 18749 floatingRootContext, 18750 mounted, 18751 side, 18752 sideOffset, 18753 align, 18754 alignOffset, 18755 collisionBoundary, 18756 collisionPadding, 18757 sticky, 18758 arrowPadding, 18759 disableAnchorTracking, 18760 keepMounted, 18761 collisionAvoidance, 18762 adaptiveOrigin: adaptiveOrigin2 18763 }); 18764 const state = React164.useMemo(() => ({ 18765 open: open2, 18766 side: positioning.side, 18767 align: positioning.align, 18768 anchorHidden: positioning.anchorHidden, 18769 instant: trackCursorAxis !== "none" ? "tracking-cursor" : instantType 18770 }), [open2, positioning.side, positioning.align, positioning.anchorHidden, trackCursorAxis, instantType]); 18771 const element = usePositioner(componentProps, state, { 18772 styles: positioning.positionerStyles, 18773 transitionStatus, 18774 props: elementProps, 18775 refs: [forwardedRef, store.useStateSetter("positionerElement")], 18776 hidden: !mounted, 18777 inert: !open2 || trackCursorAxis === "both" || disableHoverablePopup 18778 }); 18779 return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(TooltipPositionerContext.Provider, { 18780 value: positioning, 18781 children: element 18782 }); 18783 }); 18784 if (true) TooltipPositioner.displayName = "TooltipPositioner"; 18785 18786 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/popup/TooltipPopup.mjs 18787 var React165 = __toESM(require_react(), 1); 18788 var TooltipPopup = /* @__PURE__ */ React165.forwardRef(function TooltipPopup2(componentProps, forwardedRef) { 18789 const { 18790 render, 18791 className, 18792 style, 18793 ...elementProps 18794 } = componentProps; 18795 const store = useTooltipRootContext(); 18796 const { 18797 side, 18798 align 18799 } = useTooltipPositionerContext(); 18800 const open2 = store.useState("open"); 18801 const instantType = store.useState("instantType"); 18802 const transitionStatus = store.useState("transitionStatus"); 18803 const popupProps = store.useState("popupProps"); 18804 const floatingContext = store.useState("floatingRootContext"); 18805 const disabled2 = store.useState("disabled"); 18806 const closeDelay = store.useState("closeDelay"); 18807 useOpenChangeComplete({ 18808 open: open2, 18809 ref: store.context.popupRef, 18810 onComplete() { 18811 if (open2) { 18812 store.context.onOpenChangeComplete?.(true); 18813 } 18814 } 18815 }); 18816 useHoverFloatingInteraction(floatingContext, { 18817 enabled: !disabled2, 18818 closeDelay 18819 }); 18820 const setPopupElement = store.useStateSetter("popupElement"); 18821 const state = { 18822 open: open2, 18823 side, 18824 align, 18825 instant: instantType, 18826 transitionStatus 18827 }; 18828 const element = useRenderElement("div", componentProps, { 18829 state, 18830 ref: [forwardedRef, store.context.popupRef, setPopupElement], 18831 props: [FOCUSABLE_POPUP_PROPS, popupProps, getDisabledMountTransitionStyles(transitionStatus), elementProps], 18832 stateAttributesMapping: popupTransitionStateMapping 18833 }); 18834 return element; 18835 }); 18836 if (true) TooltipPopup.displayName = "TooltipPopup"; 18837 18838 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/arrow/TooltipArrow.mjs 18839 var React166 = __toESM(require_react(), 1); 18840 var TooltipArrow = /* @__PURE__ */ React166.forwardRef(function TooltipArrow2(componentProps, forwardedRef) { 18841 const { 18842 render, 18843 className, 18844 style, 18845 ...elementProps 18846 } = componentProps; 18847 const store = useTooltipRootContext(); 18848 const { 18849 arrowRef, 18850 side, 18851 align, 18852 arrowUncentered, 18853 arrowStyles 18854 } = useTooltipPositionerContext(); 18855 const open2 = store.useState("open"); 18856 const instantType = store.useState("instantType"); 18857 const state = { 18858 open: open2, 18859 side, 18860 align, 18861 uncentered: arrowUncentered, 18862 instant: instantType 18863 }; 18864 const element = useRenderElement("div", componentProps, { 18865 state, 18866 ref: [forwardedRef, arrowRef], 18867 props: [{ 18868 style: arrowStyles, 18869 "aria-hidden": true 18870 }, elementProps], 18871 stateAttributesMapping: popupStateMapping 18872 }); 18873 return element; 18874 }); 18875 if (true) TooltipArrow.displayName = "TooltipArrow"; 18876 18877 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/provider/TooltipProvider.mjs 18878 var React167 = __toESM(require_react(), 1); 18879 var import_jsx_runtime53 = __toESM(require_jsx_runtime(), 1); 18880 var TooltipProvider = function TooltipProvider2(props) { 18881 const { 18882 delay, 18883 closeDelay, 18884 timeout = 400 18885 } = props; 18886 const delayValue = React167.useMemo(() => ({ 18887 open: delay, 18888 close: closeDelay 18889 }), [delay, closeDelay]); 18890 return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(TooltipProviderContext.Provider, { 18891 value: delay, 18892 children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(FloatingDelayGroup, { 18893 delay: delayValue, 18894 timeoutMs: timeout, 18895 children: props.children 18896 }) 18897 }); 18898 }; 18899 if (true) TooltipProvider.displayName = "TooltipProvider"; 18900 18901 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/viewport/TooltipViewport.mjs 18902 var React168 = __toESM(require_react(), 1); 18903 var TooltipViewport = /* @__PURE__ */ React168.forwardRef(function TooltipViewport2(componentProps, forwardedRef) { 18904 const { 18905 render, 18906 className, 18907 style, 18908 children, 18909 ...elementProps 18910 } = componentProps; 18911 const store = useTooltipRootContext(); 18912 const positioner = useTooltipPositionerContext(); 18913 const instantType = store.useState("instantType"); 18914 const { 18915 children: childrenToRender, 18916 state: viewportState 18917 } = usePopupViewport({ 18918 store, 18919 side: positioner.side, 18920 children 18921 }); 18922 const state = { 18923 activationDirection: viewportState.activationDirection, 18924 transitioning: viewportState.transitioning, 18925 instant: instantType 18926 }; 18927 return useRenderElement("div", componentProps, { 18928 state, 18929 ref: forwardedRef, 18930 props: [elementProps, { 18931 children: childrenToRender 18932 }], 18933 stateAttributesMapping: popupViewportStateMapping 18934 }); 18935 }); 18936 if (true) TooltipViewport.displayName = "TooltipViewport"; 18937 18938 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tooltip/store/TooltipHandle.mjs 18939 var TooltipHandle = class extends BasePopupHandle { 18940 constructor() { 18941 super(createNullTooltipStore(), "Tooltip"); 18942 } 18943 /** 18944 * Opens the tooltip and associates it with the trigger with the given id. 18945 * 18946 * This method should only be called in an event handler or an effect (not during rendering). 18947 * 18948 * @param triggerId ID of the trigger to associate with the tooltip. The trigger must be a matching 18949 * `Tooltip.Trigger` with this handle passed as a prop. 18950 */ 18951 open(triggerId) { 18952 this.openByTrigger(triggerId); 18953 } 18954 /** 18955 * Closes the tooltip. 18956 * 18957 * This method should only be called in an event handler or an effect (not during rendering). 18958 */ 18959 close() { 18960 this.closePopup(); 18961 } 18962 /** 18963 * Whether the tooltip is currently open. Returns `false` while no root is attached to the handle. 18964 */ 18965 get isOpen() { 18966 return this.attachedStore?.select("open") ?? false; 18967 } 18968 }; 18969 function createTooltipHandle() { 18970 return new TooltipHandle(); 18971 } 18972 18973 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/use-render/useRender.mjs 18974 function useRender(params) { 18975 return useRenderElement(params.defaultTagName ?? "div", params, params); 18976 } 18977 18978 // packages/ui/build-module/text/text.mjs 18979 var import_element15 = __toESM(require_element(), 1); 18980 var STYLE_HASH_ATTRIBUTE = "data-wp-hash"; 18981 function getRuntime() { 18982 const globalScope = globalThis; 18983 if (globalScope.__wpStyleRuntime) { 18984 return globalScope.__wpStyleRuntime; 18985 } 18986 globalScope.__wpStyleRuntime = { 18987 documents: /* @__PURE__ */ new Map(), 18988 styles: /* @__PURE__ */ new Map(), 18989 injectedStyles: /* @__PURE__ */ new WeakMap() 18990 }; 18991 if (typeof document !== "undefined") { 18992 registerDocument(document); 18993 } 18994 return globalScope.__wpStyleRuntime; 18995 } 18996 function documentContainsStyleHash(targetDocument, hash) { 18997 if (!targetDocument.head) { 18998 return false; 18999 } 19000 for (const style of targetDocument.head.querySelectorAll( 19001 `style[$STYLE_HASH_ATTRIBUTE}]` 19002 )) { 19003 if (style.getAttribute(STYLE_HASH_ATTRIBUTE) === hash) { 19004 return true; 19005 } 19006 } 19007 return false; 19008 } 19009 function injectStyle(targetDocument, hash, css) { 19010 if (!targetDocument.head) { 19011 return; 19012 } 19013 const runtime = getRuntime(); 19014 let injectedStyles = runtime.injectedStyles.get(targetDocument); 19015 if (!injectedStyles) { 19016 injectedStyles = /* @__PURE__ */ new Set(); 19017 runtime.injectedStyles.set(targetDocument, injectedStyles); 19018 } 19019 if (injectedStyles.has(hash)) { 19020 return; 19021 } 19022 if (documentContainsStyleHash(targetDocument, hash)) { 19023 injectedStyles.add(hash); 19024 return; 19025 } 19026 const style = targetDocument.createElement("style"); 19027 style.setAttribute(STYLE_HASH_ATTRIBUTE, hash); 19028 style.appendChild(targetDocument.createTextNode(css)); 19029 targetDocument.head.appendChild(style); 19030 injectedStyles.add(hash); 19031 } 19032 function registerDocument(targetDocument) { 19033 const runtime = getRuntime(); 19034 runtime.documents.set( 19035 targetDocument, 19036 (runtime.documents.get(targetDocument) ?? 0) + 1 19037 ); 19038 for (const [hash, css] of runtime.styles) { 19039 injectStyle(targetDocument, hash, css); 19040 } 19041 return () => { 19042 const count = runtime.documents.get(targetDocument); 19043 if (count === void 0) { 19044 return; 19045 } 19046 if (count <= 1) { 19047 runtime.documents.delete(targetDocument); 19048 return; 19049 } 19050 runtime.documents.set(targetDocument, count - 1); 19051 }; 19052 } 19053 function registerStyle(hash, css) { 19054 const runtime = getRuntime(); 19055 runtime.styles.set(hash, css); 19056 for (const targetDocument of runtime.documents.keys()) { 19057 injectStyle(targetDocument, hash, css); 19058 } 19059 } 19060 if (typeof process === "undefined" || true) { 19061 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)}}}'); 19062 } 19063 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" }; 19064 if (typeof process === "undefined" || true) { 19065 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)}"); 19066 } 19067 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" }; 19068 var Text = (0, import_element15.forwardRef)( 19069 function UnforwardedText({ variant = "body-md", render, className, ...props }, ref) { 19070 const element = useRender({ 19071 render, 19072 defaultTagName: "span", 19073 ref, 19074 props: mergeProps(props, { 19075 className: clsx_default( 19076 style_default.text, 19077 global_css_defense_default.heading, 19078 global_css_defense_default.p, 19079 style_default[variant], 19080 className 19081 ) 19082 }) 19083 }); 19084 return element; 19085 } 19086 ); 19087 19088 // packages/ui/build-module/menu/index.mjs 19089 var menu_exports = {}; 19090 __export(menu_exports, { 19091 CheckboxItem: () => CheckboxItem, 19092 Group: () => Group, 19093 GroupLabel: () => GroupLabel, 19094 Item: () => Item, 19095 ItemDescription: () => ItemDescription, 19096 ItemLabel: () => ItemLabel, 19097 LinkItem: () => LinkItem, 19098 Popup: () => Popup, 19099 Portal: () => Portal, 19100 Positioner: () => Positioner, 19101 PrefixIcon: () => PrefixIcon, 19102 RadioGroup: () => RadioGroup, 19103 RadioItem: () => RadioItem, 19104 Root: () => Root, 19105 Separator: () => Separator2, 19106 SubmenuRoot: () => SubmenuRoot, 19107 SubmenuTrigger: () => SubmenuTrigger, 19108 Trigger: () => Trigger 19109 }); 19110 19111 // packages/ui/build-module/menu/checkbox-item.mjs 19112 var import_element24 = __toESM(require_element(), 1); 19113 19114 // packages/icons/build-module/icon/index.mjs 19115 var import_element16 = __toESM(require_element(), 1); 19116 var icon_default = (0, import_element16.forwardRef)( 19117 ({ icon, size: size4 = 24, style, ...props }, ref) => { 19118 const intrinsicStyle = icon.props.style; 19119 const mergedStyle = intrinsicStyle || style ? { ...intrinsicStyle, ...style } : void 0; 19120 return (0, import_element16.cloneElement)(icon, { 19121 width: size4, 19122 height: size4, 19123 ...props, 19124 // Merge styles so the icon's intrinsic style (e.g. `fill: none` on 19125 // stroke-based icons) is preserved unless the consumer overrides 19126 // the same property explicitly. 19127 ...mergedStyle ? { style: mergedStyle } : {}, 19128 ref 19129 }); 19130 } 19131 ); 19132 19133 // packages/icons/build-module/library/button.mjs 19134 var import_primitives2 = __toESM(require_primitives(), 1); 19135 var import_jsx_runtime54 = __toESM(require_jsx_runtime(), 1); 19136 var button_default = /* @__PURE__ */ (0, import_jsx_runtime54.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_runtime54.jsx)(import_primitives2.Path, { d: "M8 11.75H16M5 16.25H19C19.6904 16.25 20.25 15.6904 20.25 15V8.5C20.25 7.80964 19.6904 7.25 19 7.25H5C4.30964 7.25 3.75 7.80964 3.75 8.5V15C3.75 15.6904 4.30964 16.25 5 16.25Z" }) }); 19137 19138 // packages/icons/build-module/library/caption.mjs 19139 var import_primitives3 = __toESM(require_primitives(), 1); 19140 var import_jsx_runtime55 = __toESM(require_jsx_runtime(), 1); 19141 var caption_default = /* @__PURE__ */ (0, import_jsx_runtime55.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_runtime55.jsx)(import_primitives3.Path, { d: "M8 15.25H10M11 15.25H13M14 15.25H16M6 19.25H18C18.6904 19.25 19.25 18.6904 19.25 18V6C19.25 5.30964 18.6904 4.75 18 4.75H6C5.30964 4.75 4.75 5.30964 4.75 6V18C4.75 18.6904 5.30964 19.25 6 19.25Z" }) }); 19142 19143 // packages/icons/build-module/library/check.mjs 19144 var import_primitives4 = __toESM(require_primitives(), 1); 19145 var import_jsx_runtime56 = __toESM(require_jsx_runtime(), 1); 19146 var check_default = /* @__PURE__ */ (0, import_jsx_runtime56.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_runtime56.jsx)(import_primitives4.Path, { d: "M7 12L10 15L17 8" }) }); 19147 19148 // packages/icons/build-module/library/chevron-down.mjs 19149 var import_primitives5 = __toESM(require_primitives(), 1); 19150 var import_jsx_runtime57 = __toESM(require_jsx_runtime(), 1); 19151 var chevron_down_default = /* @__PURE__ */ (0, import_jsx_runtime57.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_runtime57.jsx)(import_primitives5.Path, { d: "M7 11L12 15L17 11" }) }); 19152 19153 // packages/icons/build-module/library/chevron-left.mjs 19154 var import_primitives6 = __toESM(require_primitives(), 1); 19155 var import_jsx_runtime58 = __toESM(require_jsx_runtime(), 1); 19156 var chevron_left_default = /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_primitives6.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_primitives6.Path, { d: "M14 6.5L9 12L14 17.5" }) }); 19157 19158 // packages/icons/build-module/library/chevron-right-small.mjs 19159 var import_primitives7 = __toESM(require_primitives(), 1); 19160 var import_jsx_runtime59 = __toESM(require_jsx_runtime(), 1); 19161 var chevron_right_small_default = /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_primitives7.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_primitives7.Path, { d: "M10.5 8.5L13.5 12L10.5 15.5" }) }); 19162 19163 // packages/icons/build-module/library/chevron-right.mjs 19164 var import_primitives8 = __toESM(require_primitives(), 1); 19165 var import_jsx_runtime60 = __toESM(require_jsx_runtime(), 1); 19166 var chevron_right_default = /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_primitives8.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_primitives8.Path, { d: "M10 6.5L15 12L10 17.5" }) }); 19167 19168 // packages/icons/build-module/library/form-input.mjs 19169 var import_primitives9 = __toESM(require_primitives(), 1); 19170 var import_jsx_runtime61 = __toESM(require_jsx_runtime(), 1); 19171 var form_input_default = /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_primitives9.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [ 19172 /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_primitives9.Path, { d: "M3.75 8.5C3.75 7.80964 4.30964 7.25 5 7.25H19C19.6904 7.25 20.25 7.80964 20.25 8.5V15C20.25 15.6904 19.6904 16.25 19 16.25H5C4.30964 16.25 3.75 15.6904 3.75 15V8.5Z" }), 19173 /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_primitives9.Path, { d: "M6.75 14V9.5" }) 19174 ] }); 19175 19176 // packages/icons/build-module/library/form-select.mjs 19177 var import_primitives10 = __toESM(require_primitives(), 1); 19178 var import_jsx_runtime62 = __toESM(require_jsx_runtime(), 1); 19179 var form_select_default = /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_primitives10.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [ 19180 /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_primitives10.Path, { d: "M3.75 8.5C3.75 7.80964 4.30964 7.25 5 7.25H19C19.6904 7.25 20.25 7.80964 20.25 8.5V15C20.25 15.6904 19.6904 16.25 19 16.25H5C4.30964 16.25 3.75 15.6904 3.75 15V8.5Z" }), 19181 /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_primitives10.Path, { d: "M15 11L12 13L9 11" }) 19182 ] }); 19183 19184 // packages/icons/build-module/library/heading-level-1.mjs 19185 var import_primitives11 = __toESM(require_primitives(), 1); 19186 var import_jsx_runtime63 = __toESM(require_jsx_runtime(), 1); 19187 var heading_level_1_default = /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_primitives11.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [ 19188 /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_primitives11.Path, { d: "M18.75 18.75C18.75 17.9056 18.75 11.963 18.75 9.5L15.75 10.3056" }), 19189 /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_primitives11.Path, { d: "M3.75 12H11.75M3.75 12V6M3.75 12L3.75 18M11.75 12V6M11.75 12V18", strokeLinecap: "square" }) 19190 ] }); 19191 19192 // packages/icons/build-module/library/heading-level-2.mjs 19193 var import_primitives12 = __toESM(require_primitives(), 1); 19194 var import_jsx_runtime64 = __toESM(require_jsx_runtime(), 1); 19195 var heading_level_2_default = /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(import_primitives12.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [ 19196 /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_primitives12.Path, { d: "M3.75 12H11.75M3.75 12V6M3.75 12L3.75 18M11.75 12V6M11.75 12V18", strokeLinecap: "square" }), 19197 /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_primitives12.Path, { d: "M20.3915 17.9989H16C16 13.4611 20.5 14.6523 20.5 11.2489C20.5 9.54722 18.1957 8.04722 16 9.7489", strokeLinecap: "square" }) 19198 ] }); 19199 19200 // packages/icons/build-module/library/heading-level-3.mjs 19201 var import_primitives13 = __toESM(require_primitives(), 1); 19202 var import_jsx_runtime65 = __toESM(require_jsx_runtime(), 1); 19203 var heading_level_3_default = /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(import_primitives13.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [ 19204 /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_primitives13.Path, { d: "M3.75 12H11.75M3.75 12V6M3.75 12L3.75 18M11.75 12V6M11.75 12V18", strokeLinecap: "square" }), 19205 /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_primitives13.Path, { d: "M15.5 17.2434C18 18.9138 20.5 17.5775 20.5 15.573C20.5 14.9823 20.2366 14.4158 19.7678 13.9981C19.2989 13.5805 18.663 13.3458 18 13.3458M18 13.3458C18.663 13.3458 19.2989 13.1112 19.7678 12.6935C20.2366 12.2758 20.5 11.7093 20.5 11.1186C20.5 9.44825 18.125 8.33466 16 9.44825M18 13.3458H17.75", strokeLinecap: "square" }) 19206 ] }); 19207 19208 // packages/icons/build-module/library/heading-level-4.mjs 19209 var import_primitives14 = __toESM(require_primitives(), 1); 19210 var import_jsx_runtime66 = __toESM(require_jsx_runtime(), 1); 19211 var heading_level_4_default = /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(import_primitives14.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [ 19212 /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_primitives14.Path, { d: "M3.75 12H11.75M3.75 12V6M3.75 12L3.75 18M11.75 12V6M11.75 12V18", strokeLinecap: "square" }), 19213 /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_primitives14.Path, { d: "M20 18.75V14.5M20 10.75V14.5M16.25 8.74999V9L15 14.5L20 14.5" }) 19214 ] }); 19215 19216 // packages/icons/build-module/library/heading-level-5.mjs 19217 var import_primitives15 = __toESM(require_primitives(), 1); 19218 var import_jsx_runtime67 = __toESM(require_jsx_runtime(), 1); 19219 var heading_level_5_default = /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_primitives15.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [ 19220 /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_primitives15.Path, { d: "M3.75 12H11.75M3.75 12V6M3.75 12L3.75 18M11.75 12V6M11.75 12V18", strokeLinecap: "square" }), 19221 /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_primitives15.Path, { d: "M15 17.2434C17.5 18.9138 20 17.5775 20 15.573C20 14.9823 19.7366 14.4158 19.2678 13.9982C18.7989 13.5805 18.163 13.3458 17.5 13.3458H15.25L15.75 9.5H19", strokeLinecap: "square" }) 19222 ] }); 19223 19224 // packages/icons/build-module/library/heading-level-6.mjs 19225 var import_primitives16 = __toESM(require_primitives(), 1); 19226 var import_jsx_runtime68 = __toESM(require_jsx_runtime(), 1); 19227 var heading_level_6_default = /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(import_primitives16.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [ 19228 /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_primitives16.Path, { d: "M3.75 12H11.75M3.75 12V6M3.75 12L3.75 18M11.75 12V6M11.75 12V18", strokeLinecap: "square" }), 19229 /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_primitives16.Path, { d: "M19.9209 9.40551C18.0547 8.41126 16.4435 9.38777 15.7499 10.7952C15.0563 12.2026 14.8576 13.7372 15.0969 15.4097C15.1739 15.948 15.3815 16.7573 15.8882 17.2424C16.3948 17.7275 17.082 18 17.7985 18C18.515 18 19.2021 17.7275 19.7087 17.2424C20.2154 16.7573 20.5 16.0994 20.5 15.4134C20.5 14.7273 20.2154 14.0729 19.7087 13.5878C19.2021 13.1027 18.5149 12.8302 17.7984 12.8302C17.0819 12.8302 16.3948 13.1027 15.8882 13.5878C15.3815 14.0729 15.0969 14.7273 15.0969 15.4133" }) 19230 ] }); 19231 19232 // packages/icons/build-module/library/heading.mjs 19233 var import_primitives17 = __toESM(require_primitives(), 1); 19234 var import_jsx_runtime69 = __toESM(require_jsx_runtime(), 1); 19235 var heading_default = /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_primitives17.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_runtime69.jsx)(import_primitives17.Path, { d: "M6.75 5.25H17.25V16.375L12 12L6.75 16.375V5.25Z", fill: "currentColor" }) }); 19236 19237 // packages/icons/build-module/library/link.mjs 19238 var import_primitives18 = __toESM(require_primitives(), 1); 19239 var import_jsx_runtime70 = __toESM(require_jsx_runtime(), 1); 19240 var link_default = /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_primitives18.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_runtime70.jsx)(import_primitives18.Path, { d: "M9.5 12L14.5 12M10 7.75H8.25C5.90279 7.75 4 9.65279 4 12C4 14.3472 5.90279 16.25 8.25 16.25H10M14 16.25H15.75C18.0972 16.25 20 14.3472 20 12C20 9.65279 18.0972 7.75 15.75 7.75L14 7.75" }) }); 19241 19242 // packages/icons/build-module/library/more-vertical.mjs 19243 var import_primitives19 = __toESM(require_primitives(), 1); 19244 var import_jsx_runtime71 = __toESM(require_jsx_runtime(), 1); 19245 var more_vertical_default = /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_primitives19.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [ 19246 /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_primitives19.Path, { d: "M11.75 18.25L12.25 18.25L12.25 17.75L11.75 17.75L11.75 18.25Z", fill: "currentColor", stroke: "none" }), 19247 /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_primitives19.Path, { d: "M11.75 12.25L12.25 12.25L12.25 11.75L11.75 11.75L11.75 12.25Z", fill: "currentColor", stroke: "none" }), 19248 /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_primitives19.Path, { d: "M11.75 6.25L12.25 6.25L12.25 5.75L11.75 5.75L11.75 6.25Z", fill: "currentColor", stroke: "none" }), 19249 /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_primitives19.Path, { d: "M11.75 18.25L12.25 18.25L12.25 17.75L11.75 17.75L11.75 18.25Z" }), 19250 /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_primitives19.Path, { d: "M11.75 12.25L12.25 12.25L12.25 11.75L11.75 11.75L11.75 12.25Z" }), 19251 /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_primitives19.Path, { d: "M11.75 6.25L12.25 6.25L12.25 5.75L11.75 5.75L11.75 6.25Z" }) 19252 ] }); 19253 19254 // packages/icons/build-module/library/next.mjs 19255 var import_primitives20 = __toESM(require_primitives(), 1); 19256 var import_jsx_runtime72 = __toESM(require_jsx_runtime(), 1); 19257 var next_default = /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(import_primitives20.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_runtime72.jsx)(import_primitives20.Path, { d: "M7 17.5L12 12L7 6.5M13 17.5L18 12L13 6.5" }) }); 19258 19259 // packages/icons/build-module/library/previous.mjs 19260 var import_primitives21 = __toESM(require_primitives(), 1); 19261 var import_jsx_runtime73 = __toESM(require_jsx_runtime(), 1); 19262 var previous_default = /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(import_primitives21.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_runtime73.jsx)(import_primitives21.Path, { d: "M17 6.5L12 12L17 17.5M11 6.5L6 12L11 17.5" }) }); 19263 19264 // packages/ui/build-module/menu/context.mjs 19265 var import_element17 = __toESM(require_element(), 1); 19266 var MenuContext = (0, import_element17.createContext)({ 19267 isSubmenu: false 19268 }); 19269 var useMenuContext = () => (0, import_element17.useContext)(MenuContext); 19270 var MenuGroupContext2 = (0, import_element17.createContext)( 19271 null 19272 ); 19273 var useMenuGroupContext = () => (0, import_element17.useContext)(MenuGroupContext2); 19274 var MenuItemContentContext = (0, import_element17.createContext)(null); 19275 var useMenuItemContentContext = () => (0, import_element17.useContext)(MenuItemContentContext); 19276 19277 // packages/ui/build-module/menu/item.mjs 19278 var import_element23 = __toESM(require_element(), 1); 19279 19280 // packages/ui/build-module/utils/keyboard-shortcut.mjs 19281 var import_element19 = __toESM(require_element(), 1); 19282 var import_i18n = __toESM(require_i18n(), 1); 19283 19284 // packages/ui/build-module/visually-hidden/visually-hidden.mjs 19285 var import_element18 = __toESM(require_element(), 1); 19286 var STYLE_HASH_ATTRIBUTE2 = "data-wp-hash"; 19287 function getRuntime2() { 19288 const globalScope = globalThis; 19289 if (globalScope.__wpStyleRuntime) { 19290 return globalScope.__wpStyleRuntime; 19291 } 19292 globalScope.__wpStyleRuntime = { 19293 documents: /* @__PURE__ */ new Map(), 19294 styles: /* @__PURE__ */ new Map(), 19295 injectedStyles: /* @__PURE__ */ new WeakMap() 19296 }; 19297 if (typeof document !== "undefined") { 19298 registerDocument2(document); 19299 } 19300 return globalScope.__wpStyleRuntime; 19301 } 19302 function documentContainsStyleHash2(targetDocument, hash) { 19303 if (!targetDocument.head) { 19304 return false; 19305 } 19306 for (const style of targetDocument.head.querySelectorAll( 19307 `style[$STYLE_HASH_ATTRIBUTE2}]` 19308 )) { 19309 if (style.getAttribute(STYLE_HASH_ATTRIBUTE2) === hash) { 19310 return true; 19311 } 19312 } 19313 return false; 19314 } 19315 function injectStyle2(targetDocument, hash, css) { 19316 if (!targetDocument.head) { 19317 return; 19318 } 19319 const runtime = getRuntime2(); 19320 let injectedStyles = runtime.injectedStyles.get(targetDocument); 19321 if (!injectedStyles) { 19322 injectedStyles = /* @__PURE__ */ new Set(); 19323 runtime.injectedStyles.set(targetDocument, injectedStyles); 19324 } 19325 if (injectedStyles.has(hash)) { 19326 return; 19327 } 19328 if (documentContainsStyleHash2(targetDocument, hash)) { 19329 injectedStyles.add(hash); 19330 return; 19331 } 19332 const style = targetDocument.createElement("style"); 19333 style.setAttribute(STYLE_HASH_ATTRIBUTE2, hash); 19334 style.appendChild(targetDocument.createTextNode(css)); 19335 targetDocument.head.appendChild(style); 19336 injectedStyles.add(hash); 19337 } 19338 function registerDocument2(targetDocument) { 19339 const runtime = getRuntime2(); 19340 runtime.documents.set( 19341 targetDocument, 19342 (runtime.documents.get(targetDocument) ?? 0) + 1 19343 ); 19344 for (const [hash, css] of runtime.styles) { 19345 injectStyle2(targetDocument, hash, css); 19346 } 19347 return () => { 19348 const count = runtime.documents.get(targetDocument); 19349 if (count === void 0) { 19350 return; 19351 } 19352 if (count <= 1) { 19353 runtime.documents.delete(targetDocument); 19354 return; 19355 } 19356 runtime.documents.set(targetDocument, count - 1); 19357 }; 19358 } 19359 function registerStyle2(hash, css) { 19360 const runtime = getRuntime2(); 19361 runtime.styles.set(hash, css); 19362 for (const targetDocument of runtime.documents.keys()) { 19363 injectStyle2(targetDocument, hash, css); 19364 } 19365 } 19366 if (typeof process === "undefined" || true) { 19367 registerStyle2("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}"); 19368 } 19369 var style_default2 = { "visually-hidden": "f37b9e2e191ebd66__visually-hidden" }; 19370 var VisuallyHidden = (0, import_element18.forwardRef)( 19371 function UnforwardedVisuallyHidden({ render, ...restProps }, ref) { 19372 const element = useRender({ 19373 render, 19374 ref, 19375 props: mergeProps( 19376 { className: style_default2["visually-hidden"] }, 19377 restProps, 19378 { 19379 // @ts-expect-error Arbitrary data-* attributes aren't indexable on the typed div props. Kept hardcoded so consumers can't change or remove it. 19380 "data-visually-hidden": "" 19381 } 19382 ) 19383 }); 19384 return element; 19385 } 19386 ); 19387 19388 // packages/ui/build-module/utils/keyboard-shortcut.mjs 19389 var import_jsx_runtime74 = __toESM(require_jsx_runtime(), 1); 19390 function useKeyboardShortcutProps({ 19391 "aria-describedby": ariaDescribedBy, 19392 "aria-keyshortcuts": ariaKeyShortcuts, 19393 shortcut 19394 }) { 19395 const generatedDescriptionId = (0, import_element19.useId)(); 19396 const descriptionId = shortcut ? generatedDescriptionId : void 0; 19397 const describedBy = [ariaDescribedBy, descriptionId].filter(Boolean).join(" "); 19398 return { 19399 descriptionId, 19400 targetProps: { 19401 "aria-describedby": describedBy || void 0, 19402 "aria-keyshortcuts": shortcut?.ariaKeyShortcut ?? ariaKeyShortcuts 19403 } 19404 }; 19405 } 19406 var KeyboardShortcutDescription = (0, import_element19.forwardRef)(function UnforwardedKeyboardShortcutDescription({ descriptionId, shortcut }, ref) { 19407 return /* @__PURE__ */ (0, import_jsx_runtime74.jsx)( 19408 VisuallyHidden, 19409 { 19410 id: descriptionId, 19411 "aria-hidden": "true", 19412 render: /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("span", { ref }), 19413 children: (0, import_i18n.sprintf)( 19414 /* translators: %s: keyboard shortcut. */ 19415 (0, import_i18n.__)("Keyboard shortcut: %s"), 19416 shortcut.label ?? shortcut.ariaKeyShortcut 19417 ) 19418 } 19419 ); 19420 }); 19421 var KeyboardShortcutDisplay = (0, import_element19.forwardRef)(function UnforwardedKeyboardShortcutDisplay({ className, shortcut }, ref) { 19422 return /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("span", { ref, "aria-hidden": "true", className, dir: "ltr", children: shortcut.displayShortcut }); 19423 }); 19424 19425 // packages/ui/build-module/utils/item-popup/item-content.mjs 19426 var import_element20 = __toESM(require_element(), 1); 19427 var VALIDATION_ENABLED = true; 19428 function parseItemContent(children, { Label: Label2, Description, validationMessage }) { 19429 const childArray = import_element20.Children.toArray(children); 19430 const [label, ...descriptions] = childArray; 19431 const hasLabel = (0, import_element20.isValidElement)(label) && label.type === Label2; 19432 const descriptionElements = descriptions.filter( 19433 (description) => (0, import_element20.isValidElement)(description) && description.type === Description 19434 ); 19435 if (VALIDATION_ENABLED && (!hasLabel || descriptionElements.length !== descriptions.length)) { 19436 throw new Error(validationMessage); 19437 } 19438 return { 19439 descriptionIds: descriptionElements.map( 19440 (description) => description.props.id 19441 ), 19442 hasLabel, 19443 labelId: hasLabel ? label.props.id : void 0 19444 }; 19445 } 19446 function useItemContent(children, components, { 19447 "aria-describedby": ariaDescribedBy, 19448 "aria-label": ariaLabel, 19449 "aria-labelledby": ariaLabelledBy 19450 } = {}) { 19451 const generatedLabelId = (0, import_element20.useId)(); 19452 const generatedDescriptionId = (0, import_element20.useId)(); 19453 const { descriptionIds, hasLabel, labelId } = parseItemContent( 19454 children, 19455 components 19456 ); 19457 const resolvedLabelId = hasLabel ? labelId ?? generatedLabelId : void 0; 19458 const resolvedDescriptionIds = descriptionIds.map( 19459 (descriptionId, index2) => descriptionId ?? `$generatedDescriptionId}-$index2}` 19460 ); 19461 const itemDescribedBy = Array.from( 19462 /* @__PURE__ */ new Set([ 19463 ...ariaDescribedBy?.split(/\s+/).filter(Boolean) ?? [], 19464 ...resolvedDescriptionIds 19465 ]) 19466 ).join(" "); 19467 let descriptionIndex = 0; 19468 const { Label: Label2, Description, descriptionValidationToken } = components; 19469 const contentChildren = import_element20.Children.map(children, (child) => { 19470 if (!(0, import_element20.isValidElement)(child)) { 19471 return child; 19472 } 19473 if (child.type === Label2) { 19474 return child.props.id === resolvedLabelId ? child : (0, import_element20.cloneElement)(child, { id: resolvedLabelId }); 19475 } 19476 if (child.type !== Description) { 19477 return child; 19478 } 19479 const descriptionId = resolvedDescriptionIds[descriptionIndex++]; 19480 if (!descriptionValidationToken && child.props.id === descriptionId) { 19481 return child; 19482 } 19483 return (0, import_element20.cloneElement)(child, { 19484 id: descriptionId, 19485 ...descriptionValidationToken && { 19486 validationToken: descriptionValidationToken 19487 } 19488 }); 19489 }); 19490 const labelledBy = ariaLabelledBy ?? (ariaLabel ? void 0 : resolvedLabelId); 19491 return { 19492 contentChildren, 19493 resolvedLabelId, 19494 itemAriaProps: { 19495 "aria-describedby": itemDescribedBy || void 0, 19496 "aria-label": ariaLabel, 19497 "aria-labelledby": labelledBy 19498 } 19499 }; 19500 } 19501 19502 // packages/ui/build-module/menu/item-description.mjs 19503 var import_element21 = __toESM(require_element(), 1); 19504 var import_jsx_runtime75 = __toESM(require_jsx_runtime(), 1); 19505 var STYLE_HASH_ATTRIBUTE3 = "data-wp-hash"; 19506 function getRuntime3() { 19507 const globalScope = globalThis; 19508 if (globalScope.__wpStyleRuntime) { 19509 return globalScope.__wpStyleRuntime; 19510 } 19511 globalScope.__wpStyleRuntime = { 19512 documents: /* @__PURE__ */ new Map(), 19513 styles: /* @__PURE__ */ new Map(), 19514 injectedStyles: /* @__PURE__ */ new WeakMap() 19515 }; 19516 if (typeof document !== "undefined") { 19517 registerDocument3(document); 19518 } 19519 return globalScope.__wpStyleRuntime; 19520 } 19521 function documentContainsStyleHash3(targetDocument, hash) { 19522 if (!targetDocument.head) { 19523 return false; 19524 } 19525 for (const style of targetDocument.head.querySelectorAll( 19526 `style[$STYLE_HASH_ATTRIBUTE3}]` 19527 )) { 19528 if (style.getAttribute(STYLE_HASH_ATTRIBUTE3) === hash) { 19529 return true; 19530 } 19531 } 19532 return false; 19533 } 19534 function injectStyle3(targetDocument, hash, css) { 19535 if (!targetDocument.head) { 19536 return; 19537 } 19538 const runtime = getRuntime3(); 19539 let injectedStyles = runtime.injectedStyles.get(targetDocument); 19540 if (!injectedStyles) { 19541 injectedStyles = /* @__PURE__ */ new Set(); 19542 runtime.injectedStyles.set(targetDocument, injectedStyles); 19543 } 19544 if (injectedStyles.has(hash)) { 19545 return; 19546 } 19547 if (documentContainsStyleHash3(targetDocument, hash)) { 19548 injectedStyles.add(hash); 19549 return; 19550 } 19551 const style = targetDocument.createElement("style"); 19552 style.setAttribute(STYLE_HASH_ATTRIBUTE3, hash); 19553 style.appendChild(targetDocument.createTextNode(css)); 19554 targetDocument.head.appendChild(style); 19555 injectedStyles.add(hash); 19556 } 19557 function registerDocument3(targetDocument) { 19558 const runtime = getRuntime3(); 19559 runtime.documents.set( 19560 targetDocument, 19561 (runtime.documents.get(targetDocument) ?? 0) + 1 19562 ); 19563 for (const [hash, css] of runtime.styles) { 19564 injectStyle3(targetDocument, hash, css); 19565 } 19566 return () => { 19567 const count = runtime.documents.get(targetDocument); 19568 if (count === void 0) { 19569 return; 19570 } 19571 if (count <= 1) { 19572 runtime.documents.delete(targetDocument); 19573 return; 19574 } 19575 runtime.documents.set(targetDocument, count - 1); 19576 }; 19577 } 19578 function registerStyle3(hash, css) { 19579 const runtime = getRuntime3(); 19580 runtime.styles.set(hash, css); 19581 for (const targetDocument of runtime.documents.keys()) { 19582 injectStyle3(targetDocument, hash, css); 19583 } 19584 } 19585 if (typeof process === "undefined" || true) { 19586 registerStyle3("35c74d3f9f", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-sm,320px);--_wp-ui-menu-item-padding-inline-start:var(--wpds-dimension-padding-sm,8px);--_wp-ui-menu-item-padding-inline-end:var(--wpds-dimension-padding-sm,8px);--_wp-ui-menu-group-head-padding-base:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-group-head-padding-inline:var(--_wp-ui-menu-group-head-padding-base);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--_wp-ui-menu-item-padding-inline-start:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-start)) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-end)) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:prefix-start/content-end;line-height:var(--wpds-typography-line-height-xs,16px);margin-inline:calc(var(--wp-ui-menu-group-head-padding-inline) - var(--_wp-ui-menu-group-head-padding-base));min-height:var(--wpds-dimension-size-sm,24px);min-width:0;padding-block:var(--wpds-dimension-padding-xs,4px);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:prefix-start/content-end;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:calc(var(--wp-ui-menu-group-head-padding-inline) - var(--_wp-ui-menu-group-head-padding-base));@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-content:center;align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-start)) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-end)) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-popup-open]:not([data-highlighted],[data-disabled],[aria-disabled=true]){background-color:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-xs,1px) solid GrayText}}&[data-highlighted]:not([data-disabled],[aria-disabled=true]){--_gcd-a-color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){--_gcd-a-color:HighlightText;background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&:is([data-disabled],[aria-disabled=true]){--_gcd-a-color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);&[data-highlighted]{--_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)));--_gcd-a-outline:var(--_gcd-div-outline)}@media (forced-colors:active){--_gcd-a-color:GrayText;color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;margin-inline-end:var(--wpds-dimension-gap-xs,4px);pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-2xs,16px);width:var(--wpds-dimension-size-2xs,16px)}._64924ecabf65a5d6__item-prefix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;align-self:stretch;box-sizing:border-box;display:grid;grid-column:prefix-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none;&._5c211f9edfe0ed66__has-prefix{grid-column:content-start/content-end}}._76f3e69cf2228139__item-descriptions{display:flex;flex-direction:column;grid-column:prefix-start/content-end;grid-row:2;min-width:0;padding-block-end:var(--wpds-dimension-padding-xs,4px);pointer-events:none}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;grid-column:label-start/label-end;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere}.af879698ede76757__item-content>._091406749ed93e6e__item-suffix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}.af879698ede76757__item-content>._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing,.af879698ede76757__item-content>._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._06be17a91bf434a0__item-trailing{align-items:center;display:flex;grid-column:trailing-start/trailing-end}._5ed41da4abcf8958__item-label+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item:is([data-highlighted],[data-disabled],[aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item:is([data-highlighted],[data-popup-open],[data-disabled],[aria-disabled=true]) :is(.fa88c9f1a96a4c5a__item-description,._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){--_gcd-heading-color:currentColor;color:inherit}}}'); 19587 } 19588 var style_default3 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "has-prefix": "_5c211f9edfe0ed66__has-prefix", "item-descriptions": "_76f3e69cf2228139__item-descriptions", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" }; 19589 var ITEM_DESCRIPTION_DIRECT_CHILD = /* @__PURE__ */ Symbol(); 19590 var ItemDescription = (0, import_element21.forwardRef)( 19591 function MenuItemDescription(props, ref) { 19592 const { className, id, validationToken, ...restProps } = props; 19593 if (validationToken !== ITEM_DESCRIPTION_DIRECT_CHILD) { 19594 throw new Error( 19595 "Menu.ItemDescription: Missing direct menu item parent. Render <Menu.ItemDescription> as a direct child of a menu item." 19596 ); 19597 } 19598 return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)( 19599 Text, 19600 { 19601 ref, 19602 variant: "body-sm", 19603 ...restProps, 19604 id, 19605 className: clsx_default(style_default3["item-description"], className) 19606 } 19607 ); 19608 } 19609 ); 19610 19611 // packages/ui/build-module/menu/item-label.mjs 19612 var import_element22 = __toESM(require_element(), 1); 19613 var import_jsx_runtime76 = __toESM(require_jsx_runtime(), 1); 19614 var STYLE_HASH_ATTRIBUTE4 = "data-wp-hash"; 19615 function getRuntime4() { 19616 const globalScope = globalThis; 19617 if (globalScope.__wpStyleRuntime) { 19618 return globalScope.__wpStyleRuntime; 19619 } 19620 globalScope.__wpStyleRuntime = { 19621 documents: /* @__PURE__ */ new Map(), 19622 styles: /* @__PURE__ */ new Map(), 19623 injectedStyles: /* @__PURE__ */ new WeakMap() 19624 }; 19625 if (typeof document !== "undefined") { 19626 registerDocument4(document); 19627 } 19628 return globalScope.__wpStyleRuntime; 19629 } 19630 function documentContainsStyleHash4(targetDocument, hash) { 19631 if (!targetDocument.head) { 19632 return false; 19633 } 19634 for (const style of targetDocument.head.querySelectorAll( 19635 `style[$STYLE_HASH_ATTRIBUTE4}]` 19636 )) { 19637 if (style.getAttribute(STYLE_HASH_ATTRIBUTE4) === hash) { 19638 return true; 19639 } 19640 } 19641 return false; 19642 } 19643 function injectStyle4(targetDocument, hash, css) { 19644 if (!targetDocument.head) { 19645 return; 19646 } 19647 const runtime = getRuntime4(); 19648 let injectedStyles = runtime.injectedStyles.get(targetDocument); 19649 if (!injectedStyles) { 19650 injectedStyles = /* @__PURE__ */ new Set(); 19651 runtime.injectedStyles.set(targetDocument, injectedStyles); 19652 } 19653 if (injectedStyles.has(hash)) { 19654 return; 19655 } 19656 if (documentContainsStyleHash4(targetDocument, hash)) { 19657 injectedStyles.add(hash); 19658 return; 19659 } 19660 const style = targetDocument.createElement("style"); 19661 style.setAttribute(STYLE_HASH_ATTRIBUTE4, hash); 19662 style.appendChild(targetDocument.createTextNode(css)); 19663 targetDocument.head.appendChild(style); 19664 injectedStyles.add(hash); 19665 } 19666 function registerDocument4(targetDocument) { 19667 const runtime = getRuntime4(); 19668 runtime.documents.set( 19669 targetDocument, 19670 (runtime.documents.get(targetDocument) ?? 0) + 1 19671 ); 19672 for (const [hash, css] of runtime.styles) { 19673 injectStyle4(targetDocument, hash, css); 19674 } 19675 return () => { 19676 const count = runtime.documents.get(targetDocument); 19677 if (count === void 0) { 19678 return; 19679 } 19680 if (count <= 1) { 19681 runtime.documents.delete(targetDocument); 19682 return; 19683 } 19684 runtime.documents.set(targetDocument, count - 1); 19685 }; 19686 } 19687 function registerStyle4(hash, css) { 19688 const runtime = getRuntime4(); 19689 runtime.styles.set(hash, css); 19690 for (const targetDocument of runtime.documents.keys()) { 19691 injectStyle4(targetDocument, hash, css); 19692 } 19693 } 19694 if (typeof process === "undefined" || true) { 19695 registerStyle4("35c74d3f9f", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-sm,320px);--_wp-ui-menu-item-padding-inline-start:var(--wpds-dimension-padding-sm,8px);--_wp-ui-menu-item-padding-inline-end:var(--wpds-dimension-padding-sm,8px);--_wp-ui-menu-group-head-padding-base:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-group-head-padding-inline:var(--_wp-ui-menu-group-head-padding-base);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--_wp-ui-menu-item-padding-inline-start:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-start)) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-end)) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:prefix-start/content-end;line-height:var(--wpds-typography-line-height-xs,16px);margin-inline:calc(var(--wp-ui-menu-group-head-padding-inline) - var(--_wp-ui-menu-group-head-padding-base));min-height:var(--wpds-dimension-size-sm,24px);min-width:0;padding-block:var(--wpds-dimension-padding-xs,4px);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:prefix-start/content-end;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:calc(var(--wp-ui-menu-group-head-padding-inline) - var(--_wp-ui-menu-group-head-padding-base));@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-content:center;align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-start)) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-end)) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-popup-open]:not([data-highlighted],[data-disabled],[aria-disabled=true]){background-color:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-xs,1px) solid GrayText}}&[data-highlighted]:not([data-disabled],[aria-disabled=true]){--_gcd-a-color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){--_gcd-a-color:HighlightText;background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&:is([data-disabled],[aria-disabled=true]){--_gcd-a-color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);&[data-highlighted]{--_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)));--_gcd-a-outline:var(--_gcd-div-outline)}@media (forced-colors:active){--_gcd-a-color:GrayText;color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;margin-inline-end:var(--wpds-dimension-gap-xs,4px);pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-2xs,16px);width:var(--wpds-dimension-size-2xs,16px)}._64924ecabf65a5d6__item-prefix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;align-self:stretch;box-sizing:border-box;display:grid;grid-column:prefix-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none;&._5c211f9edfe0ed66__has-prefix{grid-column:content-start/content-end}}._76f3e69cf2228139__item-descriptions{display:flex;flex-direction:column;grid-column:prefix-start/content-end;grid-row:2;min-width:0;padding-block-end:var(--wpds-dimension-padding-xs,4px);pointer-events:none}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;grid-column:label-start/label-end;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere}.af879698ede76757__item-content>._091406749ed93e6e__item-suffix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}.af879698ede76757__item-content>._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing,.af879698ede76757__item-content>._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._06be17a91bf434a0__item-trailing{align-items:center;display:flex;grid-column:trailing-start/trailing-end}._5ed41da4abcf8958__item-label+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item:is([data-highlighted],[data-disabled],[aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item:is([data-highlighted],[data-popup-open],[data-disabled],[aria-disabled=true]) :is(.fa88c9f1a96a4c5a__item-description,._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){--_gcd-heading-color:currentColor;color:inherit}}}'); 19696 } 19697 var style_default4 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "has-prefix": "_5c211f9edfe0ed66__has-prefix", "item-descriptions": "_76f3e69cf2228139__item-descriptions", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" }; 19698 var ItemLabel = (0, import_element22.forwardRef)( 19699 function MenuItemLabel({ children, className, id, ...props }, ref) { 19700 const itemContentContext = useMenuItemContentContext(); 19701 return /* @__PURE__ */ (0, import_jsx_runtime76.jsxs)( 19702 Text, 19703 { 19704 ref, 19705 variant: "body-md", 19706 ...props, 19707 id: id ?? itemContentContext?.labelId, 19708 className: clsx_default(style_default4["item-label"], className), 19709 children: [ 19710 children, 19711 itemContentContext?.labelTrailing 19712 ] 19713 } 19714 ); 19715 } 19716 ); 19717 19718 // packages/ui/build-module/menu/item.mjs 19719 var import_jsx_runtime77 = __toESM(require_jsx_runtime(), 1); 19720 var STYLE_HASH_ATTRIBUTE5 = "data-wp-hash"; 19721 function getRuntime5() { 19722 const globalScope = globalThis; 19723 if (globalScope.__wpStyleRuntime) { 19724 return globalScope.__wpStyleRuntime; 19725 } 19726 globalScope.__wpStyleRuntime = { 19727 documents: /* @__PURE__ */ new Map(), 19728 styles: /* @__PURE__ */ new Map(), 19729 injectedStyles: /* @__PURE__ */ new WeakMap() 19730 }; 19731 if (typeof document !== "undefined") { 19732 registerDocument5(document); 19733 } 19734 return globalScope.__wpStyleRuntime; 19735 } 19736 function documentContainsStyleHash5(targetDocument, hash) { 19737 if (!targetDocument.head) { 19738 return false; 19739 } 19740 for (const style of targetDocument.head.querySelectorAll( 19741 `style[$STYLE_HASH_ATTRIBUTE5}]` 19742 )) { 19743 if (style.getAttribute(STYLE_HASH_ATTRIBUTE5) === hash) { 19744 return true; 19745 } 19746 } 19747 return false; 19748 } 19749 function injectStyle5(targetDocument, hash, css) { 19750 if (!targetDocument.head) { 19751 return; 19752 } 19753 const runtime = getRuntime5(); 19754 let injectedStyles = runtime.injectedStyles.get(targetDocument); 19755 if (!injectedStyles) { 19756 injectedStyles = /* @__PURE__ */ new Set(); 19757 runtime.injectedStyles.set(targetDocument, injectedStyles); 19758 } 19759 if (injectedStyles.has(hash)) { 19760 return; 19761 } 19762 if (documentContainsStyleHash5(targetDocument, hash)) { 19763 injectedStyles.add(hash); 19764 return; 19765 } 19766 const style = targetDocument.createElement("style"); 19767 style.setAttribute(STYLE_HASH_ATTRIBUTE5, hash); 19768 style.appendChild(targetDocument.createTextNode(css)); 19769 targetDocument.head.appendChild(style); 19770 injectedStyles.add(hash); 19771 } 19772 function registerDocument5(targetDocument) { 19773 const runtime = getRuntime5(); 19774 runtime.documents.set( 19775 targetDocument, 19776 (runtime.documents.get(targetDocument) ?? 0) + 1 19777 ); 19778 for (const [hash, css] of runtime.styles) { 19779 injectStyle5(targetDocument, hash, css); 19780 } 19781 return () => { 19782 const count = runtime.documents.get(targetDocument); 19783 if (count === void 0) { 19784 return; 19785 } 19786 if (count <= 1) { 19787 runtime.documents.delete(targetDocument); 19788 return; 19789 } 19790 runtime.documents.set(targetDocument, count - 1); 19791 }; 19792 } 19793 function registerStyle5(hash, css) { 19794 const runtime = getRuntime5(); 19795 runtime.styles.set(hash, css); 19796 for (const targetDocument of runtime.documents.keys()) { 19797 injectStyle5(targetDocument, hash, css); 19798 } 19799 } 19800 if (typeof process === "undefined" || true) { 19801 registerStyle5("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)}"); 19802 } 19803 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" }; 19804 if (typeof process === "undefined" || true) { 19805 registerStyle5("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 19806 } 19807 var resets_default = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; 19808 if (typeof process === "undefined" || true) { 19809 registerStyle5("35c74d3f9f", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-sm,320px);--_wp-ui-menu-item-padding-inline-start:var(--wpds-dimension-padding-sm,8px);--_wp-ui-menu-item-padding-inline-end:var(--wpds-dimension-padding-sm,8px);--_wp-ui-menu-group-head-padding-base:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-group-head-padding-inline:var(--_wp-ui-menu-group-head-padding-base);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--_wp-ui-menu-item-padding-inline-start:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-start)) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-end)) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:prefix-start/content-end;line-height:var(--wpds-typography-line-height-xs,16px);margin-inline:calc(var(--wp-ui-menu-group-head-padding-inline) - var(--_wp-ui-menu-group-head-padding-base));min-height:var(--wpds-dimension-size-sm,24px);min-width:0;padding-block:var(--wpds-dimension-padding-xs,4px);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:prefix-start/content-end;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:calc(var(--wp-ui-menu-group-head-padding-inline) - var(--_wp-ui-menu-group-head-padding-base));@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-content:center;align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-start)) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-end)) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-popup-open]:not([data-highlighted],[data-disabled],[aria-disabled=true]){background-color:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-xs,1px) solid GrayText}}&[data-highlighted]:not([data-disabled],[aria-disabled=true]){--_gcd-a-color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){--_gcd-a-color:HighlightText;background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&:is([data-disabled],[aria-disabled=true]){--_gcd-a-color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);&[data-highlighted]{--_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)));--_gcd-a-outline:var(--_gcd-div-outline)}@media (forced-colors:active){--_gcd-a-color:GrayText;color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;margin-inline-end:var(--wpds-dimension-gap-xs,4px);pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-2xs,16px);width:var(--wpds-dimension-size-2xs,16px)}._64924ecabf65a5d6__item-prefix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;align-self:stretch;box-sizing:border-box;display:grid;grid-column:prefix-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none;&._5c211f9edfe0ed66__has-prefix{grid-column:content-start/content-end}}._76f3e69cf2228139__item-descriptions{display:flex;flex-direction:column;grid-column:prefix-start/content-end;grid-row:2;min-width:0;padding-block-end:var(--wpds-dimension-padding-xs,4px);pointer-events:none}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;grid-column:label-start/label-end;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere}.af879698ede76757__item-content>._091406749ed93e6e__item-suffix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}.af879698ede76757__item-content>._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing,.af879698ede76757__item-content>._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._06be17a91bf434a0__item-trailing{align-items:center;display:flex;grid-column:trailing-start/trailing-end}._5ed41da4abcf8958__item-label+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item:is([data-highlighted],[data-disabled],[aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item:is([data-highlighted],[data-popup-open],[data-disabled],[aria-disabled=true]) :is(.fa88c9f1a96a4c5a__item-description,._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){--_gcd-heading-color:currentColor;color:inherit}}}'); 19810 } 19811 var style_default5 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "has-prefix": "_5c211f9edfe0ed66__has-prefix", "item-descriptions": "_76f3e69cf2228139__item-descriptions", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" }; 19812 var ITEM_CONTENT_COMPONENTS = { 19813 Label: ItemLabel, 19814 Description: ItemDescription, 19815 validationMessage: "Menu.ItemLabel must be the first direct child of every menu item, followed only by Menu.ItemDescription components.", 19816 descriptionValidationToken: ITEM_DESCRIPTION_DIRECT_CHILD 19817 }; 19818 function useItemContent2(children, { 19819 "aria-describedby": ariaDescribedBy, 19820 "aria-keyshortcuts": ariaKeyShortcuts, 19821 "aria-label": ariaLabel, 19822 "aria-labelledby": ariaLabelledBy, 19823 labelTrailing, 19824 shortcut 19825 }) { 19826 const { contentChildren, resolvedLabelId, itemAriaProps } = useItemContent(children, ITEM_CONTENT_COMPONENTS, { 19827 "aria-describedby": ariaDescribedBy, 19828 "aria-label": ariaLabel, 19829 "aria-labelledby": ariaLabelledBy 19830 }); 19831 const { 19832 descriptionId: shortcutDescriptionId, 19833 targetProps: shortcutAriaProps 19834 } = useKeyboardShortcutProps({ 19835 "aria-describedby": itemAriaProps["aria-describedby"], 19836 "aria-keyshortcuts": ariaKeyShortcuts, 19837 shortcut 19838 }); 19839 return { 19840 // React widens the tuple while mapping; validation preserves the item-child 19841 // contract and cloning changes only generated description IDs. 19842 contentChildren, 19843 contentContextValue: { 19844 labelId: resolvedLabelId, 19845 labelTrailing 19846 }, 19847 itemAriaProps: { 19848 ...shortcutAriaProps, 19849 "aria-label": itemAriaProps["aria-label"], 19850 "aria-labelledby": itemAriaProps["aria-labelledby"] 19851 }, 19852 shortcutDescriptionId 19853 }; 19854 } 19855 function ItemContent({ 19856 children, 19857 prefix, 19858 shortcut, 19859 shortcutDescriptionId, 19860 suffix, 19861 trailing 19862 }) { 19863 const hasPrefix = import_element23.Children.toArray(prefix).some( 19864 (child) => child !== "" 19865 ); 19866 const hasSuffix = import_element23.Children.toArray(suffix).some( 19867 (child) => child !== "" 19868 ); 19869 const hasTrailing = import_element23.Children.toArray(trailing).some( 19870 (child) => child !== "" 19871 ); 19872 const [label, ...descriptions] = import_element23.Children.toArray(children); 19873 return /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)(import_jsx_runtime77.Fragment, { children: [ 19874 /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)( 19875 "span", 19876 { 19877 className: clsx_default( 19878 style_default5["item-content"], 19879 hasPrefix && style_default5["has-prefix"] 19880 ), 19881 children: [ 19882 label, 19883 hasSuffix && /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( 19884 Text, 19885 { 19886 variant: "body-sm", 19887 className: style_default5["item-suffix"], 19888 children: suffix 19889 } 19890 ), 19891 shortcut && /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( 19892 Text, 19893 { 19894 variant: "body-sm", 19895 className: style_default5["item-shortcut"], 19896 children: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(KeyboardShortcutDisplay, { shortcut }) 19897 } 19898 ), 19899 hasTrailing && /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("span", { className: style_default5["item-trailing"], children: trailing }) 19900 ] 19901 } 19902 ), 19903 descriptions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("span", { className: style_default5["item-descriptions"], children: descriptions }), 19904 hasPrefix && /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("span", { "aria-hidden": "true", className: style_default5["item-prefix"], children: prefix }), 19905 shortcut && shortcutDescriptionId && /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( 19906 KeyboardShortcutDescription, 19907 { 19908 descriptionId: shortcutDescriptionId, 19909 shortcut 19910 } 19911 ) 19912 ] }); 19913 } 19914 var Item = (0, import_element23.forwardRef)(function MenuItem3({ 19915 children, 19916 className, 19917 prefix, 19918 shortcut, 19919 suffix, 19920 "aria-describedby": ariaDescribedBy, 19921 "aria-keyshortcuts": ariaKeyShortcuts, 19922 "aria-label": ariaLabel, 19923 "aria-labelledby": ariaLabelledBy, 19924 ...props 19925 }, ref) { 19926 const { 19927 contentChildren, 19928 contentContextValue, 19929 itemAriaProps, 19930 shortcutDescriptionId 19931 } = useItemContent2(children, { 19932 "aria-describedby": ariaDescribedBy, 19933 "aria-keyshortcuts": ariaKeyShortcuts, 19934 "aria-label": ariaLabel, 19935 "aria-labelledby": ariaLabelledBy, 19936 shortcut 19937 }); 19938 return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( 19939 index_parts_exports.Item, 19940 { 19941 ref, 19942 ...itemAriaProps, 19943 className: clsx_default( 19944 global_css_defense_default2.div, 19945 resets_default["box-sizing"], 19946 style_default5.item, 19947 className 19948 ), 19949 ...props, 19950 children: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(MenuItemContentContext.Provider, { value: contentContextValue, children: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( 19951 ItemContent, 19952 { 19953 prefix, 19954 shortcut, 19955 shortcutDescriptionId, 19956 suffix, 19957 children: contentChildren 19958 } 19959 ) }) 19960 } 19961 ); 19962 }); 19963 19964 // packages/ui/build-module/menu/checkbox-item.mjs 19965 var import_jsx_runtime78 = __toESM(require_jsx_runtime(), 1); 19966 var STYLE_HASH_ATTRIBUTE6 = "data-wp-hash"; 19967 function getRuntime6() { 19968 const globalScope = globalThis; 19969 if (globalScope.__wpStyleRuntime) { 19970 return globalScope.__wpStyleRuntime; 19971 } 19972 globalScope.__wpStyleRuntime = { 19973 documents: /* @__PURE__ */ new Map(), 19974 styles: /* @__PURE__ */ new Map(), 19975 injectedStyles: /* @__PURE__ */ new WeakMap() 19976 }; 19977 if (typeof document !== "undefined") { 19978 registerDocument6(document); 19979 } 19980 return globalScope.__wpStyleRuntime; 19981 } 19982 function documentContainsStyleHash6(targetDocument, hash) { 19983 if (!targetDocument.head) { 19984 return false; 19985 } 19986 for (const style of targetDocument.head.querySelectorAll( 19987 `style[$STYLE_HASH_ATTRIBUTE6}]` 19988 )) { 19989 if (style.getAttribute(STYLE_HASH_ATTRIBUTE6) === hash) { 19990 return true; 19991 } 19992 } 19993 return false; 19994 } 19995 function injectStyle6(targetDocument, hash, css) { 19996 if (!targetDocument.head) { 19997 return; 19998 } 19999 const runtime = getRuntime6(); 20000 let injectedStyles = runtime.injectedStyles.get(targetDocument); 20001 if (!injectedStyles) { 20002 injectedStyles = /* @__PURE__ */ new Set(); 20003 runtime.injectedStyles.set(targetDocument, injectedStyles); 20004 } 20005 if (injectedStyles.has(hash)) { 20006 return; 20007 } 20008 if (documentContainsStyleHash6(targetDocument, hash)) { 20009 injectedStyles.add(hash); 20010 return; 20011 } 20012 const style = targetDocument.createElement("style"); 20013 style.setAttribute(STYLE_HASH_ATTRIBUTE6, hash); 20014 style.appendChild(targetDocument.createTextNode(css)); 20015 targetDocument.head.appendChild(style); 20016 injectedStyles.add(hash); 20017 } 20018 function registerDocument6(targetDocument) { 20019 const runtime = getRuntime6(); 20020 runtime.documents.set( 20021 targetDocument, 20022 (runtime.documents.get(targetDocument) ?? 0) + 1 20023 ); 20024 for (const [hash, css] of runtime.styles) { 20025 injectStyle6(targetDocument, hash, css); 20026 } 20027 return () => { 20028 const count = runtime.documents.get(targetDocument); 20029 if (count === void 0) { 20030 return; 20031 } 20032 if (count <= 1) { 20033 runtime.documents.delete(targetDocument); 20034 return; 20035 } 20036 runtime.documents.set(targetDocument, count - 1); 20037 }; 20038 } 20039 function registerStyle6(hash, css) { 20040 const runtime = getRuntime6(); 20041 runtime.styles.set(hash, css); 20042 for (const targetDocument of runtime.documents.keys()) { 20043 injectStyle6(targetDocument, hash, css); 20044 } 20045 } 20046 if (typeof process === "undefined" || true) { 20047 registerStyle6("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)}"); 20048 } 20049 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" }; 20050 if (typeof process === "undefined" || true) { 20051 registerStyle6("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 20052 } 20053 var resets_default2 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; 20054 if (typeof process === "undefined" || true) { 20055 registerStyle6("35c74d3f9f", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-sm,320px);--_wp-ui-menu-item-padding-inline-start:var(--wpds-dimension-padding-sm,8px);--_wp-ui-menu-item-padding-inline-end:var(--wpds-dimension-padding-sm,8px);--_wp-ui-menu-group-head-padding-base:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-group-head-padding-inline:var(--_wp-ui-menu-group-head-padding-base);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--_wp-ui-menu-item-padding-inline-start:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-start)) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-end)) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:prefix-start/content-end;line-height:var(--wpds-typography-line-height-xs,16px);margin-inline:calc(var(--wp-ui-menu-group-head-padding-inline) - var(--_wp-ui-menu-group-head-padding-base));min-height:var(--wpds-dimension-size-sm,24px);min-width:0;padding-block:var(--wpds-dimension-padding-xs,4px);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:prefix-start/content-end;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:calc(var(--wp-ui-menu-group-head-padding-inline) - var(--_wp-ui-menu-group-head-padding-base));@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-content:center;align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-start)) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-end)) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-popup-open]:not([data-highlighted],[data-disabled],[aria-disabled=true]){background-color:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-xs,1px) solid GrayText}}&[data-highlighted]:not([data-disabled],[aria-disabled=true]){--_gcd-a-color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){--_gcd-a-color:HighlightText;background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&:is([data-disabled],[aria-disabled=true]){--_gcd-a-color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);&[data-highlighted]{--_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)));--_gcd-a-outline:var(--_gcd-div-outline)}@media (forced-colors:active){--_gcd-a-color:GrayText;color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;margin-inline-end:var(--wpds-dimension-gap-xs,4px);pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-2xs,16px);width:var(--wpds-dimension-size-2xs,16px)}._64924ecabf65a5d6__item-prefix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;align-self:stretch;box-sizing:border-box;display:grid;grid-column:prefix-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none;&._5c211f9edfe0ed66__has-prefix{grid-column:content-start/content-end}}._76f3e69cf2228139__item-descriptions{display:flex;flex-direction:column;grid-column:prefix-start/content-end;grid-row:2;min-width:0;padding-block-end:var(--wpds-dimension-padding-xs,4px);pointer-events:none}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;grid-column:label-start/label-end;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere}.af879698ede76757__item-content>._091406749ed93e6e__item-suffix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}.af879698ede76757__item-content>._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing,.af879698ede76757__item-content>._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._06be17a91bf434a0__item-trailing{align-items:center;display:flex;grid-column:trailing-start/trailing-end}._5ed41da4abcf8958__item-label+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item:is([data-highlighted],[data-disabled],[aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item:is([data-highlighted],[data-popup-open],[data-disabled],[aria-disabled=true]) :is(.fa88c9f1a96a4c5a__item-description,._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){--_gcd-heading-color:currentColor;color:inherit}}}'); 20056 } 20057 var style_default6 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "has-prefix": "_5c211f9edfe0ed66__has-prefix", "item-descriptions": "_76f3e69cf2228139__item-descriptions", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" }; 20058 var CheckboxItem = (0, import_element24.forwardRef)( 20059 function MenuCheckboxItem3({ 20060 children, 20061 className, 20062 prefix, 20063 shortcut, 20064 suffix, 20065 "aria-describedby": ariaDescribedBy, 20066 "aria-keyshortcuts": ariaKeyShortcuts, 20067 "aria-label": ariaLabel, 20068 "aria-labelledby": ariaLabelledBy, 20069 ...props 20070 }, ref) { 20071 const { 20072 contentChildren, 20073 contentContextValue, 20074 itemAriaProps, 20075 shortcutDescriptionId 20076 } = useItemContent2(children, { 20077 "aria-describedby": ariaDescribedBy, 20078 "aria-keyshortcuts": ariaKeyShortcuts, 20079 "aria-label": ariaLabel, 20080 "aria-labelledby": ariaLabelledBy, 20081 shortcut 20082 }); 20083 return /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)( 20084 index_parts_exports.CheckboxItem, 20085 { 20086 ref, 20087 ...itemAriaProps, 20088 className: clsx_default( 20089 global_css_defense_default3.div, 20090 resets_default2["box-sizing"], 20091 style_default6.item, 20092 className 20093 ), 20094 ...props, 20095 children: [ 20096 /* @__PURE__ */ (0, import_jsx_runtime78.jsx)( 20097 index_parts_exports.CheckboxItemIndicator, 20098 { 20099 keepMounted: true, 20100 className: style_default6["item-selection-indicator"], 20101 children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)( 20102 Icon, 20103 { 20104 icon: check_default, 20105 size: 16, 20106 className: style_default6["checkbox-selection-icon"], 20107 "aria-hidden": "true" 20108 } 20109 ) 20110 } 20111 ), 20112 /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(MenuItemContentContext.Provider, { value: contentContextValue, children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)( 20113 ItemContent, 20114 { 20115 prefix, 20116 shortcut, 20117 shortcutDescriptionId, 20118 suffix, 20119 children: contentChildren 20120 } 20121 ) }) 20122 ] 20123 } 20124 ); 20125 } 20126 ); 20127 20128 // packages/ui/build-module/menu/group.mjs 20129 var import_element25 = __toESM(require_element(), 1); 20130 var import_jsx_runtime79 = __toESM(require_jsx_runtime(), 1); 20131 var STYLE_HASH_ATTRIBUTE7 = "data-wp-hash"; 20132 function getRuntime7() { 20133 const globalScope = globalThis; 20134 if (globalScope.__wpStyleRuntime) { 20135 return globalScope.__wpStyleRuntime; 20136 } 20137 globalScope.__wpStyleRuntime = { 20138 documents: /* @__PURE__ */ new Map(), 20139 styles: /* @__PURE__ */ new Map(), 20140 injectedStyles: /* @__PURE__ */ new WeakMap() 20141 }; 20142 if (typeof document !== "undefined") { 20143 registerDocument7(document); 20144 } 20145 return globalScope.__wpStyleRuntime; 20146 } 20147 function documentContainsStyleHash7(targetDocument, hash) { 20148 if (!targetDocument.head) { 20149 return false; 20150 } 20151 for (const style of targetDocument.head.querySelectorAll( 20152 `style[$STYLE_HASH_ATTRIBUTE7}]` 20153 )) { 20154 if (style.getAttribute(STYLE_HASH_ATTRIBUTE7) === hash) { 20155 return true; 20156 } 20157 } 20158 return false; 20159 } 20160 function injectStyle7(targetDocument, hash, css) { 20161 if (!targetDocument.head) { 20162 return; 20163 } 20164 const runtime = getRuntime7(); 20165 let injectedStyles = runtime.injectedStyles.get(targetDocument); 20166 if (!injectedStyles) { 20167 injectedStyles = /* @__PURE__ */ new Set(); 20168 runtime.injectedStyles.set(targetDocument, injectedStyles); 20169 } 20170 if (injectedStyles.has(hash)) { 20171 return; 20172 } 20173 if (documentContainsStyleHash7(targetDocument, hash)) { 20174 injectedStyles.add(hash); 20175 return; 20176 } 20177 const style = targetDocument.createElement("style"); 20178 style.setAttribute(STYLE_HASH_ATTRIBUTE7, hash); 20179 style.appendChild(targetDocument.createTextNode(css)); 20180 targetDocument.head.appendChild(style); 20181 injectedStyles.add(hash); 20182 } 20183 function registerDocument7(targetDocument) { 20184 const runtime = getRuntime7(); 20185 runtime.documents.set( 20186 targetDocument, 20187 (runtime.documents.get(targetDocument) ?? 0) + 1 20188 ); 20189 for (const [hash, css] of runtime.styles) { 20190 injectStyle7(targetDocument, hash, css); 20191 } 20192 return () => { 20193 const count = runtime.documents.get(targetDocument); 20194 if (count === void 0) { 20195 return; 20196 } 20197 if (count <= 1) { 20198 runtime.documents.delete(targetDocument); 20199 return; 20200 } 20201 runtime.documents.set(targetDocument, count - 1); 20202 }; 20203 } 20204 function registerStyle7(hash, css) { 20205 const runtime = getRuntime7(); 20206 runtime.styles.set(hash, css); 20207 for (const targetDocument of runtime.documents.keys()) { 20208 injectStyle7(targetDocument, hash, css); 20209 } 20210 } 20211 if (typeof process === "undefined" || true) { 20212 registerStyle7("35c74d3f9f", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-sm,320px);--_wp-ui-menu-item-padding-inline-start:var(--wpds-dimension-padding-sm,8px);--_wp-ui-menu-item-padding-inline-end:var(--wpds-dimension-padding-sm,8px);--_wp-ui-menu-group-head-padding-base:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-group-head-padding-inline:var(--_wp-ui-menu-group-head-padding-base);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--_wp-ui-menu-item-padding-inline-start:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-start)) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-end)) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:prefix-start/content-end;line-height:var(--wpds-typography-line-height-xs,16px);margin-inline:calc(var(--wp-ui-menu-group-head-padding-inline) - var(--_wp-ui-menu-group-head-padding-base));min-height:var(--wpds-dimension-size-sm,24px);min-width:0;padding-block:var(--wpds-dimension-padding-xs,4px);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:prefix-start/content-end;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:calc(var(--wp-ui-menu-group-head-padding-inline) - var(--_wp-ui-menu-group-head-padding-base));@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-content:center;align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-start)) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-end)) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-popup-open]:not([data-highlighted],[data-disabled],[aria-disabled=true]){background-color:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-xs,1px) solid GrayText}}&[data-highlighted]:not([data-disabled],[aria-disabled=true]){--_gcd-a-color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){--_gcd-a-color:HighlightText;background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&:is([data-disabled],[aria-disabled=true]){--_gcd-a-color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);&[data-highlighted]{--_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)));--_gcd-a-outline:var(--_gcd-div-outline)}@media (forced-colors:active){--_gcd-a-color:GrayText;color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;margin-inline-end:var(--wpds-dimension-gap-xs,4px);pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-2xs,16px);width:var(--wpds-dimension-size-2xs,16px)}._64924ecabf65a5d6__item-prefix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;align-self:stretch;box-sizing:border-box;display:grid;grid-column:prefix-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none;&._5c211f9edfe0ed66__has-prefix{grid-column:content-start/content-end}}._76f3e69cf2228139__item-descriptions{display:flex;flex-direction:column;grid-column:prefix-start/content-end;grid-row:2;min-width:0;padding-block-end:var(--wpds-dimension-padding-xs,4px);pointer-events:none}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;grid-column:label-start/label-end;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere}.af879698ede76757__item-content>._091406749ed93e6e__item-suffix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}.af879698ede76757__item-content>._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing,.af879698ede76757__item-content>._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._06be17a91bf434a0__item-trailing{align-items:center;display:flex;grid-column:trailing-start/trailing-end}._5ed41da4abcf8958__item-label+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item:is([data-highlighted],[data-disabled],[aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item:is([data-highlighted],[data-popup-open],[data-disabled],[aria-disabled=true]) :is(.fa88c9f1a96a4c5a__item-description,._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){--_gcd-heading-color:currentColor;color:inherit}}}'); 20213 } 20214 var style_default7 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "has-prefix": "_5c211f9edfe0ed66__has-prefix", "item-descriptions": "_76f3e69cf2228139__item-descriptions", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" }; 20215 var Group = (0, import_element25.forwardRef)(function MenuGroup3({ className, ...props }, ref) { 20216 const parentGroup = useMenuGroupContext(); 20217 if (parentGroup === "radio-group") { 20218 throw new Error( 20219 "Menu.Group: Cannot be nested inside Menu.RadioGroup. Remove Menu.Group and put Menu.GroupLabel and Menu.RadioItem directly inside Menu.RadioGroup." 20220 ); 20221 } 20222 return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(MenuGroupContext2.Provider, { value: "group", children: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)( 20223 index_parts_exports.Group, 20224 { 20225 ref, 20226 className: clsx_default(style_default7.group, className), 20227 ...props 20228 } 20229 ) }); 20230 }); 20231 20232 // packages/ui/build-module/menu/group-label.mjs 20233 var import_element26 = __toESM(require_element(), 1); 20234 var import_jsx_runtime80 = __toESM(require_jsx_runtime(), 1); 20235 var STYLE_HASH_ATTRIBUTE8 = "data-wp-hash"; 20236 function getRuntime8() { 20237 const globalScope = globalThis; 20238 if (globalScope.__wpStyleRuntime) { 20239 return globalScope.__wpStyleRuntime; 20240 } 20241 globalScope.__wpStyleRuntime = { 20242 documents: /* @__PURE__ */ new Map(), 20243 styles: /* @__PURE__ */ new Map(), 20244 injectedStyles: /* @__PURE__ */ new WeakMap() 20245 }; 20246 if (typeof document !== "undefined") { 20247 registerDocument8(document); 20248 } 20249 return globalScope.__wpStyleRuntime; 20250 } 20251 function documentContainsStyleHash8(targetDocument, hash) { 20252 if (!targetDocument.head) { 20253 return false; 20254 } 20255 for (const style of targetDocument.head.querySelectorAll( 20256 `style[$STYLE_HASH_ATTRIBUTE8}]` 20257 )) { 20258 if (style.getAttribute(STYLE_HASH_ATTRIBUTE8) === hash) { 20259 return true; 20260 } 20261 } 20262 return false; 20263 } 20264 function injectStyle8(targetDocument, hash, css) { 20265 if (!targetDocument.head) { 20266 return; 20267 } 20268 const runtime = getRuntime8(); 20269 let injectedStyles = runtime.injectedStyles.get(targetDocument); 20270 if (!injectedStyles) { 20271 injectedStyles = /* @__PURE__ */ new Set(); 20272 runtime.injectedStyles.set(targetDocument, injectedStyles); 20273 } 20274 if (injectedStyles.has(hash)) { 20275 return; 20276 } 20277 if (documentContainsStyleHash8(targetDocument, hash)) { 20278 injectedStyles.add(hash); 20279 return; 20280 } 20281 const style = targetDocument.createElement("style"); 20282 style.setAttribute(STYLE_HASH_ATTRIBUTE8, hash); 20283 style.appendChild(targetDocument.createTextNode(css)); 20284 targetDocument.head.appendChild(style); 20285 injectedStyles.add(hash); 20286 } 20287 function registerDocument8(targetDocument) { 20288 const runtime = getRuntime8(); 20289 runtime.documents.set( 20290 targetDocument, 20291 (runtime.documents.get(targetDocument) ?? 0) + 1 20292 ); 20293 for (const [hash, css] of runtime.styles) { 20294 injectStyle8(targetDocument, hash, css); 20295 } 20296 return () => { 20297 const count = runtime.documents.get(targetDocument); 20298 if (count === void 0) { 20299 return; 20300 } 20301 if (count <= 1) { 20302 runtime.documents.delete(targetDocument); 20303 return; 20304 } 20305 runtime.documents.set(targetDocument, count - 1); 20306 }; 20307 } 20308 function registerStyle8(hash, css) { 20309 const runtime = getRuntime8(); 20310 runtime.styles.set(hash, css); 20311 for (const targetDocument of runtime.documents.keys()) { 20312 injectStyle8(targetDocument, hash, css); 20313 } 20314 } 20315 if (typeof process === "undefined" || true) { 20316 registerStyle8("35c74d3f9f", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-sm,320px);--_wp-ui-menu-item-padding-inline-start:var(--wpds-dimension-padding-sm,8px);--_wp-ui-menu-item-padding-inline-end:var(--wpds-dimension-padding-sm,8px);--_wp-ui-menu-group-head-padding-base:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-group-head-padding-inline:var(--_wp-ui-menu-group-head-padding-base);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--_wp-ui-menu-item-padding-inline-start:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-start)) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-end)) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:prefix-start/content-end;line-height:var(--wpds-typography-line-height-xs,16px);margin-inline:calc(var(--wp-ui-menu-group-head-padding-inline) - var(--_wp-ui-menu-group-head-padding-base));min-height:var(--wpds-dimension-size-sm,24px);min-width:0;padding-block:var(--wpds-dimension-padding-xs,4px);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:prefix-start/content-end;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:calc(var(--wp-ui-menu-group-head-padding-inline) - var(--_wp-ui-menu-group-head-padding-base));@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-content:center;align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-start)) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-end)) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-popup-open]:not([data-highlighted],[data-disabled],[aria-disabled=true]){background-color:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-xs,1px) solid GrayText}}&[data-highlighted]:not([data-disabled],[aria-disabled=true]){--_gcd-a-color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){--_gcd-a-color:HighlightText;background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&:is([data-disabled],[aria-disabled=true]){--_gcd-a-color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);&[data-highlighted]{--_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)));--_gcd-a-outline:var(--_gcd-div-outline)}@media (forced-colors:active){--_gcd-a-color:GrayText;color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;margin-inline-end:var(--wpds-dimension-gap-xs,4px);pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-2xs,16px);width:var(--wpds-dimension-size-2xs,16px)}._64924ecabf65a5d6__item-prefix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;align-self:stretch;box-sizing:border-box;display:grid;grid-column:prefix-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none;&._5c211f9edfe0ed66__has-prefix{grid-column:content-start/content-end}}._76f3e69cf2228139__item-descriptions{display:flex;flex-direction:column;grid-column:prefix-start/content-end;grid-row:2;min-width:0;padding-block-end:var(--wpds-dimension-padding-xs,4px);pointer-events:none}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;grid-column:label-start/label-end;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere}.af879698ede76757__item-content>._091406749ed93e6e__item-suffix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}.af879698ede76757__item-content>._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing,.af879698ede76757__item-content>._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._06be17a91bf434a0__item-trailing{align-items:center;display:flex;grid-column:trailing-start/trailing-end}._5ed41da4abcf8958__item-label+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item:is([data-highlighted],[data-disabled],[aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item:is([data-highlighted],[data-popup-open],[data-disabled],[aria-disabled=true]) :is(.fa88c9f1a96a4c5a__item-description,._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){--_gcd-heading-color:currentColor;color:inherit}}}'); 20317 } 20318 var style_default8 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "has-prefix": "_5c211f9edfe0ed66__has-prefix", "item-descriptions": "_76f3e69cf2228139__item-descriptions", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" }; 20319 var GroupLabel = (0, import_element26.forwardRef)( 20320 function MenuGroupLabel3({ className, ...props }, ref) { 20321 return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)( 20322 index_parts_exports.GroupLabel, 20323 { 20324 ref, 20325 className: clsx_default(style_default8["group-label"], className), 20326 ...props 20327 } 20328 ); 20329 } 20330 ); 20331 20332 // packages/ui/build-module/menu/link-item.mjs 20333 var import_element27 = __toESM(require_element(), 1); 20334 var import_i18n2 = __toESM(require_i18n(), 1); 20335 var import_jsx_runtime81 = __toESM(require_jsx_runtime(), 1); 20336 var STYLE_HASH_ATTRIBUTE9 = "data-wp-hash"; 20337 function getRuntime9() { 20338 const globalScope = globalThis; 20339 if (globalScope.__wpStyleRuntime) { 20340 return globalScope.__wpStyleRuntime; 20341 } 20342 globalScope.__wpStyleRuntime = { 20343 documents: /* @__PURE__ */ new Map(), 20344 styles: /* @__PURE__ */ new Map(), 20345 injectedStyles: /* @__PURE__ */ new WeakMap() 20346 }; 20347 if (typeof document !== "undefined") { 20348 registerDocument9(document); 20349 } 20350 return globalScope.__wpStyleRuntime; 20351 } 20352 function documentContainsStyleHash9(targetDocument, hash) { 20353 if (!targetDocument.head) { 20354 return false; 20355 } 20356 for (const style of targetDocument.head.querySelectorAll( 20357 `style[$STYLE_HASH_ATTRIBUTE9}]` 20358 )) { 20359 if (style.getAttribute(STYLE_HASH_ATTRIBUTE9) === hash) { 20360 return true; 20361 } 20362 } 20363 return false; 20364 } 20365 function injectStyle9(targetDocument, hash, css) { 20366 if (!targetDocument.head) { 20367 return; 20368 } 20369 const runtime = getRuntime9(); 20370 let injectedStyles = runtime.injectedStyles.get(targetDocument); 20371 if (!injectedStyles) { 20372 injectedStyles = /* @__PURE__ */ new Set(); 20373 runtime.injectedStyles.set(targetDocument, injectedStyles); 20374 } 20375 if (injectedStyles.has(hash)) { 20376 return; 20377 } 20378 if (documentContainsStyleHash9(targetDocument, hash)) { 20379 injectedStyles.add(hash); 20380 return; 20381 } 20382 const style = targetDocument.createElement("style"); 20383 style.setAttribute(STYLE_HASH_ATTRIBUTE9, hash); 20384 style.appendChild(targetDocument.createTextNode(css)); 20385 targetDocument.head.appendChild(style); 20386 injectedStyles.add(hash); 20387 } 20388 function registerDocument9(targetDocument) { 20389 const runtime = getRuntime9(); 20390 runtime.documents.set( 20391 targetDocument, 20392 (runtime.documents.get(targetDocument) ?? 0) + 1 20393 ); 20394 for (const [hash, css] of runtime.styles) { 20395 injectStyle9(targetDocument, hash, css); 20396 } 20397 return () => { 20398 const count = runtime.documents.get(targetDocument); 20399 if (count === void 0) { 20400 return; 20401 } 20402 if (count <= 1) { 20403 runtime.documents.delete(targetDocument); 20404 return; 20405 } 20406 runtime.documents.set(targetDocument, count - 1); 20407 }; 20408 } 20409 function registerStyle9(hash, css) { 20410 const runtime = getRuntime9(); 20411 runtime.styles.set(hash, css); 20412 for (const targetDocument of runtime.documents.keys()) { 20413 injectStyle9(targetDocument, hash, css); 20414 } 20415 } 20416 if (typeof process === "undefined" || true) { 20417 registerStyle9("abb19c3171", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}[role=treeitem] span._400bf7ee0c6061a9__span[aria-hidden]{display:var(--_gcd-span-display,inline);font-family:var(--_gcd-span-font-family,inherit);font-size:var(--_gcd-span-font-size,inherit);line-height:var(--_gcd-span-line-height,1);pointer-events:var(--_gcd-span-pointer-events,auto);position:var(--_gcd-span-position,static)}"); 20418 } 20419 var global_css_defense_default4 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li", "span": "_400bf7ee0c6061a9__span" }; 20420 if (typeof process === "undefined" || true) { 20421 registerStyle9("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 20422 } 20423 var resets_default3 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; 20424 if (typeof process === "undefined" || true) { 20425 registerStyle9("35c74d3f9f", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-sm,320px);--_wp-ui-menu-item-padding-inline-start:var(--wpds-dimension-padding-sm,8px);--_wp-ui-menu-item-padding-inline-end:var(--wpds-dimension-padding-sm,8px);--_wp-ui-menu-group-head-padding-base:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-group-head-padding-inline:var(--_wp-ui-menu-group-head-padding-base);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--_wp-ui-menu-item-padding-inline-start:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-start)) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-end)) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:prefix-start/content-end;line-height:var(--wpds-typography-line-height-xs,16px);margin-inline:calc(var(--wp-ui-menu-group-head-padding-inline) - var(--_wp-ui-menu-group-head-padding-base));min-height:var(--wpds-dimension-size-sm,24px);min-width:0;padding-block:var(--wpds-dimension-padding-xs,4px);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:prefix-start/content-end;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:calc(var(--wp-ui-menu-group-head-padding-inline) - var(--_wp-ui-menu-group-head-padding-base));@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-content:center;align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-start)) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-end)) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-popup-open]:not([data-highlighted],[data-disabled],[aria-disabled=true]){background-color:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-xs,1px) solid GrayText}}&[data-highlighted]:not([data-disabled],[aria-disabled=true]){--_gcd-a-color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){--_gcd-a-color:HighlightText;background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&:is([data-disabled],[aria-disabled=true]){--_gcd-a-color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);&[data-highlighted]{--_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)));--_gcd-a-outline:var(--_gcd-div-outline)}@media (forced-colors:active){--_gcd-a-color:GrayText;color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;margin-inline-end:var(--wpds-dimension-gap-xs,4px);pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-2xs,16px);width:var(--wpds-dimension-size-2xs,16px)}._64924ecabf65a5d6__item-prefix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;align-self:stretch;box-sizing:border-box;display:grid;grid-column:prefix-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none;&._5c211f9edfe0ed66__has-prefix{grid-column:content-start/content-end}}._76f3e69cf2228139__item-descriptions{display:flex;flex-direction:column;grid-column:prefix-start/content-end;grid-row:2;min-width:0;padding-block-end:var(--wpds-dimension-padding-xs,4px);pointer-events:none}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;grid-column:label-start/label-end;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere}.af879698ede76757__item-content>._091406749ed93e6e__item-suffix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}.af879698ede76757__item-content>._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing,.af879698ede76757__item-content>._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._06be17a91bf434a0__item-trailing{align-items:center;display:flex;grid-column:trailing-start/trailing-end}._5ed41da4abcf8958__item-label+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item:is([data-highlighted],[data-disabled],[aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item:is([data-highlighted],[data-popup-open],[data-disabled],[aria-disabled=true]) :is(.fa88c9f1a96a4c5a__item-description,._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){--_gcd-heading-color:currentColor;color:inherit}}}'); 20426 } 20427 var style_default9 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "has-prefix": "_5c211f9edfe0ed66__has-prefix", "item-descriptions": "_76f3e69cf2228139__item-descriptions", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" }; 20428 var LinkItem = (0, import_element27.forwardRef)(function MenuLinkItem3({ 20429 children, 20430 className, 20431 openInNewTab = false, 20432 target, 20433 prefix, 20434 shortcut, 20435 suffix, 20436 "aria-describedby": ariaDescribedBy, 20437 "aria-keyshortcuts": ariaKeyShortcuts, 20438 "aria-label": ariaLabel, 20439 "aria-labelledby": ariaLabelledBy, 20440 rel, 20441 ...props 20442 }, ref) { 20443 const shouldShowNewTabIndicator = openInNewTab || /^_blank$/i.test(target ?? ""); 20444 const externalLinkIndicator = shouldShowNewTabIndicator ? /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( 20445 "span", 20446 { 20447 className: style_default9["external-link-indicator"], 20448 role: "img", 20449 "aria-label": ( 20450 /* translators: accessibility text appended to link text */ 20451 (0, import_i18n2.__)("(opens in a new tab)") 20452 ) 20453 } 20454 ) : null; 20455 const { 20456 contentChildren, 20457 contentContextValue, 20458 itemAriaProps, 20459 shortcutDescriptionId 20460 } = useItemContent2(children, { 20461 "aria-describedby": ariaDescribedBy, 20462 "aria-keyshortcuts": ariaKeyShortcuts, 20463 "aria-label": ariaLabel, 20464 "aria-labelledby": ariaLabelledBy, 20465 labelTrailing: externalLinkIndicator, 20466 shortcut 20467 }); 20468 return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( 20469 index_parts_exports.LinkItem, 20470 { 20471 ref, 20472 ...props, 20473 ...itemAriaProps, 20474 rel, 20475 target: target ?? (openInNewTab ? "_blank" : void 0), 20476 className: clsx_default( 20477 global_css_defense_default4.a, 20478 resets_default3["box-sizing"], 20479 style_default9.item, 20480 className 20481 ), 20482 children: /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(MenuItemContentContext.Provider, { value: contentContextValue, children: /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( 20483 ItemContent, 20484 { 20485 prefix, 20486 shortcut, 20487 shortcutDescriptionId, 20488 suffix, 20489 children: contentChildren 20490 } 20491 ) }) 20492 } 20493 ); 20494 }); 20495 20496 // packages/ui/build-module/menu/popup.mjs 20497 var import_element31 = __toESM(require_element(), 1); 20498 20499 // packages/ui/build-module/utils/render-slot-with-children.mjs 20500 var import_element28 = __toESM(require_element(), 1); 20501 function renderSlotWithChildren(slot, defaultSlot, children) { 20502 return (0, import_element28.cloneElement)( 20503 slot ?? defaultSlot, 20504 { children } 20505 ); 20506 } 20507 20508 // packages/ui/build-module/menu/portal.mjs 20509 var import_element29 = __toESM(require_element(), 1); 20510 20511 // packages/ui/build-module/utils/wp-compat-overlay-slot.mjs 20512 var STYLE_HASH_ATTRIBUTE10 = "data-wp-hash"; 20513 function getRuntime10() { 20514 const globalScope = globalThis; 20515 if (globalScope.__wpStyleRuntime) { 20516 return globalScope.__wpStyleRuntime; 20517 } 20518 globalScope.__wpStyleRuntime = { 20519 documents: /* @__PURE__ */ new Map(), 20520 styles: /* @__PURE__ */ new Map(), 20521 injectedStyles: /* @__PURE__ */ new WeakMap() 20522 }; 20523 if (typeof document !== "undefined") { 20524 registerDocument10(document); 20525 } 20526 return globalScope.__wpStyleRuntime; 20527 } 20528 function documentContainsStyleHash10(targetDocument, hash) { 20529 if (!targetDocument.head) { 20530 return false; 20531 } 20532 for (const style of targetDocument.head.querySelectorAll( 20533 `style[$STYLE_HASH_ATTRIBUTE10}]` 20534 )) { 20535 if (style.getAttribute(STYLE_HASH_ATTRIBUTE10) === hash) { 20536 return true; 20537 } 20538 } 20539 return false; 20540 } 20541 function injectStyle10(targetDocument, hash, css) { 20542 if (!targetDocument.head) { 20543 return; 20544 } 20545 const runtime = getRuntime10(); 20546 let injectedStyles = runtime.injectedStyles.get(targetDocument); 20547 if (!injectedStyles) { 20548 injectedStyles = /* @__PURE__ */ new Set(); 20549 runtime.injectedStyles.set(targetDocument, injectedStyles); 20550 } 20551 if (injectedStyles.has(hash)) { 20552 return; 20553 } 20554 if (documentContainsStyleHash10(targetDocument, hash)) { 20555 injectedStyles.add(hash); 20556 return; 20557 } 20558 const style = targetDocument.createElement("style"); 20559 style.setAttribute(STYLE_HASH_ATTRIBUTE10, hash); 20560 style.appendChild(targetDocument.createTextNode(css)); 20561 targetDocument.head.appendChild(style); 20562 injectedStyles.add(hash); 20563 } 20564 function registerDocument10(targetDocument) { 20565 const runtime = getRuntime10(); 20566 runtime.documents.set( 20567 targetDocument, 20568 (runtime.documents.get(targetDocument) ?? 0) + 1 20569 ); 20570 for (const [hash, css] of runtime.styles) { 20571 injectStyle10(targetDocument, hash, css); 20572 } 20573 return () => { 20574 const count = runtime.documents.get(targetDocument); 20575 if (count === void 0) { 20576 return; 20577 } 20578 if (count <= 1) { 20579 runtime.documents.delete(targetDocument); 20580 return; 20581 } 20582 runtime.documents.set(targetDocument, count - 1); 20583 }; 20584 } 20585 function registerStyle10(hash, css) { 20586 const runtime = getRuntime10(); 20587 runtime.styles.set(hash, css); 20588 for (const targetDocument of runtime.documents.keys()) { 20589 injectStyle10(targetDocument, hash, css); 20590 } 20591 } 20592 if (typeof process === "undefined" || true) { 20593 registerStyle10("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}}}"); 20594 } 20595 var wp_compat_overlay_slot_default = { "slot": "_11fc52b637ff8a7e__slot" }; 20596 var WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE = "data-wp-compat-overlay-slot"; 20597 function resolveOwnerDocument() { 20598 return typeof document === "undefined" ? null : document; 20599 } 20600 function isInWordPressEnvironment() { 20601 let topWp; 20602 try { 20603 topWp = window.top?.wp; 20604 } catch { 20605 } 20606 const wp = topWp ?? window.wp; 20607 return typeof wp?.components === "object" && wp.components !== null; 20608 } 20609 var cachedSlot = null; 20610 function ensureSlotIsAccessible(element) { 20611 element.setAttribute("aria-hidden", "false"); 20612 return element; 20613 } 20614 function createSlot(ownerDocument2) { 20615 const element = ownerDocument2.createElement("div"); 20616 element.setAttribute(WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE, ""); 20617 if (wp_compat_overlay_slot_default.slot) { 20618 element.classList.add(wp_compat_overlay_slot_default.slot); 20619 } 20620 ownerDocument2.body.appendChild(element); 20621 return element; 20622 } 20623 function getWpCompatOverlaySlot() { 20624 if (typeof window === "undefined") { 20625 return void 0; 20626 } 20627 if (!isInWordPressEnvironment() && window.__wpUiCompatOverlaySlotEnabled !== true) { 20628 return void 0; 20629 } 20630 const ownerDocument2 = resolveOwnerDocument(); 20631 if (!ownerDocument2 || !ownerDocument2.body) { 20632 return void 0; 20633 } 20634 if (cachedSlot && cachedSlot.ownerDocument === ownerDocument2 && cachedSlot.isConnected) { 20635 return ensureSlotIsAccessible(cachedSlot); 20636 } 20637 const existing = ownerDocument2.querySelector( 20638 `[$WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE}]` 20639 ); 20640 if (existing instanceof HTMLDivElement) { 20641 cachedSlot = ensureSlotIsAccessible(existing); 20642 return cachedSlot; 20643 } 20644 if (cachedSlot?.isConnected) { 20645 cachedSlot.remove(); 20646 } 20647 cachedSlot = ensureSlotIsAccessible(createSlot(ownerDocument2)); 20648 return cachedSlot; 20649 } 20650 20651 // packages/ui/build-module/menu/portal.mjs 20652 var import_jsx_runtime82 = __toESM(require_jsx_runtime(), 1); 20653 var Portal = (0, import_element29.forwardRef)(function MenuPortal3({ container, ...props }, ref) { 20654 return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)( 20655 index_parts_exports.Portal, 20656 { 20657 ref, 20658 container: container === void 0 ? getWpCompatOverlaySlot() : container, 20659 ...props 20660 } 20661 ); 20662 }); 20663 20664 // packages/ui/build-module/menu/positioner.mjs 20665 var import_element30 = __toESM(require_element(), 1); 20666 var import_compose = __toESM(require_compose(), 1); 20667 20668 // packages/ui/build-module/form/primitives/constants.mjs 20669 var ITEM_POPUP_POSITIONER_PROPS = { 20670 align: "start", 20671 sideOffset: 8, 20672 collisionPadding: 12 20673 }; 20674 20675 // packages/ui/build-module/menu/positioner.mjs 20676 var import_jsx_runtime83 = __toESM(require_jsx_runtime(), 1); 20677 var STYLE_HASH_ATTRIBUTE11 = "data-wp-hash"; 20678 function getRuntime11() { 20679 const globalScope = globalThis; 20680 if (globalScope.__wpStyleRuntime) { 20681 return globalScope.__wpStyleRuntime; 20682 } 20683 globalScope.__wpStyleRuntime = { 20684 documents: /* @__PURE__ */ new Map(), 20685 styles: /* @__PURE__ */ new Map(), 20686 injectedStyles: /* @__PURE__ */ new WeakMap() 20687 }; 20688 if (typeof document !== "undefined") { 20689 registerDocument11(document); 20690 } 20691 return globalScope.__wpStyleRuntime; 20692 } 20693 function documentContainsStyleHash11(targetDocument, hash) { 20694 if (!targetDocument.head) { 20695 return false; 20696 } 20697 for (const style of targetDocument.head.querySelectorAll( 20698 `style[$STYLE_HASH_ATTRIBUTE11}]` 20699 )) { 20700 if (style.getAttribute(STYLE_HASH_ATTRIBUTE11) === hash) { 20701 return true; 20702 } 20703 } 20704 return false; 20705 } 20706 function injectStyle11(targetDocument, hash, css) { 20707 if (!targetDocument.head) { 20708 return; 20709 } 20710 const runtime = getRuntime11(); 20711 let injectedStyles = runtime.injectedStyles.get(targetDocument); 20712 if (!injectedStyles) { 20713 injectedStyles = /* @__PURE__ */ new Set(); 20714 runtime.injectedStyles.set(targetDocument, injectedStyles); 20715 } 20716 if (injectedStyles.has(hash)) { 20717 return; 20718 } 20719 if (documentContainsStyleHash11(targetDocument, hash)) { 20720 injectedStyles.add(hash); 20721 return; 20722 } 20723 const style = targetDocument.createElement("style"); 20724 style.setAttribute(STYLE_HASH_ATTRIBUTE11, hash); 20725 style.appendChild(targetDocument.createTextNode(css)); 20726 targetDocument.head.appendChild(style); 20727 injectedStyles.add(hash); 20728 } 20729 function registerDocument11(targetDocument) { 20730 const runtime = getRuntime11(); 20731 runtime.documents.set( 20732 targetDocument, 20733 (runtime.documents.get(targetDocument) ?? 0) + 1 20734 ); 20735 for (const [hash, css] of runtime.styles) { 20736 injectStyle11(targetDocument, hash, css); 20737 } 20738 return () => { 20739 const count = runtime.documents.get(targetDocument); 20740 if (count === void 0) { 20741 return; 20742 } 20743 if (count <= 1) { 20744 runtime.documents.delete(targetDocument); 20745 return; 20746 } 20747 runtime.documents.set(targetDocument, count - 1); 20748 }; 20749 } 20750 function registerStyle11(hash, css) { 20751 const runtime = getRuntime11(); 20752 runtime.styles.set(hash, css); 20753 for (const targetDocument of runtime.documents.keys()) { 20754 injectStyle11(targetDocument, hash, css); 20755 } 20756 } 20757 if (typeof process === "undefined" || true) { 20758 registerStyle11("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 20759 } 20760 var resets_default4 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; 20761 if (typeof process === "undefined" || true) { 20762 registerStyle11("35c74d3f9f", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-sm,320px);--_wp-ui-menu-item-padding-inline-start:var(--wpds-dimension-padding-sm,8px);--_wp-ui-menu-item-padding-inline-end:var(--wpds-dimension-padding-sm,8px);--_wp-ui-menu-group-head-padding-base:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-group-head-padding-inline:var(--_wp-ui-menu-group-head-padding-base);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--_wp-ui-menu-item-padding-inline-start:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-start)) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-end)) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:prefix-start/content-end;line-height:var(--wpds-typography-line-height-xs,16px);margin-inline:calc(var(--wp-ui-menu-group-head-padding-inline) - var(--_wp-ui-menu-group-head-padding-base));min-height:var(--wpds-dimension-size-sm,24px);min-width:0;padding-block:var(--wpds-dimension-padding-xs,4px);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:prefix-start/content-end;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:calc(var(--wp-ui-menu-group-head-padding-inline) - var(--_wp-ui-menu-group-head-padding-base));@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-content:center;align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-start)) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-end)) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-popup-open]:not([data-highlighted],[data-disabled],[aria-disabled=true]){background-color:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-xs,1px) solid GrayText}}&[data-highlighted]:not([data-disabled],[aria-disabled=true]){--_gcd-a-color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){--_gcd-a-color:HighlightText;background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&:is([data-disabled],[aria-disabled=true]){--_gcd-a-color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);&[data-highlighted]{--_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)));--_gcd-a-outline:var(--_gcd-div-outline)}@media (forced-colors:active){--_gcd-a-color:GrayText;color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;margin-inline-end:var(--wpds-dimension-gap-xs,4px);pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-2xs,16px);width:var(--wpds-dimension-size-2xs,16px)}._64924ecabf65a5d6__item-prefix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;align-self:stretch;box-sizing:border-box;display:grid;grid-column:prefix-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none;&._5c211f9edfe0ed66__has-prefix{grid-column:content-start/content-end}}._76f3e69cf2228139__item-descriptions{display:flex;flex-direction:column;grid-column:prefix-start/content-end;grid-row:2;min-width:0;padding-block-end:var(--wpds-dimension-padding-xs,4px);pointer-events:none}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;grid-column:label-start/label-end;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere}.af879698ede76757__item-content>._091406749ed93e6e__item-suffix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}.af879698ede76757__item-content>._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing,.af879698ede76757__item-content>._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._06be17a91bf434a0__item-trailing{align-items:center;display:flex;grid-column:trailing-start/trailing-end}._5ed41da4abcf8958__item-label+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item:is([data-highlighted],[data-disabled],[aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item:is([data-highlighted],[data-popup-open],[data-disabled],[aria-disabled=true]) :is(.fa88c9f1a96a4c5a__item-description,._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){--_gcd-heading-color:currentColor;color:inherit}}}'); 20763 } 20764 var style_default10 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "has-prefix": "_5c211f9edfe0ed66__has-prefix", "item-descriptions": "_76f3e69cf2228139__item-descriptions", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" }; 20765 var MENU_SUBMENU_POPUP_POSITIONER_PROPS = { 20766 side: "inline-end", 20767 align: "start", 20768 sideOffset: -4, 20769 collisionPadding: 12 20770 }; 20771 function getSubmenuLabelOffset(positioner, trigger) { 20772 const popup = positioner?.querySelector(`.$style_default10.popup}`); 20773 if (!positioner || !popup) { 20774 return 0; 20775 } 20776 const parentLabel = trigger?.querySelector( 20777 `.$style_default10["item-label"]}` 20778 ); 20779 const firstLabel = popup?.querySelector(`.$style_default10["item-label"]}`); 20780 if (!trigger || !parentLabel || !firstLabel) { 20781 const popupStyles = popup.ownerDocument.defaultView?.getComputedStyle(popup); 20782 if (!popupStyles) { 20783 return 0; 20784 } 20785 return -(parseFloat(popupStyles.paddingTop) + parseFloat(popupStyles.borderTopWidth)); 20786 } 20787 const parentInset = parentLabel.getBoundingClientRect().top - trigger.getBoundingClientRect().top; 20788 const submenuInset = firstLabel.getBoundingClientRect().top - positioner.getBoundingClientRect().top; 20789 return parentInset - submenuInset; 20790 } 20791 var Positioner = (0, import_element30.forwardRef)( 20792 function MenuPositioner3({ className, ...props }, ref) { 20793 const { isSubmenu, submenuTriggerRef } = useMenuContext(); 20794 const positionerRef = (0, import_element30.useRef)(null); 20795 const mergedRef = (0, import_compose.useMergeRefs)([ref, positionerRef]); 20796 const [measuredAnchor, setMeasuredAnchor] = (0, import_element30.useState)(); 20797 const lastOffsetRef = (0, import_element30.useRef)(0); 20798 const defaultProps = isSubmenu ? MENU_SUBMENU_POPUP_POSITIONER_PROPS : ITEM_POPUP_POSITIONER_PROPS; 20799 const alignOffset = (0, import_element30.useCallback)( 20800 (dimensions) => { 20801 const { side, align } = dimensions; 20802 if (side === "top" || side === "bottom" || align !== "start") { 20803 return 0; 20804 } 20805 const positioner = positionerRef.current; 20806 if (!positioner) { 20807 return 0; 20808 } 20809 if (positioner.hidden || positioner.hasAttribute("data-closed")) { 20810 return lastOffsetRef.current; 20811 } 20812 const trigger = props.anchor ? void 0 : submenuTriggerRef?.current; 20813 const offset4 = getSubmenuLabelOffset(positioner, trigger); 20814 lastOffsetRef.current = offset4; 20815 return offset4; 20816 }, 20817 [props.anchor, submenuTriggerRef] 20818 ); 20819 (0, import_compose.useIsomorphicLayoutEffect)(() => { 20820 if (!isSubmenu || props.anchor || props.alignOffset !== void 0 || props.disableAnchorTracking) { 20821 return; 20822 } 20823 const positioner = positionerRef.current; 20824 const trigger = submenuTriggerRef?.current; 20825 const popup = positioner?.querySelector(`.$style_default10.popup}`); 20826 const firstLabel = popup?.querySelector( 20827 `.$style_default10["item-label"]}` 20828 ); 20829 const ResizeObserverConstructor = positioner?.ownerDocument.defaultView?.ResizeObserver; 20830 if (!trigger || !firstLabel || !ResizeObserverConstructor) { 20831 return; 20832 } 20833 const observer = new ResizeObserverConstructor(() => { 20834 if (!positioner || positioner.hidden || positioner.hasAttribute("data-closed") || positioner.dataset.side === "top" || positioner.dataset.side === "bottom" || positioner.dataset.align !== "start") { 20835 return; 20836 } 20837 const nextOffset = getSubmenuLabelOffset(positioner, trigger); 20838 const previousOffset = lastOffsetRef.current; 20839 lastOffsetRef.current = nextOffset; 20840 if (previousOffset !== void 0 && Math.abs(nextOffset - previousOffset) < 0.01) { 20841 return; 20842 } 20843 setMeasuredAnchor({ 20844 contextElement: trigger, 20845 getBoundingClientRect: () => trigger.getBoundingClientRect() 20846 }); 20847 }); 20848 const observedElements = [ 20849 firstLabel, 20850 firstLabel.closest(`.$style_default10.item}`), 20851 popup?.querySelector(`.$style_default10.list}`), 20852 trigger.querySelector(`.$style_default10["item-label"]}`) 20853 ]; 20854 observedElements.forEach((element) => { 20855 if (element) { 20856 observer.observe(element); 20857 } 20858 }); 20859 return () => observer.disconnect(); 20860 }, [ 20861 isSubmenu, 20862 props.anchor, 20863 props.alignOffset, 20864 props.disableAnchorTracking, 20865 submenuTriggerRef 20866 ]); 20867 return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)( 20868 index_parts_exports.Positioner, 20869 { 20870 ...defaultProps, 20871 anchor: isSubmenu ? measuredAnchor : void 0, 20872 alignOffset: isSubmenu ? alignOffset : void 0, 20873 ...props, 20874 ref: mergedRef, 20875 className: clsx_default( 20876 resets_default4["box-sizing"], 20877 style_default10.positioner, 20878 className 20879 ) 20880 } 20881 ); 20882 } 20883 ); 20884 20885 // packages/ui/build-module/menu/popup.mjs 20886 var import_jsx_runtime84 = __toESM(require_jsx_runtime(), 1); 20887 var STYLE_HASH_ATTRIBUTE12 = "data-wp-hash"; 20888 function getRuntime12() { 20889 const globalScope = globalThis; 20890 if (globalScope.__wpStyleRuntime) { 20891 return globalScope.__wpStyleRuntime; 20892 } 20893 globalScope.__wpStyleRuntime = { 20894 documents: /* @__PURE__ */ new Map(), 20895 styles: /* @__PURE__ */ new Map(), 20896 injectedStyles: /* @__PURE__ */ new WeakMap() 20897 }; 20898 if (typeof document !== "undefined") { 20899 registerDocument12(document); 20900 } 20901 return globalScope.__wpStyleRuntime; 20902 } 20903 function documentContainsStyleHash12(targetDocument, hash) { 20904 if (!targetDocument.head) { 20905 return false; 20906 } 20907 for (const style of targetDocument.head.querySelectorAll( 20908 `style[$STYLE_HASH_ATTRIBUTE12}]` 20909 )) { 20910 if (style.getAttribute(STYLE_HASH_ATTRIBUTE12) === hash) { 20911 return true; 20912 } 20913 } 20914 return false; 20915 } 20916 function injectStyle12(targetDocument, hash, css) { 20917 if (!targetDocument.head) { 20918 return; 20919 } 20920 const runtime = getRuntime12(); 20921 let injectedStyles = runtime.injectedStyles.get(targetDocument); 20922 if (!injectedStyles) { 20923 injectedStyles = /* @__PURE__ */ new Set(); 20924 runtime.injectedStyles.set(targetDocument, injectedStyles); 20925 } 20926 if (injectedStyles.has(hash)) { 20927 return; 20928 } 20929 if (documentContainsStyleHash12(targetDocument, hash)) { 20930 injectedStyles.add(hash); 20931 return; 20932 } 20933 const style = targetDocument.createElement("style"); 20934 style.setAttribute(STYLE_HASH_ATTRIBUTE12, hash); 20935 style.appendChild(targetDocument.createTextNode(css)); 20936 targetDocument.head.appendChild(style); 20937 injectedStyles.add(hash); 20938 } 20939 function registerDocument12(targetDocument) { 20940 const runtime = getRuntime12(); 20941 runtime.documents.set( 20942 targetDocument, 20943 (runtime.documents.get(targetDocument) ?? 0) + 1 20944 ); 20945 for (const [hash, css] of runtime.styles) { 20946 injectStyle12(targetDocument, hash, css); 20947 } 20948 return () => { 20949 const count = runtime.documents.get(targetDocument); 20950 if (count === void 0) { 20951 return; 20952 } 20953 if (count <= 1) { 20954 runtime.documents.delete(targetDocument); 20955 return; 20956 } 20957 runtime.documents.set(targetDocument, count - 1); 20958 }; 20959 } 20960 function registerStyle12(hash, css) { 20961 const runtime = getRuntime12(); 20962 runtime.styles.set(hash, css); 20963 for (const targetDocument of runtime.documents.keys()) { 20964 injectStyle12(targetDocument, hash, css); 20965 } 20966 } 20967 if (typeof process === "undefined" || true) { 20968 registerStyle12("35c74d3f9f", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-sm,320px);--_wp-ui-menu-item-padding-inline-start:var(--wpds-dimension-padding-sm,8px);--_wp-ui-menu-item-padding-inline-end:var(--wpds-dimension-padding-sm,8px);--_wp-ui-menu-group-head-padding-base:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-group-head-padding-inline:var(--_wp-ui-menu-group-head-padding-base);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--_wp-ui-menu-item-padding-inline-start:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-start)) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-end)) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:prefix-start/content-end;line-height:var(--wpds-typography-line-height-xs,16px);margin-inline:calc(var(--wp-ui-menu-group-head-padding-inline) - var(--_wp-ui-menu-group-head-padding-base));min-height:var(--wpds-dimension-size-sm,24px);min-width:0;padding-block:var(--wpds-dimension-padding-xs,4px);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:prefix-start/content-end;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:calc(var(--wp-ui-menu-group-head-padding-inline) - var(--_wp-ui-menu-group-head-padding-base));@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-content:center;align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-start)) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-end)) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-popup-open]:not([data-highlighted],[data-disabled],[aria-disabled=true]){background-color:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-xs,1px) solid GrayText}}&[data-highlighted]:not([data-disabled],[aria-disabled=true]){--_gcd-a-color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){--_gcd-a-color:HighlightText;background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&:is([data-disabled],[aria-disabled=true]){--_gcd-a-color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);&[data-highlighted]{--_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)));--_gcd-a-outline:var(--_gcd-div-outline)}@media (forced-colors:active){--_gcd-a-color:GrayText;color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;margin-inline-end:var(--wpds-dimension-gap-xs,4px);pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-2xs,16px);width:var(--wpds-dimension-size-2xs,16px)}._64924ecabf65a5d6__item-prefix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;align-self:stretch;box-sizing:border-box;display:grid;grid-column:prefix-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none;&._5c211f9edfe0ed66__has-prefix{grid-column:content-start/content-end}}._76f3e69cf2228139__item-descriptions{display:flex;flex-direction:column;grid-column:prefix-start/content-end;grid-row:2;min-width:0;padding-block-end:var(--wpds-dimension-padding-xs,4px);pointer-events:none}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;grid-column:label-start/label-end;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere}.af879698ede76757__item-content>._091406749ed93e6e__item-suffix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}.af879698ede76757__item-content>._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing,.af879698ede76757__item-content>._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._06be17a91bf434a0__item-trailing{align-items:center;display:flex;grid-column:trailing-start/trailing-end}._5ed41da4abcf8958__item-label+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item:is([data-highlighted],[data-disabled],[aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item:is([data-highlighted],[data-popup-open],[data-disabled],[aria-disabled=true]) :is(.fa88c9f1a96a4c5a__item-description,._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){--_gcd-heading-color:currentColor;color:inherit}}}'); 20969 } 20970 var style_default11 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "has-prefix": "_5c211f9edfe0ed66__has-prefix", "item-descriptions": "_76f3e69cf2228139__item-descriptions", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" }; 20971 var Popup = (0, import_element31.forwardRef)(function MenuPopup3({ children, className, portal, positioner, ...props }, ref) { 20972 const { isSubmenu } = useMenuContext(); 20973 const popupContent = /* @__PURE__ */ (0, import_jsx_runtime84.jsx)( 20974 index_parts_exports.Popup, 20975 { 20976 ref, 20977 className: clsx_default( 20978 style_default11.popup, 20979 isSubmenu ? style_default11["is-submenu"] : style_default11["is-root"], 20980 className 20981 ), 20982 ...props, 20983 children: /* @__PURE__ */ (0, import_jsx_runtime84.jsx)( 20984 "div", 20985 { 20986 className: style_default11.list, 20987 children 20988 } 20989 ) 20990 } 20991 ); 20992 const positionedPopup = renderSlotWithChildren( 20993 positioner, 20994 /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(Positioner, {}), 20995 popupContent 20996 ); 20997 return renderSlotWithChildren(portal, /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(Portal, {}), positionedPopup); 20998 }); 20999 21000 // packages/ui/build-module/menu/prefix-icon.mjs 21001 var import_element32 = __toESM(require_element(), 1); 21002 var import_jsx_runtime85 = __toESM(require_jsx_runtime(), 1); 21003 var STYLE_HASH_ATTRIBUTE13 = "data-wp-hash"; 21004 function getRuntime13() { 21005 const globalScope = globalThis; 21006 if (globalScope.__wpStyleRuntime) { 21007 return globalScope.__wpStyleRuntime; 21008 } 21009 globalScope.__wpStyleRuntime = { 21010 documents: /* @__PURE__ */ new Map(), 21011 styles: /* @__PURE__ */ new Map(), 21012 injectedStyles: /* @__PURE__ */ new WeakMap() 21013 }; 21014 if (typeof document !== "undefined") { 21015 registerDocument13(document); 21016 } 21017 return globalScope.__wpStyleRuntime; 21018 } 21019 function documentContainsStyleHash13(targetDocument, hash) { 21020 if (!targetDocument.head) { 21021 return false; 21022 } 21023 for (const style of targetDocument.head.querySelectorAll( 21024 `style[$STYLE_HASH_ATTRIBUTE13}]` 21025 )) { 21026 if (style.getAttribute(STYLE_HASH_ATTRIBUTE13) === hash) { 21027 return true; 21028 } 21029 } 21030 return false; 21031 } 21032 function injectStyle13(targetDocument, hash, css) { 21033 if (!targetDocument.head) { 21034 return; 21035 } 21036 const runtime = getRuntime13(); 21037 let injectedStyles = runtime.injectedStyles.get(targetDocument); 21038 if (!injectedStyles) { 21039 injectedStyles = /* @__PURE__ */ new Set(); 21040 runtime.injectedStyles.set(targetDocument, injectedStyles); 21041 } 21042 if (injectedStyles.has(hash)) { 21043 return; 21044 } 21045 if (documentContainsStyleHash13(targetDocument, hash)) { 21046 injectedStyles.add(hash); 21047 return; 21048 } 21049 const style = targetDocument.createElement("style"); 21050 style.setAttribute(STYLE_HASH_ATTRIBUTE13, hash); 21051 style.appendChild(targetDocument.createTextNode(css)); 21052 targetDocument.head.appendChild(style); 21053 injectedStyles.add(hash); 21054 } 21055 function registerDocument13(targetDocument) { 21056 const runtime = getRuntime13(); 21057 runtime.documents.set( 21058 targetDocument, 21059 (runtime.documents.get(targetDocument) ?? 0) + 1 21060 ); 21061 for (const [hash, css] of runtime.styles) { 21062 injectStyle13(targetDocument, hash, css); 21063 } 21064 return () => { 21065 const count = runtime.documents.get(targetDocument); 21066 if (count === void 0) { 21067 return; 21068 } 21069 if (count <= 1) { 21070 runtime.documents.delete(targetDocument); 21071 return; 21072 } 21073 runtime.documents.set(targetDocument, count - 1); 21074 }; 21075 } 21076 function registerStyle13(hash, css) { 21077 const runtime = getRuntime13(); 21078 runtime.styles.set(hash, css); 21079 for (const targetDocument of runtime.documents.keys()) { 21080 injectStyle13(targetDocument, hash, css); 21081 } 21082 } 21083 if (typeof process === "undefined" || true) { 21084 registerStyle13("35c74d3f9f", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-sm,320px);--_wp-ui-menu-item-padding-inline-start:var(--wpds-dimension-padding-sm,8px);--_wp-ui-menu-item-padding-inline-end:var(--wpds-dimension-padding-sm,8px);--_wp-ui-menu-group-head-padding-base:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-group-head-padding-inline:var(--_wp-ui-menu-group-head-padding-base);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--_wp-ui-menu-item-padding-inline-start:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-start)) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-end)) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:prefix-start/content-end;line-height:var(--wpds-typography-line-height-xs,16px);margin-inline:calc(var(--wp-ui-menu-group-head-padding-inline) - var(--_wp-ui-menu-group-head-padding-base));min-height:var(--wpds-dimension-size-sm,24px);min-width:0;padding-block:var(--wpds-dimension-padding-xs,4px);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:prefix-start/content-end;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:calc(var(--wp-ui-menu-group-head-padding-inline) - var(--_wp-ui-menu-group-head-padding-base));@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-content:center;align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-start)) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-end)) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-popup-open]:not([data-highlighted],[data-disabled],[aria-disabled=true]){background-color:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-xs,1px) solid GrayText}}&[data-highlighted]:not([data-disabled],[aria-disabled=true]){--_gcd-a-color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){--_gcd-a-color:HighlightText;background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&:is([data-disabled],[aria-disabled=true]){--_gcd-a-color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);&[data-highlighted]{--_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)));--_gcd-a-outline:var(--_gcd-div-outline)}@media (forced-colors:active){--_gcd-a-color:GrayText;color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;margin-inline-end:var(--wpds-dimension-gap-xs,4px);pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-2xs,16px);width:var(--wpds-dimension-size-2xs,16px)}._64924ecabf65a5d6__item-prefix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;align-self:stretch;box-sizing:border-box;display:grid;grid-column:prefix-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none;&._5c211f9edfe0ed66__has-prefix{grid-column:content-start/content-end}}._76f3e69cf2228139__item-descriptions{display:flex;flex-direction:column;grid-column:prefix-start/content-end;grid-row:2;min-width:0;padding-block-end:var(--wpds-dimension-padding-xs,4px);pointer-events:none}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;grid-column:label-start/label-end;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere}.af879698ede76757__item-content>._091406749ed93e6e__item-suffix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}.af879698ede76757__item-content>._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing,.af879698ede76757__item-content>._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._06be17a91bf434a0__item-trailing{align-items:center;display:flex;grid-column:trailing-start/trailing-end}._5ed41da4abcf8958__item-label+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item:is([data-highlighted],[data-disabled],[aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item:is([data-highlighted],[data-popup-open],[data-disabled],[aria-disabled=true]) :is(.fa88c9f1a96a4c5a__item-description,._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){--_gcd-heading-color:currentColor;color:inherit}}}'); 21085 } 21086 var style_default12 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "has-prefix": "_5c211f9edfe0ed66__has-prefix", "item-descriptions": "_76f3e69cf2228139__item-descriptions", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" }; 21087 var PrefixIcon = (0, import_element32.forwardRef)( 21088 function MenuPrefixIcon({ className, size: size4 = 16, style, ...props }, ref) { 21089 return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)( 21090 Icon, 21091 { 21092 ...props, 21093 ref, 21094 size: size4, 21095 className: clsx_default(style_default12["prefix-icon"], className), 21096 style: { 21097 ...style, 21098 "--_wp-ui-menu-prefix-icon-size": `$size4}px` 21099 } 21100 } 21101 ); 21102 } 21103 ); 21104 PrefixIcon.displayName = "Menu.PrefixIcon"; 21105 21106 // packages/ui/build-module/menu/radio-group.mjs 21107 var import_element33 = __toESM(require_element(), 1); 21108 var import_jsx_runtime86 = __toESM(require_jsx_runtime(), 1); 21109 var STYLE_HASH_ATTRIBUTE14 = "data-wp-hash"; 21110 function getRuntime14() { 21111 const globalScope = globalThis; 21112 if (globalScope.__wpStyleRuntime) { 21113 return globalScope.__wpStyleRuntime; 21114 } 21115 globalScope.__wpStyleRuntime = { 21116 documents: /* @__PURE__ */ new Map(), 21117 styles: /* @__PURE__ */ new Map(), 21118 injectedStyles: /* @__PURE__ */ new WeakMap() 21119 }; 21120 if (typeof document !== "undefined") { 21121 registerDocument14(document); 21122 } 21123 return globalScope.__wpStyleRuntime; 21124 } 21125 function documentContainsStyleHash14(targetDocument, hash) { 21126 if (!targetDocument.head) { 21127 return false; 21128 } 21129 for (const style of targetDocument.head.querySelectorAll( 21130 `style[$STYLE_HASH_ATTRIBUTE14}]` 21131 )) { 21132 if (style.getAttribute(STYLE_HASH_ATTRIBUTE14) === hash) { 21133 return true; 21134 } 21135 } 21136 return false; 21137 } 21138 function injectStyle14(targetDocument, hash, css) { 21139 if (!targetDocument.head) { 21140 return; 21141 } 21142 const runtime = getRuntime14(); 21143 let injectedStyles = runtime.injectedStyles.get(targetDocument); 21144 if (!injectedStyles) { 21145 injectedStyles = /* @__PURE__ */ new Set(); 21146 runtime.injectedStyles.set(targetDocument, injectedStyles); 21147 } 21148 if (injectedStyles.has(hash)) { 21149 return; 21150 } 21151 if (documentContainsStyleHash14(targetDocument, hash)) { 21152 injectedStyles.add(hash); 21153 return; 21154 } 21155 const style = targetDocument.createElement("style"); 21156 style.setAttribute(STYLE_HASH_ATTRIBUTE14, hash); 21157 style.appendChild(targetDocument.createTextNode(css)); 21158 targetDocument.head.appendChild(style); 21159 injectedStyles.add(hash); 21160 } 21161 function registerDocument14(targetDocument) { 21162 const runtime = getRuntime14(); 21163 runtime.documents.set( 21164 targetDocument, 21165 (runtime.documents.get(targetDocument) ?? 0) + 1 21166 ); 21167 for (const [hash, css] of runtime.styles) { 21168 injectStyle14(targetDocument, hash, css); 21169 } 21170 return () => { 21171 const count = runtime.documents.get(targetDocument); 21172 if (count === void 0) { 21173 return; 21174 } 21175 if (count <= 1) { 21176 runtime.documents.delete(targetDocument); 21177 return; 21178 } 21179 runtime.documents.set(targetDocument, count - 1); 21180 }; 21181 } 21182 function registerStyle14(hash, css) { 21183 const runtime = getRuntime14(); 21184 runtime.styles.set(hash, css); 21185 for (const targetDocument of runtime.documents.keys()) { 21186 injectStyle14(targetDocument, hash, css); 21187 } 21188 } 21189 if (typeof process === "undefined" || true) { 21190 registerStyle14("35c74d3f9f", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-sm,320px);--_wp-ui-menu-item-padding-inline-start:var(--wpds-dimension-padding-sm,8px);--_wp-ui-menu-item-padding-inline-end:var(--wpds-dimension-padding-sm,8px);--_wp-ui-menu-group-head-padding-base:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-group-head-padding-inline:var(--_wp-ui-menu-group-head-padding-base);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--_wp-ui-menu-item-padding-inline-start:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-start)) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-end)) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:prefix-start/content-end;line-height:var(--wpds-typography-line-height-xs,16px);margin-inline:calc(var(--wp-ui-menu-group-head-padding-inline) - var(--_wp-ui-menu-group-head-padding-base));min-height:var(--wpds-dimension-size-sm,24px);min-width:0;padding-block:var(--wpds-dimension-padding-xs,4px);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:prefix-start/content-end;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:calc(var(--wp-ui-menu-group-head-padding-inline) - var(--_wp-ui-menu-group-head-padding-base));@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-content:center;align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-start)) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-end)) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-popup-open]:not([data-highlighted],[data-disabled],[aria-disabled=true]){background-color:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-xs,1px) solid GrayText}}&[data-highlighted]:not([data-disabled],[aria-disabled=true]){--_gcd-a-color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){--_gcd-a-color:HighlightText;background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&:is([data-disabled],[aria-disabled=true]){--_gcd-a-color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);&[data-highlighted]{--_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)));--_gcd-a-outline:var(--_gcd-div-outline)}@media (forced-colors:active){--_gcd-a-color:GrayText;color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;margin-inline-end:var(--wpds-dimension-gap-xs,4px);pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-2xs,16px);width:var(--wpds-dimension-size-2xs,16px)}._64924ecabf65a5d6__item-prefix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;align-self:stretch;box-sizing:border-box;display:grid;grid-column:prefix-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none;&._5c211f9edfe0ed66__has-prefix{grid-column:content-start/content-end}}._76f3e69cf2228139__item-descriptions{display:flex;flex-direction:column;grid-column:prefix-start/content-end;grid-row:2;min-width:0;padding-block-end:var(--wpds-dimension-padding-xs,4px);pointer-events:none}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;grid-column:label-start/label-end;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere}.af879698ede76757__item-content>._091406749ed93e6e__item-suffix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}.af879698ede76757__item-content>._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing,.af879698ede76757__item-content>._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._06be17a91bf434a0__item-trailing{align-items:center;display:flex;grid-column:trailing-start/trailing-end}._5ed41da4abcf8958__item-label+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item:is([data-highlighted],[data-disabled],[aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item:is([data-highlighted],[data-popup-open],[data-disabled],[aria-disabled=true]) :is(.fa88c9f1a96a4c5a__item-description,._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){--_gcd-heading-color:currentColor;color:inherit}}}'); 21191 } 21192 var style_default13 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "has-prefix": "_5c211f9edfe0ed66__has-prefix", "item-descriptions": "_76f3e69cf2228139__item-descriptions", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" }; 21193 var RadioGroup = (0, import_element33.forwardRef)( 21194 function MenuRadioGroup3({ className, ...props }, ref) { 21195 const parentGroup = useMenuGroupContext(); 21196 if (parentGroup === "group") { 21197 throw new Error( 21198 "Menu.RadioGroup: Cannot be nested inside Menu.Group. Move Menu.RadioGroup outside Menu.Group and put its Menu.GroupLabel inside Menu.RadioGroup." 21199 ); 21200 } 21201 return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(MenuGroupContext2.Provider, { value: "radio-group", children: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( 21202 index_parts_exports.RadioGroup, 21203 { 21204 ref, 21205 className: clsx_default(style_default13["radio-group"], className), 21206 ...props 21207 } 21208 ) }); 21209 } 21210 ); 21211 21212 // packages/ui/build-module/menu/radio-item.mjs 21213 var import_element34 = __toESM(require_element(), 1); 21214 var import_primitives22 = __toESM(require_primitives(), 1); 21215 var import_jsx_runtime87 = __toESM(require_jsx_runtime(), 1); 21216 var STYLE_HASH_ATTRIBUTE15 = "data-wp-hash"; 21217 function getRuntime15() { 21218 const globalScope = globalThis; 21219 if (globalScope.__wpStyleRuntime) { 21220 return globalScope.__wpStyleRuntime; 21221 } 21222 globalScope.__wpStyleRuntime = { 21223 documents: /* @__PURE__ */ new Map(), 21224 styles: /* @__PURE__ */ new Map(), 21225 injectedStyles: /* @__PURE__ */ new WeakMap() 21226 }; 21227 if (typeof document !== "undefined") { 21228 registerDocument15(document); 21229 } 21230 return globalScope.__wpStyleRuntime; 21231 } 21232 function documentContainsStyleHash15(targetDocument, hash) { 21233 if (!targetDocument.head) { 21234 return false; 21235 } 21236 for (const style of targetDocument.head.querySelectorAll( 21237 `style[$STYLE_HASH_ATTRIBUTE15}]` 21238 )) { 21239 if (style.getAttribute(STYLE_HASH_ATTRIBUTE15) === hash) { 21240 return true; 21241 } 21242 } 21243 return false; 21244 } 21245 function injectStyle15(targetDocument, hash, css) { 21246 if (!targetDocument.head) { 21247 return; 21248 } 21249 const runtime = getRuntime15(); 21250 let injectedStyles = runtime.injectedStyles.get(targetDocument); 21251 if (!injectedStyles) { 21252 injectedStyles = /* @__PURE__ */ new Set(); 21253 runtime.injectedStyles.set(targetDocument, injectedStyles); 21254 } 21255 if (injectedStyles.has(hash)) { 21256 return; 21257 } 21258 if (documentContainsStyleHash15(targetDocument, hash)) { 21259 injectedStyles.add(hash); 21260 return; 21261 } 21262 const style = targetDocument.createElement("style"); 21263 style.setAttribute(STYLE_HASH_ATTRIBUTE15, hash); 21264 style.appendChild(targetDocument.createTextNode(css)); 21265 targetDocument.head.appendChild(style); 21266 injectedStyles.add(hash); 21267 } 21268 function registerDocument15(targetDocument) { 21269 const runtime = getRuntime15(); 21270 runtime.documents.set( 21271 targetDocument, 21272 (runtime.documents.get(targetDocument) ?? 0) + 1 21273 ); 21274 for (const [hash, css] of runtime.styles) { 21275 injectStyle15(targetDocument, hash, css); 21276 } 21277 return () => { 21278 const count = runtime.documents.get(targetDocument); 21279 if (count === void 0) { 21280 return; 21281 } 21282 if (count <= 1) { 21283 runtime.documents.delete(targetDocument); 21284 return; 21285 } 21286 runtime.documents.set(targetDocument, count - 1); 21287 }; 21288 } 21289 function registerStyle15(hash, css) { 21290 const runtime = getRuntime15(); 21291 runtime.styles.set(hash, css); 21292 for (const targetDocument of runtime.documents.keys()) { 21293 injectStyle15(targetDocument, hash, css); 21294 } 21295 } 21296 if (typeof process === "undefined" || true) { 21297 registerStyle15("abb19c3171", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}[role=treeitem] span._400bf7ee0c6061a9__span[aria-hidden]{display:var(--_gcd-span-display,inline);font-family:var(--_gcd-span-font-family,inherit);font-size:var(--_gcd-span-font-size,inherit);line-height:var(--_gcd-span-line-height,1);pointer-events:var(--_gcd-span-pointer-events,auto);position:var(--_gcd-span-position,static)}"); 21298 } 21299 var global_css_defense_default5 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li", "span": "_400bf7ee0c6061a9__span" }; 21300 if (typeof process === "undefined" || true) { 21301 registerStyle15("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 21302 } 21303 var resets_default5 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; 21304 if (typeof process === "undefined" || true) { 21305 registerStyle15("35c74d3f9f", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-sm,320px);--_wp-ui-menu-item-padding-inline-start:var(--wpds-dimension-padding-sm,8px);--_wp-ui-menu-item-padding-inline-end:var(--wpds-dimension-padding-sm,8px);--_wp-ui-menu-group-head-padding-base:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-group-head-padding-inline:var(--_wp-ui-menu-group-head-padding-base);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--_wp-ui-menu-item-padding-inline-start:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-start)) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-end)) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:prefix-start/content-end;line-height:var(--wpds-typography-line-height-xs,16px);margin-inline:calc(var(--wp-ui-menu-group-head-padding-inline) - var(--_wp-ui-menu-group-head-padding-base));min-height:var(--wpds-dimension-size-sm,24px);min-width:0;padding-block:var(--wpds-dimension-padding-xs,4px);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:prefix-start/content-end;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:calc(var(--wp-ui-menu-group-head-padding-inline) - var(--_wp-ui-menu-group-head-padding-base));@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-content:center;align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-start)) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-end)) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-popup-open]:not([data-highlighted],[data-disabled],[aria-disabled=true]){background-color:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-xs,1px) solid GrayText}}&[data-highlighted]:not([data-disabled],[aria-disabled=true]){--_gcd-a-color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){--_gcd-a-color:HighlightText;background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&:is([data-disabled],[aria-disabled=true]){--_gcd-a-color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);&[data-highlighted]{--_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)));--_gcd-a-outline:var(--_gcd-div-outline)}@media (forced-colors:active){--_gcd-a-color:GrayText;color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;margin-inline-end:var(--wpds-dimension-gap-xs,4px);pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-2xs,16px);width:var(--wpds-dimension-size-2xs,16px)}._64924ecabf65a5d6__item-prefix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;align-self:stretch;box-sizing:border-box;display:grid;grid-column:prefix-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none;&._5c211f9edfe0ed66__has-prefix{grid-column:content-start/content-end}}._76f3e69cf2228139__item-descriptions{display:flex;flex-direction:column;grid-column:prefix-start/content-end;grid-row:2;min-width:0;padding-block-end:var(--wpds-dimension-padding-xs,4px);pointer-events:none}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;grid-column:label-start/label-end;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere}.af879698ede76757__item-content>._091406749ed93e6e__item-suffix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}.af879698ede76757__item-content>._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing,.af879698ede76757__item-content>._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._06be17a91bf434a0__item-trailing{align-items:center;display:flex;grid-column:trailing-start/trailing-end}._5ed41da4abcf8958__item-label+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item:is([data-highlighted],[data-disabled],[aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item:is([data-highlighted],[data-popup-open],[data-disabled],[aria-disabled=true]) :is(.fa88c9f1a96a4c5a__item-description,._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){--_gcd-heading-color:currentColor;color:inherit}}}'); 21306 } 21307 var style_default14 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "has-prefix": "_5c211f9edfe0ed66__has-prefix", "item-descriptions": "_76f3e69cf2228139__item-descriptions", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" }; 21308 var radioCheck = /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(import_primitives22.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(import_primitives22.Circle, { cx: 12, cy: 12, r: 3 }) }); 21309 var RadioItem = (0, import_element34.forwardRef)( 21310 function MenuRadioItem3({ 21311 children, 21312 className, 21313 prefix, 21314 shortcut, 21315 suffix, 21316 "aria-describedby": ariaDescribedBy, 21317 "aria-keyshortcuts": ariaKeyShortcuts, 21318 "aria-label": ariaLabel, 21319 "aria-labelledby": ariaLabelledBy, 21320 ...props 21321 }, ref) { 21322 const { 21323 contentChildren, 21324 contentContextValue, 21325 itemAriaProps, 21326 shortcutDescriptionId 21327 } = useItemContent2(children, { 21328 "aria-describedby": ariaDescribedBy, 21329 "aria-keyshortcuts": ariaKeyShortcuts, 21330 "aria-label": ariaLabel, 21331 "aria-labelledby": ariaLabelledBy, 21332 shortcut 21333 }); 21334 return /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)( 21335 index_parts_exports.RadioItem, 21336 { 21337 ref, 21338 ...itemAriaProps, 21339 className: clsx_default( 21340 global_css_defense_default5.div, 21341 resets_default5["box-sizing"], 21342 style_default14.item, 21343 className 21344 ), 21345 ...props, 21346 children: [ 21347 /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( 21348 index_parts_exports.RadioItemIndicator, 21349 { 21350 keepMounted: true, 21351 className: style_default14["item-selection-indicator"], 21352 children: /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( 21353 Icon, 21354 { 21355 icon: radioCheck, 21356 className: style_default14["radio-selection-icon"], 21357 "aria-hidden": "true" 21358 } 21359 ) 21360 } 21361 ), 21362 /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(MenuItemContentContext.Provider, { value: contentContextValue, children: /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( 21363 ItemContent, 21364 { 21365 prefix, 21366 shortcut, 21367 shortcutDescriptionId, 21368 suffix, 21369 children: contentChildren 21370 } 21371 ) }) 21372 ] 21373 } 21374 ); 21375 } 21376 ); 21377 21378 // packages/ui/build-module/utils/direction-provider.mjs 21379 var import_i18n3 = __toESM(require_i18n(), 1); 21380 var import_jsx_runtime88 = __toESM(require_jsx_runtime(), 1); 21381 function DirectionProvider3({ children }) { 21382 return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(DirectionProvider, { direction: (0, import_i18n3.isRTL)() ? "rtl" : "ltr", children }); 21383 } 21384 21385 // packages/ui/build-module/utils/use-iframe-dismissal-bridge.mjs 21386 var import_element35 = __toESM(require_element(), 1); 21387 function getIframeDocument(iframe) { 21388 try { 21389 return iframe.contentDocument; 21390 } catch { 21391 return null; 21392 } 21393 } 21394 function forEachIframe(node, callback) { 21395 if (node.nodeType !== Node.ELEMENT_NODE) { 21396 return; 21397 } 21398 const element = node; 21399 if (element.tagName === "IFRAME") { 21400 callback(element); 21401 } 21402 element.querySelectorAll("iframe").forEach(callback); 21403 } 21404 function getNodeDocument(node) { 21405 return node?.nodeType === Node.DOCUMENT_NODE ? node : node?.ownerDocument ?? null; 21406 } 21407 function isInsideCurrentPopup(event, trigger) { 21408 const popupId = trigger.getAttribute("aria-controls"); 21409 if (!popupId) { 21410 return false; 21411 } 21412 let target = event.target; 21413 while (target) { 21414 const targetDocument = getNodeDocument(target); 21415 const targetElement = target.nodeType === Node.ELEMENT_NODE ? target : target.parentElement; 21416 const popup = targetDocument?.getElementById(popupId); 21417 if (popup && targetElement) { 21418 const rootOwnerId = popup.getAttribute("data-rootownerid"); 21419 if (!rootOwnerId) { 21420 return popup.contains(targetElement); 21421 } 21422 return targetElement.closest("[data-rootownerid]")?.getAttribute("data-rootownerid") === rootOwnerId; 21423 } 21424 if (targetDocument === trigger.ownerDocument) { 21425 break; 21426 } 21427 target = targetDocument?.defaultView?.frameElement ?? null; 21428 } 21429 return false; 21430 } 21431 function useCloseOnIframePointerDown({ 21432 enabled, 21433 onPointerDown, 21434 ownerDocument: ownerDocument2 21435 }) { 21436 (0, import_element35.useEffect)(() => { 21437 if (!enabled || !ownerDocument2) { 21438 return; 21439 } 21440 const observeDocument = (document2, listenForPointerDown) => { 21441 if (listenForPointerDown) { 21442 document2.addEventListener("pointerdown", onPointerDown, true); 21443 } 21444 const iframeCleanups = /* @__PURE__ */ new Map(); 21445 const addIframe = (iframe) => { 21446 if (iframeCleanups.has(iframe)) { 21447 return; 21448 } 21449 let iframeDocument = null; 21450 let iframeDocumentCleanup; 21451 const updateIframeDocument = () => { 21452 const nextIframeDocument = getIframeDocument(iframe); 21453 if (nextIframeDocument === iframeDocument) { 21454 return; 21455 } 21456 iframeDocumentCleanup?.(); 21457 iframeDocument = nextIframeDocument; 21458 iframeDocumentCleanup = iframeDocument ? observeDocument(iframeDocument, true) : void 0; 21459 }; 21460 iframe.addEventListener("load", updateIframeDocument); 21461 updateIframeDocument(); 21462 iframeCleanups.set(iframe, () => { 21463 iframe.removeEventListener("load", updateIframeDocument); 21464 iframeDocumentCleanup?.(); 21465 }); 21466 }; 21467 const removeIframe = (iframe) => { 21468 iframeCleanups.get(iframe)?.(); 21469 iframeCleanups.delete(iframe); 21470 }; 21471 document2.querySelectorAll("iframe").forEach(addIframe); 21472 const MutationObserverConstructor = document2.defaultView?.MutationObserver; 21473 const observer = MutationObserverConstructor ? new MutationObserverConstructor((records) => { 21474 records.forEach((record) => { 21475 record.removedNodes.forEach( 21476 (node) => forEachIframe(node, removeIframe) 21477 ); 21478 record.addedNodes.forEach( 21479 (node) => forEachIframe(node, addIframe) 21480 ); 21481 }); 21482 }) : null; 21483 observer?.observe(document2.documentElement, { 21484 childList: true, 21485 subtree: true 21486 }); 21487 return () => { 21488 observer?.disconnect(); 21489 iframeCleanups.forEach((cleanup) => cleanup()); 21490 if (listenForPointerDown) { 21491 document2.removeEventListener( 21492 "pointerdown", 21493 onPointerDown, 21494 true 21495 ); 21496 } 21497 }; 21498 }; 21499 return observeDocument(ownerDocument2, false); 21500 }, [enabled, onPointerDown, ownerDocument2]); 21501 } 21502 function useIframeDismissalBridge({ 21503 actionsRef, 21504 defaultOpen, 21505 disabled: disabled2, 21506 modal, 21507 onOpenChange, 21508 open: openProp 21509 }) { 21510 const fallbackActionsRef = (0, import_element35.useRef)(null); 21511 const resolvedActionsRef = actionsRef ?? fallbackActionsRef; 21512 const [uncontrolledOpen, setUncontrolledOpen] = (0, import_element35.useState)( 21513 defaultOpen ?? false 21514 ); 21515 const [trigger, setTrigger] = (0, import_element35.useState)(null); 21516 const open2 = openProp ?? uncontrolledOpen; 21517 const handleIframePointerDown = (0, import_element35.useCallback)( 21518 (event) => { 21519 if (trigger && !isInsideCurrentPopup(event, trigger)) { 21520 resolvedActionsRef.current?.close(); 21521 } 21522 }, 21523 [resolvedActionsRef, trigger] 21524 ); 21525 useCloseOnIframePointerDown({ 21526 enabled: open2 && modal === false && !disabled2 && trigger !== null, 21527 onPointerDown: handleIframePointerDown, 21528 ownerDocument: trigger?.ownerDocument ?? null 21529 }); 21530 const handleOpenChange = (nextOpen, eventDetails) => { 21531 onOpenChange(nextOpen, eventDetails); 21532 if (eventDetails.isCanceled) { 21533 return; 21534 } 21535 setUncontrolledOpen(nextOpen); 21536 setTrigger(nextOpen ? eventDetails.trigger ?? null : null); 21537 }; 21538 return { 21539 actionsRef: resolvedActionsRef, 21540 onOpenChange: handleOpenChange 21541 }; 21542 } 21543 21544 // packages/ui/build-module/menu/root.mjs 21545 var import_jsx_runtime89 = __toESM(require_jsx_runtime(), 1); 21546 function Root(props) { 21547 const { onOpenChange } = props; 21548 const handleOpenChange = (nextOpen, eventDetails) => { 21549 const trigger = eventDetails.trigger; 21550 const TriggerElement = trigger?.ownerDocument.defaultView?.HTMLElement; 21551 const EventTargetElement = trigger?.ownerDocument.defaultView?.Element; 21552 const activeElementBeforeOpenChange = trigger?.ownerDocument.activeElement; 21553 const eventTarget = eventDetails.event.target; 21554 const menuElement = EventTargetElement && eventTarget instanceof EventTargetElement ? eventTarget.closest('[role="menu"]') : null; 21555 onOpenChange?.(nextOpen, eventDetails); 21556 if (!nextOpen && eventDetails.reason === "item-press" && !eventDetails.isCanceled && TriggerElement && trigger instanceof TriggerElement && menuElement?.contains(activeElementBeforeOpenChange ?? null) && trigger.ownerDocument.activeElement === activeElementBeforeOpenChange) { 21557 trigger.focus(); 21558 } 21559 }; 21560 const iframeDismissalProps = useIframeDismissalBridge({ 21561 actionsRef: props.actionsRef, 21562 defaultOpen: props.defaultOpen, 21563 modal: props.modal, 21564 onOpenChange: handleOpenChange, 21565 open: props.open 21566 }); 21567 return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(DirectionProvider3, { children: /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(MenuContext.Provider, { value: { isSubmenu: false }, children: /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(MenuGroupContext2.Provider, { value: null, children: /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(index_parts_exports.Root, { ...props, ...iframeDismissalProps }) }) }) }); 21568 } 21569 21570 // packages/ui/build-module/menu/separator.mjs 21571 var import_element36 = __toESM(require_element(), 1); 21572 var import_jsx_runtime90 = __toESM(require_jsx_runtime(), 1); 21573 var STYLE_HASH_ATTRIBUTE16 = "data-wp-hash"; 21574 function getRuntime16() { 21575 const globalScope = globalThis; 21576 if (globalScope.__wpStyleRuntime) { 21577 return globalScope.__wpStyleRuntime; 21578 } 21579 globalScope.__wpStyleRuntime = { 21580 documents: /* @__PURE__ */ new Map(), 21581 styles: /* @__PURE__ */ new Map(), 21582 injectedStyles: /* @__PURE__ */ new WeakMap() 21583 }; 21584 if (typeof document !== "undefined") { 21585 registerDocument16(document); 21586 } 21587 return globalScope.__wpStyleRuntime; 21588 } 21589 function documentContainsStyleHash16(targetDocument, hash) { 21590 if (!targetDocument.head) { 21591 return false; 21592 } 21593 for (const style of targetDocument.head.querySelectorAll( 21594 `style[$STYLE_HASH_ATTRIBUTE16}]` 21595 )) { 21596 if (style.getAttribute(STYLE_HASH_ATTRIBUTE16) === hash) { 21597 return true; 21598 } 21599 } 21600 return false; 21601 } 21602 function injectStyle16(targetDocument, hash, css) { 21603 if (!targetDocument.head) { 21604 return; 21605 } 21606 const runtime = getRuntime16(); 21607 let injectedStyles = runtime.injectedStyles.get(targetDocument); 21608 if (!injectedStyles) { 21609 injectedStyles = /* @__PURE__ */ new Set(); 21610 runtime.injectedStyles.set(targetDocument, injectedStyles); 21611 } 21612 if (injectedStyles.has(hash)) { 21613 return; 21614 } 21615 if (documentContainsStyleHash16(targetDocument, hash)) { 21616 injectedStyles.add(hash); 21617 return; 21618 } 21619 const style = targetDocument.createElement("style"); 21620 style.setAttribute(STYLE_HASH_ATTRIBUTE16, hash); 21621 style.appendChild(targetDocument.createTextNode(css)); 21622 targetDocument.head.appendChild(style); 21623 injectedStyles.add(hash); 21624 } 21625 function registerDocument16(targetDocument) { 21626 const runtime = getRuntime16(); 21627 runtime.documents.set( 21628 targetDocument, 21629 (runtime.documents.get(targetDocument) ?? 0) + 1 21630 ); 21631 for (const [hash, css] of runtime.styles) { 21632 injectStyle16(targetDocument, hash, css); 21633 } 21634 return () => { 21635 const count = runtime.documents.get(targetDocument); 21636 if (count === void 0) { 21637 return; 21638 } 21639 if (count <= 1) { 21640 runtime.documents.delete(targetDocument); 21641 return; 21642 } 21643 runtime.documents.set(targetDocument, count - 1); 21644 }; 21645 } 21646 function registerStyle16(hash, css) { 21647 const runtime = getRuntime16(); 21648 runtime.styles.set(hash, css); 21649 for (const targetDocument of runtime.documents.keys()) { 21650 injectStyle16(targetDocument, hash, css); 21651 } 21652 } 21653 if (typeof process === "undefined" || true) { 21654 registerStyle16("35c74d3f9f", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-sm,320px);--_wp-ui-menu-item-padding-inline-start:var(--wpds-dimension-padding-sm,8px);--_wp-ui-menu-item-padding-inline-end:var(--wpds-dimension-padding-sm,8px);--_wp-ui-menu-group-head-padding-base:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-group-head-padding-inline:var(--_wp-ui-menu-group-head-padding-base);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--_wp-ui-menu-item-padding-inline-start:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-start)) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-end)) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:prefix-start/content-end;line-height:var(--wpds-typography-line-height-xs,16px);margin-inline:calc(var(--wp-ui-menu-group-head-padding-inline) - var(--_wp-ui-menu-group-head-padding-base));min-height:var(--wpds-dimension-size-sm,24px);min-width:0;padding-block:var(--wpds-dimension-padding-xs,4px);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:prefix-start/content-end;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:calc(var(--wp-ui-menu-group-head-padding-inline) - var(--_wp-ui-menu-group-head-padding-base));@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-content:center;align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-start)) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-end)) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-popup-open]:not([data-highlighted],[data-disabled],[aria-disabled=true]){background-color:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-xs,1px) solid GrayText}}&[data-highlighted]:not([data-disabled],[aria-disabled=true]){--_gcd-a-color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){--_gcd-a-color:HighlightText;background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&:is([data-disabled],[aria-disabled=true]){--_gcd-a-color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);&[data-highlighted]{--_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)));--_gcd-a-outline:var(--_gcd-div-outline)}@media (forced-colors:active){--_gcd-a-color:GrayText;color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;margin-inline-end:var(--wpds-dimension-gap-xs,4px);pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-2xs,16px);width:var(--wpds-dimension-size-2xs,16px)}._64924ecabf65a5d6__item-prefix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;align-self:stretch;box-sizing:border-box;display:grid;grid-column:prefix-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none;&._5c211f9edfe0ed66__has-prefix{grid-column:content-start/content-end}}._76f3e69cf2228139__item-descriptions{display:flex;flex-direction:column;grid-column:prefix-start/content-end;grid-row:2;min-width:0;padding-block-end:var(--wpds-dimension-padding-xs,4px);pointer-events:none}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;grid-column:label-start/label-end;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere}.af879698ede76757__item-content>._091406749ed93e6e__item-suffix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}.af879698ede76757__item-content>._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing,.af879698ede76757__item-content>._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._06be17a91bf434a0__item-trailing{align-items:center;display:flex;grid-column:trailing-start/trailing-end}._5ed41da4abcf8958__item-label+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item:is([data-highlighted],[data-disabled],[aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item:is([data-highlighted],[data-popup-open],[data-disabled],[aria-disabled=true]) :is(.fa88c9f1a96a4c5a__item-description,._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){--_gcd-heading-color:currentColor;color:inherit}}}'); 21655 } 21656 var style_default15 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "has-prefix": "_5c211f9edfe0ed66__has-prefix", "item-descriptions": "_76f3e69cf2228139__item-descriptions", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" }; 21657 var Separator2 = (0, import_element36.forwardRef)( 21658 function MenuSeparator({ className, ...props }, ref) { 21659 return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)( 21660 index_parts_exports.Separator, 21661 { 21662 ref, 21663 className: clsx_default(style_default15.separator, className), 21664 ...props 21665 } 21666 ); 21667 } 21668 ); 21669 21670 // packages/ui/build-module/menu/submenu-root.mjs 21671 var import_element37 = __toESM(require_element(), 1); 21672 var import_jsx_runtime91 = __toESM(require_jsx_runtime(), 1); 21673 function SubmenuRoot(props) { 21674 const submenuTriggerRef = (0, import_element37.useRef)(null); 21675 return /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(MenuContext.Provider, { value: { isSubmenu: true, submenuTriggerRef }, children: /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(MenuGroupContext2.Provider, { value: null, children: /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(index_parts_exports.SubmenuRoot, { ...props }) }) }); 21676 } 21677 21678 // packages/ui/build-module/menu/submenu-trigger.mjs 21679 var import_element38 = __toESM(require_element(), 1); 21680 var import_compose2 = __toESM(require_compose(), 1); 21681 var import_jsx_runtime92 = __toESM(require_jsx_runtime(), 1); 21682 var STYLE_HASH_ATTRIBUTE17 = "data-wp-hash"; 21683 function getRuntime17() { 21684 const globalScope = globalThis; 21685 if (globalScope.__wpStyleRuntime) { 21686 return globalScope.__wpStyleRuntime; 21687 } 21688 globalScope.__wpStyleRuntime = { 21689 documents: /* @__PURE__ */ new Map(), 21690 styles: /* @__PURE__ */ new Map(), 21691 injectedStyles: /* @__PURE__ */ new WeakMap() 21692 }; 21693 if (typeof document !== "undefined") { 21694 registerDocument17(document); 21695 } 21696 return globalScope.__wpStyleRuntime; 21697 } 21698 function documentContainsStyleHash17(targetDocument, hash) { 21699 if (!targetDocument.head) { 21700 return false; 21701 } 21702 for (const style of targetDocument.head.querySelectorAll( 21703 `style[$STYLE_HASH_ATTRIBUTE17}]` 21704 )) { 21705 if (style.getAttribute(STYLE_HASH_ATTRIBUTE17) === hash) { 21706 return true; 21707 } 21708 } 21709 return false; 21710 } 21711 function injectStyle17(targetDocument, hash, css) { 21712 if (!targetDocument.head) { 21713 return; 21714 } 21715 const runtime = getRuntime17(); 21716 let injectedStyles = runtime.injectedStyles.get(targetDocument); 21717 if (!injectedStyles) { 21718 injectedStyles = /* @__PURE__ */ new Set(); 21719 runtime.injectedStyles.set(targetDocument, injectedStyles); 21720 } 21721 if (injectedStyles.has(hash)) { 21722 return; 21723 } 21724 if (documentContainsStyleHash17(targetDocument, hash)) { 21725 injectedStyles.add(hash); 21726 return; 21727 } 21728 const style = targetDocument.createElement("style"); 21729 style.setAttribute(STYLE_HASH_ATTRIBUTE17, hash); 21730 style.appendChild(targetDocument.createTextNode(css)); 21731 targetDocument.head.appendChild(style); 21732 injectedStyles.add(hash); 21733 } 21734 function registerDocument17(targetDocument) { 21735 const runtime = getRuntime17(); 21736 runtime.documents.set( 21737 targetDocument, 21738 (runtime.documents.get(targetDocument) ?? 0) + 1 21739 ); 21740 for (const [hash, css] of runtime.styles) { 21741 injectStyle17(targetDocument, hash, css); 21742 } 21743 return () => { 21744 const count = runtime.documents.get(targetDocument); 21745 if (count === void 0) { 21746 return; 21747 } 21748 if (count <= 1) { 21749 runtime.documents.delete(targetDocument); 21750 return; 21751 } 21752 runtime.documents.set(targetDocument, count - 1); 21753 }; 21754 } 21755 function registerStyle17(hash, css) { 21756 const runtime = getRuntime17(); 21757 runtime.styles.set(hash, css); 21758 for (const targetDocument of runtime.documents.keys()) { 21759 injectStyle17(targetDocument, hash, css); 21760 } 21761 } 21762 if (typeof process === "undefined" || true) { 21763 registerStyle17("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)}"); 21764 } 21765 var global_css_defense_default6 = { "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" }; 21766 if (typeof process === "undefined" || true) { 21767 registerStyle17("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 21768 } 21769 var resets_default6 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; 21770 if (typeof process === "undefined" || true) { 21771 registerStyle17("35c74d3f9f", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d61e2d85c0ee0699__positioner{z-index:var(--wp-ui-menu-z-index,initial)}._34e81249f419a5a5__popup{--wp-ui-menu-popup-padding:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-min-width:160px;--wp-ui-menu-max-width:var(--wpds-dimension-surface-width-sm,320px);--_wp-ui-menu-item-padding-inline-start:var(--wpds-dimension-padding-sm,8px);--_wp-ui-menu-item-padding-inline-end:var(--wpds-dimension-padding-sm,8px);--_wp-ui-menu-group-head-padding-base:var(--wpds-dimension-padding-sm,8px);--wp-ui-menu-group-head-padding-inline:var(--_wp-ui-menu-group-head-padding-base);--wp-ui-menu-selection-indicator-track-size:0px;--wp-ui-menu-selection-indicator-size:var(--wpds-dimension-size-2xs,16px);--wp-ui-menu-selection-indicator-gap:0px;--_wp-ui-menu-elevation-md:0px 2px 3px 0px #0000000d,0px 4px 5px 0px #0000000a,0px 12px 12px 0px #00000008,0px 16px 16px 0px #00000005;background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-menu-elevation-md);max-height:min(var(--available-height),480px,60dvh);max-width:min(var(--available-width),var(--wp-ui-menu-max-width));min-width:min(var(--available-width),var(--wp-ui-menu-min-width));outline:none;overflow-block:auto;overscroll-behavior:none;padding:var(--wp-ui-menu-popup-padding);scroll-padding:var(--wp-ui-menu-popup-padding);&:has(._42313b48c5459be3__item-selection-indicator){--_wp-ui-menu-item-padding-inline-start:var(--wpds-dimension-padding-xs,4px);--wp-ui-menu-selection-indicator-track-size:var(--wpds-dimension-size-2xs,16px)}}._33f07ab17005471d__list{--_wp-ui-menu-item-label-line-height:var(--wpds-typography-line-height-sm,20px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--_wp-ui-menu-item-label-line-height)}._33f07ab17005471d__list,.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{--wp-ui-menu-group-prefix-gap:0px;display:grid;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-start)) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-end)) [item-padding-end];min-width:0}.e05914e1005d7c2e__radio-group,.f11085533c0056b0__group{grid-column:1/-1}._33f07ab17005471d__list:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.e05914e1005d7c2e__radio-group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix),.f11085533c0056b0__group:has(>._5c913bce0d8bb0d6__item>._64924ecabf65a5d6__item-prefix){--wp-ui-menu-group-prefix-gap:var(--wpds-dimension-gap-xs,4px)}._4a0fd085d76fd23c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);grid-column:prefix-start/content-end;line-height:var(--wpds-typography-line-height-xs,16px);margin-inline:calc(var(--wp-ui-menu-group-head-padding-inline) - var(--_wp-ui-menu-group-head-padding-base));min-height:var(--wpds-dimension-size-sm,24px);min-width:0;padding-block:var(--wpds-dimension-padding-xs,4px);text-transform:uppercase}.bfc11368eadf3b39__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);grid-column:prefix-start/content-end;height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline:calc(var(--wp-ui-menu-group-head-padding-inline) - var(--_wp-ui-menu-group-head-padding-base));@media (forced-colors:active){background-color:CanvasText}}._5c913bce0d8bb0d6__item{--wp-ui-menu-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-menu-item-padding-block:var(--wpds-dimension-padding-xs,4px);--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);align-content:center;align-items:start;border-radius:var(--wpds-border-radius-sm,2px);display:grid;gap:0;grid-column:1/-1;grid-template-columns:[item-padding-start] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-start)) [selection-start] var(--wp-ui-menu-selection-indicator-track-size) [selection-end] var(--wp-ui-menu-selection-indicator-gap) [prefix-start] max-content [prefix-end] var(--wp-ui-menu-group-prefix-gap) [content-start] minmax(0,1fr) [content-end] var(--wp-ui-menu-item-padding-inline,var(--_wp-ui-menu-item-padding-inline-end)) [item-padding-end];justify-content:stretch;min-height:var(--wp-ui-menu-item-height);min-width:0;padding-block:var(--wp-ui-menu-item-padding-block);scroll-margin:var(--wp-ui-menu-popup-padding);text-decoration:none;user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&[href]{cursor:pointer}@supports (grid-template-columns:subgrid){grid-template-columns:subgrid}&[data-popup-open]:not([data-highlighted],[data-disabled],[aria-disabled=true]){background-color:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-xs,1px) solid GrayText}}&[data-highlighted]:not([data-disabled],[aria-disabled=true]){--_gcd-a-color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){--_gcd-a-color:HighlightText;background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&:is([data-disabled],[aria-disabled=true]){--_gcd-a-color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);&[data-highlighted]{--_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)));--_gcd-a-outline:var(--_gcd-div-outline)}@media (forced-colors:active){--_gcd-a-color:GrayText;color:GrayText}}}._42313b48c5459be3__item-selection-indicator,._64924ecabf65a5d6__item-prefix,.af879698ede76757__item-content{grid-row:1}._42313b48c5459be3__item-selection-indicator{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;grid-column:selection-start/selection-end;height:var(--_wp-ui-menu-item-label-line-height);justify-content:center;justify-self:center;margin-inline-end:var(--wpds-dimension-gap-xs,4px);pointer-events:none;width:var(--wp-ui-menu-selection-indicator-size);&[data-unchecked]{opacity:0}}._99c5bd141cbf516f__checkbox-selection-icon{translate:0 1px}._59aa9b3b3a651148__radio-selection-icon{fill:currentColor;height:var(--wpds-dimension-size-2xs,16px);width:var(--wpds-dimension-size-2xs,16px)}._64924ecabf65a5d6__item-prefix{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:prefix-start/prefix-end;justify-content:center;min-width:0}.a836378335a4cbf1__prefix-icon{align-self:flex-start;flex-shrink:0;margin-block-start:calc((var(--_wp-ui-menu-item-label-line-height) - var(--_wp-ui-menu-prefix-icon-size))/2)}.af879698ede76757__item-content{align-items:center;align-self:stretch;box-sizing:border-box;display:grid;grid-column:prefix-start/content-end;grid-template-columns:[label-start] minmax(0,1fr) [label-end suffix-start] auto [suffix-end shortcut-start] auto [shortcut-end trailing-start] auto [trailing-end];min-width:0;pointer-events:none;&._5c211f9edfe0ed66__has-prefix{grid-column:content-start/content-end}}._76f3e69cf2228139__item-descriptions{display:flex;flex-direction:column;grid-column:prefix-start/content-end;grid-row:2;min-width:0;padding-block-end:var(--wpds-dimension-padding-xs,4px);pointer-events:none}._5ed41da4abcf8958__item-label{--_gcd-heading-color:currentColor;--_gcd-p-line-height:var(--_wp-ui-menu-item-label-line-height);color:inherit;grid-column:label-start/label-end;line-height:var(--_wp-ui-menu-item-label-line-height);min-width:0;overflow-wrap:anywhere}.fa88c9f1a96a4c5a__item-description{--_gcd-heading-color:var(--wpds-color-foreground-content-neutral-weak,#707070);color:var(--wpds-color-foreground-content-neutral-weak,#707070);overflow-wrap:anywhere}.af879698ede76757__item-content>._091406749ed93e6e__item-suffix{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;gap:var(--wpds-dimension-gap-xs,4px);grid-column:suffix-start/suffix-end;margin-inline-start:var(--wpds-dimension-gap-md,12px)}.af879698ede76757__item-content>._23630f40071a29ff__item-shortcut{grid-column:shortcut-start/shortcut-end}._06be17a91bf434a0__item-trailing,.af879698ede76757__item-content>._23630f40071a29ff__item-shortcut{color:var(--wpds-color-foreground-content-neutral-weak,#707070);margin-inline-start:var(--wpds-dimension-gap-md,12px)}._06be17a91bf434a0__item-trailing{align-items:center;display:flex;grid-column:trailing-start/trailing-end}._5ed41da4abcf8958__item-label+:is(._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){margin-inline-start:var(--wpds-dimension-gap-xl,24px)}._23630f40071a29ff__item-shortcut+._06be17a91bf434a0__item-trailing{margin-inline-start:var(--wpds-dimension-gap-xs,4px)}.b78aec79bf93eba0__submenu-chevron{margin-inline-end:calc(var(--wpds-dimension-gap-sm, 8px)*-1)}.b78aec79bf93eba0__submenu-chevron:dir(rtl){transform:rotate(180deg)}._60da3b6f9718cf76__external-link-indicator{display:inline-block;font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-gap-xs,4px);text-decoration:none}._60da3b6f9718cf76__external-link-indicator:after{content:"\\2197"}._60da3b6f9718cf76__external-link-indicator:dir(rtl):after{content:"\\2196"}._5c913bce0d8bb0d6__item:is([data-highlighted],[data-disabled],[aria-disabled=true]) ._42313b48c5459be3__item-selection-indicator,._5c913bce0d8bb0d6__item:is([data-highlighted],[data-popup-open],[data-disabled],[aria-disabled=true]) :is(.fa88c9f1a96a4c5a__item-description,._091406749ed93e6e__item-suffix,._23630f40071a29ff__item-shortcut,._06be17a91bf434a0__item-trailing){--_gcd-heading-color:currentColor;color:inherit}}}'); 21772 } 21773 var style_default16 = { "positioner": "d61e2d85c0ee0699__positioner", "popup": "_34e81249f419a5a5__popup", "item-selection-indicator": "_42313b48c5459be3__item-selection-indicator", "is-root": "_087a537b24fee6a1__is-root _380b81b8f79fb10f__dropdown-motion", "is-submenu": "_6d3b567f6289bdc2__is-submenu _7f344b94e270e039__dropdown-motion--fade-only", "list": "_33f07ab17005471d__list", "group": "f11085533c0056b0__group", "radio-group": "e05914e1005d7c2e__radio-group", "item": "_5c913bce0d8bb0d6__item", "item-prefix": "_64924ecabf65a5d6__item-prefix", "group-label": "_4a0fd085d76fd23c__group-label", "separator": "bfc11368eadf3b39__separator", "item-content": "af879698ede76757__item-content", "checkbox-selection-icon": "_99c5bd141cbf516f__checkbox-selection-icon", "radio-selection-icon": "_59aa9b3b3a651148__radio-selection-icon", "prefix-icon": "a836378335a4cbf1__prefix-icon", "has-prefix": "_5c211f9edfe0ed66__has-prefix", "item-descriptions": "_76f3e69cf2228139__item-descriptions", "item-label": "_5ed41da4abcf8958__item-label", "item-description": "fa88c9f1a96a4c5a__item-description", "item-suffix": "_091406749ed93e6e__item-suffix", "item-shortcut": "_23630f40071a29ff__item-shortcut", "item-trailing": "_06be17a91bf434a0__item-trailing", "submenu-chevron": "b78aec79bf93eba0__submenu-chevron", "external-link-indicator": "_60da3b6f9718cf76__external-link-indicator" }; 21774 var SubmenuTrigger = (0, import_element38.forwardRef)( 21775 function MenuSubmenuTrigger3({ 21776 children, 21777 className, 21778 prefix, 21779 shortcut, 21780 suffix, 21781 "aria-describedby": ariaDescribedBy, 21782 "aria-keyshortcuts": ariaKeyShortcuts, 21783 "aria-label": ariaLabel, 21784 "aria-labelledby": ariaLabelledBy, 21785 ...props 21786 }, ref) { 21787 const { submenuTriggerRef } = useMenuContext(); 21788 const mergedRef = (0, import_compose2.useMergeRefs)([ref, submenuTriggerRef ?? null]); 21789 const { 21790 contentChildren, 21791 contentContextValue, 21792 itemAriaProps, 21793 shortcutDescriptionId 21794 } = useItemContent2(children, { 21795 "aria-describedby": ariaDescribedBy, 21796 "aria-keyshortcuts": ariaKeyShortcuts, 21797 "aria-label": ariaLabel, 21798 "aria-labelledby": ariaLabelledBy, 21799 shortcut 21800 }); 21801 return /* @__PURE__ */ (0, import_jsx_runtime92.jsx)( 21802 index_parts_exports.SubmenuTrigger, 21803 { 21804 ref: mergedRef, 21805 ...itemAriaProps, 21806 className: clsx_default( 21807 global_css_defense_default6.div, 21808 resets_default6["box-sizing"], 21809 style_default16.item, 21810 className 21811 ), 21812 ...props, 21813 children: /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(MenuItemContentContext.Provider, { value: contentContextValue, children: /* @__PURE__ */ (0, import_jsx_runtime92.jsx)( 21814 ItemContent, 21815 { 21816 prefix, 21817 shortcut, 21818 shortcutDescriptionId, 21819 suffix, 21820 trailing: /* @__PURE__ */ (0, import_jsx_runtime92.jsx)( 21821 Icon, 21822 { 21823 className: style_default16["submenu-chevron"], 21824 icon: chevron_right_small_default, 21825 size: 24, 21826 "aria-hidden": "true" 21827 } 21828 ), 21829 children: contentChildren 21830 } 21831 ) }) 21832 } 21833 ); 21834 } 21835 ); 21836 21837 // packages/ui/build-module/menu/trigger.mjs 21838 var import_element39 = __toESM(require_element(), 1); 21839 var import_jsx_runtime93 = __toESM(require_jsx_runtime(), 1); 21840 var Trigger = (0, import_element39.forwardRef)( 21841 function MenuTrigger3(props, ref) { 21842 return /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(index_parts_exports.Trigger, { ref, ...props }); 21843 } 21844 ); 21845 21846 // packages/ui/build-module/tooltip/index.mjs 21847 var tooltip_exports = {}; 21848 __export(tooltip_exports, { 21849 Popup: () => Popup2, 21850 Portal: () => Portal2, 21851 Positioner: () => Positioner2, 21852 Provider: () => Provider, 21853 Root: () => Root2, 21854 Trigger: () => Trigger2 21855 }); 21856 21857 // packages/ui/build-module/tooltip/popup.mjs 21858 var import_element42 = __toESM(require_element(), 1); 21859 21860 // packages/ui/build-module/tooltip/portal.mjs 21861 var import_element40 = __toESM(require_element(), 1); 21862 var import_jsx_runtime94 = __toESM(require_jsx_runtime(), 1); 21863 var Portal2 = (0, import_element40.forwardRef)( 21864 function TooltipPortal3({ container, ...restProps }, ref) { 21865 return /* @__PURE__ */ (0, import_jsx_runtime94.jsx)( 21866 index_parts_exports4.Portal, 21867 { 21868 container: container === void 0 ? getWpCompatOverlaySlot() : container, 21869 ...restProps, 21870 ref 21871 } 21872 ); 21873 } 21874 ); 21875 21876 // packages/ui/build-module/tooltip/positioner.mjs 21877 var import_element41 = __toESM(require_element(), 1); 21878 var import_jsx_runtime95 = __toESM(require_jsx_runtime(), 1); 21879 var STYLE_HASH_ATTRIBUTE18 = "data-wp-hash"; 21880 function getRuntime18() { 21881 const globalScope = globalThis; 21882 if (globalScope.__wpStyleRuntime) { 21883 return globalScope.__wpStyleRuntime; 21884 } 21885 globalScope.__wpStyleRuntime = { 21886 documents: /* @__PURE__ */ new Map(), 21887 styles: /* @__PURE__ */ new Map(), 21888 injectedStyles: /* @__PURE__ */ new WeakMap() 21889 }; 21890 if (typeof document !== "undefined") { 21891 registerDocument18(document); 21892 } 21893 return globalScope.__wpStyleRuntime; 21894 } 21895 function documentContainsStyleHash18(targetDocument, hash) { 21896 if (!targetDocument.head) { 21897 return false; 21898 } 21899 for (const style of targetDocument.head.querySelectorAll( 21900 `style[$STYLE_HASH_ATTRIBUTE18}]` 21901 )) { 21902 if (style.getAttribute(STYLE_HASH_ATTRIBUTE18) === hash) { 21903 return true; 21904 } 21905 } 21906 return false; 21907 } 21908 function injectStyle18(targetDocument, hash, css) { 21909 if (!targetDocument.head) { 21910 return; 21911 } 21912 const runtime = getRuntime18(); 21913 let injectedStyles = runtime.injectedStyles.get(targetDocument); 21914 if (!injectedStyles) { 21915 injectedStyles = /* @__PURE__ */ new Set(); 21916 runtime.injectedStyles.set(targetDocument, injectedStyles); 21917 } 21918 if (injectedStyles.has(hash)) { 21919 return; 21920 } 21921 if (documentContainsStyleHash18(targetDocument, hash)) { 21922 injectedStyles.add(hash); 21923 return; 21924 } 21925 const style = targetDocument.createElement("style"); 21926 style.setAttribute(STYLE_HASH_ATTRIBUTE18, hash); 21927 style.appendChild(targetDocument.createTextNode(css)); 21928 targetDocument.head.appendChild(style); 21929 injectedStyles.add(hash); 21930 } 21931 function registerDocument18(targetDocument) { 21932 const runtime = getRuntime18(); 21933 runtime.documents.set( 21934 targetDocument, 21935 (runtime.documents.get(targetDocument) ?? 0) + 1 21936 ); 21937 for (const [hash, css] of runtime.styles) { 21938 injectStyle18(targetDocument, hash, css); 21939 } 21940 return () => { 21941 const count = runtime.documents.get(targetDocument); 21942 if (count === void 0) { 21943 return; 21944 } 21945 if (count <= 1) { 21946 runtime.documents.delete(targetDocument); 21947 return; 21948 } 21949 runtime.documents.set(targetDocument, count - 1); 21950 }; 21951 } 21952 function registerStyle18(hash, css) { 21953 const runtime = getRuntime18(); 21954 runtime.styles.set(hash, css); 21955 for (const targetDocument of runtime.documents.keys()) { 21956 injectStyle18(targetDocument, hash, css); 21957 } 21958 } 21959 if (typeof process === "undefined" || true) { 21960 registerStyle18("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 21961 } 21962 var resets_default7 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; 21963 if (typeof process === "undefined" || true) { 21964 registerStyle18("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}}}}'); 21965 } 21966 var style_default17 = { "positioner": "_480b748dd3510e64__positioner", "popup": "_50096b232db7709d__popup" }; 21967 var Positioner2 = (0, import_element41.forwardRef)( 21968 function TooltipPositioner3({ align = "center", className, side = "top", sideOffset = 4, ...props }, ref) { 21969 return /* @__PURE__ */ (0, import_jsx_runtime95.jsx)( 21970 index_parts_exports4.Positioner, 21971 { 21972 ref, 21973 align, 21974 side, 21975 sideOffset, 21976 ...props, 21977 className: clsx_default( 21978 resets_default7["box-sizing"], 21979 style_default17.positioner, 21980 className 21981 ) 21982 } 21983 ); 21984 } 21985 ); 21986 21987 // packages/ui/build-module/utils/theme-provider.mjs 21988 var theme = __toESM(require_theme(), 1); 21989 21990 // packages/ui/build-module/lock-unlock.mjs 21991 var import_private_apis = __toESM(require_private_apis(), 1); 21992 var { lock, unlock } = (0, import_private_apis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)( 21993 "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.", 21994 "@wordpress/ui" 21995 ); 21996 21997 // packages/ui/build-module/utils/theme-provider.mjs 21998 function getThemeProvider() { 21999 const themePackage = theme; 22000 if (themePackage.ThemeProvider) { 22001 return themePackage.ThemeProvider; 22002 } 22003 if (!themePackage.privateApis) { 22004 throw new Error( 22005 "@wordpress/ui: @wordpress/theme must expose `ThemeProvider` or `privateApis.ThemeProvider`." 22006 ); 22007 } 22008 return unlock( 22009 themePackage.privateApis 22010 ).ThemeProvider; 22011 } 22012 var ThemeProvider = getThemeProvider(); 22013 22014 // packages/ui/build-module/tooltip/popup.mjs 22015 var import_jsx_runtime96 = __toESM(require_jsx_runtime(), 1); 22016 var STYLE_HASH_ATTRIBUTE19 = "data-wp-hash"; 22017 function getRuntime19() { 22018 const globalScope = globalThis; 22019 if (globalScope.__wpStyleRuntime) { 22020 return globalScope.__wpStyleRuntime; 22021 } 22022 globalScope.__wpStyleRuntime = { 22023 documents: /* @__PURE__ */ new Map(), 22024 styles: /* @__PURE__ */ new Map(), 22025 injectedStyles: /* @__PURE__ */ new WeakMap() 22026 }; 22027 if (typeof document !== "undefined") { 22028 registerDocument19(document); 22029 } 22030 return globalScope.__wpStyleRuntime; 22031 } 22032 function documentContainsStyleHash19(targetDocument, hash) { 22033 if (!targetDocument.head) { 22034 return false; 22035 } 22036 for (const style of targetDocument.head.querySelectorAll( 22037 `style[$STYLE_HASH_ATTRIBUTE19}]` 22038 )) { 22039 if (style.getAttribute(STYLE_HASH_ATTRIBUTE19) === hash) { 22040 return true; 22041 } 22042 } 22043 return false; 22044 } 22045 function injectStyle19(targetDocument, hash, css) { 22046 if (!targetDocument.head) { 22047 return; 22048 } 22049 const runtime = getRuntime19(); 22050 let injectedStyles = runtime.injectedStyles.get(targetDocument); 22051 if (!injectedStyles) { 22052 injectedStyles = /* @__PURE__ */ new Set(); 22053 runtime.injectedStyles.set(targetDocument, injectedStyles); 22054 } 22055 if (injectedStyles.has(hash)) { 22056 return; 22057 } 22058 if (documentContainsStyleHash19(targetDocument, hash)) { 22059 injectedStyles.add(hash); 22060 return; 22061 } 22062 const style = targetDocument.createElement("style"); 22063 style.setAttribute(STYLE_HASH_ATTRIBUTE19, hash); 22064 style.appendChild(targetDocument.createTextNode(css)); 22065 targetDocument.head.appendChild(style); 22066 injectedStyles.add(hash); 22067 } 22068 function registerDocument19(targetDocument) { 22069 const runtime = getRuntime19(); 22070 runtime.documents.set( 22071 targetDocument, 22072 (runtime.documents.get(targetDocument) ?? 0) + 1 22073 ); 22074 for (const [hash, css] of runtime.styles) { 22075 injectStyle19(targetDocument, hash, css); 22076 } 22077 return () => { 22078 const count = runtime.documents.get(targetDocument); 22079 if (count === void 0) { 22080 return; 22081 } 22082 if (count <= 1) { 22083 runtime.documents.delete(targetDocument); 22084 return; 22085 } 22086 runtime.documents.set(targetDocument, count - 1); 22087 }; 22088 } 22089 function registerStyle19(hash, css) { 22090 const runtime = getRuntime19(); 22091 runtime.styles.set(hash, css); 22092 for (const targetDocument of runtime.documents.keys()) { 22093 injectStyle19(targetDocument, hash, css); 22094 } 22095 } 22096 if (typeof process === "undefined" || true) { 22097 registerStyle19("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}}}}'); 22098 } 22099 var style_default18 = { "positioner": "_480b748dd3510e64__positioner", "popup": "_50096b232db7709d__popup" }; 22100 var POPUP_COLOR = { background: "#1e1e1e" }; 22101 var Popup2 = (0, import_element42.forwardRef)(function TooltipPopup3({ portal, positioner, children, className, ...props }, ref) { 22102 const popupContent = /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(ThemeProvider, { color: POPUP_COLOR, children: /* @__PURE__ */ (0, import_jsx_runtime96.jsx)( 22103 index_parts_exports4.Popup, 22104 { 22105 ref, 22106 className: clsx_default(style_default18.popup, className), 22107 ...props, 22108 children 22109 } 22110 ) }); 22111 const positionedPopup = renderSlotWithChildren( 22112 positioner, 22113 /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(Positioner2, {}), 22114 popupContent 22115 ); 22116 return renderSlotWithChildren(portal, /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(Portal2, {}), positionedPopup); 22117 }); 22118 22119 // packages/ui/build-module/tooltip/trigger.mjs 22120 var import_element43 = __toESM(require_element(), 1); 22121 var import_jsx_runtime97 = __toESM(require_jsx_runtime(), 1); 22122 var Trigger2 = (0, import_element43.forwardRef)( 22123 function TooltipTrigger3(props, ref) { 22124 return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(index_parts_exports4.Trigger, { ref, ...props }); 22125 } 22126 ); 22127 22128 // packages/ui/build-module/tooltip/root.mjs 22129 var import_jsx_runtime98 = __toESM(require_jsx_runtime(), 1); 22130 function Root2(props) { 22131 return /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(DirectionProvider3, { children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(index_parts_exports4.Root, { ...props }) }); 22132 } 22133 22134 // packages/ui/build-module/tooltip/provider.mjs 22135 var import_jsx_runtime99 = __toESM(require_jsx_runtime(), 1); 22136 function Provider({ ...props }) { 22137 return /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(index_parts_exports4.Provider, { ...props }); 22138 } 22139 22140 // packages/ui/build-module/link/link.mjs 22141 var import_element44 = __toESM(require_element(), 1); 22142 var import_i18n4 = __toESM(require_i18n(), 1); 22143 var import_jsx_runtime100 = __toESM(require_jsx_runtime(), 1); 22144 var STYLE_HASH_ATTRIBUTE20 = "data-wp-hash"; 22145 function getRuntime20() { 22146 const globalScope = globalThis; 22147 if (globalScope.__wpStyleRuntime) { 22148 return globalScope.__wpStyleRuntime; 22149 } 22150 globalScope.__wpStyleRuntime = { 22151 documents: /* @__PURE__ */ new Map(), 22152 styles: /* @__PURE__ */ new Map(), 22153 injectedStyles: /* @__PURE__ */ new WeakMap() 22154 }; 22155 if (typeof document !== "undefined") { 22156 registerDocument20(document); 22157 } 22158 return globalScope.__wpStyleRuntime; 22159 } 22160 function documentContainsStyleHash20(targetDocument, hash) { 22161 if (!targetDocument.head) { 22162 return false; 22163 } 22164 for (const style of targetDocument.head.querySelectorAll( 22165 `style[$STYLE_HASH_ATTRIBUTE20}]` 22166 )) { 22167 if (style.getAttribute(STYLE_HASH_ATTRIBUTE20) === hash) { 22168 return true; 22169 } 22170 } 22171 return false; 22172 } 22173 function injectStyle20(targetDocument, hash, css) { 22174 if (!targetDocument.head) { 22175 return; 22176 } 22177 const runtime = getRuntime20(); 22178 let injectedStyles = runtime.injectedStyles.get(targetDocument); 22179 if (!injectedStyles) { 22180 injectedStyles = /* @__PURE__ */ new Set(); 22181 runtime.injectedStyles.set(targetDocument, injectedStyles); 22182 } 22183 if (injectedStyles.has(hash)) { 22184 return; 22185 } 22186 if (documentContainsStyleHash20(targetDocument, hash)) { 22187 injectedStyles.add(hash); 22188 return; 22189 } 22190 const style = targetDocument.createElement("style"); 22191 style.setAttribute(STYLE_HASH_ATTRIBUTE20, hash); 22192 style.appendChild(targetDocument.createTextNode(css)); 22193 targetDocument.head.appendChild(style); 22194 injectedStyles.add(hash); 22195 } 22196 function registerDocument20(targetDocument) { 22197 const runtime = getRuntime20(); 22198 runtime.documents.set( 22199 targetDocument, 22200 (runtime.documents.get(targetDocument) ?? 0) + 1 22201 ); 22202 for (const [hash, css] of runtime.styles) { 22203 injectStyle20(targetDocument, hash, css); 22204 } 22205 return () => { 22206 const count = runtime.documents.get(targetDocument); 22207 if (count === void 0) { 22208 return; 22209 } 22210 if (count <= 1) { 22211 runtime.documents.delete(targetDocument); 22212 return; 22213 } 22214 runtime.documents.set(targetDocument, count - 1); 22215 }; 22216 } 22217 function registerStyle20(hash, css) { 22218 const runtime = getRuntime20(); 22219 runtime.styles.set(hash, css); 22220 for (const targetDocument of runtime.documents.keys()) { 22221 injectStyle20(targetDocument, hash, css); 22222 } 22223 } 22224 if (typeof process === "undefined" || true) { 22225 registerStyle20("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 22226 } 22227 var resets_default8 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; 22228 if (typeof process === "undefined" || true) { 22229 registerStyle20("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))}}}"); 22230 } 22231 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" }; 22232 if (typeof process === "undefined" || true) { 22233 registerStyle20("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"}}}'); 22234 } 22235 var style_default19 = { "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" }; 22236 if (typeof process === "undefined" || true) { 22237 registerStyle20("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)}"); 22238 } 22239 var global_css_defense_default7 = { "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" }; 22240 var Link = (0, import_element44.forwardRef)( 22241 function UnforwardedLink({ 22242 children, 22243 variant = "default", 22244 tone = "brand", 22245 openInNewTab = false, 22246 target, 22247 render, 22248 className, 22249 ...props 22250 }, ref) { 22251 const shouldShowNewTabIndicator = openInNewTab || /^_blank$/i.test(target ?? ""); 22252 const element = useRender({ 22253 render, 22254 defaultTagName: "a", 22255 ref, 22256 props: mergeProps(props, { 22257 className: clsx_default( 22258 global_css_defense_default7.a, 22259 resets_default8["box-sizing"], 22260 focus_module_default["outset-ring--focus-except-active"], 22261 variant !== "unstyled" && style_default19.link, 22262 variant !== "unstyled" && shouldShowNewTabIndicator && style_default19["link-with-icon"], 22263 variant !== "unstyled" && style_default19[`is-$tone}`], 22264 variant === "unstyled" && style_default19["is-unstyled"], 22265 className 22266 ), 22267 target: target ?? (openInNewTab ? "_blank" : void 0), 22268 children: /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(import_jsx_runtime100.Fragment, { children: [ 22269 shouldShowNewTabIndicator && variant !== "unstyled" ? /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("span", { className: style_default19["link-contents"], children }) : children, 22270 shouldShowNewTabIndicator && /* @__PURE__ */ (0, import_jsx_runtime100.jsx)( 22271 "span", 22272 { 22273 className: style_default19["link-icon"], 22274 role: "img", 22275 "aria-label": ( 22276 /* translators: accessibility text appended to link text */ 22277 (0, import_i18n4.__)("(opens in a new tab)") 22278 ) 22279 } 22280 ) 22281 ] }) 22282 }) 22283 }); 22284 return element; 22285 } 22286 ); 22287 22288 // packages/ui/build-module/stack/stack.mjs 22289 var import_element45 = __toESM(require_element(), 1); 22290 var STYLE_HASH_ATTRIBUTE21 = "data-wp-hash"; 22291 function getRuntime21() { 22292 const globalScope = globalThis; 22293 if (globalScope.__wpStyleRuntime) { 22294 return globalScope.__wpStyleRuntime; 22295 } 22296 globalScope.__wpStyleRuntime = { 22297 documents: /* @__PURE__ */ new Map(), 22298 styles: /* @__PURE__ */ new Map(), 22299 injectedStyles: /* @__PURE__ */ new WeakMap() 22300 }; 22301 if (typeof document !== "undefined") { 22302 registerDocument21(document); 22303 } 22304 return globalScope.__wpStyleRuntime; 22305 } 22306 function documentContainsStyleHash21(targetDocument, hash) { 22307 if (!targetDocument.head) { 22308 return false; 22309 } 22310 for (const style of targetDocument.head.querySelectorAll( 22311 `style[$STYLE_HASH_ATTRIBUTE21}]` 22312 )) { 22313 if (style.getAttribute(STYLE_HASH_ATTRIBUTE21) === hash) { 22314 return true; 22315 } 22316 } 22317 return false; 22318 } 22319 function injectStyle21(targetDocument, hash, css) { 22320 if (!targetDocument.head) { 22321 return; 22322 } 22323 const runtime = getRuntime21(); 22324 let injectedStyles = runtime.injectedStyles.get(targetDocument); 22325 if (!injectedStyles) { 22326 injectedStyles = /* @__PURE__ */ new Set(); 22327 runtime.injectedStyles.set(targetDocument, injectedStyles); 22328 } 22329 if (injectedStyles.has(hash)) { 22330 return; 22331 } 22332 if (documentContainsStyleHash21(targetDocument, hash)) { 22333 injectedStyles.add(hash); 22334 return; 22335 } 22336 const style = targetDocument.createElement("style"); 22337 style.setAttribute(STYLE_HASH_ATTRIBUTE21, hash); 22338 style.appendChild(targetDocument.createTextNode(css)); 22339 targetDocument.head.appendChild(style); 22340 injectedStyles.add(hash); 22341 } 22342 function registerDocument21(targetDocument) { 22343 const runtime = getRuntime21(); 22344 runtime.documents.set( 22345 targetDocument, 22346 (runtime.documents.get(targetDocument) ?? 0) + 1 22347 ); 22348 for (const [hash, css] of runtime.styles) { 22349 injectStyle21(targetDocument, hash, css); 22350 } 22351 return () => { 22352 const count = runtime.documents.get(targetDocument); 22353 if (count === void 0) { 22354 return; 22355 } 22356 if (count <= 1) { 22357 runtime.documents.delete(targetDocument); 22358 return; 22359 } 22360 runtime.documents.set(targetDocument, count - 1); 22361 }; 22362 } 22363 function registerStyle21(hash, css) { 22364 const runtime = getRuntime21(); 22365 runtime.styles.set(hash, css); 22366 for (const targetDocument of runtime.documents.keys()) { 22367 injectStyle21(targetDocument, hash, css); 22368 } 22369 } 22370 if (typeof process === "undefined" || true) { 22371 registerStyle21("32aba35fe1", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._19ce0419607e1896__stack{display:flex}}}"); 22372 } 22373 var style_default20 = { "stack": "_19ce0419607e1896__stack" }; 22374 var gapTokens = { 22375 xs: "var(--wpds-dimension-gap-xs, 4px)", 22376 sm: "var(--wpds-dimension-gap-sm, 8px)", 22377 md: "var(--wpds-dimension-gap-md, 12px)", 22378 lg: "var(--wpds-dimension-gap-lg, 16px)", 22379 xl: "var(--wpds-dimension-gap-xl, 24px)", 22380 "2xl": "var(--wpds-dimension-gap-2xl, 32px)", 22381 "3xl": "var(--wpds-dimension-gap-3xl, 40px)" 22382 }; 22383 var Stack = (0, import_element45.forwardRef)( 22384 function UnforwardedStack({ direction, gap, align, justify, wrap, render, ...props }, ref) { 22385 const style = { 22386 gap: gap && gapTokens[gap], 22387 alignItems: align, 22388 justifyContent: justify, 22389 flexDirection: direction, 22390 flexWrap: wrap 22391 }; 22392 const element = useRender({ 22393 render, 22394 ref, 22395 props: mergeProps(props, { 22396 style, 22397 className: style_default20.stack 22398 }) 22399 }); 22400 return element; 22401 } 22402 ); 22403 22404 // packages/ui/build-module/form/primitives/input-layout/input-layout.mjs 22405 var import_element46 = __toESM(require_element(), 1); 22406 var import_jsx_runtime101 = __toESM(require_jsx_runtime(), 1); 22407 var STYLE_HASH_ATTRIBUTE22 = "data-wp-hash"; 22408 function getRuntime22() { 22409 const globalScope = globalThis; 22410 if (globalScope.__wpStyleRuntime) { 22411 return globalScope.__wpStyleRuntime; 22412 } 22413 globalScope.__wpStyleRuntime = { 22414 documents: /* @__PURE__ */ new Map(), 22415 styles: /* @__PURE__ */ new Map(), 22416 injectedStyles: /* @__PURE__ */ new WeakMap() 22417 }; 22418 if (typeof document !== "undefined") { 22419 registerDocument22(document); 22420 } 22421 return globalScope.__wpStyleRuntime; 22422 } 22423 function documentContainsStyleHash22(targetDocument, hash) { 22424 if (!targetDocument.head) { 22425 return false; 22426 } 22427 for (const style of targetDocument.head.querySelectorAll( 22428 `style[$STYLE_HASH_ATTRIBUTE22}]` 22429 )) { 22430 if (style.getAttribute(STYLE_HASH_ATTRIBUTE22) === hash) { 22431 return true; 22432 } 22433 } 22434 return false; 22435 } 22436 function injectStyle22(targetDocument, hash, css) { 22437 if (!targetDocument.head) { 22438 return; 22439 } 22440 const runtime = getRuntime22(); 22441 let injectedStyles = runtime.injectedStyles.get(targetDocument); 22442 if (!injectedStyles) { 22443 injectedStyles = /* @__PURE__ */ new Set(); 22444 runtime.injectedStyles.set(targetDocument, injectedStyles); 22445 } 22446 if (injectedStyles.has(hash)) { 22447 return; 22448 } 22449 if (documentContainsStyleHash22(targetDocument, hash)) { 22450 injectedStyles.add(hash); 22451 return; 22452 } 22453 const style = targetDocument.createElement("style"); 22454 style.setAttribute(STYLE_HASH_ATTRIBUTE22, hash); 22455 style.appendChild(targetDocument.createTextNode(css)); 22456 targetDocument.head.appendChild(style); 22457 injectedStyles.add(hash); 22458 } 22459 function registerDocument22(targetDocument) { 22460 const runtime = getRuntime22(); 22461 runtime.documents.set( 22462 targetDocument, 22463 (runtime.documents.get(targetDocument) ?? 0) + 1 22464 ); 22465 for (const [hash, css] of runtime.styles) { 22466 injectStyle22(targetDocument, hash, css); 22467 } 22468 return () => { 22469 const count = runtime.documents.get(targetDocument); 22470 if (count === void 0) { 22471 return; 22472 } 22473 if (count <= 1) { 22474 runtime.documents.delete(targetDocument); 22475 return; 22476 } 22477 runtime.documents.set(targetDocument, count - 1); 22478 }; 22479 } 22480 function registerStyle22(hash, css) { 22481 const runtime = getRuntime22(); 22482 runtime.styles.set(hash, css); 22483 for (const targetDocument of runtime.documents.keys()) { 22484 injectStyle22(targetDocument, hash, css); 22485 } 22486 } 22487 if (typeof process === "undefined" || true) { 22488 registerStyle22("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)}"); 22489 } 22490 var global_css_defense_default8 = { "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" }; 22491 if (typeof process === "undefined" || true) { 22492 registerStyle22("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 22493 } 22494 var resets_default9 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; 22495 if (typeof process === "undefined" || true) { 22496 registerStyle22("fae9ae14d3", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.cb2baafdc08746bb__input-layout{--wp-ui-input-layout-padding-inline:var(--wpds-dimension-padding-md,12px);background-color:var(--wpds-color-background-interactive-neutral,var(--wpds-color-background-surface-neutral-strong,#fff));border-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d);border-radius:var(--wpds-border-radius-sm,2px);border-style:solid;border-width:var(--wpds-border-width-xs,1px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);height:var(--wpds-dimension-size-lg,40px);line-height:1;&._0c807a84cbb94e0c__is-size-compact{height:var(--wpds-dimension-size-md,32px)}&._0c807a84cbb94e0c__is-size-compact,&.ed67cda122dc1e7b__is-size-small{--wp-ui-input-layout-padding-inline:var(--wpds-dimension-padding-sm,8px)}&.ed67cda122dc1e7b__is-size-small{height:var(--wpds-dimension-size-sm,24px)}&._6fb7104732387680__is-disabled,&:has([data-can-disable-input-layout][data-disabled]){color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}&:not(._8097270636ca6100__is-borderless){background-color:var(--wpds-color-background-interactive-neutral-disabled,var(--wpds-color-background-surface-neutral-strong,#fff));border-color:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb);@media (forced-colors:active){border-bottom-color:GrayText;border-left-color:GrayText;border-right-color:GrayText;border-top-color:GrayText}}}&._8097270636ca6100__is-borderless{background-color:var(--wpds-color-background-interactive-neutral-weak,#0000);border-color:transparent}&:has(._0d7afad74a057888__input-layout-slot:focus-within){--_gcd-div-outline:none;outline:none}&:hover:not(._6fb7104732387680__is-disabled,:has([data-can-disable-input-layout][data-disabled]),._8097270636ca6100__is-borderless){background-color:var(--wpds-color-background-interactive-neutral-active,var(--wpds-color-background-surface-neutral-strong,#fff));border-color:var(--wpds-color-stroke-interactive-neutral-active,#6e6e6e)}&:has(:invalid[data-validity-visible]){--focus-color:var(--wpds-color-stroke-interactive-error,#cc1818);border-color:var(--wpds-color-stroke-interactive-error,#cc1818);&:hover{border-color:var(--wpds-color-stroke-interactive-error-active,#9d0000)}}}.c192b41a12b4387b__slot-wrapper{display:contents}._0d7afad74a057888__input-layout-slot{align-items:center;display:flex;&._0c952682762ca288__is-padding-minimal{--wp-ui-input-layout-prefix-padding-start:calc(var(--wp-ui-input-layout-padding-inline) - var(--wpds-dimension-padding-xs, 4px));--wp-ui-input-layout-suffix-padding-end:calc(var(--wp-ui-input-layout-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}[data-slot-type=prefix] &{padding-inline-start:var(--wp-ui-input-layout-prefix-padding-start,var(--wp-ui-input-layout-padding-inline))}[data-slot-type=suffix] &{padding-inline-end:var(--wp-ui-input-layout-suffix-padding-end,var(--wp-ui-input-layout-padding-inline))}}}}'); 22497 } 22498 var style_default21 = { "input-layout": "cb2baafdc08746bb__input-layout", "is-size-compact": "_0c807a84cbb94e0c__is-size-compact", "is-size-small": "ed67cda122dc1e7b__is-size-small", "is-disabled": "_6fb7104732387680__is-disabled", "is-borderless": "_8097270636ca6100__is-borderless", "input-layout-slot": "_0d7afad74a057888__input-layout-slot", "slot-wrapper": "c192b41a12b4387b__slot-wrapper", "is-padding-minimal": "_0c952682762ca288__is-padding-minimal" }; 22499 var InputLayout = (0, import_element46.forwardRef)( 22500 function UnforwardedInputLayout({ 22501 className, 22502 children, 22503 visuallyDisabled, 22504 size: size4 = "default", 22505 isBorderless, 22506 prefix, 22507 suffix, 22508 ...restProps 22509 }, ref) { 22510 return /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)( 22511 "div", 22512 { 22513 ref, 22514 className: clsx_default( 22515 global_css_defense_default8.div, 22516 resets_default9["box-sizing"], 22517 style_default21["input-layout"], 22518 style_default21[`is-size-$size4}`], 22519 visuallyDisabled && style_default21["is-disabled"], 22520 isBorderless && style_default21["is-borderless"], 22521 className 22522 ), 22523 ...restProps, 22524 children: [ 22525 import_element46.Children.count(prefix) > 0 && /* @__PURE__ */ (0, import_jsx_runtime101.jsx)( 22526 "div", 22527 { 22528 className: style_default21["slot-wrapper"], 22529 "data-slot-type": "prefix", 22530 children: prefix 22531 } 22532 ), 22533 children, 22534 import_element46.Children.count(suffix) > 0 && /* @__PURE__ */ (0, import_jsx_runtime101.jsx)( 22535 "div", 22536 { 22537 className: style_default21["slot-wrapper"], 22538 "data-slot-type": "suffix", 22539 children: suffix 22540 } 22541 ) 22542 ] 22543 } 22544 ); 22545 } 22546 ); 22547 22548 // packages/ui/build-module/form/primitives/input-layout/slot.mjs 22549 var import_element47 = __toESM(require_element(), 1); 22550 var import_jsx_runtime102 = __toESM(require_jsx_runtime(), 1); 22551 var STYLE_HASH_ATTRIBUTE23 = "data-wp-hash"; 22552 function getRuntime23() { 22553 const globalScope = globalThis; 22554 if (globalScope.__wpStyleRuntime) { 22555 return globalScope.__wpStyleRuntime; 22556 } 22557 globalScope.__wpStyleRuntime = { 22558 documents: /* @__PURE__ */ new Map(), 22559 styles: /* @__PURE__ */ new Map(), 22560 injectedStyles: /* @__PURE__ */ new WeakMap() 22561 }; 22562 if (typeof document !== "undefined") { 22563 registerDocument23(document); 22564 } 22565 return globalScope.__wpStyleRuntime; 22566 } 22567 function documentContainsStyleHash23(targetDocument, hash) { 22568 if (!targetDocument.head) { 22569 return false; 22570 } 22571 for (const style of targetDocument.head.querySelectorAll( 22572 `style[$STYLE_HASH_ATTRIBUTE23}]` 22573 )) { 22574 if (style.getAttribute(STYLE_HASH_ATTRIBUTE23) === hash) { 22575 return true; 22576 } 22577 } 22578 return false; 22579 } 22580 function injectStyle23(targetDocument, hash, css) { 22581 if (!targetDocument.head) { 22582 return; 22583 } 22584 const runtime = getRuntime23(); 22585 let injectedStyles = runtime.injectedStyles.get(targetDocument); 22586 if (!injectedStyles) { 22587 injectedStyles = /* @__PURE__ */ new Set(); 22588 runtime.injectedStyles.set(targetDocument, injectedStyles); 22589 } 22590 if (injectedStyles.has(hash)) { 22591 return; 22592 } 22593 if (documentContainsStyleHash23(targetDocument, hash)) { 22594 injectedStyles.add(hash); 22595 return; 22596 } 22597 const style = targetDocument.createElement("style"); 22598 style.setAttribute(STYLE_HASH_ATTRIBUTE23, hash); 22599 style.appendChild(targetDocument.createTextNode(css)); 22600 targetDocument.head.appendChild(style); 22601 injectedStyles.add(hash); 22602 } 22603 function registerDocument23(targetDocument) { 22604 const runtime = getRuntime23(); 22605 runtime.documents.set( 22606 targetDocument, 22607 (runtime.documents.get(targetDocument) ?? 0) + 1 22608 ); 22609 for (const [hash, css] of runtime.styles) { 22610 injectStyle23(targetDocument, hash, css); 22611 } 22612 return () => { 22613 const count = runtime.documents.get(targetDocument); 22614 if (count === void 0) { 22615 return; 22616 } 22617 if (count <= 1) { 22618 runtime.documents.delete(targetDocument); 22619 return; 22620 } 22621 runtime.documents.set(targetDocument, count - 1); 22622 }; 22623 } 22624 function registerStyle23(hash, css) { 22625 const runtime = getRuntime23(); 22626 runtime.styles.set(hash, css); 22627 for (const targetDocument of runtime.documents.keys()) { 22628 injectStyle23(targetDocument, hash, css); 22629 } 22630 } 22631 if (typeof process === "undefined" || true) { 22632 registerStyle23("fae9ae14d3", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.cb2baafdc08746bb__input-layout{--wp-ui-input-layout-padding-inline:var(--wpds-dimension-padding-md,12px);background-color:var(--wpds-color-background-interactive-neutral,var(--wpds-color-background-surface-neutral-strong,#fff));border-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d);border-radius:var(--wpds-border-radius-sm,2px);border-style:solid;border-width:var(--wpds-border-width-xs,1px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);height:var(--wpds-dimension-size-lg,40px);line-height:1;&._0c807a84cbb94e0c__is-size-compact{height:var(--wpds-dimension-size-md,32px)}&._0c807a84cbb94e0c__is-size-compact,&.ed67cda122dc1e7b__is-size-small{--wp-ui-input-layout-padding-inline:var(--wpds-dimension-padding-sm,8px)}&.ed67cda122dc1e7b__is-size-small{height:var(--wpds-dimension-size-sm,24px)}&._6fb7104732387680__is-disabled,&:has([data-can-disable-input-layout][data-disabled]){color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}&:not(._8097270636ca6100__is-borderless){background-color:var(--wpds-color-background-interactive-neutral-disabled,var(--wpds-color-background-surface-neutral-strong,#fff));border-color:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb);@media (forced-colors:active){border-bottom-color:GrayText;border-left-color:GrayText;border-right-color:GrayText;border-top-color:GrayText}}}&._8097270636ca6100__is-borderless{background-color:var(--wpds-color-background-interactive-neutral-weak,#0000);border-color:transparent}&:has(._0d7afad74a057888__input-layout-slot:focus-within){--_gcd-div-outline:none;outline:none}&:hover:not(._6fb7104732387680__is-disabled,:has([data-can-disable-input-layout][data-disabled]),._8097270636ca6100__is-borderless){background-color:var(--wpds-color-background-interactive-neutral-active,var(--wpds-color-background-surface-neutral-strong,#fff));border-color:var(--wpds-color-stroke-interactive-neutral-active,#6e6e6e)}&:has(:invalid[data-validity-visible]){--focus-color:var(--wpds-color-stroke-interactive-error,#cc1818);border-color:var(--wpds-color-stroke-interactive-error,#cc1818);&:hover{border-color:var(--wpds-color-stroke-interactive-error-active,#9d0000)}}}.c192b41a12b4387b__slot-wrapper{display:contents}._0d7afad74a057888__input-layout-slot{align-items:center;display:flex;&._0c952682762ca288__is-padding-minimal{--wp-ui-input-layout-prefix-padding-start:calc(var(--wp-ui-input-layout-padding-inline) - var(--wpds-dimension-padding-xs, 4px));--wp-ui-input-layout-suffix-padding-end:calc(var(--wp-ui-input-layout-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}[data-slot-type=prefix] &{padding-inline-start:var(--wp-ui-input-layout-prefix-padding-start,var(--wp-ui-input-layout-padding-inline))}[data-slot-type=suffix] &{padding-inline-end:var(--wp-ui-input-layout-suffix-padding-end,var(--wp-ui-input-layout-padding-inline))}}}}'); 22633 } 22634 var style_default22 = { "input-layout": "cb2baafdc08746bb__input-layout", "is-size-compact": "_0c807a84cbb94e0c__is-size-compact", "is-size-small": "ed67cda122dc1e7b__is-size-small", "is-disabled": "_6fb7104732387680__is-disabled", "is-borderless": "_8097270636ca6100__is-borderless", "input-layout-slot": "_0d7afad74a057888__input-layout-slot", "slot-wrapper": "c192b41a12b4387b__slot-wrapper", "is-padding-minimal": "_0c952682762ca288__is-padding-minimal" }; 22635 var InputLayoutSlot = (0, import_element47.forwardRef)(function UnforwardedInputLayoutSlot({ padding = "default", className, ...restProps }, ref) { 22636 return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)( 22637 "div", 22638 { 22639 ref, 22640 className: clsx_default( 22641 style_default22["input-layout-slot"], 22642 style_default22[`is-padding-$padding}`], 22643 className 22644 ), 22645 ...restProps 22646 } 22647 ); 22648 }); 22649 InputLayoutSlot.displayName = "InputLayout.Slot"; 22650 22651 // packages/ui/build-module/form/primitives/input-layout/index.mjs 22652 var InputLayout2 = Object.assign(InputLayout, { 22653 Slot: InputLayoutSlot 22654 }); 22655 22656 // packages/ui/build-module/utils/css/item-popup.mjs 22657 var STYLE_HASH_ATTRIBUTE24 = "data-wp-hash"; 22658 function getRuntime24() { 22659 const globalScope = globalThis; 22660 if (globalScope.__wpStyleRuntime) { 22661 return globalScope.__wpStyleRuntime; 22662 } 22663 globalScope.__wpStyleRuntime = { 22664 documents: /* @__PURE__ */ new Map(), 22665 styles: /* @__PURE__ */ new Map(), 22666 injectedStyles: /* @__PURE__ */ new WeakMap() 22667 }; 22668 if (typeof document !== "undefined") { 22669 registerDocument24(document); 22670 } 22671 return globalScope.__wpStyleRuntime; 22672 } 22673 function documentContainsStyleHash24(targetDocument, hash) { 22674 if (!targetDocument.head) { 22675 return false; 22676 } 22677 for (const style of targetDocument.head.querySelectorAll( 22678 `style[$STYLE_HASH_ATTRIBUTE24}]` 22679 )) { 22680 if (style.getAttribute(STYLE_HASH_ATTRIBUTE24) === hash) { 22681 return true; 22682 } 22683 } 22684 return false; 22685 } 22686 function injectStyle24(targetDocument, hash, css) { 22687 if (!targetDocument.head) { 22688 return; 22689 } 22690 const runtime = getRuntime24(); 22691 let injectedStyles = runtime.injectedStyles.get(targetDocument); 22692 if (!injectedStyles) { 22693 injectedStyles = /* @__PURE__ */ new Set(); 22694 runtime.injectedStyles.set(targetDocument, injectedStyles); 22695 } 22696 if (injectedStyles.has(hash)) { 22697 return; 22698 } 22699 if (documentContainsStyleHash24(targetDocument, hash)) { 22700 injectedStyles.add(hash); 22701 return; 22702 } 22703 const style = targetDocument.createElement("style"); 22704 style.setAttribute(STYLE_HASH_ATTRIBUTE24, hash); 22705 style.appendChild(targetDocument.createTextNode(css)); 22706 targetDocument.head.appendChild(style); 22707 injectedStyles.add(hash); 22708 } 22709 function registerDocument24(targetDocument) { 22710 const runtime = getRuntime24(); 22711 runtime.documents.set( 22712 targetDocument, 22713 (runtime.documents.get(targetDocument) ?? 0) + 1 22714 ); 22715 for (const [hash, css] of runtime.styles) { 22716 injectStyle24(targetDocument, hash, css); 22717 } 22718 return () => { 22719 const count = runtime.documents.get(targetDocument); 22720 if (count === void 0) { 22721 return; 22722 } 22723 if (count <= 1) { 22724 runtime.documents.delete(targetDocument); 22725 return; 22726 } 22727 runtime.documents.set(targetDocument, count - 1); 22728 }; 22729 } 22730 function registerStyle24(hash, css) { 22731 const runtime = getRuntime24(); 22732 runtime.styles.set(hash, css); 22733 for (const targetDocument of runtime.documents.keys()) { 22734 injectStyle24(targetDocument, hash, css); 22735 } 22736 } 22737 if (typeof process === "undefined" || true) { 22738 registerStyle24("d39dd78fbb", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger[data-side=none] ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{--_wp-ui-popup-selection-offset:0px;color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px);&:has(.a3adcfd0b73ffd40__item-icon){--_wp-ui-popup-selection-offset:calc(var(--wpds-dimension-size-2xs, 16px) + var(--wpds-dimension-gap-xs, 4px) - var(--wpds-dimension-padding-xs, 4px))}}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-sm,24px);padding-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));padding-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset))}.be89a1df0fe77bd2__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));margin-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset));@media (forced-colors:active){background-color:CanvasText}}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline:var(--wp-ui-popup-item-padding-inline);user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&:has(>.a3adcfd0b73ffd40__item-icon){align-content:center;align-items:start;display:grid;grid-template-columns:auto minmax(0,1fr);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([data-disabled]){background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&[data-disabled]{background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);pointer-events:none}._92fbe4765dfad5ee__item-indicator-icon{translate:0 1px}._74465fc7e8ecea1a__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._41f0dd875c005a48__item-text{display:flex;flex-direction:column;min-width:0}._12335b76ada0b1f5__item-label{--_gcd-heading-color:currentColor;min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[data-disabled] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([data-disabled]) ._160635254c702623__item-description{--_gcd-heading-color:currentColor;color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}'); 22739 } 22740 var item_popup_default = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "item-icon": "a3adcfd0b73ffd40__item-icon", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "separator": "be89a1df0fe77bd2__separator", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-content": "_74465fc7e8ecea1a__item-content", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" }; 22741 function getItemPopupWidthClassName(width = "anchor") { 22742 switch (width) { 22743 case "available": 22744 return item_popup_default["is-width-available"]; 22745 case "content": 22746 return item_popup_default["is-width-content"]; 22747 case "lg": 22748 return item_popup_default["is-width-lg"]; 22749 case "md": 22750 return item_popup_default["is-width-md"]; 22751 case "sm": 22752 return item_popup_default["is-width-sm"]; 22753 case "anchor": 22754 return item_popup_default["is-width-anchor"]; 22755 default: 22756 return false; 22757 } 22758 } 22759 22760 // packages/ui/build-module/form/primitives/select/index.mjs 22761 var select_exports = {}; 22762 __export(select_exports, { 22763 Group: () => Group2, 22764 GroupLabel: () => GroupLabel2, 22765 Item: () => Item2, 22766 ItemDescription: () => ItemDescription2, 22767 ItemLabel: () => ItemLabel2, 22768 Popup: () => Popup3, 22769 Portal: () => Portal3, 22770 Positioner: () => Positioner3, 22771 Root: () => Root3, 22772 Separator: () => Separator3, 22773 Trigger: () => Trigger3 22774 }); 22775 22776 // packages/ui/build-module/form/primitives/select/group.mjs 22777 var import_element48 = __toESM(require_element(), 1); 22778 var import_jsx_runtime103 = __toESM(require_jsx_runtime(), 1); 22779 var STYLE_HASH_ATTRIBUTE25 = "data-wp-hash"; 22780 function getRuntime25() { 22781 const globalScope = globalThis; 22782 if (globalScope.__wpStyleRuntime) { 22783 return globalScope.__wpStyleRuntime; 22784 } 22785 globalScope.__wpStyleRuntime = { 22786 documents: /* @__PURE__ */ new Map(), 22787 styles: /* @__PURE__ */ new Map(), 22788 injectedStyles: /* @__PURE__ */ new WeakMap() 22789 }; 22790 if (typeof document !== "undefined") { 22791 registerDocument25(document); 22792 } 22793 return globalScope.__wpStyleRuntime; 22794 } 22795 function documentContainsStyleHash25(targetDocument, hash) { 22796 if (!targetDocument.head) { 22797 return false; 22798 } 22799 for (const style of targetDocument.head.querySelectorAll( 22800 `style[$STYLE_HASH_ATTRIBUTE25}]` 22801 )) { 22802 if (style.getAttribute(STYLE_HASH_ATTRIBUTE25) === hash) { 22803 return true; 22804 } 22805 } 22806 return false; 22807 } 22808 function injectStyle25(targetDocument, hash, css) { 22809 if (!targetDocument.head) { 22810 return; 22811 } 22812 const runtime = getRuntime25(); 22813 let injectedStyles = runtime.injectedStyles.get(targetDocument); 22814 if (!injectedStyles) { 22815 injectedStyles = /* @__PURE__ */ new Set(); 22816 runtime.injectedStyles.set(targetDocument, injectedStyles); 22817 } 22818 if (injectedStyles.has(hash)) { 22819 return; 22820 } 22821 if (documentContainsStyleHash25(targetDocument, hash)) { 22822 injectedStyles.add(hash); 22823 return; 22824 } 22825 const style = targetDocument.createElement("style"); 22826 style.setAttribute(STYLE_HASH_ATTRIBUTE25, hash); 22827 style.appendChild(targetDocument.createTextNode(css)); 22828 targetDocument.head.appendChild(style); 22829 injectedStyles.add(hash); 22830 } 22831 function registerDocument25(targetDocument) { 22832 const runtime = getRuntime25(); 22833 runtime.documents.set( 22834 targetDocument, 22835 (runtime.documents.get(targetDocument) ?? 0) + 1 22836 ); 22837 for (const [hash, css] of runtime.styles) { 22838 injectStyle25(targetDocument, hash, css); 22839 } 22840 return () => { 22841 const count = runtime.documents.get(targetDocument); 22842 if (count === void 0) { 22843 return; 22844 } 22845 if (count <= 1) { 22846 runtime.documents.delete(targetDocument); 22847 return; 22848 } 22849 runtime.documents.set(targetDocument, count - 1); 22850 }; 22851 } 22852 function registerStyle25(hash, css) { 22853 const runtime = getRuntime25(); 22854 runtime.styles.set(hash, css); 22855 for (const targetDocument of runtime.documents.keys()) { 22856 injectStyle25(targetDocument, hash, css); 22857 } 22858 } 22859 if (typeof process === "undefined" || true) { 22860 registerStyle25("d39dd78fbb", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger[data-side=none] ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{--_wp-ui-popup-selection-offset:0px;color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px);&:has(.a3adcfd0b73ffd40__item-icon){--_wp-ui-popup-selection-offset:calc(var(--wpds-dimension-size-2xs, 16px) + var(--wpds-dimension-gap-xs, 4px) - var(--wpds-dimension-padding-xs, 4px))}}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-sm,24px);padding-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));padding-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset))}.be89a1df0fe77bd2__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));margin-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset));@media (forced-colors:active){background-color:CanvasText}}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline:var(--wp-ui-popup-item-padding-inline);user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&:has(>.a3adcfd0b73ffd40__item-icon){align-content:center;align-items:start;display:grid;grid-template-columns:auto minmax(0,1fr);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([data-disabled]){background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&[data-disabled]{background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);pointer-events:none}._92fbe4765dfad5ee__item-indicator-icon{translate:0 1px}._74465fc7e8ecea1a__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._41f0dd875c005a48__item-text{display:flex;flex-direction:column;min-width:0}._12335b76ada0b1f5__item-label{--_gcd-heading-color:currentColor;min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[data-disabled] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([data-disabled]) ._160635254c702623__item-description{--_gcd-heading-color:currentColor;color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}'); 22861 } 22862 var item_popup_default2 = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "item-icon": "a3adcfd0b73ffd40__item-icon", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "separator": "be89a1df0fe77bd2__separator", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-content": "_74465fc7e8ecea1a__item-content", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" }; 22863 var Group2 = (0, import_element48.forwardRef)( 22864 function UnforwardedGroup({ className, children, ...restProps }, ref) { 22865 return /* @__PURE__ */ (0, import_jsx_runtime103.jsx)( 22866 index_parts_exports3.Group, 22867 { 22868 className: clsx_default(item_popup_default2.group, className), 22869 ref, 22870 ...restProps, 22871 children 22872 } 22873 ); 22874 } 22875 ); 22876 22877 // packages/ui/build-module/form/primitives/select/group-label.mjs 22878 var import_element49 = __toESM(require_element(), 1); 22879 var import_jsx_runtime104 = __toESM(require_jsx_runtime(), 1); 22880 var STYLE_HASH_ATTRIBUTE26 = "data-wp-hash"; 22881 function getRuntime26() { 22882 const globalScope = globalThis; 22883 if (globalScope.__wpStyleRuntime) { 22884 return globalScope.__wpStyleRuntime; 22885 } 22886 globalScope.__wpStyleRuntime = { 22887 documents: /* @__PURE__ */ new Map(), 22888 styles: /* @__PURE__ */ new Map(), 22889 injectedStyles: /* @__PURE__ */ new WeakMap() 22890 }; 22891 if (typeof document !== "undefined") { 22892 registerDocument26(document); 22893 } 22894 return globalScope.__wpStyleRuntime; 22895 } 22896 function documentContainsStyleHash26(targetDocument, hash) { 22897 if (!targetDocument.head) { 22898 return false; 22899 } 22900 for (const style of targetDocument.head.querySelectorAll( 22901 `style[$STYLE_HASH_ATTRIBUTE26}]` 22902 )) { 22903 if (style.getAttribute(STYLE_HASH_ATTRIBUTE26) === hash) { 22904 return true; 22905 } 22906 } 22907 return false; 22908 } 22909 function injectStyle26(targetDocument, hash, css) { 22910 if (!targetDocument.head) { 22911 return; 22912 } 22913 const runtime = getRuntime26(); 22914 let injectedStyles = runtime.injectedStyles.get(targetDocument); 22915 if (!injectedStyles) { 22916 injectedStyles = /* @__PURE__ */ new Set(); 22917 runtime.injectedStyles.set(targetDocument, injectedStyles); 22918 } 22919 if (injectedStyles.has(hash)) { 22920 return; 22921 } 22922 if (documentContainsStyleHash26(targetDocument, hash)) { 22923 injectedStyles.add(hash); 22924 return; 22925 } 22926 const style = targetDocument.createElement("style"); 22927 style.setAttribute(STYLE_HASH_ATTRIBUTE26, hash); 22928 style.appendChild(targetDocument.createTextNode(css)); 22929 targetDocument.head.appendChild(style); 22930 injectedStyles.add(hash); 22931 } 22932 function registerDocument26(targetDocument) { 22933 const runtime = getRuntime26(); 22934 runtime.documents.set( 22935 targetDocument, 22936 (runtime.documents.get(targetDocument) ?? 0) + 1 22937 ); 22938 for (const [hash, css] of runtime.styles) { 22939 injectStyle26(targetDocument, hash, css); 22940 } 22941 return () => { 22942 const count = runtime.documents.get(targetDocument); 22943 if (count === void 0) { 22944 return; 22945 } 22946 if (count <= 1) { 22947 runtime.documents.delete(targetDocument); 22948 return; 22949 } 22950 runtime.documents.set(targetDocument, count - 1); 22951 }; 22952 } 22953 function registerStyle26(hash, css) { 22954 const runtime = getRuntime26(); 22955 runtime.styles.set(hash, css); 22956 for (const targetDocument of runtime.documents.keys()) { 22957 injectStyle26(targetDocument, hash, css); 22958 } 22959 } 22960 if (typeof process === "undefined" || true) { 22961 registerStyle26("d39dd78fbb", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger[data-side=none] ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{--_wp-ui-popup-selection-offset:0px;color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px);&:has(.a3adcfd0b73ffd40__item-icon){--_wp-ui-popup-selection-offset:calc(var(--wpds-dimension-size-2xs, 16px) + var(--wpds-dimension-gap-xs, 4px) - var(--wpds-dimension-padding-xs, 4px))}}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-sm,24px);padding-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));padding-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset))}.be89a1df0fe77bd2__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));margin-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset));@media (forced-colors:active){background-color:CanvasText}}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline:var(--wp-ui-popup-item-padding-inline);user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&:has(>.a3adcfd0b73ffd40__item-icon){align-content:center;align-items:start;display:grid;grid-template-columns:auto minmax(0,1fr);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([data-disabled]){background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&[data-disabled]{background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);pointer-events:none}._92fbe4765dfad5ee__item-indicator-icon{translate:0 1px}._74465fc7e8ecea1a__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._41f0dd875c005a48__item-text{display:flex;flex-direction:column;min-width:0}._12335b76ada0b1f5__item-label{--_gcd-heading-color:currentColor;min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[data-disabled] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([data-disabled]) ._160635254c702623__item-description{--_gcd-heading-color:currentColor;color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}'); 22962 } 22963 var item_popup_default3 = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "item-icon": "a3adcfd0b73ffd40__item-icon", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "separator": "be89a1df0fe77bd2__separator", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-content": "_74465fc7e8ecea1a__item-content", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" }; 22964 var GroupLabel2 = (0, import_element49.forwardRef)( 22965 function UnforwardedGroupLabel({ className, children, ...restProps }, ref) { 22966 return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)( 22967 Text, 22968 { 22969 variant: "heading-sm", 22970 className: clsx_default( 22971 item_popup_default3["group-label"], 22972 className 22973 ), 22974 render: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(index_parts_exports3.GroupLabel, { ref, ...restProps }), 22975 children 22976 } 22977 ); 22978 } 22979 ); 22980 22981 // packages/ui/build-module/form/primitives/select/item.mjs 22982 var import_element52 = __toESM(require_element(), 1); 22983 22984 // packages/ui/build-module/form/primitives/select/item-description.mjs 22985 var import_element50 = __toESM(require_element(), 1); 22986 var import_jsx_runtime105 = __toESM(require_jsx_runtime(), 1); 22987 var STYLE_HASH_ATTRIBUTE27 = "data-wp-hash"; 22988 function getRuntime27() { 22989 const globalScope = globalThis; 22990 if (globalScope.__wpStyleRuntime) { 22991 return globalScope.__wpStyleRuntime; 22992 } 22993 globalScope.__wpStyleRuntime = { 22994 documents: /* @__PURE__ */ new Map(), 22995 styles: /* @__PURE__ */ new Map(), 22996 injectedStyles: /* @__PURE__ */ new WeakMap() 22997 }; 22998 if (typeof document !== "undefined") { 22999 registerDocument27(document); 23000 } 23001 return globalScope.__wpStyleRuntime; 23002 } 23003 function documentContainsStyleHash27(targetDocument, hash) { 23004 if (!targetDocument.head) { 23005 return false; 23006 } 23007 for (const style of targetDocument.head.querySelectorAll( 23008 `style[$STYLE_HASH_ATTRIBUTE27}]` 23009 )) { 23010 if (style.getAttribute(STYLE_HASH_ATTRIBUTE27) === hash) { 23011 return true; 23012 } 23013 } 23014 return false; 23015 } 23016 function injectStyle27(targetDocument, hash, css) { 23017 if (!targetDocument.head) { 23018 return; 23019 } 23020 const runtime = getRuntime27(); 23021 let injectedStyles = runtime.injectedStyles.get(targetDocument); 23022 if (!injectedStyles) { 23023 injectedStyles = /* @__PURE__ */ new Set(); 23024 runtime.injectedStyles.set(targetDocument, injectedStyles); 23025 } 23026 if (injectedStyles.has(hash)) { 23027 return; 23028 } 23029 if (documentContainsStyleHash27(targetDocument, hash)) { 23030 injectedStyles.add(hash); 23031 return; 23032 } 23033 const style = targetDocument.createElement("style"); 23034 style.setAttribute(STYLE_HASH_ATTRIBUTE27, hash); 23035 style.appendChild(targetDocument.createTextNode(css)); 23036 targetDocument.head.appendChild(style); 23037 injectedStyles.add(hash); 23038 } 23039 function registerDocument27(targetDocument) { 23040 const runtime = getRuntime27(); 23041 runtime.documents.set( 23042 targetDocument, 23043 (runtime.documents.get(targetDocument) ?? 0) + 1 23044 ); 23045 for (const [hash, css] of runtime.styles) { 23046 injectStyle27(targetDocument, hash, css); 23047 } 23048 return () => { 23049 const count = runtime.documents.get(targetDocument); 23050 if (count === void 0) { 23051 return; 23052 } 23053 if (count <= 1) { 23054 runtime.documents.delete(targetDocument); 23055 return; 23056 } 23057 runtime.documents.set(targetDocument, count - 1); 23058 }; 23059 } 23060 function registerStyle27(hash, css) { 23061 const runtime = getRuntime27(); 23062 runtime.styles.set(hash, css); 23063 for (const targetDocument of runtime.documents.keys()) { 23064 injectStyle27(targetDocument, hash, css); 23065 } 23066 } 23067 if (typeof process === "undefined" || true) { 23068 registerStyle27("d39dd78fbb", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger[data-side=none] ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{--_wp-ui-popup-selection-offset:0px;color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px);&:has(.a3adcfd0b73ffd40__item-icon){--_wp-ui-popup-selection-offset:calc(var(--wpds-dimension-size-2xs, 16px) + var(--wpds-dimension-gap-xs, 4px) - var(--wpds-dimension-padding-xs, 4px))}}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-sm,24px);padding-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));padding-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset))}.be89a1df0fe77bd2__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));margin-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset));@media (forced-colors:active){background-color:CanvasText}}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline:var(--wp-ui-popup-item-padding-inline);user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&:has(>.a3adcfd0b73ffd40__item-icon){align-content:center;align-items:start;display:grid;grid-template-columns:auto minmax(0,1fr);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([data-disabled]){background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&[data-disabled]{background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);pointer-events:none}._92fbe4765dfad5ee__item-indicator-icon{translate:0 1px}._74465fc7e8ecea1a__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._41f0dd875c005a48__item-text{display:flex;flex-direction:column;min-width:0}._12335b76ada0b1f5__item-label{--_gcd-heading-color:currentColor;min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[data-disabled] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([data-disabled]) ._160635254c702623__item-description{--_gcd-heading-color:currentColor;color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}'); 23069 } 23070 var item_popup_default4 = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "item-icon": "a3adcfd0b73ffd40__item-icon", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "separator": "be89a1df0fe77bd2__separator", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-content": "_74465fc7e8ecea1a__item-content", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" }; 23071 var ITEM_DESCRIPTION_DIRECT_CHILD2 = /* @__PURE__ */ Symbol(); 23072 var ItemDescription2 = (0, import_element50.forwardRef)(function UnforwardedItemDescription(props, ref) { 23073 const { className, validationToken, ...restProps } = props; 23074 if (validationToken !== ITEM_DESCRIPTION_DIRECT_CHILD2) { 23075 throw new Error( 23076 "Select.ItemDescription: Missing direct select item parent. Render <Select.ItemDescription> as a direct child of <Select.Item>." 23077 ); 23078 } 23079 return /* @__PURE__ */ (0, import_jsx_runtime105.jsx)( 23080 Text, 23081 { 23082 ref, 23083 variant: "body-sm", 23084 className: clsx_default( 23085 item_popup_default4["item-description"], 23086 className 23087 ), 23088 ...restProps 23089 } 23090 ); 23091 }); 23092 23093 // packages/ui/build-module/form/primitives/select/item-label.mjs 23094 var import_element51 = __toESM(require_element(), 1); 23095 var import_jsx_runtime106 = __toESM(require_jsx_runtime(), 1); 23096 var STYLE_HASH_ATTRIBUTE28 = "data-wp-hash"; 23097 function getRuntime28() { 23098 const globalScope = globalThis; 23099 if (globalScope.__wpStyleRuntime) { 23100 return globalScope.__wpStyleRuntime; 23101 } 23102 globalScope.__wpStyleRuntime = { 23103 documents: /* @__PURE__ */ new Map(), 23104 styles: /* @__PURE__ */ new Map(), 23105 injectedStyles: /* @__PURE__ */ new WeakMap() 23106 }; 23107 if (typeof document !== "undefined") { 23108 registerDocument28(document); 23109 } 23110 return globalScope.__wpStyleRuntime; 23111 } 23112 function documentContainsStyleHash28(targetDocument, hash) { 23113 if (!targetDocument.head) { 23114 return false; 23115 } 23116 for (const style of targetDocument.head.querySelectorAll( 23117 `style[$STYLE_HASH_ATTRIBUTE28}]` 23118 )) { 23119 if (style.getAttribute(STYLE_HASH_ATTRIBUTE28) === hash) { 23120 return true; 23121 } 23122 } 23123 return false; 23124 } 23125 function injectStyle28(targetDocument, hash, css) { 23126 if (!targetDocument.head) { 23127 return; 23128 } 23129 const runtime = getRuntime28(); 23130 let injectedStyles = runtime.injectedStyles.get(targetDocument); 23131 if (!injectedStyles) { 23132 injectedStyles = /* @__PURE__ */ new Set(); 23133 runtime.injectedStyles.set(targetDocument, injectedStyles); 23134 } 23135 if (injectedStyles.has(hash)) { 23136 return; 23137 } 23138 if (documentContainsStyleHash28(targetDocument, hash)) { 23139 injectedStyles.add(hash); 23140 return; 23141 } 23142 const style = targetDocument.createElement("style"); 23143 style.setAttribute(STYLE_HASH_ATTRIBUTE28, hash); 23144 style.appendChild(targetDocument.createTextNode(css)); 23145 targetDocument.head.appendChild(style); 23146 injectedStyles.add(hash); 23147 } 23148 function registerDocument28(targetDocument) { 23149 const runtime = getRuntime28(); 23150 runtime.documents.set( 23151 targetDocument, 23152 (runtime.documents.get(targetDocument) ?? 0) + 1 23153 ); 23154 for (const [hash, css] of runtime.styles) { 23155 injectStyle28(targetDocument, hash, css); 23156 } 23157 return () => { 23158 const count = runtime.documents.get(targetDocument); 23159 if (count === void 0) { 23160 return; 23161 } 23162 if (count <= 1) { 23163 runtime.documents.delete(targetDocument); 23164 return; 23165 } 23166 runtime.documents.set(targetDocument, count - 1); 23167 }; 23168 } 23169 function registerStyle28(hash, css) { 23170 const runtime = getRuntime28(); 23171 runtime.styles.set(hash, css); 23172 for (const targetDocument of runtime.documents.keys()) { 23173 injectStyle28(targetDocument, hash, css); 23174 } 23175 } 23176 if (typeof process === "undefined" || true) { 23177 registerStyle28("d39dd78fbb", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger[data-side=none] ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{--_wp-ui-popup-selection-offset:0px;color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px);&:has(.a3adcfd0b73ffd40__item-icon){--_wp-ui-popup-selection-offset:calc(var(--wpds-dimension-size-2xs, 16px) + var(--wpds-dimension-gap-xs, 4px) - var(--wpds-dimension-padding-xs, 4px))}}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-sm,24px);padding-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));padding-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset))}.be89a1df0fe77bd2__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));margin-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset));@media (forced-colors:active){background-color:CanvasText}}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline:var(--wp-ui-popup-item-padding-inline);user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&:has(>.a3adcfd0b73ffd40__item-icon){align-content:center;align-items:start;display:grid;grid-template-columns:auto minmax(0,1fr);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([data-disabled]){background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&[data-disabled]{background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);pointer-events:none}._92fbe4765dfad5ee__item-indicator-icon{translate:0 1px}._74465fc7e8ecea1a__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._41f0dd875c005a48__item-text{display:flex;flex-direction:column;min-width:0}._12335b76ada0b1f5__item-label{--_gcd-heading-color:currentColor;min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[data-disabled] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([data-disabled]) ._160635254c702623__item-description{--_gcd-heading-color:currentColor;color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}'); 23178 } 23179 var item_popup_default5 = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "item-icon": "a3adcfd0b73ffd40__item-icon", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "separator": "be89a1df0fe77bd2__separator", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-content": "_74465fc7e8ecea1a__item-content", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" }; 23180 var ItemLabel2 = (0, import_element51.forwardRef)( 23181 function UnforwardedItemLabel({ children, className, render, ...restProps }, ref) { 23182 return /* @__PURE__ */ (0, import_jsx_runtime106.jsx)( 23183 Text, 23184 { 23185 ref, 23186 variant: "body-md", 23187 render: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(index_parts_exports3.ItemText, { render }), 23188 className: clsx_default(item_popup_default5["item-label"], className), 23189 ...restProps, 23190 children 23191 } 23192 ); 23193 } 23194 ); 23195 23196 // packages/ui/build-module/form/primitives/select/item.mjs 23197 var import_jsx_runtime107 = __toESM(require_jsx_runtime(), 1); 23198 var STYLE_HASH_ATTRIBUTE29 = "data-wp-hash"; 23199 function getRuntime29() { 23200 const globalScope = globalThis; 23201 if (globalScope.__wpStyleRuntime) { 23202 return globalScope.__wpStyleRuntime; 23203 } 23204 globalScope.__wpStyleRuntime = { 23205 documents: /* @__PURE__ */ new Map(), 23206 styles: /* @__PURE__ */ new Map(), 23207 injectedStyles: /* @__PURE__ */ new WeakMap() 23208 }; 23209 if (typeof document !== "undefined") { 23210 registerDocument29(document); 23211 } 23212 return globalScope.__wpStyleRuntime; 23213 } 23214 function documentContainsStyleHash29(targetDocument, hash) { 23215 if (!targetDocument.head) { 23216 return false; 23217 } 23218 for (const style of targetDocument.head.querySelectorAll( 23219 `style[$STYLE_HASH_ATTRIBUTE29}]` 23220 )) { 23221 if (style.getAttribute(STYLE_HASH_ATTRIBUTE29) === hash) { 23222 return true; 23223 } 23224 } 23225 return false; 23226 } 23227 function injectStyle29(targetDocument, hash, css) { 23228 if (!targetDocument.head) { 23229 return; 23230 } 23231 const runtime = getRuntime29(); 23232 let injectedStyles = runtime.injectedStyles.get(targetDocument); 23233 if (!injectedStyles) { 23234 injectedStyles = /* @__PURE__ */ new Set(); 23235 runtime.injectedStyles.set(targetDocument, injectedStyles); 23236 } 23237 if (injectedStyles.has(hash)) { 23238 return; 23239 } 23240 if (documentContainsStyleHash29(targetDocument, hash)) { 23241 injectedStyles.add(hash); 23242 return; 23243 } 23244 const style = targetDocument.createElement("style"); 23245 style.setAttribute(STYLE_HASH_ATTRIBUTE29, hash); 23246 style.appendChild(targetDocument.createTextNode(css)); 23247 targetDocument.head.appendChild(style); 23248 injectedStyles.add(hash); 23249 } 23250 function registerDocument29(targetDocument) { 23251 const runtime = getRuntime29(); 23252 runtime.documents.set( 23253 targetDocument, 23254 (runtime.documents.get(targetDocument) ?? 0) + 1 23255 ); 23256 for (const [hash, css] of runtime.styles) { 23257 injectStyle29(targetDocument, hash, css); 23258 } 23259 return () => { 23260 const count = runtime.documents.get(targetDocument); 23261 if (count === void 0) { 23262 return; 23263 } 23264 if (count <= 1) { 23265 runtime.documents.delete(targetDocument); 23266 return; 23267 } 23268 runtime.documents.set(targetDocument, count - 1); 23269 }; 23270 } 23271 function registerStyle29(hash, css) { 23272 const runtime = getRuntime29(); 23273 runtime.styles.set(hash, css); 23274 for (const targetDocument of runtime.documents.keys()) { 23275 injectStyle29(targetDocument, hash, css); 23276 } 23277 } 23278 if (typeof process === "undefined" || true) { 23279 registerStyle29("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)}"); 23280 } 23281 var global_css_defense_default9 = { "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" }; 23282 if (typeof process === "undefined" || true) { 23283 registerStyle29("d39dd78fbb", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger[data-side=none] ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{--_wp-ui-popup-selection-offset:0px;color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px);&:has(.a3adcfd0b73ffd40__item-icon){--_wp-ui-popup-selection-offset:calc(var(--wpds-dimension-size-2xs, 16px) + var(--wpds-dimension-gap-xs, 4px) - var(--wpds-dimension-padding-xs, 4px))}}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-sm,24px);padding-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));padding-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset))}.be89a1df0fe77bd2__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));margin-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset));@media (forced-colors:active){background-color:CanvasText}}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline:var(--wp-ui-popup-item-padding-inline);user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&:has(>.a3adcfd0b73ffd40__item-icon){align-content:center;align-items:start;display:grid;grid-template-columns:auto minmax(0,1fr);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([data-disabled]){background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&[data-disabled]{background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);pointer-events:none}._92fbe4765dfad5ee__item-indicator-icon{translate:0 1px}._74465fc7e8ecea1a__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._41f0dd875c005a48__item-text{display:flex;flex-direction:column;min-width:0}._12335b76ada0b1f5__item-label{--_gcd-heading-color:currentColor;min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[data-disabled] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([data-disabled]) ._160635254c702623__item-description{--_gcd-heading-color:currentColor;color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}'); 23284 } 23285 var item_popup_default6 = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "item-icon": "a3adcfd0b73ffd40__item-icon", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "separator": "be89a1df0fe77bd2__separator", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-content": "_74465fc7e8ecea1a__item-content", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" }; 23286 if (typeof process === "undefined" || true) { 23287 registerStyle29("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 23288 } 23289 var resets_default10 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; 23290 var ITEM_CONTENT_COMPONENTS2 = { 23291 Label: ItemLabel2, 23292 Description: ItemDescription2, 23293 descriptionValidationToken: ITEM_DESCRIPTION_DIRECT_CHILD2, 23294 validationMessage: "Select.ItemLabel must be the first direct child of every select item, followed only by Select.ItemDescription components." 23295 }; 23296 var Item2 = (0, import_element52.forwardRef)( 23297 function UnforwardedItem({ 23298 className, 23299 value, 23300 size: size4 = "default", 23301 children, 23302 "aria-describedby": ariaDescribedBy, 23303 "aria-label": ariaLabel, 23304 "aria-labelledby": ariaLabelledBy, 23305 ...restProps 23306 }, ref) { 23307 const { contentChildren, itemAriaProps } = useItemContent( 23308 children, 23309 ITEM_CONTENT_COMPONENTS2, 23310 { 23311 "aria-describedby": ariaDescribedBy, 23312 "aria-label": ariaLabel, 23313 "aria-labelledby": ariaLabelledBy 23314 } 23315 ); 23316 return /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)( 23317 index_parts_exports3.Item, 23318 { 23319 className: clsx_default( 23320 global_css_defense_default9.div, 23321 resets_default10["box-sizing"], 23322 item_popup_default6.item, 23323 size4 === "small" && item_popup_default6["is-size-small"], 23324 className 23325 ), 23326 value, 23327 ref, 23328 ...itemAriaProps, 23329 ...restProps, 23330 children: [ 23331 /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("span", { className: item_popup_default6["item-icon"], children: /* @__PURE__ */ (0, import_jsx_runtime107.jsx)( 23332 Icon, 23333 { 23334 icon: check_default, 23335 className: item_popup_default6["item-indicator-icon"], 23336 size: 16 23337 } 23338 ) }), 23339 /* @__PURE__ */ (0, import_jsx_runtime107.jsx)("div", { className: item_popup_default6["item-text"], children: contentChildren }) 23340 ] 23341 } 23342 ); 23343 } 23344 ); 23345 23346 // packages/ui/build-module/form/primitives/select/popup.mjs 23347 var import_element55 = __toESM(require_element(), 1); 23348 23349 // packages/ui/build-module/form/primitives/select/portal.mjs 23350 var import_element53 = __toESM(require_element(), 1); 23351 var import_jsx_runtime108 = __toESM(require_jsx_runtime(), 1); 23352 var Portal3 = (0, import_element53.forwardRef)(function SelectPortal3({ container, ...restProps }, ref) { 23353 return /* @__PURE__ */ (0, import_jsx_runtime108.jsx)( 23354 index_parts_exports3.Portal, 23355 { 23356 container: container === void 0 ? getWpCompatOverlaySlot() : container, 23357 ...restProps, 23358 ref 23359 } 23360 ); 23361 }); 23362 23363 // packages/ui/build-module/form/primitives/select/positioner.mjs 23364 var import_element54 = __toESM(require_element(), 1); 23365 var import_jsx_runtime109 = __toESM(require_jsx_runtime(), 1); 23366 var STYLE_HASH_ATTRIBUTE30 = "data-wp-hash"; 23367 function getRuntime30() { 23368 const globalScope = globalThis; 23369 if (globalScope.__wpStyleRuntime) { 23370 return globalScope.__wpStyleRuntime; 23371 } 23372 globalScope.__wpStyleRuntime = { 23373 documents: /* @__PURE__ */ new Map(), 23374 styles: /* @__PURE__ */ new Map(), 23375 injectedStyles: /* @__PURE__ */ new WeakMap() 23376 }; 23377 if (typeof document !== "undefined") { 23378 registerDocument30(document); 23379 } 23380 return globalScope.__wpStyleRuntime; 23381 } 23382 function documentContainsStyleHash30(targetDocument, hash) { 23383 if (!targetDocument.head) { 23384 return false; 23385 } 23386 for (const style of targetDocument.head.querySelectorAll( 23387 `style[$STYLE_HASH_ATTRIBUTE30}]` 23388 )) { 23389 if (style.getAttribute(STYLE_HASH_ATTRIBUTE30) === hash) { 23390 return true; 23391 } 23392 } 23393 return false; 23394 } 23395 function injectStyle30(targetDocument, hash, css) { 23396 if (!targetDocument.head) { 23397 return; 23398 } 23399 const runtime = getRuntime30(); 23400 let injectedStyles = runtime.injectedStyles.get(targetDocument); 23401 if (!injectedStyles) { 23402 injectedStyles = /* @__PURE__ */ new Set(); 23403 runtime.injectedStyles.set(targetDocument, injectedStyles); 23404 } 23405 if (injectedStyles.has(hash)) { 23406 return; 23407 } 23408 if (documentContainsStyleHash30(targetDocument, hash)) { 23409 injectedStyles.add(hash); 23410 return; 23411 } 23412 const style = targetDocument.createElement("style"); 23413 style.setAttribute(STYLE_HASH_ATTRIBUTE30, hash); 23414 style.appendChild(targetDocument.createTextNode(css)); 23415 targetDocument.head.appendChild(style); 23416 injectedStyles.add(hash); 23417 } 23418 function registerDocument30(targetDocument) { 23419 const runtime = getRuntime30(); 23420 runtime.documents.set( 23421 targetDocument, 23422 (runtime.documents.get(targetDocument) ?? 0) + 1 23423 ); 23424 for (const [hash, css] of runtime.styles) { 23425 injectStyle30(targetDocument, hash, css); 23426 } 23427 return () => { 23428 const count = runtime.documents.get(targetDocument); 23429 if (count === void 0) { 23430 return; 23431 } 23432 if (count <= 1) { 23433 runtime.documents.delete(targetDocument); 23434 return; 23435 } 23436 runtime.documents.set(targetDocument, count - 1); 23437 }; 23438 } 23439 function registerStyle30(hash, css) { 23440 const runtime = getRuntime30(); 23441 runtime.styles.set(hash, css); 23442 for (const targetDocument of runtime.documents.keys()) { 23443 injectStyle30(targetDocument, hash, css); 23444 } 23445 } 23446 if (typeof process === "undefined" || true) { 23447 registerStyle30("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 23448 } 23449 var resets_default11 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; 23450 if (typeof process === "undefined" || true) { 23451 registerStyle30("d39dd78fbb", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger[data-side=none] ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{--_wp-ui-popup-selection-offset:0px;color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px);&:has(.a3adcfd0b73ffd40__item-icon){--_wp-ui-popup-selection-offset:calc(var(--wpds-dimension-size-2xs, 16px) + var(--wpds-dimension-gap-xs, 4px) - var(--wpds-dimension-padding-xs, 4px))}}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-sm,24px);padding-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));padding-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset))}.be89a1df0fe77bd2__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));margin-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset));@media (forced-colors:active){background-color:CanvasText}}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline:var(--wp-ui-popup-item-padding-inline);user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&:has(>.a3adcfd0b73ffd40__item-icon){align-content:center;align-items:start;display:grid;grid-template-columns:auto minmax(0,1fr);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([data-disabled]){background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&[data-disabled]{background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);pointer-events:none}._92fbe4765dfad5ee__item-indicator-icon{translate:0 1px}._74465fc7e8ecea1a__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._41f0dd875c005a48__item-text{display:flex;flex-direction:column;min-width:0}._12335b76ada0b1f5__item-label{--_gcd-heading-color:currentColor;min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[data-disabled] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([data-disabled]) ._160635254c702623__item-description{--_gcd-heading-color:currentColor;color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}'); 23452 } 23453 var item_popup_default7 = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "item-icon": "a3adcfd0b73ffd40__item-icon", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "separator": "be89a1df0fe77bd2__separator", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-content": "_74465fc7e8ecea1a__item-content", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" }; 23454 if (typeof process === "undefined" || true) { 23455 registerStyle30("aaac8c315e", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._0ab863136fb95530__positioner{z-index:var(--wp-ui-select-z-index,initial)}.a9ab07efb9ef413f__list{display:block;min-block-size:0;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}}}"); 23456 } 23457 var style_default23 = { "positioner": "_0ab863136fb95530__positioner", "list": "a9ab07efb9ef413f__list" }; 23458 var Positioner3 = (0, import_element54.forwardRef)( 23459 function SelectPositioner3({ className, alignItemWithTrigger = true, ...props }, ref) { 23460 return /* @__PURE__ */ (0, import_jsx_runtime109.jsx)( 23461 index_parts_exports3.Positioner, 23462 { 23463 ...ITEM_POPUP_POSITIONER_PROPS, 23464 ...props, 23465 alignItemWithTrigger, 23466 ref, 23467 className: clsx_default( 23468 resets_default11["box-sizing"], 23469 style_default23.positioner, 23470 alignItemWithTrigger && item_popup_default7["is-align-item-with-trigger"], 23471 className 23472 ) 23473 } 23474 ); 23475 } 23476 ); 23477 23478 // packages/ui/build-module/form/primitives/select/popup.mjs 23479 var import_jsx_runtime110 = __toESM(require_jsx_runtime(), 1); 23480 var STYLE_HASH_ATTRIBUTE31 = "data-wp-hash"; 23481 function getRuntime31() { 23482 const globalScope = globalThis; 23483 if (globalScope.__wpStyleRuntime) { 23484 return globalScope.__wpStyleRuntime; 23485 } 23486 globalScope.__wpStyleRuntime = { 23487 documents: /* @__PURE__ */ new Map(), 23488 styles: /* @__PURE__ */ new Map(), 23489 injectedStyles: /* @__PURE__ */ new WeakMap() 23490 }; 23491 if (typeof document !== "undefined") { 23492 registerDocument31(document); 23493 } 23494 return globalScope.__wpStyleRuntime; 23495 } 23496 function documentContainsStyleHash31(targetDocument, hash) { 23497 if (!targetDocument.head) { 23498 return false; 23499 } 23500 for (const style of targetDocument.head.querySelectorAll( 23501 `style[$STYLE_HASH_ATTRIBUTE31}]` 23502 )) { 23503 if (style.getAttribute(STYLE_HASH_ATTRIBUTE31) === hash) { 23504 return true; 23505 } 23506 } 23507 return false; 23508 } 23509 function injectStyle31(targetDocument, hash, css) { 23510 if (!targetDocument.head) { 23511 return; 23512 } 23513 const runtime = getRuntime31(); 23514 let injectedStyles = runtime.injectedStyles.get(targetDocument); 23515 if (!injectedStyles) { 23516 injectedStyles = /* @__PURE__ */ new Set(); 23517 runtime.injectedStyles.set(targetDocument, injectedStyles); 23518 } 23519 if (injectedStyles.has(hash)) { 23520 return; 23521 } 23522 if (documentContainsStyleHash31(targetDocument, hash)) { 23523 injectedStyles.add(hash); 23524 return; 23525 } 23526 const style = targetDocument.createElement("style"); 23527 style.setAttribute(STYLE_HASH_ATTRIBUTE31, hash); 23528 style.appendChild(targetDocument.createTextNode(css)); 23529 targetDocument.head.appendChild(style); 23530 injectedStyles.add(hash); 23531 } 23532 function registerDocument31(targetDocument) { 23533 const runtime = getRuntime31(); 23534 runtime.documents.set( 23535 targetDocument, 23536 (runtime.documents.get(targetDocument) ?? 0) + 1 23537 ); 23538 for (const [hash, css] of runtime.styles) { 23539 injectStyle31(targetDocument, hash, css); 23540 } 23541 return () => { 23542 const count = runtime.documents.get(targetDocument); 23543 if (count === void 0) { 23544 return; 23545 } 23546 if (count <= 1) { 23547 runtime.documents.delete(targetDocument); 23548 return; 23549 } 23550 runtime.documents.set(targetDocument, count - 1); 23551 }; 23552 } 23553 function registerStyle31(hash, css) { 23554 const runtime = getRuntime31(); 23555 runtime.styles.set(hash, css); 23556 for (const targetDocument of runtime.documents.keys()) { 23557 injectStyle31(targetDocument, hash, css); 23558 } 23559 } 23560 if (typeof process === "undefined" || true) { 23561 registerStyle31("d39dd78fbb", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger[data-side=none] ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{--_wp-ui-popup-selection-offset:0px;color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px);&:has(.a3adcfd0b73ffd40__item-icon){--_wp-ui-popup-selection-offset:calc(var(--wpds-dimension-size-2xs, 16px) + var(--wpds-dimension-gap-xs, 4px) - var(--wpds-dimension-padding-xs, 4px))}}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-sm,24px);padding-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));padding-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset))}.be89a1df0fe77bd2__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));margin-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset));@media (forced-colors:active){background-color:CanvasText}}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline:var(--wp-ui-popup-item-padding-inline);user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&:has(>.a3adcfd0b73ffd40__item-icon){align-content:center;align-items:start;display:grid;grid-template-columns:auto minmax(0,1fr);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([data-disabled]){background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&[data-disabled]{background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);pointer-events:none}._92fbe4765dfad5ee__item-indicator-icon{translate:0 1px}._74465fc7e8ecea1a__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._41f0dd875c005a48__item-text{display:flex;flex-direction:column;min-width:0}._12335b76ada0b1f5__item-label{--_gcd-heading-color:currentColor;min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[data-disabled] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([data-disabled]) ._160635254c702623__item-description{--_gcd-heading-color:currentColor;color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}'); 23562 } 23563 var item_popup_default8 = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "item-icon": "a3adcfd0b73ffd40__item-icon", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "separator": "be89a1df0fe77bd2__separator", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-content": "_74465fc7e8ecea1a__item-content", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" }; 23564 if (typeof process === "undefined" || true) { 23565 registerStyle31("aaac8c315e", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._0ab863136fb95530__positioner{z-index:var(--wp-ui-select-z-index,initial)}.a9ab07efb9ef413f__list{display:block;min-block-size:0;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}}}"); 23566 } 23567 var style_default24 = { "positioner": "_0ab863136fb95530__positioner", "list": "a9ab07efb9ef413f__list" }; 23568 var Popup3 = (0, import_element55.forwardRef)( 23569 function UnforwardedPopup({ className, portal, positioner, width, children, ...restProps }, ref) { 23570 const popupContent = /* @__PURE__ */ (0, import_jsx_runtime110.jsx)( 23571 index_parts_exports3.Popup, 23572 { 23573 ref, 23574 className: clsx_default( 23575 item_popup_default8.popup, 23576 getItemPopupWidthClassName(width), 23577 className 23578 ), 23579 ...restProps, 23580 children: /* @__PURE__ */ (0, import_jsx_runtime110.jsx)( 23581 index_parts_exports3.List, 23582 { 23583 className: clsx_default( 23584 item_popup_default8["list-chrome"], 23585 style_default24.list 23586 ), 23587 children 23588 } 23589 ) 23590 } 23591 ); 23592 const positionedPopup = renderSlotWithChildren( 23593 positioner, 23594 /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(Positioner3, {}), 23595 popupContent 23596 ); 23597 return renderSlotWithChildren(portal, /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(Portal3, {}), positionedPopup); 23598 } 23599 ); 23600 23601 // packages/ui/build-module/form/primitives/select/root.mjs 23602 var import_jsx_runtime111 = __toESM(require_jsx_runtime(), 1); 23603 function Root3(props) { 23604 return /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(DirectionProvider3, { children: /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(index_parts_exports3.Root, { ...props }) }); 23605 } 23606 23607 // packages/ui/build-module/form/primitives/select/separator.mjs 23608 var import_element56 = __toESM(require_element(), 1); 23609 var import_jsx_runtime112 = __toESM(require_jsx_runtime(), 1); 23610 var STYLE_HASH_ATTRIBUTE32 = "data-wp-hash"; 23611 function getRuntime32() { 23612 const globalScope = globalThis; 23613 if (globalScope.__wpStyleRuntime) { 23614 return globalScope.__wpStyleRuntime; 23615 } 23616 globalScope.__wpStyleRuntime = { 23617 documents: /* @__PURE__ */ new Map(), 23618 styles: /* @__PURE__ */ new Map(), 23619 injectedStyles: /* @__PURE__ */ new WeakMap() 23620 }; 23621 if (typeof document !== "undefined") { 23622 registerDocument32(document); 23623 } 23624 return globalScope.__wpStyleRuntime; 23625 } 23626 function documentContainsStyleHash32(targetDocument, hash) { 23627 if (!targetDocument.head) { 23628 return false; 23629 } 23630 for (const style of targetDocument.head.querySelectorAll( 23631 `style[$STYLE_HASH_ATTRIBUTE32}]` 23632 )) { 23633 if (style.getAttribute(STYLE_HASH_ATTRIBUTE32) === hash) { 23634 return true; 23635 } 23636 } 23637 return false; 23638 } 23639 function injectStyle32(targetDocument, hash, css) { 23640 if (!targetDocument.head) { 23641 return; 23642 } 23643 const runtime = getRuntime32(); 23644 let injectedStyles = runtime.injectedStyles.get(targetDocument); 23645 if (!injectedStyles) { 23646 injectedStyles = /* @__PURE__ */ new Set(); 23647 runtime.injectedStyles.set(targetDocument, injectedStyles); 23648 } 23649 if (injectedStyles.has(hash)) { 23650 return; 23651 } 23652 if (documentContainsStyleHash32(targetDocument, hash)) { 23653 injectedStyles.add(hash); 23654 return; 23655 } 23656 const style = targetDocument.createElement("style"); 23657 style.setAttribute(STYLE_HASH_ATTRIBUTE32, hash); 23658 style.appendChild(targetDocument.createTextNode(css)); 23659 targetDocument.head.appendChild(style); 23660 injectedStyles.add(hash); 23661 } 23662 function registerDocument32(targetDocument) { 23663 const runtime = getRuntime32(); 23664 runtime.documents.set( 23665 targetDocument, 23666 (runtime.documents.get(targetDocument) ?? 0) + 1 23667 ); 23668 for (const [hash, css] of runtime.styles) { 23669 injectStyle32(targetDocument, hash, css); 23670 } 23671 return () => { 23672 const count = runtime.documents.get(targetDocument); 23673 if (count === void 0) { 23674 return; 23675 } 23676 if (count <= 1) { 23677 runtime.documents.delete(targetDocument); 23678 return; 23679 } 23680 runtime.documents.set(targetDocument, count - 1); 23681 }; 23682 } 23683 function registerStyle32(hash, css) { 23684 const runtime = getRuntime32(); 23685 runtime.styles.set(hash, css); 23686 for (const targetDocument of runtime.documents.keys()) { 23687 injectStyle32(targetDocument, hash, css); 23688 } 23689 } 23690 if (typeof process === "undefined" || true) { 23691 registerStyle32("d39dd78fbb", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger[data-side=none] ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{--_wp-ui-popup-selection-offset:0px;color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px);&:has(.a3adcfd0b73ffd40__item-icon){--_wp-ui-popup-selection-offset:calc(var(--wpds-dimension-size-2xs, 16px) + var(--wpds-dimension-gap-xs, 4px) - var(--wpds-dimension-padding-xs, 4px))}}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-sm,24px);padding-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));padding-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset))}.be89a1df0fe77bd2__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));margin-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset));@media (forced-colors:active){background-color:CanvasText}}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline:var(--wp-ui-popup-item-padding-inline);user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&:has(>.a3adcfd0b73ffd40__item-icon){align-content:center;align-items:start;display:grid;grid-template-columns:auto minmax(0,1fr);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([data-disabled]){background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&[data-disabled]{background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);pointer-events:none}._92fbe4765dfad5ee__item-indicator-icon{translate:0 1px}._74465fc7e8ecea1a__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._41f0dd875c005a48__item-text{display:flex;flex-direction:column;min-width:0}._12335b76ada0b1f5__item-label{--_gcd-heading-color:currentColor;min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[data-disabled] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([data-disabled]) ._160635254c702623__item-description{--_gcd-heading-color:currentColor;color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}'); 23692 } 23693 var item_popup_default9 = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "item-icon": "a3adcfd0b73ffd40__item-icon", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "separator": "be89a1df0fe77bd2__separator", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-content": "_74465fc7e8ecea1a__item-content", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" }; 23694 var Separator3 = (0, import_element56.forwardRef)( 23695 function SelectSeparator2({ 23696 className, 23697 orientation: _orientation, 23698 ...props 23699 }, ref) { 23700 return /* @__PURE__ */ (0, import_jsx_runtime112.jsx)( 23701 index_parts_exports3.Separator, 23702 { 23703 ref, 23704 className: clsx_default(item_popup_default9.separator, className), 23705 ...props 23706 } 23707 ); 23708 } 23709 ); 23710 23711 // packages/ui/build-module/form/primitives/select/trigger.mjs 23712 var import_element57 = __toESM(require_element(), 1); 23713 var import_i18n5 = __toESM(require_i18n(), 1); 23714 var import_jsx_runtime113 = __toESM(require_jsx_runtime(), 1); 23715 var STYLE_HASH_ATTRIBUTE33 = "data-wp-hash"; 23716 function getRuntime33() { 23717 const globalScope = globalThis; 23718 if (globalScope.__wpStyleRuntime) { 23719 return globalScope.__wpStyleRuntime; 23720 } 23721 globalScope.__wpStyleRuntime = { 23722 documents: /* @__PURE__ */ new Map(), 23723 styles: /* @__PURE__ */ new Map(), 23724 injectedStyles: /* @__PURE__ */ new WeakMap() 23725 }; 23726 if (typeof document !== "undefined") { 23727 registerDocument33(document); 23728 } 23729 return globalScope.__wpStyleRuntime; 23730 } 23731 function documentContainsStyleHash33(targetDocument, hash) { 23732 if (!targetDocument.head) { 23733 return false; 23734 } 23735 for (const style of targetDocument.head.querySelectorAll( 23736 `style[$STYLE_HASH_ATTRIBUTE33}]` 23737 )) { 23738 if (style.getAttribute(STYLE_HASH_ATTRIBUTE33) === hash) { 23739 return true; 23740 } 23741 } 23742 return false; 23743 } 23744 function injectStyle33(targetDocument, hash, css) { 23745 if (!targetDocument.head) { 23746 return; 23747 } 23748 const runtime = getRuntime33(); 23749 let injectedStyles = runtime.injectedStyles.get(targetDocument); 23750 if (!injectedStyles) { 23751 injectedStyles = /* @__PURE__ */ new Set(); 23752 runtime.injectedStyles.set(targetDocument, injectedStyles); 23753 } 23754 if (injectedStyles.has(hash)) { 23755 return; 23756 } 23757 if (documentContainsStyleHash33(targetDocument, hash)) { 23758 injectedStyles.add(hash); 23759 return; 23760 } 23761 const style = targetDocument.createElement("style"); 23762 style.setAttribute(STYLE_HASH_ATTRIBUTE33, hash); 23763 style.appendChild(targetDocument.createTextNode(css)); 23764 targetDocument.head.appendChild(style); 23765 injectedStyles.add(hash); 23766 } 23767 function registerDocument33(targetDocument) { 23768 const runtime = getRuntime33(); 23769 runtime.documents.set( 23770 targetDocument, 23771 (runtime.documents.get(targetDocument) ?? 0) + 1 23772 ); 23773 for (const [hash, css] of runtime.styles) { 23774 injectStyle33(targetDocument, hash, css); 23775 } 23776 return () => { 23777 const count = runtime.documents.get(targetDocument); 23778 if (count === void 0) { 23779 return; 23780 } 23781 if (count <= 1) { 23782 runtime.documents.delete(targetDocument); 23783 return; 23784 } 23785 runtime.documents.set(targetDocument, count - 1); 23786 }; 23787 } 23788 function registerStyle33(hash, css) { 23789 const runtime = getRuntime33(); 23790 runtime.styles.set(hash, css); 23791 for (const targetDocument of runtime.documents.keys()) { 23792 injectStyle33(targetDocument, hash, css); 23793 } 23794 } 23795 if (typeof process === "undefined" || true) { 23796 registerStyle33("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))}}}"); 23797 } 23798 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" }; 23799 if (typeof process === "undefined" || true) { 23800 registerStyle33("8fc4b25e27", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._6e4e0445ef20426b__trigger-wrapper{&.fa98c865fb77e675__is-minimal{width:fit-content}}._7893295e3f6d1af7__trigger{align-items:center;background-color:transparent;border:none;color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);display:flex;font-family:inherit;font-size:inherit;gap:var(--wpds-dimension-gap-xs,4px);justify-content:space-between;line-height:1.4;padding-block:4px;padding-inline-end:calc(var(--wp-ui-input-layout-padding-inline) - 4px);padding-inline-start:var(--wp-ui-input-layout-padding-inline);text-align:start;user-select:none;width:100%;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&.fa98c865fb77e675__is-minimal{width:auto}&:focus{outline:none}&[data-disabled]{background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d)}}.e760c9339965ce84__trigger-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;._7893295e3f6d1af7__trigger[data-placeholder]:not([data-disabled]) &{color:var(--wpds-color-foreground-interactive-neutral-weak,#707070)}}._308bc63e43681f99__trigger-caret{flex:0 0 auto}}}"); 23801 } 23802 var select_trigger_default = { "trigger-wrapper": "_6e4e0445ef20426b__trigger-wrapper", "is-minimal": "fa98c865fb77e675__is-minimal", "trigger": "_7893295e3f6d1af7__trigger", "trigger-value": "e760c9339965ce84__trigger-value", "trigger-caret": "_308bc63e43681f99__trigger-caret" }; 23803 var Trigger3 = (0, import_element57.forwardRef)( 23804 function UnforwardedTrigger({ 23805 className, 23806 size: size4, 23807 variant, 23808 children, 23809 placeholder = (0, import_i18n5.__)("Select"), 23810 ...restProps 23811 }, ref) { 23812 return /* @__PURE__ */ (0, import_jsx_runtime113.jsx)( 23813 InputLayout2, 23814 { 23815 className: clsx_default( 23816 focus_module_default2["outset-ring--focus-within-except-active"], 23817 select_trigger_default["trigger-wrapper"], 23818 variant === "minimal" && select_trigger_default["is-minimal"], 23819 className 23820 ), 23821 size: size4, 23822 isBorderless: variant === "minimal", 23823 children: /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)( 23824 index_parts_exports3.Trigger, 23825 { 23826 ...restProps, 23827 className: clsx_default( 23828 select_trigger_default.trigger, 23829 variant === "minimal" && select_trigger_default["is-minimal"] 23830 ), 23831 "data-can-disable-input-layout": true, 23832 ref, 23833 children: [ 23834 /* @__PURE__ */ (0, import_jsx_runtime113.jsx)( 23835 index_parts_exports3.Value, 23836 { 23837 placeholder, 23838 className: select_trigger_default["trigger-value"], 23839 children 23840 } 23841 ), 23842 /* @__PURE__ */ (0, import_jsx_runtime113.jsx)( 23843 Icon, 23844 { 23845 className: select_trigger_default["trigger-caret"], 23846 icon: chevron_down_default, 23847 size: 18 23848 } 23849 ) 23850 ] 23851 } 23852 ) 23853 } 23854 ); 23855 } 23856 ); 23857 23858 // packages/ui/build-module/progress/index.mjs 23859 var progress_exports = {}; 23860 __export(progress_exports, { 23861 Indicator: () => Indicator, 23862 Label: () => Label, 23863 Root: () => Root4, 23864 Track: () => Track, 23865 Value: () => Value 23866 }); 23867 23868 // packages/ui/build-module/progress/root.mjs 23869 var import_element58 = __toESM(require_element(), 1); 23870 var import_i18n6 = __toESM(require_i18n(), 1); 23871 var import_jsx_runtime114 = __toESM(require_jsx_runtime(), 1); 23872 var STYLE_HASH_ATTRIBUTE34 = "data-wp-hash"; 23873 function getRuntime34() { 23874 const globalScope = globalThis; 23875 if (globalScope.__wpStyleRuntime) { 23876 return globalScope.__wpStyleRuntime; 23877 } 23878 globalScope.__wpStyleRuntime = { 23879 documents: /* @__PURE__ */ new Map(), 23880 styles: /* @__PURE__ */ new Map(), 23881 injectedStyles: /* @__PURE__ */ new WeakMap() 23882 }; 23883 if (typeof document !== "undefined") { 23884 registerDocument34(document); 23885 } 23886 return globalScope.__wpStyleRuntime; 23887 } 23888 function documentContainsStyleHash34(targetDocument, hash) { 23889 if (!targetDocument.head) { 23890 return false; 23891 } 23892 for (const style of targetDocument.head.querySelectorAll( 23893 `style[$STYLE_HASH_ATTRIBUTE34}]` 23894 )) { 23895 if (style.getAttribute(STYLE_HASH_ATTRIBUTE34) === hash) { 23896 return true; 23897 } 23898 } 23899 return false; 23900 } 23901 function injectStyle34(targetDocument, hash, css) { 23902 if (!targetDocument.head) { 23903 return; 23904 } 23905 const runtime = getRuntime34(); 23906 let injectedStyles = runtime.injectedStyles.get(targetDocument); 23907 if (!injectedStyles) { 23908 injectedStyles = /* @__PURE__ */ new Set(); 23909 runtime.injectedStyles.set(targetDocument, injectedStyles); 23910 } 23911 if (injectedStyles.has(hash)) { 23912 return; 23913 } 23914 if (documentContainsStyleHash34(targetDocument, hash)) { 23915 injectedStyles.add(hash); 23916 return; 23917 } 23918 const style = targetDocument.createElement("style"); 23919 style.setAttribute(STYLE_HASH_ATTRIBUTE34, hash); 23920 style.appendChild(targetDocument.createTextNode(css)); 23921 targetDocument.head.appendChild(style); 23922 injectedStyles.add(hash); 23923 } 23924 function registerDocument34(targetDocument) { 23925 const runtime = getRuntime34(); 23926 runtime.documents.set( 23927 targetDocument, 23928 (runtime.documents.get(targetDocument) ?? 0) + 1 23929 ); 23930 for (const [hash, css] of runtime.styles) { 23931 injectStyle34(targetDocument, hash, css); 23932 } 23933 return () => { 23934 const count = runtime.documents.get(targetDocument); 23935 if (count === void 0) { 23936 return; 23937 } 23938 if (count <= 1) { 23939 runtime.documents.delete(targetDocument); 23940 return; 23941 } 23942 runtime.documents.set(targetDocument, count - 1); 23943 }; 23944 } 23945 function registerStyle34(hash, css) { 23946 const runtime = getRuntime34(); 23947 runtime.styles.set(hash, css); 23948 for (const targetDocument of runtime.documents.keys()) { 23949 injectStyle34(targetDocument, hash, css); 23950 } 23951 } 23952 if (typeof process === "undefined" || true) { 23953 registerStyle34("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 23954 } 23955 var resets_default12 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; 23956 if (typeof process === "undefined" || true) { 23957 registerStyle34("4fcc1f90de", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._0c8146c357ee3082__root{width:160px}._94b93b4b54f86af8__label,.d444d83093168104__value{color:var(--wpds-color-foreground-content-neutral,#1e1e1e)}.d444d83093168104__value{font-variant-numeric:tabular-nums}.f08088bb628044ff__track{background-color:var(--wpds-color-background-track-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-lg,8px);height:1.5px;overflow:hidden;position:relative;width:100%;@media (forced-colors:active){outline:var(--wpds-border-width-xs,1px) solid CanvasText;outline-offset:var(--wpds-border-width-xs,1px)}}._288dbe846a740467__indicator{background-color:currentColor;border-radius:inherit;color:var(--wpds-color-background-thumb-neutral,#1e1e1e);height:100%;inset-block-start:0;position:absolute;@media not (prefers-reduced-motion){transition:width var(--wpds-motion-duration-xl,.4s) ease-in-out}&[data-indeterminate]{animation:_412bd854b144d653__progress-slide 1.5s ease-in-out infinite;transition:none;width:50%;@media (prefers-reduced-motion:reduce){animation-duration:3s;animation-timing-function:steps(4)}}}@media (forced-colors:active){._288dbe846a740467__indicator{background-color:CanvasText;forced-color-adjust:none}}@keyframes _412bd854b144d653__progress-slide{0%{inset-inline-start:-50%}to{inset-inline-start:100%}}}}"); 23958 } 23959 var style_default25 = { "root": "_0c8146c357ee3082__root", "label": "_94b93b4b54f86af8__label", "value": "d444d83093168104__value", "track": "f08088bb628044ff__track", "indicator": "_288dbe846a740467__indicator", "progress-slide": "_412bd854b144d653__progress-slide" }; 23960 var DEFAULT_RENDER = (props) => /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(Stack, { ...props, direction: "column", gap: "sm" }); 23961 var Root4 = (0, import_element58.forwardRef)(function ProgressRoot3({ className, render = DEFAULT_RENDER, ...props }, ref) { 23962 return /* @__PURE__ */ (0, import_jsx_runtime114.jsx)( 23963 index_parts_exports2.Root, 23964 { 23965 ref, 23966 render, 23967 getAriaValueText: (formattedValue) => formattedValue || (0, import_i18n6.__)("In progress"), 23968 className: clsx_default( 23969 resets_default12["box-sizing"], 23970 style_default25.root, 23971 className 23972 ), 23973 ...props 23974 } 23975 ); 23976 }); 23977 23978 // packages/ui/build-module/progress/track.mjs 23979 var import_element59 = __toESM(require_element(), 1); 23980 var import_jsx_runtime115 = __toESM(require_jsx_runtime(), 1); 23981 var STYLE_HASH_ATTRIBUTE35 = "data-wp-hash"; 23982 function getRuntime35() { 23983 const globalScope = globalThis; 23984 if (globalScope.__wpStyleRuntime) { 23985 return globalScope.__wpStyleRuntime; 23986 } 23987 globalScope.__wpStyleRuntime = { 23988 documents: /* @__PURE__ */ new Map(), 23989 styles: /* @__PURE__ */ new Map(), 23990 injectedStyles: /* @__PURE__ */ new WeakMap() 23991 }; 23992 if (typeof document !== "undefined") { 23993 registerDocument35(document); 23994 } 23995 return globalScope.__wpStyleRuntime; 23996 } 23997 function documentContainsStyleHash35(targetDocument, hash) { 23998 if (!targetDocument.head) { 23999 return false; 24000 } 24001 for (const style of targetDocument.head.querySelectorAll( 24002 `style[$STYLE_HASH_ATTRIBUTE35}]` 24003 )) { 24004 if (style.getAttribute(STYLE_HASH_ATTRIBUTE35) === hash) { 24005 return true; 24006 } 24007 } 24008 return false; 24009 } 24010 function injectStyle35(targetDocument, hash, css) { 24011 if (!targetDocument.head) { 24012 return; 24013 } 24014 const runtime = getRuntime35(); 24015 let injectedStyles = runtime.injectedStyles.get(targetDocument); 24016 if (!injectedStyles) { 24017 injectedStyles = /* @__PURE__ */ new Set(); 24018 runtime.injectedStyles.set(targetDocument, injectedStyles); 24019 } 24020 if (injectedStyles.has(hash)) { 24021 return; 24022 } 24023 if (documentContainsStyleHash35(targetDocument, hash)) { 24024 injectedStyles.add(hash); 24025 return; 24026 } 24027 const style = targetDocument.createElement("style"); 24028 style.setAttribute(STYLE_HASH_ATTRIBUTE35, hash); 24029 style.appendChild(targetDocument.createTextNode(css)); 24030 targetDocument.head.appendChild(style); 24031 injectedStyles.add(hash); 24032 } 24033 function registerDocument35(targetDocument) { 24034 const runtime = getRuntime35(); 24035 runtime.documents.set( 24036 targetDocument, 24037 (runtime.documents.get(targetDocument) ?? 0) + 1 24038 ); 24039 for (const [hash, css] of runtime.styles) { 24040 injectStyle35(targetDocument, hash, css); 24041 } 24042 return () => { 24043 const count = runtime.documents.get(targetDocument); 24044 if (count === void 0) { 24045 return; 24046 } 24047 if (count <= 1) { 24048 runtime.documents.delete(targetDocument); 24049 return; 24050 } 24051 runtime.documents.set(targetDocument, count - 1); 24052 }; 24053 } 24054 function registerStyle35(hash, css) { 24055 const runtime = getRuntime35(); 24056 runtime.styles.set(hash, css); 24057 for (const targetDocument of runtime.documents.keys()) { 24058 injectStyle35(targetDocument, hash, css); 24059 } 24060 } 24061 if (typeof process === "undefined" || true) { 24062 registerStyle35("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 24063 } 24064 var resets_default13 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; 24065 if (typeof process === "undefined" || true) { 24066 registerStyle35("4fcc1f90de", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._0c8146c357ee3082__root{width:160px}._94b93b4b54f86af8__label,.d444d83093168104__value{color:var(--wpds-color-foreground-content-neutral,#1e1e1e)}.d444d83093168104__value{font-variant-numeric:tabular-nums}.f08088bb628044ff__track{background-color:var(--wpds-color-background-track-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-lg,8px);height:1.5px;overflow:hidden;position:relative;width:100%;@media (forced-colors:active){outline:var(--wpds-border-width-xs,1px) solid CanvasText;outline-offset:var(--wpds-border-width-xs,1px)}}._288dbe846a740467__indicator{background-color:currentColor;border-radius:inherit;color:var(--wpds-color-background-thumb-neutral,#1e1e1e);height:100%;inset-block-start:0;position:absolute;@media not (prefers-reduced-motion){transition:width var(--wpds-motion-duration-xl,.4s) ease-in-out}&[data-indeterminate]{animation:_412bd854b144d653__progress-slide 1.5s ease-in-out infinite;transition:none;width:50%;@media (prefers-reduced-motion:reduce){animation-duration:3s;animation-timing-function:steps(4)}}}@media (forced-colors:active){._288dbe846a740467__indicator{background-color:CanvasText;forced-color-adjust:none}}@keyframes _412bd854b144d653__progress-slide{0%{inset-inline-start:-50%}to{inset-inline-start:100%}}}}"); 24067 } 24068 var style_default26 = { "root": "_0c8146c357ee3082__root", "label": "_94b93b4b54f86af8__label", "value": "d444d83093168104__value", "track": "f08088bb628044ff__track", "indicator": "_288dbe846a740467__indicator", "progress-slide": "_412bd854b144d653__progress-slide" }; 24069 var Track = (0, import_element59.forwardRef)(function ProgressTrack3({ className, ...props }, ref) { 24070 return /* @__PURE__ */ (0, import_jsx_runtime115.jsx)( 24071 index_parts_exports2.Track, 24072 { 24073 ref, 24074 className: clsx_default( 24075 resets_default13["box-sizing"], 24076 style_default26.track, 24077 className 24078 ), 24079 ...props 24080 } 24081 ); 24082 }); 24083 24084 // packages/ui/build-module/progress/indicator.mjs 24085 var import_element60 = __toESM(require_element(), 1); 24086 var import_jsx_runtime116 = __toESM(require_jsx_runtime(), 1); 24087 var STYLE_HASH_ATTRIBUTE36 = "data-wp-hash"; 24088 function getRuntime36() { 24089 const globalScope = globalThis; 24090 if (globalScope.__wpStyleRuntime) { 24091 return globalScope.__wpStyleRuntime; 24092 } 24093 globalScope.__wpStyleRuntime = { 24094 documents: /* @__PURE__ */ new Map(), 24095 styles: /* @__PURE__ */ new Map(), 24096 injectedStyles: /* @__PURE__ */ new WeakMap() 24097 }; 24098 if (typeof document !== "undefined") { 24099 registerDocument36(document); 24100 } 24101 return globalScope.__wpStyleRuntime; 24102 } 24103 function documentContainsStyleHash36(targetDocument, hash) { 24104 if (!targetDocument.head) { 24105 return false; 24106 } 24107 for (const style of targetDocument.head.querySelectorAll( 24108 `style[$STYLE_HASH_ATTRIBUTE36}]` 24109 )) { 24110 if (style.getAttribute(STYLE_HASH_ATTRIBUTE36) === hash) { 24111 return true; 24112 } 24113 } 24114 return false; 24115 } 24116 function injectStyle36(targetDocument, hash, css) { 24117 if (!targetDocument.head) { 24118 return; 24119 } 24120 const runtime = getRuntime36(); 24121 let injectedStyles = runtime.injectedStyles.get(targetDocument); 24122 if (!injectedStyles) { 24123 injectedStyles = /* @__PURE__ */ new Set(); 24124 runtime.injectedStyles.set(targetDocument, injectedStyles); 24125 } 24126 if (injectedStyles.has(hash)) { 24127 return; 24128 } 24129 if (documentContainsStyleHash36(targetDocument, hash)) { 24130 injectedStyles.add(hash); 24131 return; 24132 } 24133 const style = targetDocument.createElement("style"); 24134 style.setAttribute(STYLE_HASH_ATTRIBUTE36, hash); 24135 style.appendChild(targetDocument.createTextNode(css)); 24136 targetDocument.head.appendChild(style); 24137 injectedStyles.add(hash); 24138 } 24139 function registerDocument36(targetDocument) { 24140 const runtime = getRuntime36(); 24141 runtime.documents.set( 24142 targetDocument, 24143 (runtime.documents.get(targetDocument) ?? 0) + 1 24144 ); 24145 for (const [hash, css] of runtime.styles) { 24146 injectStyle36(targetDocument, hash, css); 24147 } 24148 return () => { 24149 const count = runtime.documents.get(targetDocument); 24150 if (count === void 0) { 24151 return; 24152 } 24153 if (count <= 1) { 24154 runtime.documents.delete(targetDocument); 24155 return; 24156 } 24157 runtime.documents.set(targetDocument, count - 1); 24158 }; 24159 } 24160 function registerStyle36(hash, css) { 24161 const runtime = getRuntime36(); 24162 runtime.styles.set(hash, css); 24163 for (const targetDocument of runtime.documents.keys()) { 24164 injectStyle36(targetDocument, hash, css); 24165 } 24166 } 24167 if (typeof process === "undefined" || true) { 24168 registerStyle36("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 24169 } 24170 var resets_default14 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; 24171 if (typeof process === "undefined" || true) { 24172 registerStyle36("4fcc1f90de", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._0c8146c357ee3082__root{width:160px}._94b93b4b54f86af8__label,.d444d83093168104__value{color:var(--wpds-color-foreground-content-neutral,#1e1e1e)}.d444d83093168104__value{font-variant-numeric:tabular-nums}.f08088bb628044ff__track{background-color:var(--wpds-color-background-track-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-lg,8px);height:1.5px;overflow:hidden;position:relative;width:100%;@media (forced-colors:active){outline:var(--wpds-border-width-xs,1px) solid CanvasText;outline-offset:var(--wpds-border-width-xs,1px)}}._288dbe846a740467__indicator{background-color:currentColor;border-radius:inherit;color:var(--wpds-color-background-thumb-neutral,#1e1e1e);height:100%;inset-block-start:0;position:absolute;@media not (prefers-reduced-motion){transition:width var(--wpds-motion-duration-xl,.4s) ease-in-out}&[data-indeterminate]{animation:_412bd854b144d653__progress-slide 1.5s ease-in-out infinite;transition:none;width:50%;@media (prefers-reduced-motion:reduce){animation-duration:3s;animation-timing-function:steps(4)}}}@media (forced-colors:active){._288dbe846a740467__indicator{background-color:CanvasText;forced-color-adjust:none}}@keyframes _412bd854b144d653__progress-slide{0%{inset-inline-start:-50%}to{inset-inline-start:100%}}}}"); 24173 } 24174 var style_default27 = { "root": "_0c8146c357ee3082__root", "label": "_94b93b4b54f86af8__label", "value": "d444d83093168104__value", "track": "f08088bb628044ff__track", "indicator": "_288dbe846a740467__indicator", "progress-slide": "_412bd854b144d653__progress-slide" }; 24175 var Indicator = (0, import_element60.forwardRef)( 24176 function ProgressIndicator3({ color, className, style, ...props }, ref) { 24177 return /* @__PURE__ */ (0, import_jsx_runtime116.jsx)( 24178 index_parts_exports2.Indicator, 24179 { 24180 ref, 24181 style: color === void 0 ? style : { ...style, color }, 24182 className: clsx_default( 24183 resets_default14["box-sizing"], 24184 style_default27.indicator, 24185 className 24186 ), 24187 ...props 24188 } 24189 ); 24190 } 24191 ); 24192 24193 // packages/ui/build-module/progress/label.mjs 24194 var import_element61 = __toESM(require_element(), 1); 24195 var import_jsx_runtime117 = __toESM(require_jsx_runtime(), 1); 24196 var STYLE_HASH_ATTRIBUTE37 = "data-wp-hash"; 24197 function getRuntime37() { 24198 const globalScope = globalThis; 24199 if (globalScope.__wpStyleRuntime) { 24200 return globalScope.__wpStyleRuntime; 24201 } 24202 globalScope.__wpStyleRuntime = { 24203 documents: /* @__PURE__ */ new Map(), 24204 styles: /* @__PURE__ */ new Map(), 24205 injectedStyles: /* @__PURE__ */ new WeakMap() 24206 }; 24207 if (typeof document !== "undefined") { 24208 registerDocument37(document); 24209 } 24210 return globalScope.__wpStyleRuntime; 24211 } 24212 function documentContainsStyleHash37(targetDocument, hash) { 24213 if (!targetDocument.head) { 24214 return false; 24215 } 24216 for (const style of targetDocument.head.querySelectorAll( 24217 `style[$STYLE_HASH_ATTRIBUTE37}]` 24218 )) { 24219 if (style.getAttribute(STYLE_HASH_ATTRIBUTE37) === hash) { 24220 return true; 24221 } 24222 } 24223 return false; 24224 } 24225 function injectStyle37(targetDocument, hash, css) { 24226 if (!targetDocument.head) { 24227 return; 24228 } 24229 const runtime = getRuntime37(); 24230 let injectedStyles = runtime.injectedStyles.get(targetDocument); 24231 if (!injectedStyles) { 24232 injectedStyles = /* @__PURE__ */ new Set(); 24233 runtime.injectedStyles.set(targetDocument, injectedStyles); 24234 } 24235 if (injectedStyles.has(hash)) { 24236 return; 24237 } 24238 if (documentContainsStyleHash37(targetDocument, hash)) { 24239 injectedStyles.add(hash); 24240 return; 24241 } 24242 const style = targetDocument.createElement("style"); 24243 style.setAttribute(STYLE_HASH_ATTRIBUTE37, hash); 24244 style.appendChild(targetDocument.createTextNode(css)); 24245 targetDocument.head.appendChild(style); 24246 injectedStyles.add(hash); 24247 } 24248 function registerDocument37(targetDocument) { 24249 const runtime = getRuntime37(); 24250 runtime.documents.set( 24251 targetDocument, 24252 (runtime.documents.get(targetDocument) ?? 0) + 1 24253 ); 24254 for (const [hash, css] of runtime.styles) { 24255 injectStyle37(targetDocument, hash, css); 24256 } 24257 return () => { 24258 const count = runtime.documents.get(targetDocument); 24259 if (count === void 0) { 24260 return; 24261 } 24262 if (count <= 1) { 24263 runtime.documents.delete(targetDocument); 24264 return; 24265 } 24266 runtime.documents.set(targetDocument, count - 1); 24267 }; 24268 } 24269 function registerStyle37(hash, css) { 24270 const runtime = getRuntime37(); 24271 runtime.styles.set(hash, css); 24272 for (const targetDocument of runtime.documents.keys()) { 24273 injectStyle37(targetDocument, hash, css); 24274 } 24275 } 24276 if (typeof process === "undefined" || true) { 24277 registerStyle37("4fcc1f90de", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._0c8146c357ee3082__root{width:160px}._94b93b4b54f86af8__label,.d444d83093168104__value{color:var(--wpds-color-foreground-content-neutral,#1e1e1e)}.d444d83093168104__value{font-variant-numeric:tabular-nums}.f08088bb628044ff__track{background-color:var(--wpds-color-background-track-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-lg,8px);height:1.5px;overflow:hidden;position:relative;width:100%;@media (forced-colors:active){outline:var(--wpds-border-width-xs,1px) solid CanvasText;outline-offset:var(--wpds-border-width-xs,1px)}}._288dbe846a740467__indicator{background-color:currentColor;border-radius:inherit;color:var(--wpds-color-background-thumb-neutral,#1e1e1e);height:100%;inset-block-start:0;position:absolute;@media not (prefers-reduced-motion){transition:width var(--wpds-motion-duration-xl,.4s) ease-in-out}&[data-indeterminate]{animation:_412bd854b144d653__progress-slide 1.5s ease-in-out infinite;transition:none;width:50%;@media (prefers-reduced-motion:reduce){animation-duration:3s;animation-timing-function:steps(4)}}}@media (forced-colors:active){._288dbe846a740467__indicator{background-color:CanvasText;forced-color-adjust:none}}@keyframes _412bd854b144d653__progress-slide{0%{inset-inline-start:-50%}to{inset-inline-start:100%}}}}"); 24278 } 24279 var style_default28 = { "root": "_0c8146c357ee3082__root", "label": "_94b93b4b54f86af8__label", "value": "d444d83093168104__value", "track": "f08088bb628044ff__track", "indicator": "_288dbe846a740467__indicator", "progress-slide": "_412bd854b144d653__progress-slide" }; 24280 var DEFAULT_RENDER2 = /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(Text, {}); 24281 var Label = (0, import_element61.forwardRef)(function ProgressLabel3({ className, render = DEFAULT_RENDER2, ...props }, ref) { 24282 return /* @__PURE__ */ (0, import_jsx_runtime117.jsx)( 24283 index_parts_exports2.Label, 24284 { 24285 ref, 24286 render, 24287 className: clsx_default(style_default28.label, className), 24288 ...props 24289 } 24290 ); 24291 }); 24292 24293 // packages/ui/build-module/progress/value.mjs 24294 var import_element62 = __toESM(require_element(), 1); 24295 var import_jsx_runtime118 = __toESM(require_jsx_runtime(), 1); 24296 var STYLE_HASH_ATTRIBUTE38 = "data-wp-hash"; 24297 function getRuntime38() { 24298 const globalScope = globalThis; 24299 if (globalScope.__wpStyleRuntime) { 24300 return globalScope.__wpStyleRuntime; 24301 } 24302 globalScope.__wpStyleRuntime = { 24303 documents: /* @__PURE__ */ new Map(), 24304 styles: /* @__PURE__ */ new Map(), 24305 injectedStyles: /* @__PURE__ */ new WeakMap() 24306 }; 24307 if (typeof document !== "undefined") { 24308 registerDocument38(document); 24309 } 24310 return globalScope.__wpStyleRuntime; 24311 } 24312 function documentContainsStyleHash38(targetDocument, hash) { 24313 if (!targetDocument.head) { 24314 return false; 24315 } 24316 for (const style of targetDocument.head.querySelectorAll( 24317 `style[$STYLE_HASH_ATTRIBUTE38}]` 24318 )) { 24319 if (style.getAttribute(STYLE_HASH_ATTRIBUTE38) === hash) { 24320 return true; 24321 } 24322 } 24323 return false; 24324 } 24325 function injectStyle38(targetDocument, hash, css) { 24326 if (!targetDocument.head) { 24327 return; 24328 } 24329 const runtime = getRuntime38(); 24330 let injectedStyles = runtime.injectedStyles.get(targetDocument); 24331 if (!injectedStyles) { 24332 injectedStyles = /* @__PURE__ */ new Set(); 24333 runtime.injectedStyles.set(targetDocument, injectedStyles); 24334 } 24335 if (injectedStyles.has(hash)) { 24336 return; 24337 } 24338 if (documentContainsStyleHash38(targetDocument, hash)) { 24339 injectedStyles.add(hash); 24340 return; 24341 } 24342 const style = targetDocument.createElement("style"); 24343 style.setAttribute(STYLE_HASH_ATTRIBUTE38, hash); 24344 style.appendChild(targetDocument.createTextNode(css)); 24345 targetDocument.head.appendChild(style); 24346 injectedStyles.add(hash); 24347 } 24348 function registerDocument38(targetDocument) { 24349 const runtime = getRuntime38(); 24350 runtime.documents.set( 24351 targetDocument, 24352 (runtime.documents.get(targetDocument) ?? 0) + 1 24353 ); 24354 for (const [hash, css] of runtime.styles) { 24355 injectStyle38(targetDocument, hash, css); 24356 } 24357 return () => { 24358 const count = runtime.documents.get(targetDocument); 24359 if (count === void 0) { 24360 return; 24361 } 24362 if (count <= 1) { 24363 runtime.documents.delete(targetDocument); 24364 return; 24365 } 24366 runtime.documents.set(targetDocument, count - 1); 24367 }; 24368 } 24369 function registerStyle38(hash, css) { 24370 const runtime = getRuntime38(); 24371 runtime.styles.set(hash, css); 24372 for (const targetDocument of runtime.documents.keys()) { 24373 injectStyle38(targetDocument, hash, css); 24374 } 24375 } 24376 if (typeof process === "undefined" || true) { 24377 registerStyle38("4fcc1f90de", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._0c8146c357ee3082__root{width:160px}._94b93b4b54f86af8__label,.d444d83093168104__value{color:var(--wpds-color-foreground-content-neutral,#1e1e1e)}.d444d83093168104__value{font-variant-numeric:tabular-nums}.f08088bb628044ff__track{background-color:var(--wpds-color-background-track-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-lg,8px);height:1.5px;overflow:hidden;position:relative;width:100%;@media (forced-colors:active){outline:var(--wpds-border-width-xs,1px) solid CanvasText;outline-offset:var(--wpds-border-width-xs,1px)}}._288dbe846a740467__indicator{background-color:currentColor;border-radius:inherit;color:var(--wpds-color-background-thumb-neutral,#1e1e1e);height:100%;inset-block-start:0;position:absolute;@media not (prefers-reduced-motion){transition:width var(--wpds-motion-duration-xl,.4s) ease-in-out}&[data-indeterminate]{animation:_412bd854b144d653__progress-slide 1.5s ease-in-out infinite;transition:none;width:50%;@media (prefers-reduced-motion:reduce){animation-duration:3s;animation-timing-function:steps(4)}}}@media (forced-colors:active){._288dbe846a740467__indicator{background-color:CanvasText;forced-color-adjust:none}}@keyframes _412bd854b144d653__progress-slide{0%{inset-inline-start:-50%}to{inset-inline-start:100%}}}}"); 24378 } 24379 var style_default29 = { "root": "_0c8146c357ee3082__root", "label": "_94b93b4b54f86af8__label", "value": "d444d83093168104__value", "track": "f08088bb628044ff__track", "indicator": "_288dbe846a740467__indicator", "progress-slide": "_412bd854b144d653__progress-slide" }; 24380 var DEFAULT_RENDER3 = /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(Text, {}); 24381 var Value = (0, import_element62.forwardRef)(function ProgressValue3({ className, render = DEFAULT_RENDER3, ...props }, ref) { 24382 return /* @__PURE__ */ (0, import_jsx_runtime118.jsx)( 24383 index_parts_exports2.Value, 24384 { 24385 ref, 24386 render, 24387 className: clsx_default(style_default29.value, className), 24388 ...props 24389 } 24390 ); 24391 }); 24392 24393 // packages/ui/build-module/skeleton/skeleton.mjs 24394 var import_element63 = __toESM(require_element(), 1); 24395 var STYLE_HASH_ATTRIBUTE39 = "data-wp-hash"; 24396 function getRuntime39() { 24397 const globalScope = globalThis; 24398 if (globalScope.__wpStyleRuntime) { 24399 return globalScope.__wpStyleRuntime; 24400 } 24401 globalScope.__wpStyleRuntime = { 24402 documents: /* @__PURE__ */ new Map(), 24403 styles: /* @__PURE__ */ new Map(), 24404 injectedStyles: /* @__PURE__ */ new WeakMap() 24405 }; 24406 if (typeof document !== "undefined") { 24407 registerDocument39(document); 24408 } 24409 return globalScope.__wpStyleRuntime; 24410 } 24411 function documentContainsStyleHash39(targetDocument, hash) { 24412 if (!targetDocument.head) { 24413 return false; 24414 } 24415 for (const style of targetDocument.head.querySelectorAll( 24416 `style[$STYLE_HASH_ATTRIBUTE39}]` 24417 )) { 24418 if (style.getAttribute(STYLE_HASH_ATTRIBUTE39) === hash) { 24419 return true; 24420 } 24421 } 24422 return false; 24423 } 24424 function injectStyle39(targetDocument, hash, css) { 24425 if (!targetDocument.head) { 24426 return; 24427 } 24428 const runtime = getRuntime39(); 24429 let injectedStyles = runtime.injectedStyles.get(targetDocument); 24430 if (!injectedStyles) { 24431 injectedStyles = /* @__PURE__ */ new Set(); 24432 runtime.injectedStyles.set(targetDocument, injectedStyles); 24433 } 24434 if (injectedStyles.has(hash)) { 24435 return; 24436 } 24437 if (documentContainsStyleHash39(targetDocument, hash)) { 24438 injectedStyles.add(hash); 24439 return; 24440 } 24441 const style = targetDocument.createElement("style"); 24442 style.setAttribute(STYLE_HASH_ATTRIBUTE39, hash); 24443 style.appendChild(targetDocument.createTextNode(css)); 24444 targetDocument.head.appendChild(style); 24445 injectedStyles.add(hash); 24446 } 24447 function registerDocument39(targetDocument) { 24448 const runtime = getRuntime39(); 24449 runtime.documents.set( 24450 targetDocument, 24451 (runtime.documents.get(targetDocument) ?? 0) + 1 24452 ); 24453 for (const [hash, css] of runtime.styles) { 24454 injectStyle39(targetDocument, hash, css); 24455 } 24456 return () => { 24457 const count = runtime.documents.get(targetDocument); 24458 if (count === void 0) { 24459 return; 24460 } 24461 if (count <= 1) { 24462 runtime.documents.delete(targetDocument); 24463 return; 24464 } 24465 runtime.documents.set(targetDocument, count - 1); 24466 }; 24467 } 24468 function registerStyle39(hash, css) { 24469 const runtime = getRuntime39(); 24470 runtime.styles.set(hash, css); 24471 for (const targetDocument of runtime.documents.keys()) { 24472 injectStyle39(targetDocument, hash, css); 24473 } 24474 } 24475 if (typeof process === "undefined" || true) { 24476 registerStyle39("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 24477 } 24478 var resets_default15 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; 24479 if (typeof process === "undefined" || true) { 24480 registerStyle39("ed2c39ec90", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.b20cc1690085c2f0__skeleton{background-color:var(--wpds-color-background-surface-neutral-weak,#f4f4f4);display:block;@media (forced-colors:active){border:var(--wpds-border-width-xs,1px) solid CanvasText}}._9b143194fdb45f93__pulse{@media not (prefers-reduced-motion){animation:e2b9fe0690281bc8__skeleton-pulse 1.5s ease-in-out infinite}}@keyframes e2b9fe0690281bc8__skeleton-pulse{0%,to{opacity:1}50%{opacity:.4}}}}"); 24481 } 24482 var style_default30 = { "skeleton": "b20cc1690085c2f0__skeleton", "pulse": "_9b143194fdb45f93__pulse", "skeleton-pulse": "e2b9fe0690281bc8__skeleton-pulse" }; 24483 var Skeleton = (0, import_element63.forwardRef)( 24484 function UnforwardedSkeleton({ render, ...props }, ref) { 24485 return useRender({ 24486 render, 24487 ref, 24488 props: mergeProps( 24489 { 24490 className: clsx_default( 24491 style_default30.skeleton, 24492 style_default30.pulse, 24493 resets_default15["box-sizing"] 24494 ), 24495 // Decorative by default; consumers mark the loading 24496 // region with aria-busy / role="status". 24497 "aria-hidden": true 24498 }, 24499 props 24500 ) 24501 }); 24502 } 24503 ); 24504 24505 // packages/admin-ui/build-module/navigable-region/index.mjs 24506 var import_element64 = __toESM(require_element(), 1); 24507 var import_jsx_runtime119 = __toESM(require_jsx_runtime(), 1); 24508 var NavigableRegion = (0, import_element64.forwardRef)( 24509 ({ children, className, ariaLabel, as: Tag = "div", ...props }, ref) => { 24510 return /* @__PURE__ */ (0, import_jsx_runtime119.jsx)( 24511 Tag, 24512 { 24513 ref, 24514 className: clsx_default("admin-ui-navigable-region", className), 24515 "aria-label": ariaLabel, 24516 role: "region", 24517 tabIndex: "-1", 24518 ...props, 24519 children 24520 } 24521 ); 24522 } 24523 ); 24524 NavigableRegion.displayName = "NavigableRegion"; 24525 var navigable_region_default = NavigableRegion; 24526 24527 // packages/admin-ui/build-module/navigation/index.mjs 24528 var import_i18n7 = __toESM(require_i18n(), 1); 24529 var import_jsx_runtime120 = __toESM(require_jsx_runtime(), 1); 24530 var STYLE_HASH_ATTRIBUTE40 = "data-wp-hash"; 24531 function getRuntime40() { 24532 const globalScope = globalThis; 24533 if (globalScope.__wpStyleRuntime) { 24534 return globalScope.__wpStyleRuntime; 24535 } 24536 globalScope.__wpStyleRuntime = { 24537 documents: /* @__PURE__ */ new Map(), 24538 styles: /* @__PURE__ */ new Map(), 24539 injectedStyles: /* @__PURE__ */ new WeakMap() 24540 }; 24541 if (typeof document !== "undefined") { 24542 registerDocument40(document); 24543 } 24544 return globalScope.__wpStyleRuntime; 24545 } 24546 function documentContainsStyleHash40(targetDocument, hash) { 24547 if (!targetDocument.head) { 24548 return false; 24549 } 24550 for (const style of targetDocument.head.querySelectorAll( 24551 `style[$STYLE_HASH_ATTRIBUTE40}]` 24552 )) { 24553 if (style.getAttribute(STYLE_HASH_ATTRIBUTE40) === hash) { 24554 return true; 24555 } 24556 } 24557 return false; 24558 } 24559 function injectStyle40(targetDocument, hash, css) { 24560 if (!targetDocument.head) { 24561 return; 24562 } 24563 const runtime = getRuntime40(); 24564 let injectedStyles = runtime.injectedStyles.get(targetDocument); 24565 if (!injectedStyles) { 24566 injectedStyles = /* @__PURE__ */ new Set(); 24567 runtime.injectedStyles.set(targetDocument, injectedStyles); 24568 } 24569 if (injectedStyles.has(hash)) { 24570 return; 24571 } 24572 if (documentContainsStyleHash40(targetDocument, hash)) { 24573 injectedStyles.add(hash); 24574 return; 24575 } 24576 const style = targetDocument.createElement("style"); 24577 style.setAttribute(STYLE_HASH_ATTRIBUTE40, hash); 24578 style.appendChild(targetDocument.createTextNode(css)); 24579 targetDocument.head.appendChild(style); 24580 injectedStyles.add(hash); 24581 } 24582 function registerDocument40(targetDocument) { 24583 const runtime = getRuntime40(); 24584 runtime.documents.set( 24585 targetDocument, 24586 (runtime.documents.get(targetDocument) ?? 0) + 1 24587 ); 24588 for (const [hash, css] of runtime.styles) { 24589 injectStyle40(targetDocument, hash, css); 24590 } 24591 return () => { 24592 const count = runtime.documents.get(targetDocument); 24593 if (count === void 0) { 24594 return; 24595 } 24596 if (count <= 1) { 24597 runtime.documents.delete(targetDocument); 24598 return; 24599 } 24600 runtime.documents.set(targetDocument, count - 1); 24601 }; 24602 } 24603 function registerStyle40(hash, css) { 24604 const runtime = getRuntime40(); 24605 runtime.styles.set(hash, css); 24606 for (const targetDocument of runtime.documents.keys()) { 24607 injectStyle40(targetDocument, hash, css); 24608 } 24609 } 24610 if (typeof process === "undefined" || true) { 24611 registerStyle40("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)}"); 24612 } 24613 var style_default31 = { "list": "bfb5a2dd8cceebd3__list", "li": "a4759b4cb2c8bd92__li", "item": "_07da506d3f2d9afe__item" }; 24614 var Navigation = ({ 24615 items, 24616 currentHref, 24617 ariaLabel = (0, import_i18n7.__)("Sections"), 24618 linkComponent, 24619 className 24620 }) => { 24621 if (!items.length) { 24622 return null; 24623 } 24624 const LinkComponent = linkComponent ?? "a"; 24625 if (true) { 24626 const invalidItem = items.find( 24627 (item) => typeof item.href !== "string" 24628 ); 24629 if (invalidItem) { 24630 throw new Error( 24631 `Navigation: item "$invalidItem.label}" is missing an \`href\` prop.` 24632 ); 24633 } 24634 const duplicate = items.find( 24635 (item, index2) => items.findIndex((other) => other.href === item.href) !== index2 24636 ); 24637 if (duplicate) { 24638 throw new Error( 24639 `Navigation: duplicate \`href\` "$duplicate.href}". Each item must have a unique \`href\` so a single item receives \`aria-current="page"\`.` 24640 ); 24641 } 24642 } 24643 return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("nav", { "aria-label": ariaLabel, className, children: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)( 24644 Stack, 24645 { 24646 render: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("ul", { role: "list" }), 24647 direction: "row", 24648 align: "center", 24649 gap: "md", 24650 className: style_default31.list, 24651 children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("li", { className: style_default31.li, children: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)( 24652 Text, 24653 { 24654 variant: "body-md", 24655 className: style_default31.item, 24656 render: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)( 24657 Link, 24658 { 24659 variant: "unstyled", 24660 "aria-current": item.href === currentHref ? "page" : void 0, 24661 render: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(LinkComponent, { href: item.href }) 24662 } 24663 ), 24664 children: item.label 24665 } 24666 ) }, item.href)) 24667 } 24668 ) }); 24669 }; 24670 var navigation_default = Navigation; 24671 24672 // packages/admin-ui/build-module/page/sidebar-toggle-slot.mjs 24673 var import_components = __toESM(require_components(), 1); 24674 var { Fill: SidebarToggleFill, Slot: SidebarToggleSlot } = (0, import_components.createSlotFill)("SidebarToggle"); 24675 24676 // packages/admin-ui/build-module/page/header.mjs 24677 var import_jsx_runtime121 = __toESM(require_jsx_runtime(), 1); 24678 var STYLE_HASH_ATTRIBUTE41 = "data-wp-hash"; 24679 function getRuntime41() { 24680 const globalScope = globalThis; 24681 if (globalScope.__wpStyleRuntime) { 24682 return globalScope.__wpStyleRuntime; 24683 } 24684 globalScope.__wpStyleRuntime = { 24685 documents: /* @__PURE__ */ new Map(), 24686 styles: /* @__PURE__ */ new Map(), 24687 injectedStyles: /* @__PURE__ */ new WeakMap() 24688 }; 24689 if (typeof document !== "undefined") { 24690 registerDocument41(document); 24691 } 24692 return globalScope.__wpStyleRuntime; 24693 } 24694 function documentContainsStyleHash41(targetDocument, hash) { 24695 if (!targetDocument.head) { 24696 return false; 24697 } 24698 for (const style of targetDocument.head.querySelectorAll( 24699 `style[$STYLE_HASH_ATTRIBUTE41}]` 24700 )) { 24701 if (style.getAttribute(STYLE_HASH_ATTRIBUTE41) === hash) { 24702 return true; 24703 } 24704 } 24705 return false; 24706 } 24707 function injectStyle41(targetDocument, hash, css) { 24708 if (!targetDocument.head) { 24709 return; 24710 } 24711 const runtime = getRuntime41(); 24712 let injectedStyles = runtime.injectedStyles.get(targetDocument); 24713 if (!injectedStyles) { 24714 injectedStyles = /* @__PURE__ */ new Set(); 24715 runtime.injectedStyles.set(targetDocument, injectedStyles); 24716 } 24717 if (injectedStyles.has(hash)) { 24718 return; 24719 } 24720 if (documentContainsStyleHash41(targetDocument, hash)) { 24721 injectedStyles.add(hash); 24722 return; 24723 } 24724 const style = targetDocument.createElement("style"); 24725 style.setAttribute(STYLE_HASH_ATTRIBUTE41, hash); 24726 style.appendChild(targetDocument.createTextNode(css)); 24727 targetDocument.head.appendChild(style); 24728 injectedStyles.add(hash); 24729 } 24730 function registerDocument41(targetDocument) { 24731 const runtime = getRuntime41(); 24732 runtime.documents.set( 24733 targetDocument, 24734 (runtime.documents.get(targetDocument) ?? 0) + 1 24735 ); 24736 for (const [hash, css] of runtime.styles) { 24737 injectStyle41(targetDocument, hash, css); 24738 } 24739 return () => { 24740 const count = runtime.documents.get(targetDocument); 24741 if (count === void 0) { 24742 return; 24743 } 24744 if (count <= 1) { 24745 runtime.documents.delete(targetDocument); 24746 return; 24747 } 24748 runtime.documents.set(targetDocument, count - 1); 24749 }; 24750 } 24751 function registerStyle41(hash, css) { 24752 const runtime = getRuntime41(); 24753 runtime.styles.set(hash, css); 24754 for (const targetDocument of runtime.documents.keys()) { 24755 injectStyle41(targetDocument, hash, css); 24756 } 24757 } 24758 if (typeof process === "undefined" || true) { 24759 registerStyle41("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)}}"); 24760 } 24761 var style_default32 = { "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" }; 24762 function Header({ 24763 headingLevel = 1, 24764 breadcrumbs, 24765 badges, 24766 visual, 24767 title, 24768 subTitle, 24769 actions, 24770 navigation, 24771 components, 24772 showSidebarToggle = true 24773 }) { 24774 const HeadingTag = `h$headingLevel}`; 24775 const hasNavigation = !!navigation?.items?.length; 24776 return /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)( 24777 Stack, 24778 { 24779 direction: "column", 24780 className: clsx_default( 24781 style_default32.header, 24782 hasNavigation && style_default32["has-navigation"] 24783 ), 24784 children: [ 24785 /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)( 24786 Stack, 24787 { 24788 className: style_default32["header-content"], 24789 direction: "row", 24790 gap: "sm", 24791 justify: "space-between", 24792 children: [ 24793 /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)( 24794 Stack, 24795 { 24796 direction: "row", 24797 gap: "sm", 24798 align: "center", 24799 justify: "start", 24800 className: style_default32["header-lockup"], 24801 children: [ 24802 showSidebarToggle && /* @__PURE__ */ (0, import_jsx_runtime121.jsx)( 24803 SidebarToggleSlot, 24804 { 24805 bubblesVirtually: true, 24806 className: style_default32["sidebar-toggle-slot"] 24807 } 24808 ), 24809 visual && /* @__PURE__ */ (0, import_jsx_runtime121.jsx)( 24810 "div", 24811 { 24812 className: style_default32["header-visual"], 24813 "aria-hidden": "true", 24814 children: visual 24815 } 24816 ), 24817 title && /* @__PURE__ */ (0, import_jsx_runtime121.jsx)( 24818 Text, 24819 { 24820 className: style_default32["header-title"], 24821 render: /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(HeadingTag, {}), 24822 variant: "heading-lg", 24823 children: title 24824 } 24825 ), 24826 breadcrumbs, 24827 badges 24828 ] 24829 } 24830 ), 24831 actions && /* @__PURE__ */ (0, import_jsx_runtime121.jsx)( 24832 Stack, 24833 { 24834 align: "center", 24835 className: style_default32["header-actions"], 24836 direction: "row", 24837 gap: "sm", 24838 children: actions 24839 } 24840 ) 24841 ] 24842 } 24843 ), 24844 subTitle && /* @__PURE__ */ (0, import_jsx_runtime121.jsx)( 24845 Text, 24846 { 24847 render: /* @__PURE__ */ (0, import_jsx_runtime121.jsx)("p", {}), 24848 variant: "body-md", 24849 className: style_default32["header-subtitle"], 24850 children: subTitle 24851 } 24852 ), 24853 hasNavigation && /* @__PURE__ */ (0, import_jsx_runtime121.jsx)( 24854 navigation_default, 24855 { 24856 ...navigation, 24857 linkComponent: components?.link, 24858 className: style_default32["header-navigation"] 24859 } 24860 ) 24861 ] 24862 } 24863 ); 24864 } 24865 24866 // packages/admin-ui/build-module/page/index.mjs 24867 var import_jsx_runtime122 = __toESM(require_jsx_runtime(), 1); 24868 var STYLE_HASH_ATTRIBUTE42 = "data-wp-hash"; 24869 function getRuntime42() { 24870 const globalScope = globalThis; 24871 if (globalScope.__wpStyleRuntime) { 24872 return globalScope.__wpStyleRuntime; 24873 } 24874 globalScope.__wpStyleRuntime = { 24875 documents: /* @__PURE__ */ new Map(), 24876 styles: /* @__PURE__ */ new Map(), 24877 injectedStyles: /* @__PURE__ */ new WeakMap() 24878 }; 24879 if (typeof document !== "undefined") { 24880 registerDocument42(document); 24881 } 24882 return globalScope.__wpStyleRuntime; 24883 } 24884 function documentContainsStyleHash42(targetDocument, hash) { 24885 if (!targetDocument.head) { 24886 return false; 24887 } 24888 for (const style of targetDocument.head.querySelectorAll( 24889 `style[$STYLE_HASH_ATTRIBUTE42}]` 24890 )) { 24891 if (style.getAttribute(STYLE_HASH_ATTRIBUTE42) === hash) { 24892 return true; 24893 } 24894 } 24895 return false; 24896 } 24897 function injectStyle42(targetDocument, hash, css) { 24898 if (!targetDocument.head) { 24899 return; 24900 } 24901 const runtime = getRuntime42(); 24902 let injectedStyles = runtime.injectedStyles.get(targetDocument); 24903 if (!injectedStyles) { 24904 injectedStyles = /* @__PURE__ */ new Set(); 24905 runtime.injectedStyles.set(targetDocument, injectedStyles); 24906 } 24907 if (injectedStyles.has(hash)) { 24908 return; 24909 } 24910 if (documentContainsStyleHash42(targetDocument, hash)) { 24911 injectedStyles.add(hash); 24912 return; 24913 } 24914 const style = targetDocument.createElement("style"); 24915 style.setAttribute(STYLE_HASH_ATTRIBUTE42, hash); 24916 style.appendChild(targetDocument.createTextNode(css)); 24917 targetDocument.head.appendChild(style); 24918 injectedStyles.add(hash); 24919 } 24920 function registerDocument42(targetDocument) { 24921 const runtime = getRuntime42(); 24922 runtime.documents.set( 24923 targetDocument, 24924 (runtime.documents.get(targetDocument) ?? 0) + 1 24925 ); 24926 for (const [hash, css] of runtime.styles) { 24927 injectStyle42(targetDocument, hash, css); 24928 } 24929 return () => { 24930 const count = runtime.documents.get(targetDocument); 24931 if (count === void 0) { 24932 return; 24933 } 24934 if (count <= 1) { 24935 runtime.documents.delete(targetDocument); 24936 return; 24937 } 24938 runtime.documents.set(targetDocument, count - 1); 24939 }; 24940 } 24941 function registerStyle42(hash, css) { 24942 const runtime = getRuntime42(); 24943 runtime.styles.set(hash, css); 24944 for (const targetDocument of runtime.documents.keys()) { 24945 injectStyle42(targetDocument, hash, css); 24946 } 24947 } 24948 if (typeof process === "undefined" || true) { 24949 registerStyle42("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)}}"); 24950 } 24951 var style_default33 = { "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" }; 24952 function Page({ 24953 headingLevel, 24954 breadcrumbs, 24955 badges, 24956 visual, 24957 title, 24958 subTitle, 24959 children, 24960 className, 24961 actions, 24962 navigation, 24963 components, 24964 ariaLabel, 24965 hasPadding = false, 24966 showSidebarToggle = true 24967 }) { 24968 const classes = clsx_default(style_default33.page, className); 24969 const effectiveAriaLabel = ariaLabel ?? (typeof title === "string" ? title : ""); 24970 return /* @__PURE__ */ (0, import_jsx_runtime122.jsxs)(navigable_region_default, { className: classes, ariaLabel: effectiveAriaLabel, children: [ 24971 (title || breadcrumbs || badges || actions || visual || !!navigation?.items?.length) && /* @__PURE__ */ (0, import_jsx_runtime122.jsx)( 24972 Header, 24973 { 24974 headingLevel, 24975 breadcrumbs, 24976 badges, 24977 visual, 24978 title, 24979 subTitle, 24980 actions, 24981 navigation, 24982 components, 24983 showSidebarToggle 24984 } 24985 ), 24986 hasPadding ? /* @__PURE__ */ (0, import_jsx_runtime122.jsx)( 24987 "div", 24988 { 24989 className: clsx_default( 24990 style_default33.content, 24991 style_default33["has-padding"] 24992 ), 24993 children 24994 } 24995 ) : children 24996 ] }); 24997 } 24998 Page.SidebarToggleFill = SidebarToggleFill; 24999 var page_default = Page; 25000 25001 // routes/font-list/stage.tsx 25002 var import_i18n59 = __toESM(require_i18n()); 25003 var import_components56 = __toESM(require_components()); 25004 var import_editor = __toESM(require_editor()); 25005 var import_core_data11 = __toESM(require_core_data()); 25006 var import_data13 = __toESM(require_data()); 25007 var import_element100 = __toESM(require_element()); 25008 25009 // packages/global-styles-ui/build-module/global-styles-ui.mjs 25010 var import_components55 = __toESM(require_components(), 1); 25011 var import_blocks6 = __toESM(require_blocks(), 1); 25012 var import_data12 = __toESM(require_data(), 1); 25013 var import_block_editor14 = __toESM(require_block_editor(), 1); 25014 var import_element99 = __toESM(require_element(), 1); 25015 var import_compose9 = __toESM(require_compose(), 1); 25016 25017 // packages/global-styles-engine/build-module/utils/object.mjs 25018 function setImmutably(object, path, value) { 25019 path = Array.isArray(path) ? [...path] : [path]; 25020 object = Array.isArray(object) ? [...object] : { ...object }; 25021 const leaf = path.pop(); 25022 let prev = object; 25023 for (const key of path) { 25024 const lvl = prev[key]; 25025 prev = prev[key] = Array.isArray(lvl) ? [...lvl] : { ...lvl }; 25026 } 25027 prev[leaf] = value; 25028 return object; 25029 } 25030 var getValueFromObjectPath = (object, path, defaultValue) => { 25031 const arrayPath = Array.isArray(path) ? path : path.split("."); 25032 let value = object; 25033 arrayPath.forEach((fieldName) => { 25034 value = value?.[fieldName]; 25035 }); 25036 return value ?? defaultValue; 25037 }; 25038 25039 // packages/global-styles-engine/build-module/settings/get-setting.mjs 25040 var VALID_SETTINGS = [ 25041 "appearanceTools", 25042 "useRootPaddingAwareAlignments", 25043 "background.backgroundClip", 25044 "background.backgroundImage", 25045 "background.backgroundRepeat", 25046 "background.backgroundSize", 25047 "background.backgroundPosition", 25048 "background.gradient", 25049 "border.color", 25050 "border.radius", 25051 "border.radiusSizes", 25052 "border.style", 25053 "border.width", 25054 "shadow.presets", 25055 "shadow.defaultPresets", 25056 "color.background", 25057 "color.button", 25058 "color.caption", 25059 "color.custom", 25060 "color.customDuotone", 25061 "color.customGradient", 25062 "color.defaultDuotone", 25063 "color.defaultGradients", 25064 "color.defaultPalette", 25065 "color.duotone", 25066 "color.gradients", 25067 "color.heading", 25068 "color.link", 25069 "color.palette", 25070 "color.text", 25071 "custom", 25072 "dimensions.aspectRatio", 25073 "dimensions.height", 25074 "dimensions.minHeight", 25075 "dimensions.minWidth", 25076 "dimensions.width", 25077 "dimensions.dimensionSizes", 25078 "layout.contentSize", 25079 "layout.definitions", 25080 "layout.wideSize", 25081 "lightbox.enabled", 25082 "lightbox.allowEditing", 25083 "position.fixed", 25084 "position.sticky", 25085 "spacing.customSpacingSize", 25086 "spacing.defaultSpacingSizes", 25087 "spacing.spacingSizes", 25088 "spacing.spacingScale", 25089 "spacing.blockGap", 25090 "spacing.margin", 25091 "spacing.padding", 25092 "spacing.units", 25093 "typography.fluid", 25094 "typography.customFontSize", 25095 "typography.defaultFontSizes", 25096 "typography.dropCap", 25097 "typography.fontFamilies", 25098 "typography.fontSizes", 25099 "typography.fontStyle", 25100 "typography.fontWeight", 25101 "typography.letterSpacing", 25102 "typography.lineHeight", 25103 "typography.textAlign", 25104 "typography.textColumns", 25105 "typography.textDecoration", 25106 "typography.textIndent", 25107 "typography.textShadow", 25108 "typography.defaultTextShadowPresets", 25109 "typography.textShadowPresets", 25110 "typography.textTransform", 25111 "typography.writingMode", 25112 "viewport.mobile", 25113 "viewport.tablet" 25114 ]; 25115 function getSetting(globalStyles, path, blockName) { 25116 const appendedBlockPath = blockName ? ".blocks." + blockName : ""; 25117 const appendedPropertyPath = path ? "." + path : ""; 25118 const contextualPath = `settings$appendedBlockPath}$appendedPropertyPath}`; 25119 const globalPath = `settings$appendedPropertyPath}`; 25120 if (path) { 25121 return getValueFromObjectPath(globalStyles, contextualPath) ?? getValueFromObjectPath(globalStyles, globalPath); 25122 } 25123 let result = {}; 25124 VALID_SETTINGS.forEach((setting) => { 25125 const value = getValueFromObjectPath( 25126 globalStyles, 25127 `settings$appendedBlockPath}.$setting}` 25128 ) ?? getValueFromObjectPath(globalStyles, `settings.$setting}`); 25129 if (value !== void 0) { 25130 result = setImmutably(result, setting.split("."), value); 25131 } 25132 }); 25133 return result; 25134 } 25135 25136 // packages/global-styles-engine/build-module/settings/set-setting.mjs 25137 function setSetting(globalStyles, path, newValue, blockName) { 25138 const appendedBlockPath = blockName ? ".blocks." + blockName : ""; 25139 const appendedPropertyPath = path ? "." + path : ""; 25140 const finalPath = `settings$appendedBlockPath}$appendedPropertyPath}`; 25141 return setImmutably( 25142 globalStyles, 25143 finalPath.split("."), 25144 newValue 25145 ); 25146 } 25147 25148 // packages/global-styles-engine/build-module/utils/common.mjs 25149 var import_style_engine = __toESM(require_style_engine(), 1); 25150 25151 // packages/global-styles-engine/build-module/utils/fluid.mjs 25152 var DEFAULT_MAXIMUM_VIEWPORT_WIDTH = "1600px"; 25153 var DEFAULT_MINIMUM_VIEWPORT_WIDTH = "320px"; 25154 var DEFAULT_SCALE_FACTOR = 1; 25155 var DEFAULT_MINIMUM_FONT_SIZE_FACTOR_MIN = 0.25; 25156 var DEFAULT_MINIMUM_FONT_SIZE_FACTOR_MAX = 0.75; 25157 var DEFAULT_MINIMUM_FONT_SIZE_LIMIT = "14px"; 25158 function getComputedFluidTypographyValue({ 25159 minimumFontSize, 25160 maximumFontSize, 25161 fontSize, 25162 minimumViewportWidth = DEFAULT_MINIMUM_VIEWPORT_WIDTH, 25163 maximumViewportWidth = DEFAULT_MAXIMUM_VIEWPORT_WIDTH, 25164 scaleFactor = DEFAULT_SCALE_FACTOR, 25165 minimumFontSizeLimit 25166 }) { 25167 minimumFontSizeLimit = !!getTypographyValueAndUnit(minimumFontSizeLimit) ? minimumFontSizeLimit : DEFAULT_MINIMUM_FONT_SIZE_LIMIT; 25168 if (fontSize) { 25169 const fontSizeParsed = getTypographyValueAndUnit(fontSize); 25170 if (!fontSizeParsed?.unit || !fontSizeParsed?.value) { 25171 return null; 25172 } 25173 const minimumFontSizeLimitParsed = getTypographyValueAndUnit( 25174 minimumFontSizeLimit, 25175 { 25176 coerceTo: fontSizeParsed.unit 25177 } 25178 ); 25179 if (!!minimumFontSizeLimitParsed?.value && !minimumFontSize && !maximumFontSize) { 25180 if (fontSizeParsed?.value <= minimumFontSizeLimitParsed?.value) { 25181 return null; 25182 } 25183 } 25184 if (!maximumFontSize) { 25185 maximumFontSize = `$fontSizeParsed.value}$fontSizeParsed.unit}`; 25186 } 25187 if (!minimumFontSize) { 25188 const fontSizeValueInPx = fontSizeParsed.unit === "px" ? fontSizeParsed.value : fontSizeParsed.value * 16; 25189 const minimumFontSizeFactor = Math.min( 25190 Math.max( 25191 1 - 0.075 * Math.log2(fontSizeValueInPx), 25192 DEFAULT_MINIMUM_FONT_SIZE_FACTOR_MIN 25193 ), 25194 DEFAULT_MINIMUM_FONT_SIZE_FACTOR_MAX 25195 ); 25196 const calculatedMinimumFontSize = roundToPrecision( 25197 fontSizeParsed.value * minimumFontSizeFactor, 25198 3 25199 ); 25200 if (!!minimumFontSizeLimitParsed?.value && calculatedMinimumFontSize < minimumFontSizeLimitParsed?.value) { 25201 minimumFontSize = `$minimumFontSizeLimitParsed.value}$minimumFontSizeLimitParsed.unit}`; 25202 } else { 25203 minimumFontSize = `$calculatedMinimumFontSize}$fontSizeParsed.unit}`; 25204 } 25205 } 25206 } 25207 const minimumFontSizeParsed = getTypographyValueAndUnit(minimumFontSize); 25208 const fontSizeUnit = minimumFontSizeParsed?.unit || "rem"; 25209 const maximumFontSizeParsed = getTypographyValueAndUnit(maximumFontSize, { 25210 coerceTo: fontSizeUnit 25211 }); 25212 if (!minimumFontSizeParsed || !maximumFontSizeParsed) { 25213 return null; 25214 } 25215 const minimumFontSizeRem = getTypographyValueAndUnit(minimumFontSize, { 25216 coerceTo: "rem" 25217 }); 25218 const maximumViewportWidthParsed = getTypographyValueAndUnit( 25219 maximumViewportWidth, 25220 { coerceTo: fontSizeUnit } 25221 ); 25222 const minimumViewportWidthParsed = getTypographyValueAndUnit( 25223 minimumViewportWidth, 25224 { coerceTo: fontSizeUnit } 25225 ); 25226 if (!maximumViewportWidthParsed || !minimumViewportWidthParsed || !minimumFontSizeRem) { 25227 return null; 25228 } 25229 const linearDenominator = maximumViewportWidthParsed.value - minimumViewportWidthParsed.value; 25230 if (!linearDenominator) { 25231 return null; 25232 } 25233 const minViewportWidthOffsetValue = roundToPrecision( 25234 minimumViewportWidthParsed.value / 100, 25235 3 25236 ); 25237 const viewportWidthOffset = roundToPrecision(minViewportWidthOffsetValue, 3) + fontSizeUnit; 25238 const linearFactor = 100 * ((maximumFontSizeParsed.value - minimumFontSizeParsed.value) / linearDenominator); 25239 const linearFactorScaled = roundToPrecision( 25240 (linearFactor || 1) * scaleFactor, 25241 3 25242 ); 25243 const fluidTargetFontSize = `$minimumFontSizeRem.value}$minimumFontSizeRem.unit} + ((1vw - $viewportWidthOffset}) * $linearFactorScaled})`; 25244 return `clamp($minimumFontSize}, $fluidTargetFontSize}, $maximumFontSize})`; 25245 } 25246 function getTypographyValueAndUnit(rawValue, options = {}) { 25247 if (typeof rawValue !== "string" && typeof rawValue !== "number") { 25248 return null; 25249 } 25250 if (isFinite(rawValue)) { 25251 rawValue = `$rawValue}px`; 25252 } 25253 const { coerceTo, rootSizeValue, acceptableUnits } = { 25254 coerceTo: "", 25255 // Default browser font size. Later we could inject some JS to compute this `getComputedStyle( document.querySelector( "html" ) ).fontSize`. 25256 rootSizeValue: 16, 25257 acceptableUnits: ["rem", "px", "em"], 25258 ...options 25259 }; 25260 const acceptableUnitsGroup = acceptableUnits?.join("|"); 25261 const regexUnits = new RegExp( 25262 `^(\\d*\\.?\\d+)($acceptableUnitsGroup}){1,1}$` 25263 ); 25264 const matches = rawValue.toString().match(regexUnits); 25265 if (!matches || matches.length < 3) { 25266 return null; 25267 } 25268 let [, value, unit] = matches; 25269 let returnValue = parseFloat(value); 25270 if ("px" === coerceTo && ("em" === unit || "rem" === unit)) { 25271 returnValue = returnValue * rootSizeValue; 25272 unit = coerceTo; 25273 } 25274 if ("px" === unit && ("em" === coerceTo || "rem" === coerceTo)) { 25275 returnValue = returnValue / rootSizeValue; 25276 unit = coerceTo; 25277 } 25278 if (("em" === coerceTo || "rem" === coerceTo) && ("em" === unit || "rem" === unit)) { 25279 unit = coerceTo; 25280 } 25281 if (!unit) { 25282 return null; 25283 } 25284 return { 25285 value: roundToPrecision(returnValue, 3), 25286 unit 25287 }; 25288 } 25289 function roundToPrecision(value, digits = 3) { 25290 const base = Math.pow(10, digits); 25291 return Math.round(value * base) / base; 25292 } 25293 25294 // packages/global-styles-engine/build-module/utils/typography.mjs 25295 function isFluidTypographyEnabled(typographySettings) { 25296 const fluidSettings = typographySettings?.fluid; 25297 return true === fluidSettings || fluidSettings && typeof fluidSettings === "object" && Object.keys(fluidSettings).length > 0; 25298 } 25299 function getFluidTypographyOptionsFromSettings(settings) { 25300 const typographySettings = settings?.typography ?? {}; 25301 const layoutSettings = settings?.layout; 25302 const defaultMaxViewportWidth = getTypographyValueAndUnit( 25303 layoutSettings?.wideSize 25304 ) ? layoutSettings?.wideSize : null; 25305 return isFluidTypographyEnabled(typographySettings) && defaultMaxViewportWidth ? { 25306 fluid: { 25307 maxViewportWidth: defaultMaxViewportWidth, 25308 ...typeof typographySettings.fluid === "object" ? typographySettings.fluid : {} 25309 } 25310 } : { 25311 fluid: typographySettings?.fluid 25312 }; 25313 } 25314 function getTypographyFontSizeValue(preset, settings) { 25315 const { size: defaultSize } = preset; 25316 if (!defaultSize || "0" === defaultSize || false === preset?.fluid) { 25317 return defaultSize; 25318 } 25319 if (!isFluidTypographyEnabled(settings?.typography) && !isFluidTypographyEnabled(preset)) { 25320 return defaultSize; 25321 } 25322 const fluidTypographySettings = getFluidTypographyOptionsFromSettings(settings)?.fluid ?? {}; 25323 const fluidFontSizeValue = getComputedFluidTypographyValue({ 25324 minimumFontSize: typeof preset?.fluid === "boolean" ? void 0 : preset?.fluid?.min, 25325 maximumFontSize: typeof preset?.fluid === "boolean" ? void 0 : preset?.fluid?.max, 25326 fontSize: defaultSize, 25327 minimumFontSizeLimit: typeof fluidTypographySettings === "object" ? fluidTypographySettings?.minFontSize : void 0, 25328 maximumViewportWidth: typeof fluidTypographySettings === "object" ? fluidTypographySettings?.maxViewportWidth : void 0, 25329 minimumViewportWidth: typeof fluidTypographySettings === "object" ? fluidTypographySettings?.minViewportWidth : void 0 25330 }); 25331 if (!!fluidFontSizeValue) { 25332 return fluidFontSizeValue; 25333 } 25334 return defaultSize; 25335 } 25336 25337 // packages/global-styles-engine/build-module/utils/common.mjs 25338 var PRESET_METADATA = [ 25339 { 25340 path: ["color", "palette"], 25341 valueKey: "color", 25342 cssVarInfix: "color", 25343 classes: [ 25344 { classSuffix: "color", propertyName: "color" }, 25345 { 25346 classSuffix: "background-color", 25347 propertyName: "background-color" 25348 }, 25349 { 25350 classSuffix: "border-color", 25351 propertyName: "border-color" 25352 } 25353 ] 25354 }, 25355 { 25356 path: ["color", "gradients"], 25357 valueKey: "gradient", 25358 cssVarInfix: "gradient", 25359 classes: [ 25360 { 25361 classSuffix: "gradient-background", 25362 propertyName: "background" 25363 } 25364 ] 25365 }, 25366 { 25367 path: ["color", "duotone"], 25368 valueKey: "colors", 25369 cssVarInfix: "duotone", 25370 valueFunc: ({ slug }) => `url( '#wp-duotone-$slug}' )`, 25371 classes: [] 25372 }, 25373 { 25374 path: ["shadow", "presets"], 25375 valueKey: "shadow", 25376 cssVarInfix: "shadow", 25377 classes: [] 25378 }, 25379 { 25380 path: ["typography", "fontSizes"], 25381 valueFunc: (preset, settings) => getTypographyFontSizeValue(preset, settings), 25382 valueKey: "size", 25383 cssVarInfix: "font-size", 25384 classes: [{ classSuffix: "font-size", propertyName: "font-size" }] 25385 }, 25386 { 25387 path: ["typography", "fontFamilies"], 25388 valueKey: "fontFamily", 25389 cssVarInfix: "font-family", 25390 classes: [ 25391 { classSuffix: "font-family", propertyName: "font-family" } 25392 ] 25393 }, 25394 { 25395 path: ["typography", "textShadowPresets"], 25396 valueKey: "textShadow", 25397 cssVarInfix: "text-shadow", 25398 classes: [ 25399 { classSuffix: "text-shadow", propertyName: "text-shadow" } 25400 ] 25401 }, 25402 { 25403 path: ["spacing", "spacingSizes"], 25404 valueKey: "size", 25405 cssVarInfix: "spacing", 25406 valueFunc: ({ size: size4 }) => size4, 25407 classes: [] 25408 }, 25409 { 25410 path: ["border", "radiusSizes"], 25411 valueKey: "size", 25412 cssVarInfix: "border-radius", 25413 classes: [] 25414 }, 25415 { 25416 path: ["dimensions", "dimensionSizes"], 25417 valueKey: "size", 25418 cssVarInfix: "dimension", 25419 classes: [] 25420 } 25421 ]; 25422 function getResolvedRefValue(ruleValue, tree) { 25423 if (!ruleValue || !tree) { 25424 return ruleValue; 25425 } 25426 if (typeof ruleValue === "object" && "ref" in ruleValue && ruleValue?.ref) { 25427 const resolvedRuleValue = (0, import_style_engine.getCSSValueFromRawStyle)( 25428 getValueFromObjectPath(tree, ruleValue.ref) 25429 ); 25430 if (typeof resolvedRuleValue === "object" && resolvedRuleValue !== null && "ref" in resolvedRuleValue && resolvedRuleValue?.ref) { 25431 return void 0; 25432 } 25433 if (resolvedRuleValue === void 0) { 25434 return ruleValue; 25435 } 25436 return resolvedRuleValue; 25437 } 25438 return ruleValue; 25439 } 25440 function getResolvedThemeFilePath(file, themeFileURIs) { 25441 if (!file || !themeFileURIs || !Array.isArray(themeFileURIs)) { 25442 return file; 25443 } 25444 const uri = themeFileURIs.find( 25445 (themeFileUri) => themeFileUri?.name === file 25446 ); 25447 if (!uri?.href) { 25448 return file; 25449 } 25450 return uri?.href; 25451 } 25452 function getResolvedValue(ruleValue, tree) { 25453 if (!ruleValue || !tree) { 25454 return ruleValue; 25455 } 25456 const resolvedValue = getResolvedRefValue(ruleValue, tree); 25457 if (typeof resolvedValue === "object" && resolvedValue !== null && "url" in resolvedValue && resolvedValue?.url) { 25458 return { 25459 ...resolvedValue, 25460 url: getResolvedThemeFilePath( 25461 resolvedValue.url, 25462 tree?._links?.["wp:theme-file"] 25463 ) 25464 }; 25465 } 25466 return resolvedValue; 25467 } 25468 function findInPresetsBy(settings, blockName, presetPath = [], presetProperty = "slug", presetValueValue) { 25469 const orderedPresetsByOrigin = [ 25470 blockName ? getValueFromObjectPath(settings, [ 25471 "blocks", 25472 blockName, 25473 ...presetPath 25474 ]) : void 0, 25475 getValueFromObjectPath(settings, presetPath) 25476 ].filter(Boolean); 25477 for (const presetByOrigin of orderedPresetsByOrigin) { 25478 if (presetByOrigin) { 25479 const origins = ["custom", "theme", "default"]; 25480 for (const origin of origins) { 25481 const presets = presetByOrigin[origin]; 25482 if (presets) { 25483 const presetObject = presets.find( 25484 (preset) => preset[presetProperty] === presetValueValue 25485 ); 25486 if (presetObject) { 25487 if (presetProperty === "slug") { 25488 return presetObject; 25489 } 25490 const highestPresetObjectWithSameSlug = findInPresetsBy( 25491 settings, 25492 blockName, 25493 presetPath, 25494 "slug", 25495 presetObject.slug 25496 ); 25497 if (highestPresetObjectWithSameSlug[presetProperty] === presetObject[presetProperty]) { 25498 return presetObject; 25499 } 25500 return void 0; 25501 } 25502 } 25503 } 25504 } 25505 } 25506 } 25507 function getValueFromPresetVariable(features, blockName, variable, [presetType, slug] = []) { 25508 const metadata = PRESET_METADATA.find( 25509 (data) => data.cssVarInfix === presetType 25510 ); 25511 if (!metadata || !features.settings) { 25512 return variable; 25513 } 25514 const presetObject = findInPresetsBy( 25515 features.settings, 25516 blockName, 25517 metadata.path, 25518 "slug", 25519 slug 25520 ); 25521 if (presetObject) { 25522 const { valueKey } = metadata; 25523 const result = presetObject[valueKey]; 25524 return getValueFromVariable(features, blockName, result); 25525 } 25526 return variable; 25527 } 25528 function getValueFromCustomVariable(features, blockName, variable, path = []) { 25529 const result = (blockName ? getValueFromObjectPath(features?.settings ?? {}, [ 25530 "blocks", 25531 blockName, 25532 "custom", 25533 ...path 25534 ]) : void 0) ?? getValueFromObjectPath(features?.settings ?? {}, [ 25535 "custom", 25536 ...path 25537 ]); 25538 if (!result) { 25539 return variable; 25540 } 25541 return getValueFromVariable(features, blockName, result); 25542 } 25543 function getValueFromVariable(features, blockName, variable) { 25544 if (!variable || typeof variable !== "string") { 25545 if (typeof variable === "object" && variable !== null && "ref" in variable && typeof variable.ref === "string") { 25546 const resolvedVariable = getValueFromObjectPath( 25547 features, 25548 variable.ref 25549 ); 25550 if (!resolvedVariable || typeof resolvedVariable === "object" && "ref" in resolvedVariable) { 25551 return resolvedVariable; 25552 } 25553 variable = resolvedVariable; 25554 } else { 25555 return variable; 25556 } 25557 } 25558 const USER_VALUE_PREFIX = "var:"; 25559 const THEME_VALUE_PREFIX = "var(--wp--"; 25560 const THEME_VALUE_SUFFIX = ")"; 25561 let parsedVar; 25562 if (variable.startsWith(USER_VALUE_PREFIX)) { 25563 parsedVar = variable.slice(USER_VALUE_PREFIX.length).split("|"); 25564 } else if (variable.startsWith(THEME_VALUE_PREFIX) && variable.endsWith(THEME_VALUE_SUFFIX)) { 25565 parsedVar = variable.slice(THEME_VALUE_PREFIX.length, -THEME_VALUE_SUFFIX.length).split("--"); 25566 } else { 25567 return variable; 25568 } 25569 const [type, ...path] = parsedVar; 25570 if (type === "preset") { 25571 return getValueFromPresetVariable( 25572 features, 25573 blockName, 25574 variable, 25575 path 25576 ); 25577 } 25578 if (type === "custom") { 25579 return getValueFromCustomVariable( 25580 features, 25581 blockName, 25582 variable, 25583 path 25584 ); 25585 } 25586 return variable; 25587 } 25588 25589 // packages/global-styles-engine/build-module/settings/get-style.mjs 25590 function getStyle(globalStyles, path, blockName, shouldDecodeEncode = true) { 25591 const appendedPath = path ? "." + path : ""; 25592 const finalPath = !blockName ? `styles$appendedPath}` : `styles.blocks.$blockName}$appendedPath}`; 25593 if (!globalStyles) { 25594 return void 0; 25595 } 25596 const rawResult = getValueFromObjectPath(globalStyles, finalPath); 25597 const result = shouldDecodeEncode ? getValueFromVariable(globalStyles, blockName, rawResult) : rawResult; 25598 return result; 25599 } 25600 25601 // packages/global-styles-engine/build-module/settings/set-style.mjs 25602 function setStyle(globalStyles, path, newValue, blockName) { 25603 const appendedPath = path ? "." + path : ""; 25604 const finalPath = !blockName ? `styles$appendedPath}` : `styles.blocks.$blockName}$appendedPath}`; 25605 return setImmutably( 25606 globalStyles, 25607 finalPath.split("."), 25608 newValue 25609 ); 25610 } 25611 25612 // packages/global-styles-engine/build-module/core/equal.mjs 25613 var import_es6 = __toESM(require_es6(), 1); 25614 function areGlobalStylesEqual(original, variation) { 25615 if (typeof original !== "object" || typeof variation !== "object") { 25616 return original === variation; 25617 } 25618 return (0, import_es6.default)(original?.styles, variation?.styles) && (0, import_es6.default)(original?.settings, variation?.settings); 25619 } 25620 25621 // packages/global-styles-engine/build-module/core/merge.mjs 25622 var import_deepmerge = __toESM(require_cjs(), 1); 25623 25624 // node_modules/.store/is-plain-object@5.1.0-5G_-lUnpSwJHYfRbkIxLrw/node_modules/is-plain-object/dist/is-plain-object.mjs 25625 function isObject(o) { 25626 return Object.prototype.toString.call(o) === "[object Object]"; 25627 } 25628 function isPlainObject(o) { 25629 var ctor, prot; 25630 if (isObject(o) === false) return false; 25631 ctor = o.constructor; 25632 if (ctor === void 0) return true; 25633 prot = ctor.prototype; 25634 if (isObject(prot) === false) return false; 25635 if (prot.hasOwnProperty("isPrototypeOf") === false) { 25636 return false; 25637 } 25638 return true; 25639 } 25640 25641 // packages/global-styles-engine/build-module/core/merge.mjs 25642 function mergeGlobalStyles(base, user) { 25643 return (0, import_deepmerge.default)(base, user, { 25644 /* 25645 * We only pass as arrays the presets, 25646 * in which case we want the new array of values 25647 * to override the old array (no merging). 25648 */ 25649 isMergeableObject: isPlainObject, 25650 /* 25651 * Exceptions to the above rule. 25652 * Background images should be replaced, not merged, 25653 * as they themselves are specific object definitions for the style. 25654 */ 25655 customMerge: (key) => { 25656 if (key === "backgroundImage") { 25657 return (baseConfig, userConfig) => userConfig ?? baseConfig; 25658 } 25659 return void 0; 25660 } 25661 }); 25662 } 25663 25664 // node_modules/.store/colord@2.10.0-Qx66Amv6c9C3nDPQDizV6Q/node_modules/colord/index.mjs 25665 for (r2 = { grad: 0.9, turn: 360, rad: 360 / (2 * Math.PI) }, t = function(r3) { 25666 return "string" == typeof r3 ? r3.length > 0 : "number" == typeof r3; 25667 }, n = function(r3, t2, n2) { 25668 return void 0 === t2 && (t2 = 0), void 0 === n2 && (n2 = Math.pow(10, t2)), Math.round(n2 * r3) / n2 + 0; 25669 }, u = function(r3, t2, n2) { 25670 return void 0 === t2 && (t2 = 0), void 0 === n2 && (n2 = 1), r3 > n2 ? n2 : r3 > t2 ? r3 : t2; 25671 }, e = function(r3) { 25672 return (r3 = isFinite(r3) ? r3 % 360 : 0) < 0 ? r3 + 360 : r3; 25673 }, o = function(r3, t2) { 25674 return void 0 === t2 && (t2 = 0), n(r3, t2) % 360; 25675 }, a = function(r3) { 25676 return { r: u(r3.r, 0, 255), g: u(r3.g, 0, 255), b: u(r3.b, 0, 255), a: u(r3.a) }; 25677 }, i = function(r3) { 25678 return { r: n(r3.r), g: n(r3.g), b: n(r3.b), a: n(r3.a, 3) }; 25679 }, s = /^#([0-9a-f]{3,8})$/i, d = function(r3, t2) { 25680 var n2 = r3.charCodeAt(t2); 25681 return (15 & n2) + 9 * (n2 >> 6); 25682 }, h = function(r3, t2) { 25683 return d(r3, t2) << 4 | d(r3, t2 + 1); 25684 }, b = [], f = 0; f < 256; f++) b.push((f < 16 ? "0" : "") + f.toString(16)); 25685 var r2; 25686 var t; 25687 var n; 25688 var u; 25689 var e; 25690 var o; 25691 var a; 25692 var i; 25693 var s; 25694 var d; 25695 var h; 25696 var b; 25697 var f; 25698 var g = function(r2) { 25699 return b[u(r2, 0, 255)]; 25700 }; 25701 var c = function(r2) { 25702 var t = r2.r, n = r2.g, u = r2.b, e = r2.a, o = Math.max(t, n, u), a = o - Math.min(t, n, u), i = a ? o === t ? (n - u) / a : o === n ? 2 + (u - t) / a : 4 + (t - n) / a : 0; 25703 return { h: 60 * (i < 0 ? i + 6 : i), s: o ? a / o * 100 : 0, v: o / 255 * 100, a: e }; 25704 }; 25705 var v = function(r2) { 25706 var t = r2.h, n = r2.s, u = r2.v, e = r2.a; 25707 t = t / 360 * 6, n /= 100, u /= 100; 25708 var o = Math.floor(t), a = u * (1 - n), i = u * (1 - (t - o) * n), s = u * (1 - (1 - t + o) * n), d = o % 6; 25709 return { r: 255 * [u, i, a, a, s, u][d], g: 255 * [s, u, u, i, a, a][d], b: 255 * [a, a, s, u, u, i][d], a: e }; 25710 }; 25711 var l = function(r2) { 25712 return { h: e(r2.h), s: u(r2.s, 0, 100), l: u(r2.l, 0, 100), a: u(r2.a) }; 25713 }; 25714 var p2 = function(r2) { 25715 return { h: o(r2.h), s: n(r2.s), l: n(r2.l), a: n(r2.a, 3) }; 25716 }; 25717 var m = function(r2) { 25718 return v((n = (t = r2).s, { h: t.h, s: (n *= ((u = t.l) < 50 ? u : 100 - u) / 100) > 0 ? 2 * n / (u + n) * 100 : 0, v: u + n, a: t.a })); 25719 var t, n, u; 25720 }; 25721 var y = function(r2) { 25722 return { h: (t = c(r2)).h, s: (e = (200 - (n = t.s)) * (u = t.v) / 100) > 0 && e < 200 ? n * u / 100 / (e <= 100 ? e : 200 - e) * 100 : 0, l: e / 2, a: t.a }; 25723 var t, n, u, e; 25724 }; 25725 var N = /^hsla?\(\s*([+-]?(?:\d*\.\d+|\d+))(deg|rad|grad|turn)?\s*,\s*([+-]?(?:\d*\.\d+|\d+))%\s*,\s*([+-]?(?:\d*\.\d+|\d+))%\s*(?:,\s*([+-]?(?:\d*\.\d+|\d+))(%)?\s*)?\)$/i; 25726 var x = /^hsla?\(\s*([+-]?(?:\d*\.\d+|\d+))(deg|rad|grad|turn)?\s+([+-]?(?:\d*\.\d+|\d+))%\s+([+-]?(?:\d*\.\d+|\d+))%\s*(?:\/\s*([+-]?(?:\d*\.\d+|\d+))(%)?\s*)?\)$/i; 25727 var M = /^rgba?\(\s*([+-]?(?:\d*\.\d+|\d+))(%)?\s*,\s*([+-]?(?:\d*\.\d+|\d+))(%)?\s*,\s*([+-]?(?:\d*\.\d+|\d+))(%)?\s*(?:,\s*([+-]?(?:\d*\.\d+|\d+))(%)?\s*)?\)$/i; 25728 var H = /^rgba?\(\s*([+-]?(?:\d*\.\d+|\d+))(%)?\s+([+-]?(?:\d*\.\d+|\d+))(%)?\s+([+-]?(?:\d*\.\d+|\d+))(%)?\s*(?:\/\s*([+-]?(?:\d*\.\d+|\d+))(%)?\s*)?\)$/i; 25729 var $ = { string: [[function(r2) { 25730 if (!s.test(r2)) return null; 25731 var t = r2.length; 25732 return t <= 5 ? { r: 17 * d(r2, 1), g: 17 * d(r2, 2), b: 17 * d(r2, 3), a: 5 === t ? n(17 * d(r2, 4) / 255, 2) : 1 } : 7 === t || 9 === t ? { r: h(r2, 1), g: h(r2, 3), b: h(r2, 5), a: 9 === t ? n(h(r2, 7) / 255, 2) : 1 } : null; 25733 }, "hex"], [function(r2) { 25734 var t = M.exec(r2) || H.exec(r2); 25735 return t ? t[2] !== t[4] || t[4] !== t[6] ? null : a({ r: Number(t[1]) / (t[2] ? 100 / 255 : 1), g: Number(t[3]) / (t[4] ? 100 / 255 : 1), b: Number(t[5]) / (t[6] ? 100 / 255 : 1), a: void 0 === t[7] ? 1 : Number(t[7]) / (t[8] ? 100 : 1) }) : null; 25736 }, "rgb"], [function(t) { 25737 var n = N.exec(t) || x.exec(t); 25738 if (!n) return null; 25739 var u, e, o = l({ h: (u = n[1], e = n[2], void 0 === e && (e = "deg"), Number(u) * (r2[e] || 1)), s: Number(n[3]), l: Number(n[4]), a: void 0 === n[5] ? 1 : Number(n[5]) / (n[6] ? 100 : 1) }); 25740 return m(o); 25741 }, "hsl"]], object: [[function(r2) { 25742 var n = r2.r, u = r2.g, e = r2.b, o = r2.a, i = void 0 === o ? 1 : o; 25743 return t(n) && t(u) && t(e) ? a({ r: Number(n), g: Number(u), b: Number(e), a: Number(i) }) : null; 25744 }, "rgb"], [function(r2) { 25745 var n = r2.h, u = r2.s, e = r2.l, o = r2.a, a = void 0 === o ? 1 : o; 25746 if (!t(n) || !t(u) || !t(e)) return null; 25747 var i = l({ h: Number(n), s: Number(u), l: Number(e), a: Number(a) }); 25748 return m(i); 25749 }, "hsl"], [function(r2) { 25750 var n = r2.h, o = r2.s, a = r2.v, i = r2.a, s = void 0 === i ? 1 : i; 25751 if (!t(n) || !t(o) || !t(a)) return null; 25752 var d = (function(r3) { 25753 return { h: e(r3.h), s: u(r3.s, 0, 100), v: u(r3.v, 0, 100), a: u(r3.a) }; 25754 })({ h: Number(n), s: Number(o), v: Number(a), a: Number(s) }); 25755 return v(d); 25756 }, "hsv"]] }; 25757 var j = function(r2, t) { 25758 for (var n = 0; n < t.length; n++) { 25759 var u = t[n][0](r2); 25760 if (u) return [u, t[n][1]]; 25761 } 25762 return [null, void 0]; 25763 }; 25764 var w = function(r2) { 25765 return "string" == typeof r2 ? j(r2.trim(), $.string) : "object" == typeof r2 && null !== r2 ? j(r2, $.object) : [null, void 0]; 25766 }; 25767 var k = function(r2, t) { 25768 var n = y(r2); 25769 return { h: n.h, s: u(n.s + 100 * t, 0, 100), l: n.l, a: n.a }; 25770 }; 25771 var E = function(r2) { 25772 return (299 * r2.r + 587 * r2.g + 114 * r2.b) / 1e3 / 255; 25773 }; 25774 var R = function(r2, t) { 25775 var n = y(r2); 25776 return { h: n.h, s: n.s, l: u(n.l + 100 * t, 0, 100), a: n.a }; 25777 }; 25778 var q = (function() { 25779 function r2(r3) { 25780 this.parsed = w(r3)[0], this.rgba = this.parsed || { r: 0, g: 0, b: 0, a: 1 }; 25781 } 25782 return r2.prototype.isValid = function() { 25783 return null !== this.parsed; 25784 }, r2.prototype.brightness = function() { 25785 return n(E(this.rgba), 2); 25786 }, r2.prototype.isDark = function() { 25787 return E(this.rgba) < 0.5; 25788 }, r2.prototype.isLight = function() { 25789 return E(this.rgba) >= 0.5; 25790 }, r2.prototype.toHex = function() { 25791 return r3 = i(this.rgba), t = r3.r, u = r3.g, e = r3.b, a = (o = r3.a) < 1 ? g(n(255 * o)) : "", "#" + g(t) + g(u) + g(e) + a; 25792 var r3, t, u, e, o, a; 25793 }, r2.prototype.toRgb = function() { 25794 return i(this.rgba); 25795 }, r2.prototype.toRgbString = function() { 25796 return r3 = i(this.rgba), t = r3.r, n = r3.g, u = r3.b, (e = r3.a) < 1 ? "rgba(" + t + ", " + n + ", " + u + ", " + e + ")" : "rgb(" + t + ", " + n + ", " + u + ")"; 25797 var r3, t, n, u, e; 25798 }, r2.prototype.toHsl = function() { 25799 return p2(y(this.rgba)); 25800 }, r2.prototype.toHslString = function() { 25801 return r3 = p2(y(this.rgba)), t = r3.h, n = r3.s, u = r3.l, (e = r3.a) < 1 ? "hsla(" + t + ", " + n + "%, " + u + "%, " + e + ")" : "hsl(" + t + ", " + n + "%, " + u + "%)"; 25802 var r3, t, n, u, e; 25803 }, r2.prototype.toHsv = function() { 25804 return r3 = c(this.rgba), { h: o(r3.h), s: n(r3.s), v: n(r3.v), a: n(r3.a, 3) }; 25805 var r3; 25806 }, r2.prototype.invert = function() { 25807 return A({ r: 255 - (r3 = this.rgba).r, g: 255 - r3.g, b: 255 - r3.b, a: r3.a }); 25808 var r3; 25809 }, r2.prototype.saturate = function(r3) { 25810 return void 0 === r3 && (r3 = 0.1), A(k(this.rgba, r3)); 25811 }, r2.prototype.desaturate = function(r3) { 25812 return void 0 === r3 && (r3 = 0.1), A(k(this.rgba, -r3)); 25813 }, r2.prototype.grayscale = function() { 25814 return A(k(this.rgba, -1)); 25815 }, r2.prototype.lighten = function(r3) { 25816 return void 0 === r3 && (r3 = 0.1), A(R(this.rgba, r3)); 25817 }, r2.prototype.darken = function(r3) { 25818 return void 0 === r3 && (r3 = 0.1), A(R(this.rgba, -r3)); 25819 }, r2.prototype.rotate = function(r3) { 25820 return void 0 === r3 && (r3 = 15), this.hue(y(this.rgba).h + r3); 25821 }, r2.prototype.alpha = function(r3) { 25822 return "number" == typeof r3 ? A({ r: (t = this.rgba).r, g: t.g, b: t.b, a: r3 }) : n(this.rgba.a, 3); 25823 var t; 25824 }, r2.prototype.hue = function(r3) { 25825 var t = y(this.rgba); 25826 return "number" == typeof r3 ? A({ h: r3, s: t.s, l: t.l, a: t.a }) : o(t.h); 25827 }, r2.prototype.isEqual = function(r3) { 25828 return this.toHex() === A(r3).toHex(); 25829 }, r2; 25830 })(); 25831 var A = function(r2) { 25832 return r2 instanceof q ? r2 : new q(r2); 25833 }; 25834 25835 // packages/global-styles-engine/build-module/utils/duotone.mjs 25836 function getValuesFromColors(colors = []) { 25837 const values = { 25838 r: [], 25839 g: [], 25840 b: [], 25841 a: [] 25842 }; 25843 colors.forEach((color) => { 25844 const rgbColor = A(color).toRgb(); 25845 values.r.push(rgbColor.r / 255); 25846 values.g.push(rgbColor.g / 255); 25847 values.b.push(rgbColor.b / 255); 25848 values.a.push(rgbColor.a); 25849 }); 25850 return values; 25851 } 25852 function getDuotoneUnsetStylesheet(selector) { 25853 return `$selector}{filter:none}`; 25854 } 25855 function getDuotoneStylesheet(selector, id) { 25856 return `$selector}{filter:url(#$id})}`; 25857 } 25858 function getDuotoneFilter(id, colors) { 25859 const values = getValuesFromColors(colors); 25860 return ` 25861 <svg 25862 xmlns:xlink="http://www.w3.org/1999/xlink" 25863 viewBox="0 0 0 0" 25864 width="0" 25865 height="0" 25866 focusable="false" 25867 role="none" 25868 aria-hidden="true" 25869 style="visibility: hidden; position: absolute; left: -9999px; overflow: hidden;" 25870 > 25871 <defs> 25872 <filter id="$id}"> 25873 <!-- 25874 Use sRGB instead of linearRGB so transparency looks correct. 25875 Use perceptual brightness to convert to grayscale. 25876 --> 25877 <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values=" .299 .587 .114 0 0 .299 .587 .114 0 0 .299 .587 .114 0 0 .299 .587 .114 0 0 "></feColorMatrix> 25878 <!-- Use sRGB instead of linearRGB to be consistent with how CSS gradients work. --> 25879 <feComponentTransfer color-interpolation-filters="sRGB"> 25880 <feFuncR type="table" tableValues="$values.r.join(" ")}"></feFuncR> 25881 <feFuncG type="table" tableValues="$values.g.join(" ")}"></feFuncG> 25882 <feFuncB type="table" tableValues="$values.b.join(" ")}"></feFuncB> 25883 <feFuncA type="table" tableValues="$values.a.join(" ")}"></feFuncA> 25884 </feComponentTransfer> 25885 <!-- Re-mask the image with the original transparency since the feColorMatrix above loses that information. --> 25886 <feComposite in2="SourceGraphic" operator="in"></feComposite> 25887 </filter> 25888 </defs> 25889 </svg>`; 25890 } 25891 25892 // packages/global-styles-engine/build-module/utils/viewport.mjs 25893 var DEFAULT_VIEWPORT_BREAKPOINTS = { 25894 mobile: "480px", 25895 tablet: "782px" 25896 }; 25897 var VIEWPORT_SIZE_REGEXP = /^(\d+|\d*\.\d+)(px|em|rem)$/; 25898 var DEFAULT_FONT_SIZE = 16; 25899 function isViewportSettings(configOrSettings) { 25900 return "mobile" in configOrSettings || "tablet" in configOrSettings; 25901 } 25902 function getViewportSettings(configOrSettings) { 25903 if (!configOrSettings || typeof configOrSettings !== "object") { 25904 return {}; 25905 } 25906 if (isViewportSettings(configOrSettings)) { 25907 return configOrSettings; 25908 } 25909 return configOrSettings.settings?.viewport ?? {}; 25910 } 25911 function isValidViewportSize(value) { 25912 return typeof value === "string" && VIEWPORT_SIZE_REGEXP.test(value.trim()); 25913 } 25914 function getViewportBreakpointValueInPixels(value) { 25915 if (typeof value === "number") { 25916 return value; 25917 } 25918 if (typeof value !== "string") { 25919 return void 0; 25920 } 25921 const match2 = value.trim().match(VIEWPORT_SIZE_REGEXP); 25922 if (!match2) { 25923 return void 0; 25924 } 25925 const numericValue = Number.parseFloat(match2[1]); 25926 const unit = match2[2]; 25927 return unit === "px" ? numericValue : numericValue * DEFAULT_FONT_SIZE; 25928 } 25929 function getViewportBreakpoints(configOrSettings) { 25930 const viewportSettings = getViewportSettings(configOrSettings); 25931 const breakpoints = {}; 25932 const breakpointValuesInPixels = {}; 25933 Object.keys(DEFAULT_VIEWPORT_BREAKPOINTS).forEach((breakpoint) => { 25934 const key = breakpoint; 25935 const value = viewportSettings[key]; 25936 const px = getViewportBreakpointValueInPixels(value); 25937 if (px !== void 0 && isValidViewportSize(value)) { 25938 breakpoints[key] = value.trim(); 25939 breakpointValuesInPixels[key] = px; 25940 } 25941 }); 25942 const breakpointNames = Object.keys(breakpoints); 25943 if (!breakpointNames.length) { 25944 return { ...DEFAULT_VIEWPORT_BREAKPOINTS }; 25945 } 25946 if (1 === breakpointNames.length) { 25947 return breakpoints; 25948 } 25949 const mobile = breakpoints.mobile; 25950 const tablet = breakpoints.tablet; 25951 if (breakpointValuesInPixels.mobile >= breakpointValuesInPixels.tablet) { 25952 return { mobile }; 25953 } 25954 return { mobile, tablet }; 25955 } 25956 function getResponsiveMediaQueries(configOrSettings) { 25957 const breakpoints = getViewportBreakpoints(configOrSettings); 25958 const mediaQueries = {}; 25959 if (breakpoints.mobile) { 25960 mediaQueries["@mobile"] = `@media (width <= $breakpoints.mobile})`; 25961 } 25962 if (breakpoints.tablet) { 25963 mediaQueries["@tablet"] = breakpoints.mobile ? `@media ($breakpoints.mobile} < width <= $breakpoints.tablet})` : `@media (width <= $breakpoints.tablet})`; 25964 } 25965 return mediaQueries; 25966 } 25967 25968 // packages/global-styles-engine/build-module/variation.mjs 25969 function getVariationStyle(globalStyles, name2, variation, { resolveRefs = true } = {}) { 25970 if (!globalStyles?.styles?.blocks?.[name2]?.variations?.[variation]) { 25971 return void 0; 25972 } 25973 const replaceRefs = (variationStyles) => { 25974 Object.keys(variationStyles).forEach((key) => { 25975 const value = variationStyles[key]; 25976 if (typeof value === "object" && value !== null) { 25977 if (value.ref !== void 0) { 25978 if (typeof value.ref !== "string" || value.ref.trim() === "") { 25979 delete variationStyles[key]; 25980 } else { 25981 const refValue = getValueFromObjectPath( 25982 globalStyles, 25983 value.ref 25984 ); 25985 if (refValue !== void 0 && refValue !== null) { 25986 variationStyles[key] = refValue; 25987 } else { 25988 delete variationStyles[key]; 25989 } 25990 } 25991 } else { 25992 replaceRefs(value); 25993 if (Object.keys(value).length === 0) { 25994 delete variationStyles[key]; 25995 } 25996 } 25997 } 25998 }); 25999 }; 26000 const styles = JSON.parse( 26001 JSON.stringify( 26002 globalStyles.styles.blocks[name2].variations[variation] 26003 ) 26004 ); 26005 if (resolveRefs) { 26006 replaceRefs(styles); 26007 } 26008 return styles; 26009 } 26010 26011 // packages/global-styles-engine/build-module/resolve-style.mjs 26012 var DEFAULT_STATE_VALUE = "default"; 26013 function isDefaultBlockStyleState(selectedState) { 26014 const viewport = selectedState?.viewport; 26015 const pseudoState = selectedState?.pseudoState; 26016 return (!viewport || viewport === DEFAULT_STATE_VALUE) && (!pseudoState || pseudoState === DEFAULT_STATE_VALUE); 26017 } 26018 function getStyleStatePath(selectedState) { 26019 if (isDefaultBlockStyleState(selectedState)) { 26020 return []; 26021 } 26022 return [selectedState.viewport, selectedState.pseudoState].filter( 26023 (state) => !!state && state !== DEFAULT_STATE_VALUE 26024 ); 26025 } 26026 function getStyleForState(style, selectedState) { 26027 const path = getStyleStatePath(selectedState); 26028 if (!path.length) { 26029 return style; 26030 } 26031 return getValueFromObjectPath(style, path); 26032 } 26033 var TREE_STRUCTURAL_KEYS = /* @__PURE__ */ new Set(["blocks", "variations", "css"]); 26034 var EMPTY_INHERITANCE = Object.freeze({ 26035 value: {}, 26036 sources: {} 26037 }); 26038 var SOURCE_DESCRIPTORS = { 26039 root: { layer: "root" }, 26040 element: { layer: "element" }, 26041 block: { layer: "block" }, 26042 blockVariation: { layer: "blockVariation" } 26043 }; 26044 function createSourceDescriptor(type) { 26045 const descriptor = SOURCE_DESCRIPTORS[type]; 26046 if (!descriptor) { 26047 return null; 26048 } 26049 return { ...descriptor }; 26050 } 26051 function createContribution(styles, source) { 26052 if (!styles || !source) { 26053 return null; 26054 } 26055 return { styles, source }; 26056 } 26057 function getPathKey(path) { 26058 return path.join("."); 26059 } 26060 function getSourceForPath(source) { 26061 return { ...source }; 26062 } 26063 function isExplicitEmpty(value) { 26064 if (value === "" || value === null) { 26065 return true; 26066 } 26067 if (typeof value === "object" && !Array.isArray(value) && Object.keys(value).length === 0) { 26068 return true; 26069 } 26070 return false; 26071 } 26072 function isRefObject(value) { 26073 return value !== null && typeof value === "object" && !Array.isArray(value) && typeof value.ref === "string"; 26074 } 26075 function pickLayerRootContribution(layer) { 26076 if (!layer || typeof layer !== "object" || Array.isArray(layer)) { 26077 return null; 26078 } 26079 const contribution = {}; 26080 for (const key of Object.keys(layer)) { 26081 if (TREE_STRUCTURAL_KEYS.has(key)) { 26082 continue; 26083 } 26084 if (key === "elements") { 26085 if (layer.elements && typeof layer.elements === "object") { 26086 contribution.elements = layer.elements; 26087 } 26088 continue; 26089 } 26090 if (isExplicitEmpty(layer[key])) { 26091 continue; 26092 } 26093 contribution[key] = layer[key]; 26094 } 26095 return Object.keys(contribution).length === 0 ? null : contribution; 26096 } 26097 var ATOMIC_OBJECT_KEYS = /* @__PURE__ */ new Set(["backgroundImage"]); 26098 function deepMergeDroppingEmpties(target, source, globalStyles, sourceMetadata, sources, path = []) { 26099 if (!source || typeof source !== "object" || Array.isArray(source)) { 26100 return target; 26101 } 26102 for (const key of Object.keys(source)) { 26103 let sourceValue = source[key]; 26104 if (isExplicitEmpty(sourceValue)) { 26105 continue; 26106 } 26107 if (isRefObject(sourceValue)) { 26108 if (sourceValue.ref.trim() === "") { 26109 continue; 26110 } 26111 const resolved = getValueFromObjectPath( 26112 globalStyles, 26113 sourceValue.ref 26114 ); 26115 if (resolved === void 0 || resolved === null || isRefObject(resolved)) { 26116 continue; 26117 } 26118 sourceValue = resolved; 26119 } 26120 const nextPath = [...path, key]; 26121 if (!ATOMIC_OBJECT_KEYS.has(key) && sourceValue !== null && typeof sourceValue === "object" && !Array.isArray(sourceValue) && !isRefObject(sourceValue)) { 26122 const existing = target[key] && typeof target[key] === "object" && !Array.isArray(target[key]) ? target[key] : {}; 26123 target[key] = deepMergeDroppingEmpties( 26124 { ...existing }, 26125 sourceValue, 26126 globalStyles, 26127 sourceMetadata, 26128 sources, 26129 nextPath 26130 ); 26131 } else { 26132 target[key] = ATOMIC_OBJECT_KEYS.has(key) && sourceValue !== null && typeof sourceValue === "object" && !Array.isArray(sourceValue) ? { ...sourceValue } : sourceValue; 26133 if (sourceMetadata && sources) { 26134 sources[getPathKey(nextPath)] = getSourceForPath(sourceMetadata); 26135 } 26136 } 26137 } 26138 return target; 26139 } 26140 function getStateSlice(layerObject, selectedState) { 26141 if (!layerObject) { 26142 return null; 26143 } 26144 const slice = getStyleForState(layerObject, selectedState); 26145 return slice && typeof slice === "object" && !Array.isArray(slice) ? slice : null; 26146 } 26147 var NON_CASCADING_ROOT_PREFIXES = [ 26148 "color.background", 26149 "color.gradient", 26150 "background", 26151 "spacing", 26152 "dimensions", 26153 "border", 26154 "shadow", 26155 "filter" 26156 ]; 26157 function isNonCascadingRootPath(pathKey) { 26158 if (pathKey.startsWith("elements.")) { 26159 return false; 26160 } 26161 return NON_CASCADING_ROOT_PREFIXES.some( 26162 (prefix) => pathKey === prefix || pathKey.startsWith(`$prefix}.`) 26163 ); 26164 } 26165 function deleteAtPath(target, pathSegments) { 26166 if (!target || typeof target !== "object") { 26167 return; 26168 } 26169 const [head2, ...rest] = pathSegments; 26170 if (rest.length === 0) { 26171 delete target[head2]; 26172 return; 26173 } 26174 const child = target[head2]; 26175 if (child && typeof child === "object") { 26176 deleteAtPath(child, rest); 26177 if (Object.keys(child).length === 0) { 26178 delete target[head2]; 26179 } 26180 } 26181 } 26182 function dropNonCascadingRootLeaves(value, sources) { 26183 for (const pathKey of Object.keys(sources)) { 26184 if (sources[pathKey].layer === "root" && isNonCascadingRootPath(pathKey)) { 26185 deleteAtPath(value, pathKey.split(".")); 26186 delete sources[pathKey]; 26187 } 26188 } 26189 } 26190 function resolveThemeFileBackgroundImage(value, globalStyles, links) { 26191 const image = value?.background?.backgroundImage; 26192 if (!image) { 26193 return; 26194 } 26195 const resolved = getResolvedValue(image, { 26196 ...globalStyles, 26197 _links: links ?? void 0 26198 }); 26199 if (resolved !== void 0) { 26200 value.background.backgroundImage = resolved; 26201 } 26202 } 26203 function computeResolvedStyle(globalStyles, { 26204 blockName, 26205 variationName = null, 26206 elements = null, 26207 viewport = null, 26208 pseudoState = null 26209 } = {}) { 26210 if (!globalStyles || !globalStyles.styles) { 26211 return EMPTY_INHERITANCE; 26212 } 26213 if (!blockName) { 26214 return EMPTY_INHERITANCE; 26215 } 26216 const styles = globalStyles.styles; 26217 const selectedState = { viewport, pseudoState }; 26218 const root = styles; 26219 const block = styles.blocks?.[blockName] ?? null; 26220 const elementLayers = (elements ?? []).map((elementName) => styles.elements?.[elementName] ?? null).filter((layer) => !!layer); 26221 const variation = variationName ? getVariationStyle(globalStyles, blockName, variationName) ?? null : null; 26222 const contributions = [ 26223 createContribution( 26224 pickLayerRootContribution(root), 26225 createSourceDescriptor("root") 26226 ), 26227 ...elementLayers.map( 26228 (layer) => createContribution( 26229 pickLayerRootContribution(layer), 26230 createSourceDescriptor("element") 26231 ) 26232 ), 26233 block ? createContribution( 26234 pickLayerRootContribution(block), 26235 createSourceDescriptor("block") 26236 ) : null, 26237 variation ? createContribution( 26238 pickLayerRootContribution(variation), 26239 createSourceDescriptor("blockVariation") 26240 ) : null 26241 ]; 26242 if (!isDefaultBlockStyleState(selectedState)) { 26243 contributions.push( 26244 createContribution( 26245 pickLayerRootContribution( 26246 getStateSlice(root, selectedState) 26247 ), 26248 createSourceDescriptor("root") 26249 ), 26250 ...elementLayers.map( 26251 (layer) => createContribution( 26252 pickLayerRootContribution( 26253 getStateSlice(layer, selectedState) 26254 ), 26255 createSourceDescriptor("element") 26256 ) 26257 ), 26258 block ? createContribution( 26259 pickLayerRootContribution( 26260 getStateSlice(block, selectedState) 26261 ), 26262 createSourceDescriptor("block") 26263 ) : null, 26264 variation ? createContribution( 26265 pickLayerRootContribution( 26266 getStateSlice(variation, selectedState) 26267 ), 26268 createSourceDescriptor("blockVariation") 26269 ) : null 26270 ); 26271 } 26272 const filteredContributions = contributions.filter( 26273 Boolean 26274 ); 26275 if (filteredContributions.length === 0) { 26276 return EMPTY_INHERITANCE; 26277 } 26278 const sources = {}; 26279 const value = filteredContributions.reduce( 26280 (mergedValue, contribution) => deepMergeDroppingEmpties( 26281 mergedValue, 26282 contribution.styles, 26283 globalStyles, 26284 contribution.source, 26285 sources 26286 ), 26287 {} 26288 ); 26289 dropNonCascadingRootLeaves(value, sources); 26290 resolveThemeFileBackgroundImage( 26291 value, 26292 globalStyles, 26293 globalStyles._links ?? null 26294 ); 26295 return { value, sources }; 26296 } 26297 var NO_LINKS = {}; 26298 var memo5 = /* @__PURE__ */ new WeakMap(); 26299 function resolveStyle2(globalStyles, context = {}) { 26300 const styleData = globalStyles?.styles; 26301 if (!styleData || typeof styleData !== "object") { 26302 return computeResolvedStyle(globalStyles, context); 26303 } 26304 let byLinks = memo5.get(styleData); 26305 if (!byLinks) { 26306 byLinks = /* @__PURE__ */ new WeakMap(); 26307 memo5.set(styleData, byLinks); 26308 } 26309 const linksKey = globalStyles?._links ?? NO_LINKS; 26310 let inner = byLinks.get(linksKey); 26311 if (!inner) { 26312 inner = /* @__PURE__ */ new Map(); 26313 byLinks.set(linksKey, inner); 26314 } 26315 const sliceKey = `$context.elements?.join(",") ?? ""}:$context.viewport ?? ""}:$context.pseudoState ?? ""}`; 26316 const key = (context.blockName || "") + "" + (context.variationName || "") + "" + sliceKey; 26317 if (inner.has(key)) { 26318 return inner.get(key); 26319 } 26320 const result = computeResolvedStyle(globalStyles, context); 26321 inner.set(key, result); 26322 return result; 26323 } 26324 26325 // packages/global-styles-engine/build-module/lock-unlock.mjs 26326 var import_private_apis2 = __toESM(require_private_apis(), 1); 26327 var { lock: lock2, unlock: unlock2 } = (0, import_private_apis2.__dangerousOptInToUnstableAPIsOnlyForCoreModules)( 26328 "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.", 26329 "@wordpress/global-styles-engine" 26330 ); 26331 26332 // packages/global-styles-engine/build-module/private-apis.mjs 26333 var privateApis = {}; 26334 lock2(privateApis, { 26335 getResponsiveMediaQueries, 26336 getViewportBreakpoints, 26337 getViewportBreakpointValueInPixels, 26338 getDuotoneFilter, 26339 getDuotoneStylesheet, 26340 getDuotoneUnsetStylesheet, 26341 resolveStyle: resolveStyle2, 26342 getVariationStyle 26343 }); 26344 26345 // packages/global-styles-ui/build-module/provider.mjs 26346 var import_element66 = __toESM(require_element(), 1); 26347 26348 // packages/global-styles-ui/build-module/context.mjs 26349 var import_element65 = __toESM(require_element(), 1); 26350 var GlobalStylesContext = (0, import_element65.createContext)({ 26351 user: { styles: {}, settings: {} }, 26352 base: { styles: {}, settings: {} }, 26353 merged: { styles: {}, settings: {} }, 26354 onChange: () => { 26355 }, 26356 fontLibraryEnabled: false 26357 }); 26358 26359 // packages/global-styles-ui/build-module/provider.mjs 26360 var import_jsx_runtime123 = __toESM(require_jsx_runtime(), 1); 26361 function GlobalStylesProvider({ 26362 children, 26363 value, 26364 baseValue, 26365 onChange, 26366 fontLibraryEnabled 26367 }) { 26368 const merged = (0, import_element66.useMemo)(() => { 26369 return mergeGlobalStyles(baseValue, value); 26370 }, [baseValue, value]); 26371 const contextValue = (0, import_element66.useMemo)( 26372 () => ({ 26373 user: value, 26374 base: baseValue, 26375 merged, 26376 onChange, 26377 fontLibraryEnabled 26378 }), 26379 [value, baseValue, merged, onChange, fontLibraryEnabled] 26380 ); 26381 return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(GlobalStylesContext.Provider, { value: contextValue, children }); 26382 } 26383 26384 // packages/global-styles-ui/build-module/screen-root.mjs 26385 var import_components8 = __toESM(require_components(), 1); 26386 var import_i18n12 = __toESM(require_i18n(), 1); 26387 var import_data2 = __toESM(require_data(), 1); 26388 var import_core_data2 = __toESM(require_core_data(), 1); 26389 26390 // packages/global-styles-ui/build-module/icon-with-current-color.mjs 26391 var import_jsx_runtime124 = __toESM(require_jsx_runtime(), 1); 26392 function IconWithCurrentColor({ 26393 className, 26394 ...props 26395 }) { 26396 return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)( 26397 icon_default, 26398 { 26399 className: clsx_default( 26400 className, 26401 "global-styles-ui-icon-with-current-color" 26402 ), 26403 ...props 26404 } 26405 ); 26406 } 26407 26408 // packages/global-styles-ui/build-module/navigation-button.mjs 26409 var import_components2 = __toESM(require_components(), 1); 26410 var import_jsx_runtime125 = __toESM(require_jsx_runtime(), 1); 26411 function GenericNavigationButton({ 26412 icon, 26413 children, 26414 ...props 26415 }) { 26416 return /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)(import_components2.__experimentalItem, { ...props, children: [ 26417 icon && /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)(import_components2.__experimentalHStack, { justify: "flex-start", children: [ 26418 /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(IconWithCurrentColor, { icon, size: 24 }), 26419 /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(import_components2.FlexItem, { children }) 26420 ] }), 26421 !icon && children 26422 ] }); 26423 } 26424 function NavigationButtonAsItem(props) { 26425 return /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(import_components2.Navigator.Button, { as: GenericNavigationButton, ...props }); 26426 } 26427 26428 // packages/global-styles-ui/build-module/root-menu.mjs 26429 var import_components3 = __toESM(require_components(), 1); 26430 var import_i18n10 = __toESM(require_i18n(), 1); 26431 var import_block_editor = __toESM(require_block_editor(), 1); 26432 26433 // packages/global-styles-ui/build-module/hooks.mjs 26434 var import_element67 = __toESM(require_element(), 1); 26435 var import_data = __toESM(require_data(), 1); 26436 var import_core_data = __toESM(require_core_data(), 1); 26437 var import_i18n9 = __toESM(require_i18n(), 1); 26438 26439 // packages/global-styles-ui/build-module/utils.mjs 26440 var import_i18n8 = __toESM(require_i18n(), 1); 26441 26442 // packages/global-styles-ui/build-module/lock-unlock.mjs 26443 var import_private_apis4 = __toESM(require_private_apis(), 1); 26444 var { lock: lock3, unlock: unlock3 } = (0, import_private_apis4.__dangerousOptInToUnstableAPIsOnlyForCoreModules)( 26445 "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.", 26446 "@wordpress/global-styles-ui" 26447 ); 26448 26449 // packages/global-styles-ui/build-module/utils.mjs 26450 var { getViewportBreakpoints: getViewportBreakpoints2 } = unlock3(privateApis); 26451 var VALID_ELEMENT_STATES = { 26452 link: [ 26453 { value: ":link", label: (0, import_i18n8.__)("Link") }, 26454 { value: ":any-link", label: (0, import_i18n8.__)("Any Link") }, 26455 { value: ":visited", label: (0, import_i18n8.__)("Visited") }, 26456 { value: ":hover", label: (0, import_i18n8.__)("Hover") }, 26457 { value: ":focus", label: (0, import_i18n8.__)("Focus") }, 26458 { value: ":focus-visible", label: (0, import_i18n8.__)("Focus-visible") }, 26459 { value: ":active", label: (0, import_i18n8.__)("Active") } 26460 ], 26461 button: [ 26462 { value: ":link", label: (0, import_i18n8.__)("Link") }, 26463 { value: ":any-link", label: (0, import_i18n8.__)("Any Link") }, 26464 { value: ":visited", label: (0, import_i18n8.__)("Visited") }, 26465 { value: ":hover", label: (0, import_i18n8.__)("Hover") }, 26466 { value: ":focus", label: (0, import_i18n8.__)("Focus") }, 26467 { value: ":focus-visible", label: (0, import_i18n8.__)("Focus-visible") }, 26468 { value: ":active", label: (0, import_i18n8.__)("Active") } 26469 ] 26470 }; 26471 var VALID_BLOCK_STATES = { 26472 "core/button": [ 26473 { value: ":hover", label: (0, import_i18n8.__)("Hover") }, 26474 { value: ":focus", label: (0, import_i18n8.__)("Focus") }, 26475 { value: ":focus-visible", label: (0, import_i18n8.__)("Focus-visible") }, 26476 { value: ":active", label: (0, import_i18n8.__)("Active") } 26477 ], 26478 "core/navigation-link": [ 26479 { value: ":hover", label: (0, import_i18n8.__)("Hover") }, 26480 { value: ":focus", label: (0, import_i18n8.__)("Focus") }, 26481 { value: ":focus-visible", label: (0, import_i18n8.__)("Focus-visible") }, 26482 { value: ":active", label: (0, import_i18n8.__)("Active") } 26483 ] 26484 }; 26485 var RESPONSIVE_STATES = [ 26486 { value: "@tablet", label: (0, import_i18n8.__)("Tablet") }, 26487 { value: "@mobile", label: (0, import_i18n8.__)("Mobile") } 26488 ]; 26489 function removePropertiesFromObject(object, properties) { 26490 if (!properties?.length) { 26491 return object; 26492 } 26493 if (typeof object !== "object" || !object || !Object.keys(object).length) { 26494 return object; 26495 } 26496 for (const key in object) { 26497 if (properties.includes(key)) { 26498 delete object[key]; 26499 } else if (typeof object[key] === "object") { 26500 removePropertiesFromObject(object[key], properties); 26501 } 26502 } 26503 return object; 26504 } 26505 var filterObjectByProperties = (object, properties) => { 26506 if (!object || !properties?.length) { 26507 return {}; 26508 } 26509 const newObject = {}; 26510 Object.keys(object).forEach((key) => { 26511 if (properties.includes(key)) { 26512 newObject[key] = object[key]; 26513 } else if (typeof object[key] === "object") { 26514 const newFilter = filterObjectByProperties( 26515 object[key], 26516 properties 26517 ); 26518 if (Object.keys(newFilter).length) { 26519 newObject[key] = newFilter; 26520 } 26521 } 26522 }); 26523 return newObject; 26524 }; 26525 function isVariationWithProperties(variation, properties) { 26526 const variationWithProperties = filterObjectByProperties( 26527 structuredClone(variation), 26528 properties 26529 ); 26530 return areGlobalStylesEqual(variationWithProperties, variation); 26531 } 26532 function getFontFamilyFromSetting(fontFamilies, setting) { 26533 if (!Array.isArray(fontFamilies) || !setting) { 26534 return null; 26535 } 26536 const fontFamilyVariable = setting.replace("var(", "").replace(")", ""); 26537 const fontFamilySlug = fontFamilyVariable?.split("--").slice(-1)[0]; 26538 return fontFamilies.find( 26539 (fontFamily) => fontFamily.slug === fontFamilySlug 26540 ); 26541 } 26542 function getFontFamilies(themeJson) { 26543 const themeFontFamilies = themeJson?.settings?.typography?.fontFamilies?.theme; 26544 const customFontFamilies = themeJson?.settings?.typography?.fontFamilies?.custom; 26545 let fontFamilies = []; 26546 if (themeFontFamilies && customFontFamilies) { 26547 fontFamilies = [...themeFontFamilies, ...customFontFamilies]; 26548 } else if (themeFontFamilies) { 26549 fontFamilies = themeFontFamilies; 26550 } else if (customFontFamilies) { 26551 fontFamilies = customFontFamilies; 26552 } 26553 const bodyFontFamilySetting = themeJson?.styles?.typography?.fontFamily; 26554 const bodyFontFamily = getFontFamilyFromSetting( 26555 fontFamilies, 26556 bodyFontFamilySetting 26557 ); 26558 const headingFontFamilySetting = themeJson?.styles?.elements?.heading?.typography?.fontFamily; 26559 let headingFontFamily; 26560 if (!headingFontFamilySetting) { 26561 headingFontFamily = bodyFontFamily; 26562 } else { 26563 headingFontFamily = getFontFamilyFromSetting( 26564 fontFamilies, 26565 themeJson?.styles?.elements?.heading?.typography?.fontFamily 26566 ); 26567 } 26568 return [bodyFontFamily, headingFontFamily]; 26569 } 26570 26571 // packages/global-styles-ui/build-module/hooks.mjs 26572 function useStyle(path, blockName, readFrom = "merged", shouldDecodeEncode = true, state) { 26573 const { user, base, merged, onChange } = (0, import_element67.useContext)(GlobalStylesContext); 26574 const statePathParts = state?.split(".").filter(Boolean) ?? []; 26575 const pseudoSelectorState = statePathParts.find( 26576 (value) => value.startsWith(":") 26577 ); 26578 const statePathWithoutPseudo = statePathParts.filter((value) => !value.startsWith(":")).join("."); 26579 const stylePath = [path, statePathWithoutPseudo].filter(Boolean).join("."); 26580 let sourceValue = merged; 26581 if (readFrom === "base") { 26582 sourceValue = base; 26583 } else if (readFrom === "user") { 26584 sourceValue = user; 26585 } 26586 const styleValue = (0, import_element67.useMemo)(() => { 26587 const rawValue = getStyle( 26588 sourceValue, 26589 stylePath, 26590 blockName, 26591 shouldDecodeEncode 26592 ); 26593 if (pseudoSelectorState) { 26594 return rawValue?.[pseudoSelectorState] ?? {}; 26595 } 26596 return rawValue; 26597 }, [ 26598 sourceValue, 26599 stylePath, 26600 blockName, 26601 shouldDecodeEncode, 26602 pseudoSelectorState 26603 ]); 26604 const setStyleValue = (0, import_element67.useCallback)( 26605 (newValue) => { 26606 let valueToSet = newValue; 26607 if (pseudoSelectorState) { 26608 const fullCurrentValue = getStyle( 26609 user, 26610 stylePath, 26611 blockName, 26612 false 26613 ); 26614 valueToSet = { 26615 ...fullCurrentValue, 26616 [pseudoSelectorState]: newValue 26617 }; 26618 } 26619 const newGlobalStyles = setStyle( 26620 user, 26621 stylePath, 26622 valueToSet, 26623 blockName 26624 ); 26625 onChange(newGlobalStyles); 26626 }, 26627 [user, onChange, stylePath, blockName, pseudoSelectorState] 26628 ); 26629 return [styleValue, setStyleValue]; 26630 } 26631 function useSetting(path, blockName, readFrom = "merged") { 26632 const { user, base, merged, onChange } = (0, import_element67.useContext)(GlobalStylesContext); 26633 let sourceValue = merged; 26634 if (readFrom === "base") { 26635 sourceValue = base; 26636 } else if (readFrom === "user") { 26637 sourceValue = user; 26638 } 26639 const settingValue = (0, import_element67.useMemo)( 26640 () => getSetting(sourceValue, path, blockName), 26641 [sourceValue, path, blockName] 26642 ); 26643 const setSettingValue = (0, import_element67.useCallback)( 26644 (newValue) => { 26645 const newGlobalStyles = setSetting( 26646 user, 26647 path, 26648 newValue, 26649 blockName 26650 ); 26651 onChange(newGlobalStyles); 26652 }, 26653 [user, onChange, path, blockName] 26654 ); 26655 return [settingValue, setSettingValue]; 26656 } 26657 var EMPTY_ARRAY2 = []; 26658 function hasThemeVariation({ 26659 title, 26660 settings, 26661 styles 26662 }) { 26663 return title === (0, import_i18n9.__)("Default") || Object.keys(settings || {}).length > 0 || Object.keys(styles || {}).length > 0; 26664 } 26665 function useCurrentMergeThemeStyleVariationsWithUserConfig(properties = []) { 26666 const { variationsFromTheme } = (0, import_data.useSelect)((select) => { 26667 const _variationsFromTheme = select( 26668 import_core_data.store 26669 ).__experimentalGetCurrentThemeGlobalStylesVariations?.(); 26670 return { 26671 variationsFromTheme: _variationsFromTheme || EMPTY_ARRAY2 26672 }; 26673 }, []); 26674 const { user: userVariation } = (0, import_element67.useContext)(GlobalStylesContext); 26675 return (0, import_element67.useMemo)(() => { 26676 const clonedUserVariation = structuredClone(userVariation); 26677 const userVariationWithoutProperties = removePropertiesFromObject( 26678 clonedUserVariation, 26679 properties 26680 ); 26681 userVariationWithoutProperties.title = (0, import_i18n9.__)("Default"); 26682 const variationsWithPropertiesAndBase = variationsFromTheme.filter((variation) => { 26683 return isVariationWithProperties(variation, properties); 26684 }).map((variation) => { 26685 return mergeGlobalStyles( 26686 userVariationWithoutProperties, 26687 variation 26688 ); 26689 }); 26690 const variationsByProperties = [ 26691 userVariationWithoutProperties, 26692 ...variationsWithPropertiesAndBase 26693 ]; 26694 return variationsByProperties?.length ? variationsByProperties.filter(hasThemeVariation) : []; 26695 }, [properties, userVariation, variationsFromTheme]); 26696 } 26697 26698 // packages/global-styles-ui/build-module/root-menu.mjs 26699 var import_jsx_runtime126 = __toESM(require_jsx_runtime(), 1); 26700 var { 26701 useHasDimensionsPanel, 26702 useHasTypographyPanel, 26703 useHasColorPanel, 26704 useSettingsForBlockElement, 26705 useHasBackgroundPanel 26706 } = unlock3(import_block_editor.privateApis); 26707 26708 // packages/global-styles-ui/build-module/preview-styles.mjs 26709 var import_components7 = __toESM(require_components(), 1); 26710 26711 // packages/global-styles-ui/build-module/preview-hooks.mjs 26712 function useStylesPreviewColors() { 26713 const [textColor = "black"] = useStyle("color.text"); 26714 const [backgroundColor = "white"] = useStyle("color.background"); 26715 const [headingColor = textColor] = useStyle( 26716 "elements.h1.color.text" 26717 ); 26718 const [linkColor = headingColor] = useStyle( 26719 "elements.link.color.text" 26720 ); 26721 const [buttonBackgroundColor = linkColor] = useStyle( 26722 "elements.button.color.background" 26723 ); 26724 const [coreColors] = useSetting("color.palette.core") || []; 26725 const [themeColors] = useSetting("color.palette.theme") || []; 26726 const [customColors] = useSetting("color.palette.custom") || []; 26727 const paletteColors = (themeColors ?? []).concat(customColors ?? []).concat(coreColors ?? []); 26728 const textColorObject = paletteColors.filter( 26729 ({ color }) => color === textColor 26730 ); 26731 const buttonBackgroundColorObject = paletteColors.filter( 26732 ({ color }) => color === buttonBackgroundColor 26733 ); 26734 const highlightedColors = textColorObject.concat(buttonBackgroundColorObject).concat(paletteColors).filter( 26735 // we exclude these background color because it is already visible in the preview. 26736 ({ color }) => color !== backgroundColor 26737 ).slice(0, 2); 26738 return { 26739 paletteColors, 26740 highlightedColors 26741 }; 26742 } 26743 26744 // packages/global-styles-ui/build-module/typography-example.mjs 26745 var import_element68 = __toESM(require_element(), 1); 26746 var import_components4 = __toESM(require_components(), 1); 26747 var import_i18n11 = __toESM(require_i18n(), 1); 26748 26749 // packages/global-styles-ui/build-module/font-library/utils/preview-styles.mjs 26750 function findNearest(input, numbers) { 26751 if (numbers.length === 0) { 26752 return null; 26753 } 26754 numbers.sort((a, b) => Math.abs(input - a) - Math.abs(input - b)); 26755 return numbers[0]; 26756 } 26757 var FONT_WEIGHT_KEYWORDS = { 26758 normal: 400, 26759 bold: 700 26760 }; 26761 function isValidWeight(weight) { 26762 return weight !== void 0 && Number.isFinite(weight) && weight >= 1 && weight <= 1e3; 26763 } 26764 function resolveFontWeight(fontWeight) { 26765 const weights = String(fontWeight ?? "").trim().toLowerCase().split(/\s+/).filter(Boolean).map((value) => FONT_WEIGHT_KEYWORDS[value] ?? Number(value)); 26766 const [start, end] = weights; 26767 if (!isValidWeight(start)) { 26768 return "400"; 26769 } 26770 if (weights.length !== 2 || !isValidWeight(end)) { 26771 return String(start); 26772 } 26773 return String(Math.min(Math.max(400, start), end)); 26774 } 26775 function formatFontFamily(input) { 26776 const regex = /^(?!generic\([ a-zA-Z\-]+\)$)(?!var\(\s*--[\w-]+\s*\)$)(?!^[a-zA-Z\-]+$).+/; 26777 const output = input.trim(); 26778 const formatItem = (item) => { 26779 item = item.trim(); 26780 if (item.match(regex)) { 26781 item = item.replace(/^["']|["']$/g, ""); 26782 return `"$item}"`; 26783 } 26784 return item; 26785 }; 26786 if (output.includes(",")) { 26787 return output.split(",").map(formatItem).filter((item) => item !== "").join(", "); 26788 } 26789 return formatItem(output); 26790 } 26791 function formatFontFaceName(input) { 26792 if (!input) { 26793 return ""; 26794 } 26795 let output = input.trim(); 26796 if (output.includes(",")) { 26797 output = (output.split(",").find((item) => item.trim() !== "") ?? "").trim(); 26798 } 26799 output = output.replace(/^["']|["']$/g, ""); 26800 if (window.navigator.userAgent.toLowerCase().includes("firefox")) { 26801 output = `"$output}"`; 26802 } 26803 return output; 26804 } 26805 function getFamilyPreviewStyle(family) { 26806 const style = { 26807 fontFamily: formatFontFamily(family.fontFamily) 26808 }; 26809 if (!("fontFace" in family) || !Array.isArray(family.fontFace)) { 26810 style.fontWeight = "400"; 26811 style.fontStyle = "normal"; 26812 return style; 26813 } 26814 if (family.fontFace) { 26815 const normalFaces = family.fontFace.filter( 26816 (face) => face?.fontStyle && face.fontStyle.toLowerCase() === "normal" 26817 ); 26818 if (normalFaces.length > 0) { 26819 style.fontStyle = "normal"; 26820 const normalWeights = normalFaces.map( 26821 (face) => Number(resolveFontWeight(face.fontWeight)) 26822 ); 26823 style.fontWeight = String( 26824 findNearest(400, normalWeights) ?? 400 26825 ); 26826 } else { 26827 style.fontStyle = family.fontFace.length && family.fontFace[0].fontStyle || "normal"; 26828 style.fontWeight = family.fontFace.length && resolveFontWeight(family.fontFace[0].fontWeight) || "400"; 26829 } 26830 } 26831 return style; 26832 } 26833 function getFacePreviewStyle(face) { 26834 return { 26835 fontFamily: formatFontFamily(face.fontFamily), 26836 fontStyle: face.fontStyle || "normal", 26837 fontWeight: resolveFontWeight(face.fontWeight) 26838 }; 26839 } 26840 26841 // packages/global-styles-ui/build-module/typography-example.mjs 26842 var import_jsx_runtime127 = __toESM(require_jsx_runtime(), 1); 26843 function PreviewTypography({ 26844 fontSize, 26845 variation 26846 }) { 26847 const { base } = (0, import_element68.useContext)(GlobalStylesContext); 26848 let config = base; 26849 if (variation) { 26850 config = { ...base, ...variation }; 26851 } 26852 const [textColor] = useStyle("color.text"); 26853 const [bodyFontFamilies, headingFontFamilies] = getFontFamilies(config); 26854 const bodyPreviewStyle = bodyFontFamilies ? getFamilyPreviewStyle(bodyFontFamilies) : {}; 26855 const headingPreviewStyle = headingFontFamilies ? getFamilyPreviewStyle(headingFontFamilies) : {}; 26856 if (textColor) { 26857 bodyPreviewStyle.color = textColor; 26858 headingPreviewStyle.color = textColor; 26859 } 26860 if (fontSize) { 26861 bodyPreviewStyle.fontSize = fontSize; 26862 headingPreviewStyle.fontSize = fontSize; 26863 } 26864 return /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)( 26865 import_components4.__unstableMotion.div, 26866 { 26867 animate: { 26868 scale: 1, 26869 opacity: 1 26870 }, 26871 initial: { 26872 scale: 0.1, 26873 opacity: 0 26874 }, 26875 transition: { 26876 delay: 0.3, 26877 type: "tween" 26878 }, 26879 style: { 26880 textAlign: "center", 26881 lineHeight: 1 26882 }, 26883 children: [ 26884 /* @__PURE__ */ (0, import_jsx_runtime127.jsx)("span", { style: headingPreviewStyle, children: (0, import_i18n11._x)("A", "Uppercase letter A") }), 26885 /* @__PURE__ */ (0, import_jsx_runtime127.jsx)("span", { style: bodyPreviewStyle, children: (0, import_i18n11._x)("a", "Lowercase letter A") }) 26886 ] 26887 } 26888 ); 26889 } 26890 26891 // packages/global-styles-ui/build-module/highlighted-colors.mjs 26892 var import_components5 = __toESM(require_components(), 1); 26893 var import_jsx_runtime128 = __toESM(require_jsx_runtime(), 1); 26894 function HighlightedColors({ 26895 normalizedColorSwatchSize, 26896 ratio 26897 }) { 26898 const { highlightedColors } = useStylesPreviewColors(); 26899 const scaledSwatchSize = normalizedColorSwatchSize * ratio; 26900 return highlightedColors.map(({ slug, color }, index2) => /* @__PURE__ */ (0, import_jsx_runtime128.jsx)( 26901 import_components5.__unstableMotion.div, 26902 { 26903 style: { 26904 height: scaledSwatchSize, 26905 width: scaledSwatchSize, 26906 background: color, 26907 borderRadius: scaledSwatchSize / 2 26908 }, 26909 animate: { 26910 scale: 1, 26911 opacity: 1 26912 }, 26913 initial: { 26914 scale: 0.1, 26915 opacity: 0 26916 }, 26917 transition: { 26918 delay: index2 === 1 ? 0.2 : 0.1 26919 } 26920 }, 26921 `$slug}-$index2}` 26922 )); 26923 } 26924 26925 // packages/global-styles-ui/build-module/preview-wrapper.mjs 26926 var import_components6 = __toESM(require_components(), 1); 26927 var import_compose3 = __toESM(require_compose(), 1); 26928 var import_element69 = __toESM(require_element(), 1); 26929 var import_jsx_runtime129 = __toESM(require_jsx_runtime(), 1); 26930 var normalizedWidth = 248; 26931 var normalizedHeight = 152; 26932 var THROTTLE_OPTIONS = { 26933 leading: true, 26934 trailing: true 26935 }; 26936 function PreviewWrapper({ 26937 children, 26938 label, 26939 isFocused, 26940 withHoverView 26941 }) { 26942 const [backgroundColor = "white"] = useStyle("color.background"); 26943 const [gradientValue] = useStyle("color.gradient"); 26944 const disableMotion = (0, import_compose3.useReducedMotion)(); 26945 const [isHovered, setIsHovered] = (0, import_element69.useState)(false); 26946 const [containerResizeListener, { width }] = (0, import_compose3.useResizeObserver)(); 26947 const [throttledWidth, setThrottledWidthState] = (0, import_element69.useState)(width); 26948 const [ratioState, setRatioState] = (0, import_element69.useState)(); 26949 const setThrottledWidth = (0, import_compose3.useThrottle)( 26950 setThrottledWidthState, 26951 250, 26952 THROTTLE_OPTIONS 26953 ); 26954 (0, import_element69.useLayoutEffect)(() => { 26955 if (width) { 26956 setThrottledWidth(width); 26957 } 26958 }, [width, setThrottledWidth]); 26959 (0, import_element69.useLayoutEffect)(() => { 26960 const newRatio = throttledWidth ? throttledWidth / normalizedWidth : 1; 26961 const ratioDiff = newRatio - (ratioState || 0); 26962 const isRatioDiffBigEnough = Math.abs(ratioDiff) > 0.1; 26963 if (isRatioDiffBigEnough || !ratioState) { 26964 setRatioState(newRatio); 26965 } 26966 }, [throttledWidth, ratioState]); 26967 const fallbackRatio = width ? width / normalizedWidth : 1; 26968 const ratio = ratioState ? ratioState : fallbackRatio; 26969 const isReady = !!width; 26970 return /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(import_jsx_runtime129.Fragment, { children: [ 26971 /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("div", { style: { position: "relative" }, children: containerResizeListener }), 26972 !isReady && // Match the preview aspect ratio so layout doesn't jump once width is measured. 26973 /* @__PURE__ */ (0, import_jsx_runtime129.jsx)( 26974 Skeleton, 26975 { 26976 className: "global-styles-ui-preview__wrapper", 26977 style: { 26978 aspectRatio: normalizedWidth / normalizedHeight 26979 } 26980 } 26981 ), 26982 isReady && /* @__PURE__ */ (0, import_jsx_runtime129.jsx)( 26983 "div", 26984 { 26985 className: clsx_default("global-styles-ui-preview__wrapper", { 26986 "is-hoverable": withHoverView 26987 }), 26988 style: { 26989 height: normalizedHeight * ratio 26990 }, 26991 onMouseEnter: () => setIsHovered(true), 26992 onMouseLeave: () => setIsHovered(false), 26993 tabIndex: -1, 26994 children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)( 26995 import_components6.__unstableMotion.div, 26996 { 26997 style: { 26998 height: normalizedHeight * ratio, 26999 width: "100%", 27000 background: gradientValue ?? backgroundColor 27001 }, 27002 initial: "start", 27003 animate: (isHovered || isFocused) && !disableMotion && label ? "hover" : "start", 27004 children: [].concat(children).map( 27005 (child, key) => child({ ratio, key }) 27006 ) 27007 } 27008 ) 27009 } 27010 ) 27011 ] }); 27012 } 27013 var preview_wrapper_default = PreviewWrapper; 27014 27015 // packages/global-styles-ui/build-module/preview-styles.mjs 27016 var import_jsx_runtime130 = __toESM(require_jsx_runtime(), 1); 27017 var firstFrameVariants = { 27018 start: { 27019 scale: 1, 27020 opacity: 1 27021 }, 27022 hover: { 27023 scale: 0, 27024 opacity: 0 27025 } 27026 }; 27027 var midFrameVariants = { 27028 hover: { 27029 opacity: 1 27030 }, 27031 start: { 27032 opacity: 0.5 27033 } 27034 }; 27035 var secondFrameVariants = { 27036 hover: { 27037 scale: 1, 27038 opacity: 1 27039 }, 27040 start: { 27041 scale: 0, 27042 opacity: 0 27043 } 27044 }; 27045 function PreviewStyles({ 27046 label, 27047 isFocused, 27048 withHoverView, 27049 variation 27050 }) { 27051 const [fontWeight] = useStyle("typography.fontWeight"); 27052 const [fontFamily = "serif"] = useStyle( 27053 "typography.fontFamily" 27054 ); 27055 const [headingFontFamily = fontFamily] = useStyle( 27056 "elements.h1.typography.fontFamily" 27057 ); 27058 const [headingFontWeight = fontWeight] = useStyle( 27059 "elements.h1.typography.fontWeight" 27060 ); 27061 const [textColor = "black"] = useStyle("color.text"); 27062 const [headingColor = textColor] = useStyle( 27063 "elements.h1.color.text" 27064 ); 27065 const { paletteColors } = useStylesPreviewColors(); 27066 return /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)( 27067 preview_wrapper_default, 27068 { 27069 label, 27070 isFocused, 27071 withHoverView, 27072 children: [ 27073 ({ ratio, key }) => /* @__PURE__ */ (0, import_jsx_runtime130.jsx)( 27074 import_components7.__unstableMotion.div, 27075 { 27076 variants: firstFrameVariants, 27077 style: { 27078 height: "100%", 27079 overflow: "hidden" 27080 }, 27081 children: /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)( 27082 import_components7.__experimentalHStack, 27083 { 27084 spacing: 10 * ratio, 27085 justify: "center", 27086 style: { 27087 height: "100%", 27088 overflow: "hidden" 27089 }, 27090 children: [ 27091 /* @__PURE__ */ (0, import_jsx_runtime130.jsx)( 27092 PreviewTypography, 27093 { 27094 fontSize: 65 * ratio, 27095 variation 27096 } 27097 ), 27098 /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(import_components7.__experimentalVStack, { spacing: 4 * ratio, children: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)( 27099 HighlightedColors, 27100 { 27101 normalizedColorSwatchSize: 32, 27102 ratio 27103 } 27104 ) }) 27105 ] 27106 } 27107 ) 27108 }, 27109 key 27110 ), 27111 ({ key }) => /* @__PURE__ */ (0, import_jsx_runtime130.jsx)( 27112 import_components7.__unstableMotion.div, 27113 { 27114 variants: withHoverView ? midFrameVariants : void 0, 27115 style: { 27116 height: "100%", 27117 width: "100%", 27118 position: "absolute", 27119 top: 0, 27120 overflow: "hidden", 27121 filter: "blur(60px)", 27122 opacity: 0.1 27123 }, 27124 children: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)( 27125 import_components7.__experimentalHStack, 27126 { 27127 spacing: 0, 27128 justify: "flex-start", 27129 style: { 27130 height: "100%", 27131 overflow: "hidden" 27132 }, 27133 children: paletteColors.slice(0, 4).map(({ color }, index2) => /* @__PURE__ */ (0, import_jsx_runtime130.jsx)( 27134 "div", 27135 { 27136 style: { 27137 height: "100%", 27138 background: color, 27139 flexGrow: 1 27140 } 27141 }, 27142 index2 27143 )) 27144 } 27145 ) 27146 }, 27147 key 27148 ), 27149 ({ ratio, key }) => /* @__PURE__ */ (0, import_jsx_runtime130.jsx)( 27150 import_components7.__unstableMotion.div, 27151 { 27152 variants: secondFrameVariants, 27153 style: { 27154 height: "100%", 27155 width: "100%", 27156 overflow: "hidden", 27157 position: "absolute", 27158 top: 0 27159 }, 27160 children: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)( 27161 import_components7.__experimentalVStack, 27162 { 27163 spacing: 3 * ratio, 27164 justify: "center", 27165 style: { 27166 height: "100%", 27167 overflow: "hidden", 27168 padding: 10 * ratio, 27169 boxSizing: "border-box" 27170 }, 27171 children: label && /* @__PURE__ */ (0, import_jsx_runtime130.jsx)( 27172 "div", 27173 { 27174 style: { 27175 fontSize: 40 * ratio, 27176 fontFamily: headingFontFamily, 27177 color: headingColor, 27178 fontWeight: headingFontWeight, 27179 lineHeight: "1em", 27180 textAlign: "center" 27181 }, 27182 children: label 27183 } 27184 ) 27185 } 27186 ) 27187 }, 27188 key 27189 ) 27190 ] 27191 } 27192 ); 27193 } 27194 var preview_styles_default = PreviewStyles; 27195 27196 // packages/global-styles-ui/build-module/screen-root.mjs 27197 var import_jsx_runtime131 = __toESM(require_jsx_runtime(), 1); 27198 27199 // packages/global-styles-ui/build-module/screen-block-list.mjs 27200 var import_blocks5 = __toESM(require_blocks(), 1); 27201 var import_i18n17 = __toESM(require_i18n(), 1); 27202 var import_components15 = __toESM(require_components(), 1); 27203 var import_data5 = __toESM(require_data(), 1); 27204 var import_element74 = __toESM(require_element(), 1); 27205 var import_block_editor7 = __toESM(require_block_editor(), 1); 27206 var import_compose4 = __toESM(require_compose(), 1); 27207 import { speak } from "@wordpress/a11y"; 27208 27209 // packages/global-styles-ui/build-module/variations/variations-panel.mjs 27210 var import_blocks = __toESM(require_blocks(), 1); 27211 var import_data3 = __toESM(require_data(), 1); 27212 var import_components9 = __toESM(require_components(), 1); 27213 var import_jsx_runtime132 = __toESM(require_jsx_runtime(), 1); 27214 function getFilteredBlockStyles(blockStyles, variations) { 27215 return blockStyles?.filter( 27216 (style) => style.source === "block" || variations.includes(style.name) 27217 ) || []; 27218 } 27219 function useBlockVariations(name2) { 27220 const blockStyles = (0, import_data3.useSelect)( 27221 (select) => { 27222 const { getBlockStyles } = select(import_blocks.store); 27223 return getBlockStyles(name2); 27224 }, 27225 [name2] 27226 ); 27227 const [variations] = useStyle("variations", name2); 27228 const variationNames = Object.keys(variations ?? {}); 27229 return getFilteredBlockStyles(blockStyles, variationNames); 27230 } 27231 27232 // packages/global-styles-ui/build-module/screen-header.mjs 27233 var import_components10 = __toESM(require_components(), 1); 27234 var import_i18n13 = __toESM(require_i18n(), 1); 27235 var import_block_editor2 = __toESM(require_block_editor(), 1); 27236 var import_jsx_runtime133 = __toESM(require_jsx_runtime(), 1); 27237 var { StateControl, StateControlBadges } = unlock3(import_block_editor2.privateApis); 27238 27239 // packages/global-styles-ui/build-module/screen-element.mjs 27240 var import_i18n16 = __toESM(require_i18n(), 1); 27241 var import_element73 = __toESM(require_element(), 1); 27242 var import_components14 = __toESM(require_components(), 1); 27243 var import_block_editor6 = __toESM(require_block_editor(), 1); 27244 27245 // packages/global-styles-ui/build-module/element-preview.mjs 27246 var import_i18n14 = __toESM(require_i18n(), 1); 27247 var import_element70 = __toESM(require_element(), 1); 27248 var import_data4 = __toESM(require_data(), 1); 27249 var import_blocks2 = __toESM(require_blocks(), 1); 27250 var import_block_editor3 = __toESM(require_block_editor(), 1); 27251 var import_jsx_runtime134 = __toESM(require_jsx_runtime(), 1); 27252 27253 // packages/global-styles-ui/build-module/screen-block.mjs 27254 var import_blocks4 = __toESM(require_blocks(), 1); 27255 var import_block_editor5 = __toESM(require_block_editor(), 1); 27256 var import_element72 = __toESM(require_element(), 1); 27257 var import_components13 = __toESM(require_components(), 1); 27258 var import_i18n15 = __toESM(require_i18n(), 1); 27259 27260 // packages/global-styles-ui/build-module/block-preview-panel.mjs 27261 var import_block_editor4 = __toESM(require_block_editor(), 1); 27262 var import_blocks3 = __toESM(require_blocks(), 1); 27263 var import_components11 = __toESM(require_components(), 1); 27264 var import_element71 = __toESM(require_element(), 1); 27265 var import_jsx_runtime135 = __toESM(require_jsx_runtime(), 1); 27266 var { getViewportBreakpoints: getViewportBreakpoints3, getViewportBreakpointValueInPixels: getViewportBreakpointValueInPixels2 } = unlock3( 27267 privateApis 27268 ); 27269 27270 // packages/global-styles-ui/build-module/subtitle.mjs 27271 var import_components12 = __toESM(require_components(), 1); 27272 var import_jsx_runtime136 = __toESM(require_jsx_runtime(), 1); 27273 function Subtitle({ children, level = 2 }) { 27274 return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(import_components12.__experimentalHeading, { className: "global-styles-ui-subtitle", level, children }); 27275 } 27276 27277 // packages/global-styles-ui/build-module/screen-block.mjs 27278 var import_jsx_runtime137 = __toESM(require_jsx_runtime(), 1); 27279 var { 27280 useHasDimensionsPanel: useHasDimensionsPanel2, 27281 useHasTypographyPanel: useHasTypographyPanel2, 27282 useHasBorderPanel, 27283 useSettingsForBlockElement: useSettingsForBlockElement2, 27284 useHasColorPanel: useHasColorPanel2, 27285 useHasFiltersPanel, 27286 useHasImageSettingsPanel, 27287 useHasBackgroundPanel: useHasBackgroundPanel2, 27288 BackgroundPanel: StylesBackgroundPanel, 27289 BorderPanel: StylesBorderPanel, 27290 ColorPanel: StylesColorPanel, 27291 TypographyPanel: StylesTypographyPanel, 27292 DimensionsPanel: StylesDimensionsPanel, 27293 FiltersPanel: StylesFiltersPanel, 27294 ImageSettingsPanel, 27295 AdvancedPanel: StylesAdvancedPanel 27296 } = unlock3(import_block_editor5.privateApis); 27297 27298 // packages/global-styles-ui/build-module/screen-element.mjs 27299 var import_jsx_runtime138 = __toESM(require_jsx_runtime(), 1); 27300 var { 27301 useSettingsForBlockElement: useSettingsForBlockElement3, 27302 useHasBackgroundPanel: useHasBackgroundPanel3, 27303 useHasBorderPanel: useHasBorderPanel2, 27304 useHasDimensionsPanel: useHasDimensionsPanel3, 27305 useHasTypographyPanel: useHasTypographyPanel3, 27306 BackgroundPanel: StylesBackgroundPanel2, 27307 BorderPanel: StylesBorderPanel2, 27308 DimensionsPanel: StylesDimensionsPanel2, 27309 TypographyPanel: StylesTypographyPanel2, 27310 AdvancedPanel: StylesAdvancedPanel2 27311 } = unlock3(import_block_editor6.privateApis); 27312 var ELEMENTS = { 27313 text: { 27314 description: (0, import_i18n16.__)("Manage the fonts used on the site."), 27315 title: (0, import_i18n16.__)("Text") 27316 }, 27317 link: { 27318 description: (0, import_i18n16.__)("Manage the appearance of links."), 27319 title: (0, import_i18n16.__)("Link") 27320 }, 27321 caption: { 27322 description: (0, import_i18n16.__)("Manage the appearance of captions."), 27323 title: (0, import_i18n16.__)("Caption") 27324 }, 27325 cite: { 27326 description: (0, import_i18n16.__)("Manage the appearance of citations."), 27327 title: (0, import_i18n16.__)("Citation") 27328 }, 27329 heading: { 27330 description: (0, import_i18n16.__)("Manage the appearance of all headings."), 27331 title: (0, import_i18n16.__)("All headings") 27332 }, 27333 h1: { 27334 description: (0, import_i18n16.__)("Manage the appearance of level 1 headings."), 27335 title: (0, import_i18n16.__)("Heading 1") 27336 }, 27337 h2: { 27338 description: (0, import_i18n16.__)("Manage the appearance of level 2 headings."), 27339 title: (0, import_i18n16.__)("Heading 2") 27340 }, 27341 h3: { 27342 description: (0, import_i18n16.__)("Manage the appearance of level 3 headings."), 27343 title: (0, import_i18n16.__)("Heading 3") 27344 }, 27345 h4: { 27346 description: (0, import_i18n16.__)("Manage the appearance of level 4 headings."), 27347 title: (0, import_i18n16.__)("Heading 4") 27348 }, 27349 h5: { 27350 description: (0, import_i18n16.__)("Manage the appearance of level 5 headings."), 27351 title: (0, import_i18n16.__)("Heading 5") 27352 }, 27353 h6: { 27354 description: (0, import_i18n16.__)("Manage the appearance of level 6 headings."), 27355 title: (0, import_i18n16.__)("Heading 6") 27356 }, 27357 textInput: { 27358 description: (0, import_i18n16.__)("Manage the appearance of inputs."), 27359 title: (0, import_i18n16.__)("Form input") 27360 }, 27361 select: { 27362 description: (0, import_i18n16.__)("Manage the appearance of selects."), 27363 title: (0, import_i18n16.__)("Form select") 27364 }, 27365 button: { 27366 description: (0, import_i18n16.__)("Manage the appearance of buttons."), 27367 title: (0, import_i18n16.__)("Form button") 27368 } 27369 }; 27370 27371 // packages/global-styles-ui/build-module/screen-block-list.mjs 27372 var import_jsx_runtime139 = __toESM(require_jsx_runtime(), 1); 27373 var { 27374 useHasDimensionsPanel: useHasDimensionsPanel4, 27375 useHasTypographyPanel: useHasTypographyPanel4, 27376 useHasBorderPanel: useHasBorderPanel3, 27377 useSettingsForBlockElement: useSettingsForBlockElement4, 27378 useHasColorPanel: useHasColorPanel3, 27379 useHasBackgroundPanel: useHasBackgroundPanel4, 27380 searchItems 27381 } = unlock3(import_block_editor7.privateApis); 27382 var ELEMENT_GROUPS = [ 27383 { 27384 title: (0, import_i18n17.__)("Elements"), 27385 elements: ["link", "caption", "cite"] 27386 }, 27387 { 27388 title: (0, import_i18n17.__)("Headings"), 27389 // `heading` styles every level at once; each level can then override 27390 // it. Themes set most of their heading styles here. 27391 elements: ["heading", "h1", "h2", "h3", "h4", "h5", "h6"] 27392 }, 27393 { 27394 title: (0, import_i18n17.__)("Form controls"), 27395 elements: ["textInput", "select", "button"] 27396 } 27397 ]; 27398 var ELEMENT_ICONS = { 27399 link: link_default, 27400 caption: caption_default, 27401 cite: caption_default, 27402 heading: heading_default, 27403 h1: heading_level_1_default, 27404 h2: heading_level_2_default, 27405 h3: heading_level_3_default, 27406 h4: heading_level_4_default, 27407 h5: heading_level_5_default, 27408 h6: heading_level_6_default, 27409 textInput: form_input_default, 27410 select: form_select_default, 27411 button: button_default 27412 }; 27413 function hasAnyValue(value) { 27414 if (value === void 0 || value === null) { 27415 return false; 27416 } 27417 if (Array.isArray(value)) { 27418 return value.length > 0; 27419 } 27420 if (typeof value === "object") { 27421 return Object.values(value).some(hasAnyValue); 27422 } 27423 return true; 27424 } 27425 function hasUserStylesForBlock(user, blockName) { 27426 return hasAnyValue(user?.styles?.blocks?.[blockName]) || hasAnyValue(user?.settings?.blocks?.[blockName]); 27427 } 27428 function useSortedBlockTypes() { 27429 const blockItems = (0, import_data5.useSelect)( 27430 (select) => select(import_blocks5.store).getBlockTypes(), 27431 [] 27432 ); 27433 const groupByType = (blocks, block) => { 27434 const { core, noncore } = blocks; 27435 const type = block.name.startsWith("core/") ? core : noncore; 27436 type.push(block); 27437 return blocks; 27438 }; 27439 const { core: coreItems, noncore: nonCoreItems } = blockItems.reduce( 27440 groupByType, 27441 { core: [], noncore: [] } 27442 ); 27443 return [...coreItems, ...nonCoreItems]; 27444 } 27445 function useBlockHasGlobalStyles(blockName) { 27446 const [rawSettings] = useSetting("", blockName); 27447 const settings = useSettingsForBlockElement4(rawSettings, blockName); 27448 const hasTypographyPanel = useHasTypographyPanel4(settings); 27449 const hasColorPanel = useHasColorPanel3(settings); 27450 const hasBackgroundPanel = useHasBackgroundPanel4(settings); 27451 const hasBorderPanel = useHasBorderPanel3(settings); 27452 const hasDimensionsPanel = useHasDimensionsPanel4(settings); 27453 const hasLayoutPanel = hasBorderPanel || hasDimensionsPanel; 27454 const hasVariationsPanel = !!useBlockVariations(blockName)?.length; 27455 const hasGlobalStyles = hasTypographyPanel || hasColorPanel || hasBackgroundPanel || hasLayoutPanel || hasVariationsPanel; 27456 return hasGlobalStyles; 27457 } 27458 function ListMenuItem({ path, icon, title }) { 27459 return /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(NavigationButtonAsItem, { path, children: /* @__PURE__ */ (0, import_jsx_runtime139.jsxs)(Stack, { direction: "row", align: "center", gap: "sm", children: [ 27460 /* @__PURE__ */ (0, import_jsx_runtime139.jsx)( 27461 import_block_editor7.BlockIcon, 27462 { 27463 className: "global-styles-ui-block-types-item__icon", 27464 icon 27465 } 27466 ), 27467 /* @__PURE__ */ (0, import_jsx_runtime139.jsx)("span", { children: title }) 27468 ] }) }); 27469 } 27470 function BlockMenuItem({ block }) { 27471 const hasBlockMenuItem = useBlockHasGlobalStyles(block.name); 27472 if (!hasBlockMenuItem) { 27473 return null; 27474 } 27475 return /* @__PURE__ */ (0, import_jsx_runtime139.jsx)( 27476 ListMenuItem, 27477 { 27478 path: "/blocks/" + encodeURIComponent(block.name), 27479 icon: block.icon, 27480 title: block.title 27481 } 27482 ); 27483 } 27484 function ElementMenuItem({ element }) { 27485 return /* @__PURE__ */ (0, import_jsx_runtime139.jsx)( 27486 ListMenuItem, 27487 { 27488 path: "/blocks/elements/" + element, 27489 icon: ELEMENT_ICONS[element], 27490 title: ELEMENTS[element].title 27491 } 27492 ); 27493 } 27494 function ListGroup({ title, children }) { 27495 return /* @__PURE__ */ (0, import_jsx_runtime139.jsxs)("div", { className: "global-styles-ui-block-types-group", children: [ 27496 /* @__PURE__ */ (0, import_jsx_runtime139.jsx)("div", { className: "global-styles-ui-block-types-group__title", children: /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(Subtitle, { level: 3, children: title }) }), 27497 children 27498 ] }); 27499 } 27500 function EmptyList({ 27501 filterValue, 27502 styleFilter 27503 }) { 27504 const label = "customized" === styleFilter && !filterValue ? (0, import_i18n17.__)("You haven't customized any blocks or elements yet.") : (0, import_i18n17.__)("No results found."); 27505 return /* @__PURE__ */ (0, import_jsx_runtime139.jsx)( 27506 import_components15.__experimentalText, 27507 { 27508 align: "center", 27509 as: "p", 27510 className: "global-styles-ui-block-types-item-list__no-results", 27511 children: label 27512 } 27513 ); 27514 } 27515 function getFilteredElementGroups(filterValue, styleFilter, customizedElementNames) { 27516 const search = filterValue.trim().toLowerCase(); 27517 return ELEMENT_GROUPS.map((group) => ({ 27518 ...group, 27519 elements: group.elements.filter( 27520 (element) => ( 27521 // The element's name and group title match too, so "h1" finds 27522 // Heading 1 and "form" lists the form controls. 27523 (!search || [ELEMENTS[element].title, element, group.title].join(" ").toLowerCase().includes(search)) && (styleFilter !== "customized" || customizedElementNames.has(element)) 27524 ) 27525 ) 27526 })).filter((group) => group.elements.length > 0); 27527 } 27528 function BlockAndElementList({ filterValue, styleFilter }) { 27529 const sortedBlockTypes = useSortedBlockTypes(); 27530 const debouncedSpeak = (0, import_compose4.useDebounce)(speak, 500); 27531 const { user } = (0, import_element74.useContext)(GlobalStylesContext); 27532 const customizedBlockNames = (0, import_element74.useMemo)(() => { 27533 const names = /* @__PURE__ */ new Set(); 27534 const blockNames = [ 27535 ...Object.keys(user?.styles?.blocks ?? {}), 27536 ...Object.keys(user?.settings?.blocks ?? {}) 27537 ]; 27538 blockNames.forEach((blockName) => { 27539 if (hasUserStylesForBlock(user, blockName)) { 27540 names.add(blockName); 27541 } 27542 }); 27543 return names; 27544 }, [user]); 27545 const customizedElementNames = (0, import_element74.useMemo)(() => { 27546 const names = /* @__PURE__ */ new Set(); 27547 Object.entries(user?.styles?.elements ?? {}).forEach( 27548 ([name2, styles]) => { 27549 if (hasAnyValue(styles)) { 27550 names.add(name2); 27551 } 27552 } 27553 ); 27554 return names; 27555 }, [user]); 27556 const filteredElementGroups = getFilteredElementGroups( 27557 filterValue, 27558 styleFilter, 27559 customizedElementNames 27560 ); 27561 const searchedBlockTypes = searchItems( 27562 sortedBlockTypes, 27563 filterValue 27564 ); 27565 const filteredBlockTypes = styleFilter === "customized" ? searchedBlockTypes.filter( 27566 (blockType) => customizedBlockNames.has(blockType.name) 27567 ) : searchedBlockTypes; 27568 const blockTypesListRef = (0, import_element74.useRef)(null); 27569 const elementCount = filteredElementGroups.reduce( 27570 (total, group) => total + group.elements.length, 27571 0 27572 ); 27573 const hasBlockResults = filteredBlockTypes.length > 0; 27574 (0, import_element74.useEffect)(() => { 27575 if (!filterValue && styleFilter === "all") { 27576 return; 27577 } 27578 const blockCount = hasBlockResults ? blockTypesListRef.current?.childElementCount || 0 : 0; 27579 const count = elementCount + blockCount; 27580 const resultsFoundMessage = (0, import_i18n17.sprintf)( 27581 /* translators: %d: number of results. */ 27582 (0, import_i18n17._n)("%d result found.", "%d results found.", count), 27583 count 27584 ); 27585 debouncedSpeak(resultsFoundMessage, "polite"); 27586 }, [ 27587 filterValue, 27588 styleFilter, 27589 hasBlockResults, 27590 elementCount, 27591 debouncedSpeak 27592 ]); 27593 if (!elementCount && !hasBlockResults) { 27594 return /* @__PURE__ */ (0, import_jsx_runtime139.jsx)( 27595 EmptyList, 27596 { 27597 filterValue, 27598 styleFilter 27599 } 27600 ); 27601 } 27602 return /* @__PURE__ */ (0, import_jsx_runtime139.jsxs)(import_jsx_runtime139.Fragment, { children: [ 27603 filteredElementGroups.map((group) => /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(ListGroup, { title: group.title, children: /* @__PURE__ */ (0, import_jsx_runtime139.jsx)( 27604 import_components15.__experimentalItemGroup, 27605 { 27606 className: "global-styles-ui-block-types-item-list", 27607 size: "small", 27608 children: group.elements.map((element) => /* @__PURE__ */ (0, import_jsx_runtime139.jsx)( 27609 ElementMenuItem, 27610 { 27611 element 27612 }, 27613 element 27614 )) 27615 } 27616 ) }, group.title)), 27617 hasBlockResults && /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(ListGroup, { title: (0, import_i18n17.__)("Blocks"), children: /* @__PURE__ */ (0, import_jsx_runtime139.jsx)( 27618 import_components15.__experimentalItemGroup, 27619 { 27620 ref: blockTypesListRef, 27621 className: "global-styles-ui-block-types-item-list", 27622 size: "small", 27623 children: filteredBlockTypes.map((block) => /* @__PURE__ */ (0, import_jsx_runtime139.jsx)( 27624 BlockMenuItem, 27625 { 27626 block 27627 }, 27628 "menu-itemblock-" + block.name 27629 )) 27630 } 27631 ) }) 27632 ] }); 27633 } 27634 var MemoizedBlockAndElementList = (0, import_element74.memo)(BlockAndElementList); 27635 27636 // packages/global-styles-ui/build-module/screen-typography.mjs 27637 var import_i18n33 = __toESM(require_i18n(), 1); 27638 var import_element86 = __toESM(require_element(), 1); 27639 27640 // packages/global-styles-ui/build-module/screen-body.mjs 27641 var import_components16 = __toESM(require_components(), 1); 27642 var import_jsx_runtime140 = __toESM(require_jsx_runtime(), 1); 27643 27644 // packages/global-styles-ui/build-module/typography-elements.mjs 27645 var import_i18n18 = __toESM(require_i18n(), 1); 27646 var import_components17 = __toESM(require_components(), 1); 27647 var import_jsx_runtime141 = __toESM(require_jsx_runtime(), 1); 27648 27649 // packages/global-styles-ui/build-module/variations/variations-typography.mjs 27650 var import_components19 = __toESM(require_components(), 1); 27651 27652 // packages/global-styles-ui/build-module/preview-typography.mjs 27653 var import_components18 = __toESM(require_components(), 1); 27654 var import_jsx_runtime142 = __toESM(require_jsx_runtime(), 1); 27655 var StylesPreviewTypography = ({ 27656 variation, 27657 isFocused, 27658 withHoverView 27659 }) => { 27660 return /* @__PURE__ */ (0, import_jsx_runtime142.jsx)( 27661 preview_wrapper_default, 27662 { 27663 label: variation.title, 27664 isFocused, 27665 withHoverView, 27666 children: ({ ratio, key }) => /* @__PURE__ */ (0, import_jsx_runtime142.jsx)( 27667 import_components18.__experimentalHStack, 27668 { 27669 spacing: 10 * ratio, 27670 justify: "center", 27671 style: { 27672 height: "100%", 27673 overflow: "hidden" 27674 }, 27675 children: /* @__PURE__ */ (0, import_jsx_runtime142.jsx)( 27676 PreviewTypography, 27677 { 27678 variation, 27679 fontSize: 85 * ratio 27680 } 27681 ) 27682 }, 27683 key 27684 ) 27685 } 27686 ); 27687 }; 27688 var preview_typography_default = StylesPreviewTypography; 27689 27690 // packages/global-styles-ui/build-module/variations/variation.mjs 27691 var import_element75 = __toESM(require_element(), 1); 27692 var import_keycodes = __toESM(require_keycodes(), 1); 27693 var import_i18n19 = __toESM(require_i18n(), 1); 27694 var import_jsx_runtime143 = __toESM(require_jsx_runtime(), 1); 27695 function Variation({ 27696 variation, 27697 children, 27698 isPill = false, 27699 properties, 27700 showTooltip = false 27701 }) { 27702 const [isFocused, setIsFocused] = (0, import_element75.useState)(false); 27703 const { 27704 base, 27705 user, 27706 onChange: setUserConfig 27707 } = (0, import_element75.useContext)(GlobalStylesContext); 27708 const context = (0, import_element75.useMemo)(() => { 27709 let merged = mergeGlobalStyles(base, variation); 27710 if (properties) { 27711 merged = filterObjectByProperties(merged, properties); 27712 } 27713 return { 27714 user: variation, 27715 base, 27716 merged, 27717 onChange: () => { 27718 } 27719 }; 27720 }, [variation, base, properties]); 27721 const selectVariation = () => setUserConfig(variation); 27722 const selectOnEnter = (event) => { 27723 if (event.keyCode === import_keycodes.ENTER) { 27724 event.preventDefault(); 27725 selectVariation(); 27726 } 27727 }; 27728 const isActive = (0, import_element75.useMemo)( 27729 () => areGlobalStylesEqual(user, variation), 27730 [user, variation] 27731 ); 27732 let label = variation?.title; 27733 if (variation?.description) { 27734 label = (0, import_i18n19.sprintf)( 27735 /* translators: 1: variation title. 2: variation description. */ 27736 (0, import_i18n19._x)("%1$s (%2$s)", "variation label"), 27737 variation?.title, 27738 variation?.description 27739 ); 27740 } 27741 const content = /* @__PURE__ */ (0, import_jsx_runtime143.jsx)( 27742 "div", 27743 { 27744 className: clsx_default("global-styles-ui-variations_item", { 27745 "is-active": isActive 27746 }), 27747 role: "button", 27748 onClick: selectVariation, 27749 onKeyDown: selectOnEnter, 27750 tabIndex: 0, 27751 "aria-label": label, 27752 "aria-current": isActive, 27753 onFocus: () => setIsFocused(true), 27754 onBlur: () => setIsFocused(false), 27755 children: /* @__PURE__ */ (0, import_jsx_runtime143.jsx)( 27756 "div", 27757 { 27758 className: clsx_default("global-styles-ui-variations_item-preview", { 27759 "is-pill": isPill 27760 }), 27761 children: children(isFocused) 27762 } 27763 ) 27764 } 27765 ); 27766 return /* @__PURE__ */ (0, import_jsx_runtime143.jsx)(GlobalStylesContext.Provider, { value: context, children: showTooltip ? /* @__PURE__ */ (0, import_jsx_runtime143.jsxs)(tooltip_exports.Root, { children: [ 27767 /* @__PURE__ */ (0, import_jsx_runtime143.jsx)(tooltip_exports.Trigger, { render: content }), 27768 /* @__PURE__ */ (0, import_jsx_runtime143.jsx)(tooltip_exports.Popup, { children: variation?.title }) 27769 ] }) : content }); 27770 } 27771 27772 // packages/global-styles-ui/build-module/variations/variations-typography.mjs 27773 var import_jsx_runtime144 = __toESM(require_jsx_runtime(), 1); 27774 var propertiesToFilter = ["typography"]; 27775 function TypographyVariations({ 27776 title, 27777 gap = 2 27778 }) { 27779 const typographyVariations = useCurrentMergeThemeStyleVariationsWithUserConfig(propertiesToFilter); 27780 if (typographyVariations?.length <= 1) { 27781 return null; 27782 } 27783 return /* @__PURE__ */ (0, import_jsx_runtime144.jsxs)(import_components19.__experimentalVStack, { spacing: 3, children: [ 27784 title && /* @__PURE__ */ (0, import_jsx_runtime144.jsx)(Subtitle, { level: 3, children: title }), 27785 /* @__PURE__ */ (0, import_jsx_runtime144.jsx)( 27786 import_components19.__experimentalGrid, 27787 { 27788 columns: 3, 27789 gap, 27790 className: "global-styles-ui-style-variations-container", 27791 children: typographyVariations.map( 27792 (variation, index2) => { 27793 return /* @__PURE__ */ (0, import_jsx_runtime144.jsx)( 27794 Variation, 27795 { 27796 variation, 27797 properties: propertiesToFilter, 27798 showTooltip: true, 27799 children: () => /* @__PURE__ */ (0, import_jsx_runtime144.jsx)( 27800 preview_typography_default, 27801 { 27802 variation 27803 } 27804 ) 27805 }, 27806 index2 27807 ); 27808 } 27809 ) 27810 } 27811 ) 27812 ] }); 27813 } 27814 27815 // packages/global-styles-ui/build-module/font-families.mjs 27816 var import_i18n30 = __toESM(require_i18n(), 1); 27817 var import_components29 = __toESM(require_components(), 1); 27818 var import_element85 = __toESM(require_element(), 1); 27819 27820 // packages/global-styles-ui/build-module/font-library/context.mjs 27821 var import_element76 = __toESM(require_element(), 1); 27822 var import_data6 = __toESM(require_data(), 1); 27823 var import_core_data4 = __toESM(require_core_data(), 1); 27824 var import_i18n21 = __toESM(require_i18n(), 1); 27825 27826 // packages/global-styles-ui/build-module/font-library/api.mjs 27827 var import_api_fetch = __toESM(require_api_fetch(), 1); 27828 var import_core_data3 = __toESM(require_core_data(), 1); 27829 var FONT_FAMILIES_URL = "/wp/v2/font-families"; 27830 function invalidateFontFamilyCache(registry) { 27831 const { receiveEntityRecords } = registry.dispatch(import_core_data3.store); 27832 receiveEntityRecords( 27833 "postType", 27834 "wp_font_family", 27835 [], 27836 void 0, 27837 true 27838 // invalidateCache 27839 ); 27840 } 27841 async function fetchInstallFontFamily(data, registry) { 27842 const config = { 27843 path: FONT_FAMILIES_URL, 27844 method: "POST", 27845 body: data 27846 }; 27847 const response = await (0, import_api_fetch.default)(config); 27848 invalidateFontFamilyCache(registry); 27849 return { 27850 id: response.id, 27851 ...response.font_family_settings, 27852 fontFace: [] 27853 }; 27854 } 27855 async function fetchInstallFontFace(fontFamilyId, data, registry) { 27856 const config = { 27857 path: `$FONT_FAMILIES_URL}/$fontFamilyId}/font-faces`, 27858 method: "POST", 27859 body: data 27860 }; 27861 const response = await (0, import_api_fetch.default)(config); 27862 invalidateFontFamilyCache(registry); 27863 return { 27864 id: response.id, 27865 ...response.font_face_settings 27866 }; 27867 } 27868 27869 // node_modules/.store/tslib@2.8.1-LT-dxu1EkVy7OUDyVf5glQ/node_modules/tslib/tslib.es6.mjs 27870 var __assign = function() { 27871 __assign = Object.assign || function __assign2(t) { 27872 for (var s, i = 1, n = arguments.length; i < n; i++) { 27873 s = arguments[i]; 27874 for (var p3 in s) if (Object.prototype.hasOwnProperty.call(s, p3)) t[p3] = s[p3]; 27875 } 27876 return t; 27877 }; 27878 return __assign.apply(this, arguments); 27879 }; 27880 27881 // node_modules/.store/lower-case@2.0.2-5YZP5nczP5_f_8Vt5KBPjA/node_modules/lower-case/dist.es2015/index.js 27882 function lowerCase(str) { 27883 return str.toLowerCase(); 27884 } 27885 27886 // node_modules/.store/no-case@3.0.4-R4Hzt6qn-erEsTak7ojDpg/node_modules/no-case/dist.es2015/index.js 27887 var DEFAULT_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g]; 27888 var DEFAULT_STRIP_REGEXP = /[^A-Z0-9]+/gi; 27889 function noCase(input, options) { 27890 if (options === void 0) { 27891 options = {}; 27892 } 27893 var _a = options.splitRegexp, splitRegexp = _a === void 0 ? DEFAULT_SPLIT_REGEXP : _a, _b = options.stripRegexp, stripRegexp = _b === void 0 ? DEFAULT_STRIP_REGEXP : _b, _c = options.transform, transform = _c === void 0 ? lowerCase : _c, _d = options.delimiter, delimiter = _d === void 0 ? " " : _d; 27894 var result = replace(replace(input, splitRegexp, "$1\0$2"), stripRegexp, "\0"); 27895 var start = 0; 27896 var end = result.length; 27897 while (result.charAt(start) === "\0") 27898 start++; 27899 while (result.charAt(end - 1) === "\0") 27900 end--; 27901 return result.slice(start, end).split("\0").map(transform).join(delimiter); 27902 } 27903 function replace(input, re, value) { 27904 if (re instanceof RegExp) 27905 return input.replace(re, value); 27906 return re.reduce(function(input2, re2) { 27907 return input2.replace(re2, value); 27908 }, input); 27909 } 27910 27911 // node_modules/.store/dot-case@3.0.4-hi-rLWlWmiZ169n4dWcbUA/node_modules/dot-case/dist.es2015/index.js 27912 function dotCase(input, options) { 27913 if (options === void 0) { 27914 options = {}; 27915 } 27916 return noCase(input, __assign({ delimiter: "." }, options)); 27917 } 27918 27919 // node_modules/.store/param-case@3.0.4-rdAht_VwpGpefPRylN2bTA/node_modules/param-case/dist.es2015/index.js 27920 function paramCase(input, options) { 27921 if (options === void 0) { 27922 options = {}; 27923 } 27924 return dotCase(input, __assign({ delimiter: "-" }, options)); 27925 } 27926 27927 // packages/kebab-case/build-module/index.mjs 27928 function kebabCase(str) { 27929 let input = str?.toString?.() ?? ""; 27930 input = input.replace(/['\u2019]/, ""); 27931 return paramCase(input, { 27932 splitRegexp: [ 27933 /(?!(?:1ST|2ND|3RD|[4-9]TH)(?![a-z]))([a-z0-9])([A-Z])/g, 27934 // fooBar => foo-bar, 3Bar => 3-bar 27935 /(?!(?:1st|2nd|3rd|[4-9]th)(?![a-z]))([0-9])([a-z])/g, 27936 // 3bar => 3-bar 27937 /([A-Za-z])([0-9])/g, 27938 // Foo3 => foo-3, foo3 => foo-3 27939 /([A-Z])([A-Z][a-z])/g 27940 // FOOBar => foo-bar 27941 ] 27942 }); 27943 } 27944 27945 // packages/global-styles-ui/build-module/font-library/utils/constants.mjs 27946 var import_i18n20 = __toESM(require_i18n(), 1); 27947 var ALLOWED_FILE_EXTENSIONS = ["otf", "ttf", "woff", "woff2"]; 27948 var FONT_WEIGHTS = { 27949 100: (0, import_i18n20._x)("Thin", "font weight"), 27950 200: (0, import_i18n20._x)("Extra-light", "font weight"), 27951 300: (0, import_i18n20._x)("Light", "font weight"), 27952 400: (0, import_i18n20._x)("Normal", "font weight"), 27953 500: (0, import_i18n20._x)("Medium", "font weight"), 27954 600: (0, import_i18n20._x)("Semi-bold", "font weight"), 27955 700: (0, import_i18n20._x)("Bold", "font weight"), 27956 800: (0, import_i18n20._x)("Extra-bold", "font weight"), 27957 900: (0, import_i18n20._x)("Black", "font weight") 27958 }; 27959 var FONT_STYLES = { 27960 normal: (0, import_i18n20._x)("Normal", "font style"), 27961 italic: (0, import_i18n20._x)("Italic", "font style") 27962 }; 27963 27964 // packages/global-styles-ui/build-module/font-library/utils/index.mjs 27965 var { File } = window; 27966 function setUIValuesNeeded(font2, extraValues = {}) { 27967 if (!font2.name && (font2.fontFamily || font2.slug)) { 27968 font2.name = font2.fontFamily || font2.slug; 27969 } 27970 return { 27971 ...font2, 27972 ...extraValues 27973 }; 27974 } 27975 function isUrlEncoded(url) { 27976 if (typeof url !== "string") { 27977 return false; 27978 } 27979 return url !== decodeURIComponent(url); 27980 } 27981 function getFontFaceVariantName(face) { 27982 const weightName = FONT_WEIGHTS[face.fontWeight ?? ""] || face.fontWeight; 27983 const styleName = face.fontStyle === "normal" ? "" : FONT_STYLES[face.fontStyle ?? ""] || face.fontStyle; 27984 return `$weightName} $styleName}`; 27985 } 27986 function mergeFontFaces(existing = [], incoming = []) { 27987 const map = /* @__PURE__ */ new Map(); 27988 for (const face of existing) { 27989 map.set(`$face.fontWeight}$face.fontStyle}`, face); 27990 } 27991 for (const face of incoming) { 27992 map.set(`$face.fontWeight}$face.fontStyle}`, face); 27993 } 27994 return Array.from(map.values()); 27995 } 27996 function mergeFontFamilies(existing = [], incoming = []) { 27997 const map = /* @__PURE__ */ new Map(); 27998 for (const font2 of existing) { 27999 map.set(font2.slug, { ...font2 }); 28000 } 28001 for (const font2 of incoming) { 28002 if (map.has(font2.slug)) { 28003 const { fontFace: incomingFontFaces, ...restIncoming } = font2; 28004 const existingFont = map.get(font2.slug); 28005 const mergedFontFaces = mergeFontFaces( 28006 existingFont.fontFace, 28007 incomingFontFaces 28008 ); 28009 map.set(font2.slug, { 28010 ...restIncoming, 28011 fontFace: mergedFontFaces 28012 }); 28013 } else { 28014 map.set(font2.slug, { ...font2 }); 28015 } 28016 } 28017 return Array.from(map.values()); 28018 } 28019 async function loadFontFaceInBrowser(fontFace, source, addTo = "all") { 28020 let dataSource; 28021 if (typeof source === "string") { 28022 dataSource = `url($source})`; 28023 } else if (source instanceof File) { 28024 dataSource = await source.arrayBuffer(); 28025 } else { 28026 return; 28027 } 28028 const newFont = new window.FontFace( 28029 formatFontFaceName(fontFace.fontFamily), 28030 dataSource, 28031 { 28032 style: fontFace.fontStyle, 28033 weight: String(fontFace.fontWeight) 28034 } 28035 ); 28036 const loadedFace = await newFont.load(); 28037 if (addTo === "document" || addTo === "all") { 28038 document.fonts.add(loadedFace); 28039 } 28040 if (addTo === "iframe" || addTo === "all") { 28041 const iframe = document.querySelector( 28042 'iframe[name="editor-canvas"]' 28043 ); 28044 if (iframe?.contentDocument) { 28045 iframe.contentDocument.fonts.add(loadedFace); 28046 } 28047 } 28048 } 28049 function unloadFontFaceInBrowser(fontFace, removeFrom = "all") { 28050 const unloadFontFace = (fonts) => { 28051 fonts.forEach((f) => { 28052 if (f.family === formatFontFaceName(fontFace?.fontFamily) && f.weight === fontFace?.fontWeight && f.style === fontFace?.fontStyle) { 28053 fonts.delete(f); 28054 } 28055 }); 28056 }; 28057 if (removeFrom === "document" || removeFrom === "all") { 28058 unloadFontFace(document.fonts); 28059 } 28060 if (removeFrom === "iframe" || removeFrom === "all") { 28061 const iframe = document.querySelector( 28062 'iframe[name="editor-canvas"]' 28063 ); 28064 if (iframe?.contentDocument) { 28065 unloadFontFace(iframe.contentDocument.fonts); 28066 } 28067 } 28068 } 28069 function getDisplaySrcFromFontFace(input) { 28070 if (!input) { 28071 return; 28072 } 28073 let src; 28074 if (Array.isArray(input)) { 28075 src = input[0]; 28076 } else { 28077 src = input; 28078 } 28079 if (src.startsWith("file:.")) { 28080 return; 28081 } 28082 if (!isUrlEncoded(src)) { 28083 src = encodeURI(src); 28084 } 28085 return src; 28086 } 28087 function makeFontFamilyFormData(fontFamily) { 28088 const formData = new FormData(); 28089 const { fontFace, category, ...familyWithValidParameters } = fontFamily; 28090 const fontFamilySettings = { 28091 ...familyWithValidParameters, 28092 slug: kebabCase(fontFamily.slug) 28093 }; 28094 formData.append( 28095 "font_family_settings", 28096 JSON.stringify(fontFamilySettings) 28097 ); 28098 return formData; 28099 } 28100 function makeFontFacesFormData(font2) { 28101 const fontFacesFormData = (font2?.fontFace ?? []).map( 28102 (item, faceIndex) => { 28103 const face = { ...item }; 28104 const formData = new FormData(); 28105 if (face.file) { 28106 const files = Array.isArray(face.file) ? face.file : [face.file]; 28107 const src = []; 28108 files.forEach((file, key) => { 28109 const fileId = `file-$faceIndex}-$key}`; 28110 formData.append(fileId, file, file.name); 28111 src.push(fileId); 28112 }); 28113 face.src = src.length === 1 ? src[0] : src; 28114 delete face.file; 28115 formData.append("font_face_settings", JSON.stringify(face)); 28116 } else { 28117 formData.append("font_face_settings", JSON.stringify(face)); 28118 } 28119 return formData; 28120 } 28121 ); 28122 return fontFacesFormData; 28123 } 28124 async function batchInstallFontFaces(fontFamilyId, fontFacesData, registry) { 28125 const responses = []; 28126 for (const faceData of fontFacesData) { 28127 try { 28128 const response = await fetchInstallFontFace( 28129 fontFamilyId, 28130 faceData, 28131 registry 28132 ); 28133 responses.push({ status: "fulfilled", value: response }); 28134 } catch (error2) { 28135 responses.push({ status: "rejected", reason: error2 }); 28136 } 28137 } 28138 const results = { 28139 errors: [], 28140 successes: [] 28141 }; 28142 responses.forEach((result, index2) => { 28143 if (result.status === "fulfilled" && result.value) { 28144 const response = result.value; 28145 results.successes.push(response); 28146 } else if (result.reason) { 28147 results.errors.push({ 28148 data: fontFacesData[index2], 28149 message: result.reason.message 28150 }); 28151 } 28152 }); 28153 return results; 28154 } 28155 async function downloadFontFaceAssets(src) { 28156 src = Array.isArray(src) ? src : [src]; 28157 const files = await Promise.all( 28158 src.map(async (url) => { 28159 return fetch(new Request(url)).then((response) => { 28160 if (!response.ok) { 28161 throw new Error( 28162 `Error downloading font face asset from $url}. Server responded with status: $response.status}` 28163 ); 28164 } 28165 return response.blob(); 28166 }).then((blob) => { 28167 const filename = url.split("/").pop(); 28168 const file = new File([blob], filename, { 28169 type: blob.type 28170 }); 28171 return file; 28172 }); 28173 }) 28174 ); 28175 return files.length === 1 ? files[0] : files; 28176 } 28177 function checkFontFaceInstalled(fontFace, collection) { 28178 return -1 !== collection.findIndex((collectionFontFace) => { 28179 return collectionFontFace.fontWeight === fontFace.fontWeight && collectionFontFace.fontStyle === fontFace.fontStyle; 28180 }); 28181 } 28182 28183 // packages/global-styles-ui/build-module/font-library/utils/set-immutably.mjs 28184 function setImmutably2(object, path, value) { 28185 path = Array.isArray(path) ? [...path] : [path]; 28186 object = Array.isArray(object) ? [...object] : { ...object }; 28187 const leaf = path.pop(); 28188 let prev = object; 28189 for (const key of path) { 28190 const lvl = prev[key]; 28191 prev = prev[key] = Array.isArray(lvl) ? [...lvl] : { ...lvl }; 28192 } 28193 prev[leaf] = value; 28194 return object; 28195 } 28196 28197 // packages/global-styles-ui/build-module/font-library/utils/toggleFont.mjs 28198 function toggleFont(font2, face, initialfonts = []) { 28199 const isFontActivated = (f) => f.slug === font2.slug; 28200 const getActivatedFont = (fonts) => fonts.find(isFontActivated); 28201 const toggleEntireFontFamily = (activatedFont2) => { 28202 if (!activatedFont2) { 28203 return [...initialfonts, font2]; 28204 } 28205 return initialfonts.filter( 28206 (f) => !isFontActivated(f) 28207 ); 28208 }; 28209 const toggleFontVariant = (activatedFont2) => { 28210 const isFaceActivated = (f) => f.fontWeight === face.fontWeight && f.fontStyle === face.fontStyle; 28211 if (!activatedFont2) { 28212 return [...initialfonts, { ...font2, fontFace: [face] }]; 28213 } 28214 let newFontFaces = activatedFont2.fontFace || []; 28215 if (newFontFaces.find(isFaceActivated)) { 28216 newFontFaces = newFontFaces.filter( 28217 (f) => !isFaceActivated(f) 28218 ); 28219 } else { 28220 newFontFaces = [...newFontFaces, face]; 28221 } 28222 if (newFontFaces.length === 0) { 28223 return initialfonts.filter( 28224 (f) => !isFontActivated(f) 28225 ); 28226 } 28227 return initialfonts.map( 28228 (f) => isFontActivated(f) ? { ...f, fontFace: newFontFaces } : f 28229 ); 28230 }; 28231 const activatedFont = getActivatedFont(initialfonts); 28232 if (!face) { 28233 return toggleEntireFontFamily(activatedFont); 28234 } 28235 return toggleFontVariant(activatedFont); 28236 } 28237 28238 // packages/global-styles-ui/build-module/font-library/context.mjs 28239 var import_jsx_runtime145 = __toESM(require_jsx_runtime(), 1); 28240 var FontLibraryContext = (0, import_element76.createContext)( 28241 {} 28242 ); 28243 FontLibraryContext.displayName = "FontLibraryContext"; 28244 function FontLibraryProvider({ children }) { 28245 const registry = (0, import_data6.useRegistry)(); 28246 const { saveEntityRecord, deleteEntityRecord } = (0, import_data6.useDispatch)(import_core_data4.store); 28247 const { globalStylesId } = (0, import_data6.useSelect)((select) => { 28248 const { __experimentalGetCurrentGlobalStylesId } = select(import_core_data4.store); 28249 return { globalStylesId: __experimentalGetCurrentGlobalStylesId() }; 28250 }, []); 28251 const globalStyles = (0, import_core_data4.useEntityRecord)( 28252 "root", 28253 "globalStyles", 28254 globalStylesId ?? 0, 28255 { enabled: globalStylesId !== void 0 } 28256 ); 28257 const [isInstalling, setIsInstalling] = (0, import_element76.useState)(false); 28258 const { records: libraryPosts = [], isResolving: isResolvingLibrary } = (0, import_core_data4.useEntityRecords)( 28259 "postType", 28260 "wp_font_family", 28261 { 28262 _embed: true, 28263 per_page: -1 28264 } 28265 ); 28266 const libraryFonts = (libraryPosts || []).map((fontFamilyPost) => { 28267 return { 28268 id: fontFamilyPost.id, 28269 ...fontFamilyPost.font_family_settings || {}, 28270 fontFace: fontFamilyPost?._embedded?.font_faces?.map( 28271 (face) => face.font_face_settings 28272 ) || [] 28273 }; 28274 }) || []; 28275 const [fontFamilies, setFontFamilies] = useSetting("typography.fontFamilies"); 28276 const saveFontFamilies = async (fonts) => { 28277 if (!globalStyles.record) { 28278 return; 28279 } 28280 const updatedGlobalStyles = globalStyles.record; 28281 const finalGlobalStyles = setImmutably2( 28282 updatedGlobalStyles ?? {}, 28283 ["settings", "typography", "fontFamilies"], 28284 fonts 28285 ); 28286 await saveEntityRecord("root", "globalStyles", finalGlobalStyles); 28287 }; 28288 const [modalTabOpen, setModalTabOpen] = (0, import_element76.useState)(""); 28289 const [libraryFontSelected, setLibraryFontSelected] = (0, import_element76.useState)(void 0); 28290 const themeFonts = fontFamilies?.theme ? fontFamilies.theme.map((f) => setUIValuesNeeded(f, { source: "theme" })).sort((a, b) => a.name.localeCompare(b.name)) : []; 28291 const customFonts = fontFamilies?.custom ? fontFamilies.custom.map((f) => setUIValuesNeeded(f, { source: "custom" })).sort((a, b) => a.name.localeCompare(b.name)) : []; 28292 const baseCustomFonts = libraryFonts ? libraryFonts.map((f) => setUIValuesNeeded(f, { source: "custom" })).sort((a, b) => a.name.localeCompare(b.name)) : []; 28293 (0, import_element76.useEffect)(() => { 28294 if (!modalTabOpen) { 28295 setLibraryFontSelected(void 0); 28296 } 28297 }, [modalTabOpen]); 28298 const handleSetLibraryFontSelected = (font2) => { 28299 if (!font2) { 28300 setLibraryFontSelected(void 0); 28301 return; 28302 } 28303 const fonts = font2.source === "theme" ? themeFonts : baseCustomFonts; 28304 const fontSelected = fonts.find((f) => f.slug === font2.slug); 28305 setLibraryFontSelected({ 28306 ...fontSelected || font2, 28307 source: font2.source 28308 }); 28309 }; 28310 const [loadedFontUrls] = (0, import_element76.useState)(/* @__PURE__ */ new Set()); 28311 const getAvailableFontsOutline = (availableFontFamilies) => { 28312 const outline = availableFontFamilies.reduce( 28313 (acc, font2) => { 28314 const availableFontFaces = font2?.fontFace && font2.fontFace?.length > 0 ? font2?.fontFace.map( 28315 (face) => `$face.fontStyle ?? ""}$face.fontWeight ?? ""}` 28316 ) : ["normal400"]; 28317 acc[font2.slug] = availableFontFaces; 28318 return acc; 28319 }, 28320 {} 28321 ); 28322 return outline; 28323 }; 28324 const getActivatedFontsOutline = (source) => { 28325 switch (source) { 28326 case "theme": 28327 return getAvailableFontsOutline(themeFonts); 28328 case "custom": 28329 default: 28330 return getAvailableFontsOutline(customFonts); 28331 } 28332 }; 28333 const isFontActivated = (slug, style, weight, source) => { 28334 if (!style && !weight) { 28335 return !!getActivatedFontsOutline(source)[slug]; 28336 } 28337 return !!getActivatedFontsOutline(source)[slug]?.includes( 28338 (style ?? "") + (weight ?? "") 28339 ); 28340 }; 28341 const getFontFacesActivated = (slug, source) => { 28342 return getActivatedFontsOutline(source)[slug] || []; 28343 }; 28344 async function installFonts(fontFamiliesToInstall) { 28345 setIsInstalling(true); 28346 try { 28347 const fontFamiliesToActivate = []; 28348 let installationErrors = []; 28349 for (const fontFamilyToInstall of fontFamiliesToInstall) { 28350 let isANewFontFamily = false; 28351 const fontFamilyRecords = await (0, import_data6.resolveSelect)( 28352 import_core_data4.store 28353 ).getEntityRecords( 28354 "postType", 28355 "wp_font_family", 28356 { 28357 slug: fontFamilyToInstall.slug, 28358 per_page: 1, 28359 _embed: true 28360 } 28361 ); 28362 const fontFamilyPost = fontFamilyRecords && fontFamilyRecords.length > 0 ? fontFamilyRecords[0] : null; 28363 let installedFontFamily = fontFamilyPost ? { 28364 id: fontFamilyPost.id, 28365 ...fontFamilyPost.font_family_settings, 28366 fontFace: (fontFamilyPost?._embedded?.font_faces ?? []).map( 28367 (face) => face.font_face_settings 28368 ) || [] 28369 } : null; 28370 if (!installedFontFamily) { 28371 isANewFontFamily = true; 28372 installedFontFamily = await fetchInstallFontFamily( 28373 makeFontFamilyFormData(fontFamilyToInstall), 28374 registry 28375 ); 28376 } 28377 const alreadyInstalledFontFaces = installedFontFamily.fontFace && fontFamilyToInstall.fontFace ? installedFontFamily.fontFace.filter( 28378 (fontFaceToInstall) => fontFaceToInstall && fontFamilyToInstall.fontFace && checkFontFaceInstalled( 28379 fontFaceToInstall, 28380 fontFamilyToInstall.fontFace 28381 ) 28382 ) : []; 28383 if (installedFontFamily.fontFace && fontFamilyToInstall.fontFace) { 28384 fontFamilyToInstall.fontFace = fontFamilyToInstall.fontFace.filter( 28385 (fontFaceToInstall) => !checkFontFaceInstalled( 28386 fontFaceToInstall, 28387 installedFontFamily.fontFace 28388 ) 28389 ); 28390 } 28391 let successfullyInstalledFontFaces = []; 28392 let unsuccessfullyInstalledFontFaces = []; 28393 if (fontFamilyToInstall?.fontFace?.length ?? 0 > 0) { 28394 const response = await batchInstallFontFaces( 28395 // @ts-expect-error - Type mismatch: WpFontFamily.id can be number | string, but batchInstallFontFaces expects only string. 28396 installedFontFamily.id, 28397 makeFontFacesFormData( 28398 fontFamilyToInstall 28399 ), 28400 registry 28401 ); 28402 successfullyInstalledFontFaces = response?.successes; 28403 unsuccessfullyInstalledFontFaces = response?.errors; 28404 } 28405 if (successfullyInstalledFontFaces?.length > 0 || alreadyInstalledFontFaces?.length > 0) { 28406 installedFontFamily.fontFace = [ 28407 ...successfullyInstalledFontFaces 28408 ]; 28409 fontFamiliesToActivate.push(installedFontFamily); 28410 } 28411 if (installedFontFamily && !fontFamilyToInstall?.fontFace?.length) { 28412 fontFamiliesToActivate.push(installedFontFamily); 28413 } 28414 if (isANewFontFamily && (fontFamilyToInstall?.fontFace?.length ?? 0) > 0 && successfullyInstalledFontFaces?.length === 0) { 28415 await deleteEntityRecord( 28416 "postType", 28417 "wp_font_family", 28418 installedFontFamily.id, 28419 { force: true } 28420 ); 28421 } 28422 installationErrors = installationErrors.concat( 28423 unsuccessfullyInstalledFontFaces 28424 ); 28425 } 28426 const installationErrorMessages = installationErrors.reduce( 28427 (unique, item) => unique.includes(item.message) ? unique : [...unique, item.message], 28428 [] 28429 ); 28430 if (fontFamiliesToActivate.length > 0) { 28431 const activeFonts = activateCustomFontFamilies( 28432 // @ts-expect-error - Type mismatch: items may have id as number | string, but FontFamily.id should be string | undefined. 28433 fontFamiliesToActivate 28434 ); 28435 await saveFontFamilies(activeFonts); 28436 } 28437 if (installationErrorMessages.length > 0) { 28438 const installError = new Error((0, import_i18n21.__)("There was an error installing fonts.")); 28439 installError.installationErrors = installationErrorMessages; 28440 throw installError; 28441 } 28442 } finally { 28443 setIsInstalling(false); 28444 } 28445 } 28446 async function uninstallFontFamily(fontFamilyToUninstall) { 28447 if (!fontFamilyToUninstall?.id) { 28448 throw new Error((0, import_i18n21.__)("Font family to uninstall is not defined.")); 28449 } 28450 try { 28451 await deleteEntityRecord( 28452 "postType", 28453 "wp_font_family", 28454 fontFamilyToUninstall.id, 28455 { force: true } 28456 ); 28457 const activeFonts = deactivateFontFamily(fontFamilyToUninstall); 28458 await saveFontFamilies(activeFonts); 28459 return { deleted: true }; 28460 } catch (error2) { 28461 console.error( 28462 `There was an error uninstalling the font family:`, 28463 error2 28464 ); 28465 throw error2; 28466 } 28467 } 28468 const deactivateFontFamily = (font2) => { 28469 const initialCustomFonts = fontFamilies?.[font2.source ?? ""] ?? []; 28470 const newCustomFonts = initialCustomFonts.filter( 28471 (f) => f.slug !== font2.slug 28472 ); 28473 const activeFonts = { 28474 ...fontFamilies, 28475 [font2.source ?? ""]: newCustomFonts 28476 }; 28477 setFontFamilies(activeFonts); 28478 if (font2.fontFace) { 28479 font2.fontFace.forEach((face) => { 28480 unloadFontFaceInBrowser(face, "all"); 28481 }); 28482 } 28483 return activeFonts; 28484 }; 28485 const activateCustomFontFamilies = (fontsToAdd) => { 28486 const fontsToActivate = cleanFontsForSave(fontsToAdd); 28487 const activeFonts = { 28488 ...fontFamilies, 28489 // Merge the existing custom fonts with the new fonts. 28490 custom: mergeFontFamilies(fontFamilies?.custom, fontsToActivate) 28491 }; 28492 setFontFamilies(activeFonts); 28493 loadFontsInBrowser(fontsToActivate); 28494 return activeFonts; 28495 }; 28496 const cleanFontsForSave = (fonts) => { 28497 return fonts.map(({ id: _familyDbId, fontFace, ...font2 }) => ({ 28498 ...font2, 28499 ...fontFace && fontFace.length > 0 ? { 28500 fontFace: fontFace.map( 28501 ({ id: _faceDbId, ...face }) => face 28502 ) 28503 } : {} 28504 })); 28505 }; 28506 const loadFontsInBrowser = (fonts) => { 28507 fonts.forEach((font2) => { 28508 if (font2.fontFace) { 28509 font2.fontFace.forEach((face) => { 28510 const displaySrc = getDisplaySrcFromFontFace( 28511 face?.src ?? "" 28512 ); 28513 if (displaySrc) { 28514 loadFontFaceInBrowser(face, displaySrc, "all"); 28515 } 28516 }); 28517 } 28518 }); 28519 }; 28520 const toggleActivateFont = (font2, face) => { 28521 const initialFonts = fontFamilies?.[font2.source ?? ""] ?? []; 28522 const newFonts = toggleFont(font2, face, initialFonts); 28523 setFontFamilies({ 28524 ...fontFamilies, 28525 [font2.source ?? ""]: newFonts 28526 }); 28527 const isFaceActivated = isFontActivated( 28528 font2.slug, 28529 face?.fontStyle ?? "", 28530 face?.fontWeight ?? "", 28531 font2.source ?? "custom" 28532 ); 28533 if (face && isFaceActivated) { 28534 unloadFontFaceInBrowser(face, "all"); 28535 } else { 28536 const displaySrc = getDisplaySrcFromFontFace(face?.src ?? ""); 28537 if (face && displaySrc) { 28538 loadFontFaceInBrowser(face, displaySrc, "all"); 28539 } 28540 } 28541 }; 28542 const loadFontFaceAsset = async (fontFace) => { 28543 if (!fontFace.src) { 28544 return; 28545 } 28546 const src = getDisplaySrcFromFontFace(fontFace.src); 28547 if (!src || loadedFontUrls.has(src)) { 28548 return; 28549 } 28550 loadFontFaceInBrowser(fontFace, src, "document"); 28551 loadedFontUrls.add(src); 28552 }; 28553 return /* @__PURE__ */ (0, import_jsx_runtime145.jsx)( 28554 FontLibraryContext.Provider, 28555 { 28556 value: { 28557 libraryFontSelected, 28558 handleSetLibraryFontSelected, 28559 fontFamilies: fontFamilies ?? {}, 28560 baseCustomFonts, 28561 isFontActivated, 28562 getFontFacesActivated, 28563 loadFontFaceAsset, 28564 installFonts, 28565 uninstallFontFamily, 28566 toggleActivateFont, 28567 getAvailableFontsOutline, 28568 modalTabOpen, 28569 setModalTabOpen, 28570 saveFontFamilies, 28571 isResolvingLibrary, 28572 isInstalling 28573 }, 28574 children 28575 } 28576 ); 28577 } 28578 var context_default = FontLibraryProvider; 28579 28580 // packages/global-styles-ui/build-module/font-library/modal.mjs 28581 var import_i18n28 = __toESM(require_i18n(), 1); 28582 var import_components27 = __toESM(require_components(), 1); 28583 var import_core_data7 = __toESM(require_core_data(), 1); 28584 var import_data8 = __toESM(require_data(), 1); 28585 28586 // packages/global-styles-ui/build-module/font-library/installed-fonts.mjs 28587 var import_components22 = __toESM(require_components(), 1); 28588 var import_core_data5 = __toESM(require_core_data(), 1); 28589 var import_data7 = __toESM(require_data(), 1); 28590 var import_element80 = __toESM(require_element(), 1); 28591 var import_i18n23 = __toESM(require_i18n(), 1); 28592 28593 // packages/global-styles-ui/build-module/font-library/font-card.mjs 28594 var import_i18n22 = __toESM(require_i18n(), 1); 28595 var import_element78 = __toESM(require_element(), 1); 28596 var import_components20 = __toESM(require_components(), 1); 28597 28598 // packages/global-styles-ui/build-module/font-library/font-demo.mjs 28599 var import_element77 = __toESM(require_element(), 1); 28600 var import_jsx_runtime146 = __toESM(require_jsx_runtime(), 1); 28601 var loadedPreviews = /* @__PURE__ */ new Set(); 28602 function getPreviewUrl(fontFace) { 28603 if (fontFace.preview) { 28604 return fontFace.preview; 28605 } 28606 if (fontFace.src) { 28607 return Array.isArray(fontFace.src) ? fontFace.src[0] : fontFace.src; 28608 } 28609 return void 0; 28610 } 28611 function getDisplayFontFace(font2) { 28612 if ("fontStyle" in font2 && font2.fontStyle || "fontWeight" in font2 && font2.fontWeight) { 28613 return font2; 28614 } 28615 if ("fontFace" in font2 && font2.fontFace && font2.fontFace.length) { 28616 return font2.fontFace.find( 28617 (face) => face.fontStyle === "normal" && face.fontWeight === "400" 28618 ) || font2.fontFace[0]; 28619 } 28620 return { 28621 fontStyle: "normal", 28622 fontWeight: "400", 28623 fontFamily: font2.fontFamily 28624 }; 28625 } 28626 function FontDemo({ font: font2, text }) { 28627 const ref = (0, import_element77.useRef)(null); 28628 const fontFace = getDisplayFontFace(font2); 28629 const style = getFamilyPreviewStyle(font2); 28630 text = text || ("name" in font2 ? font2.name : ""); 28631 const customPreviewUrl = font2.preview; 28632 const previewUrl = customPreviewUrl ?? getPreviewUrl(fontFace); 28633 const isPreviewImage = Boolean( 28634 previewUrl && /\.(png|jpg|jpeg|gif|svg)$/i.test(previewUrl) 28635 ); 28636 const [isIntersecting, setIsIntersecting] = (0, import_element77.useState)(false); 28637 const [isFontLoaded, setIsFontLoaded] = (0, import_element77.useState)(false); 28638 const [resolvedUrl, setResolvedUrl] = (0, import_element77.useState)(); 28639 const { loadFontFaceAsset } = (0, import_element77.useContext)(FontLibraryContext); 28640 const isAssetLoaded = isPreviewImage ? !!previewUrl && (loadedPreviews.has(previewUrl) || resolvedUrl === previewUrl) : isFontLoaded; 28641 const estimatedImageWidth = Math.min( 28642 Math.max(text.length * 12, 48), 28643 300 28644 ); 28645 const faceStyles = getFacePreviewStyle(fontFace); 28646 const textDemoStyle = { 28647 fontSize: "18px", 28648 lineHeight: 1, 28649 opacity: isAssetLoaded ? "1" : "0", 28650 ...style, 28651 ...faceStyles 28652 }; 28653 (0, import_element77.useEffect)(() => { 28654 if (isPreviewImage) { 28655 return; 28656 } 28657 const observer = new window.IntersectionObserver(([entry]) => { 28658 setIsIntersecting(entry.isIntersecting); 28659 }, {}); 28660 if (ref.current) { 28661 observer.observe(ref.current); 28662 } 28663 return () => observer.disconnect(); 28664 }, [isPreviewImage]); 28665 (0, import_element77.useEffect)(() => { 28666 const loadAsset = async () => { 28667 if (isIntersecting && !isPreviewImage) { 28668 if (fontFace.src) { 28669 await loadFontFaceAsset(fontFace); 28670 } 28671 setIsFontLoaded(true); 28672 } 28673 }; 28674 loadAsset(); 28675 }, [fontFace, isIntersecting, loadFontFaceAsset, isPreviewImage]); 28676 return /* @__PURE__ */ (0, import_jsx_runtime146.jsx)("div", { ref, className: "font-library__font-demo", children: isPreviewImage ? /* @__PURE__ */ (0, import_jsx_runtime146.jsxs)(import_jsx_runtime146.Fragment, { children: [ 28677 !isAssetLoaded && /* @__PURE__ */ (0, import_jsx_runtime146.jsx)( 28678 Skeleton, 28679 { 28680 className: "font-library__font-variant-demo-skeleton", 28681 style: { width: estimatedImageWidth } 28682 } 28683 ), 28684 /* @__PURE__ */ (0, import_jsx_runtime146.jsx)( 28685 "img", 28686 { 28687 src: previewUrl, 28688 loading: "lazy", 28689 alt: text, 28690 onLoad: () => { 28691 if (previewUrl) { 28692 loadedPreviews.add(previewUrl); 28693 } 28694 setResolvedUrl(previewUrl); 28695 }, 28696 onError: () => setResolvedUrl(previewUrl), 28697 className: clsx_default( 28698 "font-library__font-variant_demo-image", 28699 { "is-loading": !isAssetLoaded } 28700 ) 28701 } 28702 ) 28703 ] }) : /* @__PURE__ */ (0, import_jsx_runtime146.jsx)( 28704 "span", 28705 { 28706 style: textDemoStyle, 28707 className: "font-library__font-variant_demo-text", 28708 children: text 28709 } 28710 ) }); 28711 } 28712 var font_demo_default = FontDemo; 28713 28714 // packages/global-styles-ui/build-module/font-library/font-card.mjs 28715 var import_jsx_runtime147 = __toESM(require_jsx_runtime(), 1); 28716 function FontCard({ 28717 font: font2, 28718 onClick, 28719 variantsText, 28720 navigatorPath, 28721 shouldFocus 28722 }) { 28723 const variantsCount = font2.fontFace?.length || 1; 28724 const style = { 28725 cursor: !!onClick ? "pointer" : "default" 28726 }; 28727 const navigator2 = (0, import_components20.useNavigator)(); 28728 const ref = (0, import_element78.useRef)(null); 28729 (0, import_element78.useEffect)(() => { 28730 if (shouldFocus) { 28731 ref.current?.focus(); 28732 } 28733 }, [shouldFocus]); 28734 return /* @__PURE__ */ (0, import_jsx_runtime147.jsx)( 28735 import_components20.Button, 28736 { 28737 ref, 28738 __next40pxDefaultSize: true, 28739 onClick: () => { 28740 onClick(); 28741 if (navigatorPath) { 28742 navigator2.goTo(navigatorPath); 28743 } 28744 }, 28745 style, 28746 className: "font-library__font-card", 28747 children: /* @__PURE__ */ (0, import_jsx_runtime147.jsxs)(import_components20.Flex, { justify: "space-between", wrap: false, children: [ 28748 /* @__PURE__ */ (0, import_jsx_runtime147.jsx)(font_demo_default, { font: font2 }), 28749 /* @__PURE__ */ (0, import_jsx_runtime147.jsxs)(import_components20.Flex, { justify: "flex-end", children: [ 28750 /* @__PURE__ */ (0, import_jsx_runtime147.jsx)(import_components20.FlexItem, { children: /* @__PURE__ */ (0, import_jsx_runtime147.jsx)(import_components20.__experimentalText, { className: "font-library__font-card__count", children: variantsText || (0, import_i18n22.sprintf)( 28751 /* translators: %d: Number of font variants. */ 28752 (0, import_i18n22._n)( 28753 "%d variant", 28754 "%d variants", 28755 variantsCount 28756 ), 28757 variantsCount 28758 ) }) }), 28759 /* @__PURE__ */ (0, import_jsx_runtime147.jsx)(import_components20.FlexItem, { children: /* @__PURE__ */ (0, import_jsx_runtime147.jsx)(icon_default, { icon: (0, import_i18n22.isRTL)() ? chevron_left_default : chevron_right_default }) }) 28760 ] }) 28761 ] }) 28762 } 28763 ); 28764 } 28765 var font_card_default = FontCard; 28766 28767 // packages/global-styles-ui/build-module/font-library/library-font-variant.mjs 28768 var import_element79 = __toESM(require_element(), 1); 28769 var import_components21 = __toESM(require_components(), 1); 28770 var import_jsx_runtime148 = __toESM(require_jsx_runtime(), 1); 28771 function LibraryFontVariant({ 28772 face, 28773 font: font2 28774 }) { 28775 const { isFontActivated, toggleActivateFont } = (0, import_element79.useContext)(FontLibraryContext); 28776 const isInstalled = (font2?.fontFace?.length ?? 0) > 0 ? isFontActivated( 28777 font2.slug, 28778 face.fontStyle, 28779 face.fontWeight, 28780 font2.source 28781 ) : isFontActivated(font2.slug, void 0, void 0, font2.source); 28782 const handleToggleActivation = () => { 28783 if ((font2?.fontFace?.length ?? 0) > 0) { 28784 toggleActivateFont(font2, face); 28785 return; 28786 } 28787 toggleActivateFont(font2); 28788 }; 28789 const displayName = font2.name + " " + getFontFaceVariantName(face); 28790 const checkboxId = (0, import_element79.useId)(); 28791 return /* @__PURE__ */ (0, import_jsx_runtime148.jsx)("div", { className: "font-library__font-card", children: /* @__PURE__ */ (0, import_jsx_runtime148.jsxs)(import_components21.Flex, { justify: "flex-start", align: "center", gap: "1rem", children: [ 28792 /* @__PURE__ */ (0, import_jsx_runtime148.jsx)( 28793 import_components21.CheckboxControl, 28794 { 28795 checked: isInstalled, 28796 onChange: handleToggleActivation, 28797 id: checkboxId 28798 } 28799 ), 28800 /* @__PURE__ */ (0, import_jsx_runtime148.jsx)("label", { htmlFor: checkboxId, children: /* @__PURE__ */ (0, import_jsx_runtime148.jsx)( 28801 font_demo_default, 28802 { 28803 font: face, 28804 text: displayName, 28805 onClick: handleToggleActivation 28806 } 28807 ) }) 28808 ] }) }); 28809 } 28810 var library_font_variant_default = LibraryFontVariant; 28811 28812 // packages/global-styles-ui/build-module/font-library/utils/sort-font-faces.mjs 28813 function getNumericFontWeight(value) { 28814 switch (value) { 28815 case "normal": 28816 return 400; 28817 case "bold": 28818 return 700; 28819 case "bolder": 28820 return 500; 28821 case "lighter": 28822 return 300; 28823 default: 28824 return parseInt(value, 10); 28825 } 28826 } 28827 function sortFontFaces(faces) { 28828 return faces.sort((a, b) => { 28829 if (a.fontStyle === "normal" && b.fontStyle !== "normal") { 28830 return -1; 28831 } 28832 if (b.fontStyle === "normal" && a.fontStyle !== "normal") { 28833 return 1; 28834 } 28835 if (a.fontStyle === b.fontStyle) { 28836 return getNumericFontWeight(a.fontWeight?.toString() ?? "normal") - getNumericFontWeight(b.fontWeight?.toString() ?? "normal"); 28837 } 28838 if (!a.fontStyle || !b.fontStyle) { 28839 return !a.fontStyle ? 1 : -1; 28840 } 28841 return a.fontStyle.localeCompare(b.fontStyle); 28842 }); 28843 } 28844 28845 // packages/global-styles-ui/build-module/font-library/installed-fonts.mjs 28846 var import_jsx_runtime149 = __toESM(require_jsx_runtime(), 1); 28847 function getFontFamiliesKey(fontFamilies) { 28848 if (!fontFamilies) { 28849 return ""; 28850 } 28851 const normalized = {}; 28852 for (const source of Object.keys(fontFamilies).sort()) { 28853 normalized[source] = (fontFamilies[source] ?? []).map((family) => ({ 28854 slug: family.slug, 28855 fontFace: (family.fontFace ?? []).map( 28856 (face) => `$face.fontStyle}-$face.fontWeight}` 28857 ).sort() 28858 })).sort((a, b) => a.slug.localeCompare(b.slug)); 28859 } 28860 return JSON.stringify(normalized); 28861 } 28862 function InstalledFonts() { 28863 const { 28864 baseCustomFonts, 28865 libraryFontSelected, 28866 handleSetLibraryFontSelected, 28867 uninstallFontFamily, 28868 isResolvingLibrary, 28869 isInstalling, 28870 saveFontFamilies, 28871 getFontFacesActivated 28872 } = (0, import_element80.useContext)(FontLibraryContext); 28873 const [fontFamilies, setFontFamilies] = useSetting("typography.fontFamilies"); 28874 const [lastSelectedFontSlug, setLastSelectedFontSlug] = (0, import_element80.useState)(void 0); 28875 const [isConfirmDeleteOpen, setIsConfirmDeleteOpen] = (0, import_element80.useState)(false); 28876 const [notice, setNotice] = (0, import_element80.useState)(null); 28877 const [baseFontFamilies] = useSetting("typography.fontFamilies", void 0, "base"); 28878 const globalStylesId = (0, import_data7.useSelect)((select) => { 28879 const { __experimentalGetCurrentGlobalStylesId } = select(import_core_data5.store); 28880 return __experimentalGetCurrentGlobalStylesId(); 28881 }, []); 28882 const globalStyles = (0, import_core_data5.useEntityRecord)( 28883 "root", 28884 "globalStyles", 28885 globalStylesId ?? 0, 28886 { enabled: globalStylesId !== void 0 } 28887 ); 28888 const editedFontFamilies = globalStyles?.edits?.settings?.typography?.fontFamilies; 28889 const savedFontFamilies = globalStyles?.record?.settings?.typography?.fontFamilies; 28890 const fontFamiliesHasChanges = (0, import_element80.useMemo)(() => { 28891 if (editedFontFamilies === void 0) { 28892 return false; 28893 } 28894 return getFontFamiliesKey(editedFontFamilies) !== getFontFamiliesKey(savedFontFamilies); 28895 }, [editedFontFamilies, savedFontFamilies]); 28896 const themeFonts = fontFamilies?.theme ? fontFamilies.theme.map((f) => setUIValuesNeeded(f, { source: "theme" })).sort((a, b) => a.name.localeCompare(b.name)) : []; 28897 const themeFontsSlugs = new Set(themeFonts.map((f) => f.slug)); 28898 const baseThemeFonts = baseFontFamilies?.theme ? themeFonts.concat( 28899 baseFontFamilies.theme.filter((f) => !themeFontsSlugs.has(f.slug)).map((f) => setUIValuesNeeded(f, { source: "theme" })).sort((a, b) => a.name.localeCompare(b.name)) 28900 ) : []; 28901 const customFontFamilyId = libraryFontSelected?.source === "custom" && libraryFontSelected?.id; 28902 const canUserDelete = (0, import_data7.useSelect)( 28903 (select) => { 28904 const { canUser } = select(import_core_data5.store); 28905 return customFontFamilyId && canUser("delete", { 28906 kind: "postType", 28907 name: "wp_font_family", 28908 id: customFontFamilyId 28909 }); 28910 }, 28911 [customFontFamilyId] 28912 ); 28913 const shouldDisplayDeleteButton = !!libraryFontSelected && libraryFontSelected?.source !== "theme" && canUserDelete; 28914 const handleUninstallClick = () => { 28915 setIsConfirmDeleteOpen(true); 28916 }; 28917 const handleUpdate = async () => { 28918 setNotice(null); 28919 try { 28920 await saveFontFamilies(fontFamilies); 28921 setNotice({ 28922 type: "success", 28923 message: (0, import_i18n23.__)("Font family updated successfully.") 28924 }); 28925 } catch (error2) { 28926 setNotice({ 28927 type: "error", 28928 message: (0, import_i18n23.sprintf)( 28929 /* translators: %s: error message */ 28930 (0, import_i18n23.__)("There was an error updating the font family. %s"), 28931 error2.message 28932 ) 28933 }); 28934 } 28935 }; 28936 const getFontFacesToDisplay = (font2) => { 28937 if (!font2) { 28938 return []; 28939 } 28940 if (!font2.fontFace || !font2.fontFace.length) { 28941 return [ 28942 { 28943 fontFamily: font2.fontFamily, 28944 fontStyle: "normal", 28945 fontWeight: "400" 28946 } 28947 ]; 28948 } 28949 return sortFontFaces(font2.fontFace); 28950 }; 28951 const getFontCardVariantsText = (font2) => { 28952 const variantsInstalled = font2?.fontFace && (font2?.fontFace?.length ?? 0) > 0 ? font2.fontFace.length : 1; 28953 const variantsActive = getFontFacesActivated( 28954 font2.slug, 28955 font2.source 28956 ).length; 28957 return (0, import_i18n23.sprintf)( 28958 /* translators: 1: Active font variants, 2: Total font variants. */ 28959 (0, import_i18n23.__)("%1$d of %2$d active"), 28960 variantsActive, 28961 variantsInstalled 28962 ); 28963 }; 28964 (0, import_element80.useEffect)(() => { 28965 handleSetLibraryFontSelected(libraryFontSelected); 28966 }, []); 28967 const activeFontsCount = libraryFontSelected ? getFontFacesActivated( 28968 libraryFontSelected.slug, 28969 libraryFontSelected.source 28970 ).length : 0; 28971 const selectedFontsCount = libraryFontSelected?.fontFace?.length ?? (libraryFontSelected?.fontFamily ? 1 : 0); 28972 const isIndeterminate = activeFontsCount > 0 && activeFontsCount !== selectedFontsCount; 28973 const isSelectAllChecked = activeFontsCount === selectedFontsCount; 28974 const toggleSelectAll = () => { 28975 if (!libraryFontSelected || !libraryFontSelected?.source) { 28976 return; 28977 } 28978 const initialFonts = fontFamilies?.[libraryFontSelected.source]?.filter( 28979 (f) => f.slug !== libraryFontSelected.slug 28980 ) ?? []; 28981 const newFonts = isSelectAllChecked ? initialFonts : [...initialFonts, libraryFontSelected]; 28982 setFontFamilies({ 28983 ...fontFamilies, 28984 [libraryFontSelected.source]: newFonts 28985 }); 28986 if (libraryFontSelected.fontFace) { 28987 libraryFontSelected.fontFace.forEach((face) => { 28988 if (isSelectAllChecked) { 28989 unloadFontFaceInBrowser(face, "all"); 28990 } else { 28991 const displaySrc = getDisplaySrcFromFontFace( 28992 face?.src ?? "" 28993 ); 28994 if (displaySrc) { 28995 loadFontFaceInBrowser(face, displaySrc, "all"); 28996 } 28997 } 28998 }); 28999 } 29000 }; 29001 const hasFonts = baseThemeFonts.length > 0 || baseCustomFonts.length > 0; 29002 return /* @__PURE__ */ (0, import_jsx_runtime149.jsxs)("div", { className: "font-library__tabpanel-layout", children: [ 29003 isResolvingLibrary && /* @__PURE__ */ (0, import_jsx_runtime149.jsx)("div", { className: "font-library__loading", children: /* @__PURE__ */ (0, import_jsx_runtime149.jsx)( 29004 progress_exports.Root, 29005 { 29006 value: null, 29007 "aria-label": (0, import_i18n23.__)("Loading fonts"), 29008 children: /* @__PURE__ */ (0, import_jsx_runtime149.jsx)(progress_exports.Track, { children: /* @__PURE__ */ (0, import_jsx_runtime149.jsx)(progress_exports.Indicator, {}) }) 29009 } 29010 ) }), 29011 !isResolvingLibrary && /* @__PURE__ */ (0, import_jsx_runtime149.jsxs)(import_jsx_runtime149.Fragment, { children: [ 29012 /* @__PURE__ */ (0, import_jsx_runtime149.jsxs)( 29013 import_components22.Navigator, 29014 { 29015 initialPath: libraryFontSelected ? "/fontFamily" : "/", 29016 children: [ 29017 /* @__PURE__ */ (0, import_jsx_runtime149.jsx)(import_components22.Navigator.Screen, { path: "/", children: /* @__PURE__ */ (0, import_jsx_runtime149.jsxs)(import_components22.__experimentalVStack, { spacing: "8", children: [ 29018 notice && /* @__PURE__ */ (0, import_jsx_runtime149.jsx)( 29019 import_components22.Notice, 29020 { 29021 status: notice.type, 29022 onRemove: () => setNotice(null), 29023 children: notice.message 29024 } 29025 ), 29026 !hasFonts && /* @__PURE__ */ (0, import_jsx_runtime149.jsx)(import_components22.__experimentalText, { as: "p", children: (0, import_i18n23.__)("No fonts installed.") }), 29027 baseThemeFonts.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime149.jsxs)(import_components22.__experimentalVStack, { children: [ 29028 /* @__PURE__ */ (0, import_jsx_runtime149.jsx)("h2", { 29029 className: "font-library__fonts-title", 29030 /* translators: Heading for a list of fonts provided by the theme. */ 29031 children: (0, import_i18n23._x)("Theme", "font source") 29032 }), 29033 /* @__PURE__ */ (0, import_jsx_runtime149.jsx)( 29034 "ul", 29035 { 29036 role: "list", 29037 className: "font-library__fonts-list", 29038 children: baseThemeFonts.map((font2) => /* @__PURE__ */ (0, import_jsx_runtime149.jsx)( 29039 "li", 29040 { 29041 className: "font-library__fonts-list-item", 29042 children: /* @__PURE__ */ (0, import_jsx_runtime149.jsx)( 29043 font_card_default, 29044 { 29045 font: font2, 29046 navigatorPath: "/fontFamily", 29047 variantsText: getFontCardVariantsText( 29048 font2 29049 ), 29050 shouldFocus: font2.slug === lastSelectedFontSlug, 29051 onClick: () => { 29052 setNotice(null); 29053 handleSetLibraryFontSelected( 29054 font2 29055 ); 29056 } 29057 } 29058 ) 29059 }, 29060 font2.slug 29061 )) 29062 } 29063 ) 29064 ] }), 29065 baseCustomFonts.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime149.jsxs)(import_components22.__experimentalVStack, { children: [ 29066 /* @__PURE__ */ (0, import_jsx_runtime149.jsx)("h2", { 29067 className: "font-library__fonts-title", 29068 /* translators: Heading for a list of fonts installed by the user. */ 29069 children: (0, import_i18n23._x)("Custom", "font source") 29070 }), 29071 /* @__PURE__ */ (0, import_jsx_runtime149.jsx)( 29072 "ul", 29073 { 29074 role: "list", 29075 className: "font-library__fonts-list", 29076 children: baseCustomFonts.map((font2) => /* @__PURE__ */ (0, import_jsx_runtime149.jsx)( 29077 "li", 29078 { 29079 className: "font-library__fonts-list-item", 29080 children: /* @__PURE__ */ (0, import_jsx_runtime149.jsx)( 29081 font_card_default, 29082 { 29083 font: font2, 29084 navigatorPath: "/fontFamily", 29085 variantsText: getFontCardVariantsText( 29086 font2 29087 ), 29088 shouldFocus: font2.slug === lastSelectedFontSlug, 29089 onClick: () => { 29090 setNotice(null); 29091 handleSetLibraryFontSelected( 29092 font2 29093 ); 29094 } 29095 } 29096 ) 29097 }, 29098 font2.slug 29099 )) 29100 } 29101 ) 29102 ] }) 29103 ] }) }), 29104 /* @__PURE__ */ (0, import_jsx_runtime149.jsxs)(import_components22.Navigator.Screen, { path: "/fontFamily", children: [ 29105 libraryFontSelected && /* @__PURE__ */ (0, import_jsx_runtime149.jsx)( 29106 ConfirmDeleteDialog, 29107 { 29108 font: libraryFontSelected, 29109 isOpen: isConfirmDeleteOpen, 29110 setIsOpen: setIsConfirmDeleteOpen, 29111 setNotice, 29112 uninstallFontFamily, 29113 handleSetLibraryFontSelected 29114 } 29115 ), 29116 /* @__PURE__ */ (0, import_jsx_runtime149.jsxs)(import_components22.Flex, { justify: "flex-start", children: [ 29117 /* @__PURE__ */ (0, import_jsx_runtime149.jsx)( 29118 import_components22.Navigator.BackButton, 29119 { 29120 icon: (0, import_i18n23.isRTL)() ? chevron_right_default : chevron_left_default, 29121 size: "small", 29122 onClick: () => { 29123 setLastSelectedFontSlug( 29124 libraryFontSelected?.slug 29125 ); 29126 handleSetLibraryFontSelected( 29127 void 0 29128 ); 29129 setNotice(null); 29130 }, 29131 label: (0, import_i18n23.__)("Back") 29132 } 29133 ), 29134 /* @__PURE__ */ (0, import_jsx_runtime149.jsx)( 29135 import_components22.__experimentalHeading, 29136 { 29137 level: 2, 29138 size: 13, 29139 className: "global-styles-ui-header", 29140 children: libraryFontSelected?.name 29141 } 29142 ) 29143 ] }), 29144 notice && /* @__PURE__ */ (0, import_jsx_runtime149.jsxs)(import_jsx_runtime149.Fragment, { children: [ 29145 /* @__PURE__ */ (0, import_jsx_runtime149.jsx)(import_components22.__experimentalSpacer, { margin: 1 }), 29146 /* @__PURE__ */ (0, import_jsx_runtime149.jsx)( 29147 import_components22.Notice, 29148 { 29149 status: notice.type, 29150 onRemove: () => setNotice(null), 29151 children: notice.message 29152 } 29153 ), 29154 /* @__PURE__ */ (0, import_jsx_runtime149.jsx)(import_components22.__experimentalSpacer, { margin: 1 }) 29155 ] }), 29156 /* @__PURE__ */ (0, import_jsx_runtime149.jsx)(import_components22.__experimentalSpacer, { margin: 4 }), 29157 /* @__PURE__ */ (0, import_jsx_runtime149.jsx)(import_components22.__experimentalText, { children: (0, import_i18n23.__)( 29158 "Choose font variants. Keep in mind that too many variants could make your site slower." 29159 ) }), 29160 /* @__PURE__ */ (0, import_jsx_runtime149.jsx)(import_components22.__experimentalSpacer, { margin: 4 }), 29161 /* @__PURE__ */ (0, import_jsx_runtime149.jsxs)(import_components22.__experimentalVStack, { spacing: 0, children: [ 29162 /* @__PURE__ */ (0, import_jsx_runtime149.jsx)( 29163 import_components22.CheckboxControl, 29164 { 29165 className: "font-library__select-all", 29166 label: (0, import_i18n23.__)("Select all"), 29167 checked: isSelectAllChecked, 29168 onChange: toggleSelectAll, 29169 indeterminate: isIndeterminate 29170 } 29171 ), 29172 /* @__PURE__ */ (0, import_jsx_runtime149.jsx)(import_components22.__experimentalSpacer, { margin: 8 }), 29173 /* @__PURE__ */ (0, import_jsx_runtime149.jsx)( 29174 "ul", 29175 { 29176 role: "list", 29177 className: "font-library__fonts-list", 29178 children: libraryFontSelected && getFontFacesToDisplay( 29179 libraryFontSelected 29180 ).map((face, i) => /* @__PURE__ */ (0, import_jsx_runtime149.jsx)( 29181 "li", 29182 { 29183 className: "font-library__fonts-list-item", 29184 children: /* @__PURE__ */ (0, import_jsx_runtime149.jsx)( 29185 library_font_variant_default, 29186 { 29187 font: libraryFontSelected, 29188 face 29189 }, 29190 `face$i}` 29191 ) 29192 }, 29193 `face$i}` 29194 )) 29195 } 29196 ) 29197 ] }) 29198 ] }) 29199 ] 29200 } 29201 ), 29202 /* @__PURE__ */ (0, import_jsx_runtime149.jsxs)(import_components22.__experimentalHStack, { justify: "flex-end", className: "font-library__footer", children: [ 29203 isInstalling && /* @__PURE__ */ (0, import_jsx_runtime149.jsx)( 29204 progress_exports.Root, 29205 { 29206 value: null, 29207 "aria-label": (0, import_i18n23.__)("Installing fonts"), 29208 children: /* @__PURE__ */ (0, import_jsx_runtime149.jsx)(progress_exports.Track, { children: /* @__PURE__ */ (0, import_jsx_runtime149.jsx)(progress_exports.Indicator, {}) }) 29209 } 29210 ), 29211 shouldDisplayDeleteButton && /* @__PURE__ */ (0, import_jsx_runtime149.jsx)( 29212 import_components22.Button, 29213 { 29214 __next40pxDefaultSize: true, 29215 isDestructive: true, 29216 variant: "tertiary", 29217 onClick: handleUninstallClick, 29218 children: (0, import_i18n23.__)("Delete") 29219 } 29220 ), 29221 /* @__PURE__ */ (0, import_jsx_runtime149.jsx)( 29222 import_components22.Button, 29223 { 29224 __next40pxDefaultSize: true, 29225 variant: "primary", 29226 onClick: handleUpdate, 29227 disabled: !fontFamiliesHasChanges, 29228 accessibleWhenDisabled: true, 29229 children: (0, import_i18n23.__)("Update") 29230 } 29231 ) 29232 ] }) 29233 ] }) 29234 ] }); 29235 } 29236 function ConfirmDeleteDialog({ 29237 font: font2, 29238 isOpen, 29239 setIsOpen, 29240 setNotice, 29241 uninstallFontFamily, 29242 handleSetLibraryFontSelected 29243 }) { 29244 const navigator2 = (0, import_components22.useNavigator)(); 29245 const handleConfirmUninstall = async () => { 29246 setNotice(null); 29247 setIsOpen(false); 29248 try { 29249 await uninstallFontFamily(font2); 29250 navigator2.goBack(); 29251 handleSetLibraryFontSelected(void 0); 29252 setNotice({ 29253 type: "success", 29254 message: (0, import_i18n23.__)("Font family uninstalled successfully.") 29255 }); 29256 } catch (error2) { 29257 setNotice({ 29258 type: "error", 29259 message: (0, import_i18n23.__)("There was an error uninstalling the font family.") + error2.message 29260 }); 29261 } 29262 }; 29263 const handleCancelUninstall = () => { 29264 setIsOpen(false); 29265 }; 29266 return /* @__PURE__ */ (0, import_jsx_runtime149.jsx)( 29267 import_components22.__experimentalConfirmDialog, 29268 { 29269 isOpen, 29270 cancelButtonText: (0, import_i18n23.__)("Cancel"), 29271 confirmButtonText: (0, import_i18n23.__)("Delete"), 29272 onCancel: handleCancelUninstall, 29273 onConfirm: handleConfirmUninstall, 29274 size: "medium", 29275 children: font2 && (0, import_i18n23.sprintf)( 29276 /* translators: %s: Name of the font. */ 29277 (0, import_i18n23.__)( 29278 'Are you sure you want to delete "%s" font and all its variants and assets?' 29279 ), 29280 font2.name 29281 ) 29282 } 29283 ); 29284 } 29285 var installed_fonts_default = InstalledFonts; 29286 29287 // packages/global-styles-ui/build-module/font-library/font-collection.mjs 29288 var import_element82 = __toESM(require_element(), 1); 29289 var import_components25 = __toESM(require_components(), 1); 29290 var import_compose5 = __toESM(require_compose(), 1); 29291 var import_i18n26 = __toESM(require_i18n(), 1); 29292 var import_core_data6 = __toESM(require_core_data(), 1); 29293 29294 // packages/global-styles-ui/build-module/font-library/utils/filter-fonts.mjs 29295 function filterFonts(fonts, filters) { 29296 const { category, search } = filters; 29297 let filteredFonts = fonts || []; 29298 if (category && category !== "all") { 29299 filteredFonts = filteredFonts.filter( 29300 (font2) => font2.categories && font2.categories.indexOf(category) !== -1 29301 ); 29302 } 29303 if (search) { 29304 filteredFonts = filteredFonts.filter( 29305 (font2) => font2.font_family_settings && font2.font_family_settings.name.toLowerCase().includes(search.toLowerCase()) 29306 ); 29307 } 29308 return filteredFonts; 29309 } 29310 29311 // packages/global-styles-ui/build-module/font-library/utils/fonts-outline.mjs 29312 function getFontsOutline(fonts) { 29313 return fonts.reduce( 29314 (acc, font2) => ({ 29315 ...acc, 29316 [font2.slug]: (font2?.fontFace || []).reduce( 29317 (faces, face) => ({ 29318 ...faces, 29319 [`$face.fontStyle}-$face.fontWeight}`]: true 29320 }), 29321 {} 29322 ) 29323 }), 29324 {} 29325 ); 29326 } 29327 function isFontFontFaceInOutline(slug, face, outline) { 29328 if (!face) { 29329 return !!outline[slug]; 29330 } 29331 return !!outline[slug]?.[`$face.fontStyle}-$face.fontWeight}`]; 29332 } 29333 29334 // packages/global-styles-ui/build-module/font-library/google-fonts-confirm-dialog.mjs 29335 var import_i18n24 = __toESM(require_i18n(), 1); 29336 var import_components23 = __toESM(require_components(), 1); 29337 var import_jsx_runtime150 = __toESM(require_jsx_runtime(), 1); 29338 function GoogleFontsConfirmDialog() { 29339 const handleConfirm = () => { 29340 window.localStorage.setItem( 29341 "wp-font-library-google-fonts-permission", 29342 "true" 29343 ); 29344 window.dispatchEvent(new Event("storage")); 29345 }; 29346 return /* @__PURE__ */ (0, import_jsx_runtime150.jsx)("div", { className: "font-library__google-fonts-confirm", children: /* @__PURE__ */ (0, import_jsx_runtime150.jsx)(import_components23.Card, { children: /* @__PURE__ */ (0, import_jsx_runtime150.jsxs)(import_components23.CardBody, { children: [ 29347 /* @__PURE__ */ (0, import_jsx_runtime150.jsx)(import_components23.__experimentalHeading, { level: 2, children: (0, import_i18n24.__)("Connect to Google Fonts") }), 29348 /* @__PURE__ */ (0, import_jsx_runtime150.jsx)(import_components23.__experimentalSpacer, { margin: 6 }), 29349 /* @__PURE__ */ (0, import_jsx_runtime150.jsx)(import_components23.__experimentalText, { as: "p", children: (0, import_i18n24.__)( 29350 "To install fonts from Google you must give permission to connect directly to Google servers. The fonts you install will be downloaded from Google and stored on your site. Your site will then use these locally-hosted fonts." 29351 ) }), 29352 /* @__PURE__ */ (0, import_jsx_runtime150.jsx)(import_components23.__experimentalSpacer, { margin: 3 }), 29353 /* @__PURE__ */ (0, import_jsx_runtime150.jsx)(import_components23.__experimentalText, { as: "p", children: (0, import_i18n24.__)( 29354 "You can alternatively upload files directly on the Upload tab." 29355 ) }), 29356 /* @__PURE__ */ (0, import_jsx_runtime150.jsx)(import_components23.__experimentalSpacer, { margin: 6 }), 29357 /* @__PURE__ */ (0, import_jsx_runtime150.jsx)( 29358 import_components23.Button, 29359 { 29360 __next40pxDefaultSize: true, 29361 variant: "primary", 29362 onClick: handleConfirm, 29363 children: (0, import_i18n24.__)("Allow access to Google Fonts") 29364 } 29365 ) 29366 ] }) }) }); 29367 } 29368 var google_fonts_confirm_dialog_default = GoogleFontsConfirmDialog; 29369 29370 // packages/global-styles-ui/build-module/font-library/collection-font-variant.mjs 29371 var import_element81 = __toESM(require_element(), 1); 29372 var import_components24 = __toESM(require_components(), 1); 29373 var import_i18n25 = __toESM(require_i18n(), 1); 29374 var import_jsx_runtime151 = __toESM(require_jsx_runtime(), 1); 29375 function CollectionFontVariant({ 29376 face, 29377 font: font2, 29378 handleToggleVariant, 29379 selected, 29380 installed 29381 }) { 29382 const handleToggleActivation = () => { 29383 if (installed) { 29384 return; 29385 } 29386 if (font2?.fontFace) { 29387 handleToggleVariant(font2, face); 29388 return; 29389 } 29390 handleToggleVariant(font2); 29391 }; 29392 const displayName = font2.name + " " + getFontFaceVariantName(face); 29393 const checkboxId = (0, import_element81.useId)(); 29394 const installedId = `$checkboxId}-installed`; 29395 return /* @__PURE__ */ (0, import_jsx_runtime151.jsx)("div", { className: "font-library__font-card", children: /* @__PURE__ */ (0, import_jsx_runtime151.jsxs)(import_components24.Flex, { justify: "space-between", align: "center", gap: "1rem", children: [ 29396 /* @__PURE__ */ (0, import_jsx_runtime151.jsxs)(import_components24.Flex, { justify: "flex-start", align: "center", gap: "1rem", children: [ 29397 /* @__PURE__ */ (0, import_jsx_runtime151.jsx)( 29398 import_components24.CheckboxControl, 29399 { 29400 checked: selected || installed, 29401 disabled: installed, 29402 onChange: handleToggleActivation, 29403 id: checkboxId, 29404 "aria-describedby": installed ? installedId : void 0 29405 } 29406 ), 29407 /* @__PURE__ */ (0, import_jsx_runtime151.jsx)("label", { htmlFor: checkboxId, children: /* @__PURE__ */ (0, import_jsx_runtime151.jsx)( 29408 font_demo_default, 29409 { 29410 font: face, 29411 text: displayName, 29412 onClick: handleToggleActivation 29413 } 29414 ) }) 29415 ] }), 29416 installed && /* @__PURE__ */ (0, import_jsx_runtime151.jsx)( 29417 Text, 29418 { 29419 id: installedId, 29420 className: "font-library__font-card__count", 29421 children: (0, import_i18n25.__)("Installed") 29422 } 29423 ) 29424 ] }) }); 29425 } 29426 var collection_font_variant_default = CollectionFontVariant; 29427 29428 // packages/global-styles-ui/build-module/font-library/font-collection.mjs 29429 var import_jsx_runtime152 = __toESM(require_jsx_runtime(), 1); 29430 var DEFAULT_CATEGORY = { 29431 slug: "all", 29432 name: (0, import_i18n26._x)("All", "font categories") 29433 }; 29434 var LOCAL_STORAGE_ITEM = "wp-font-library-google-fonts-permission"; 29435 var MIN_WINDOW_HEIGHT = 500; 29436 function FontCollection({ slug }) { 29437 const requiresPermission = slug === "google-fonts"; 29438 const getGoogleFontsPermissionFromStorage = () => { 29439 return window.localStorage.getItem(LOCAL_STORAGE_ITEM) === "true"; 29440 }; 29441 const [selectedFont, setSelectedFont] = (0, import_element82.useState)( 29442 null 29443 ); 29444 const [lastSelectedFontSlug, setLastSelectedFontSlug] = (0, import_element82.useState)(void 0); 29445 const [notice, setNotice] = (0, import_element82.useState)(null); 29446 const [fontsToInstall, setFontsToInstall] = (0, import_element82.useState)( 29447 [] 29448 ); 29449 const [page, setPage] = (0, import_element82.useState)(1); 29450 const [filters, setFilters] = (0, import_element82.useState)({}); 29451 const [renderConfirmDialog, setRenderConfirmDialog] = (0, import_element82.useState)( 29452 requiresPermission && !getGoogleFontsPermissionFromStorage() 29453 ); 29454 const { installFonts, isInstalling, baseCustomFonts } = (0, import_element82.useContext)(FontLibraryContext); 29455 const { record: selectedCollection, isResolving: isLoading } = (0, import_core_data6.useEntityRecord)("root", "fontCollection", slug); 29456 (0, import_element82.useEffect)(() => { 29457 const handleStorage = () => { 29458 setRenderConfirmDialog( 29459 requiresPermission && !getGoogleFontsPermissionFromStorage() 29460 ); 29461 }; 29462 handleStorage(); 29463 window.addEventListener("storage", handleStorage); 29464 return () => window.removeEventListener("storage", handleStorage); 29465 }, [slug, requiresPermission]); 29466 const revokeAccess = () => { 29467 window.localStorage.setItem(LOCAL_STORAGE_ITEM, "false"); 29468 window.dispatchEvent(new Event("storage")); 29469 }; 29470 (0, import_element82.useEffect)(() => { 29471 setSelectedFont(null); 29472 }, [slug]); 29473 (0, import_element82.useEffect)(() => { 29474 setFontsToInstall([]); 29475 }, [selectedFont]); 29476 const collectionFonts = (0, import_element82.useMemo)( 29477 () => selectedCollection?.font_families ?? [], 29478 [selectedCollection] 29479 ); 29480 const collectionCategories = selectedCollection?.categories ?? []; 29481 const categories = [DEFAULT_CATEGORY, ...collectionCategories]; 29482 const fonts = (0, import_element82.useMemo)( 29483 () => filterFonts(collectionFonts, filters), 29484 [collectionFonts, filters] 29485 ); 29486 const windowHeight = Math.max(window.innerHeight, MIN_WINDOW_HEIGHT); 29487 const pageSize = Math.floor((windowHeight - 417) / 61); 29488 const totalPages = Math.ceil(fonts.length / pageSize); 29489 const itemsStart = (page - 1) * pageSize; 29490 const itemsLimit = page * pageSize; 29491 const items = fonts.slice(itemsStart, itemsLimit); 29492 const handleCategoryFilter = (category) => { 29493 setFilters({ ...filters, category }); 29494 setPage(1); 29495 }; 29496 const handleUpdateSearchInput = (value) => { 29497 setFilters({ ...filters, search: value }); 29498 setPage(1); 29499 }; 29500 const debouncedUpdateSearchInput = (0, import_compose5.debounce)( 29501 // @ts-expect-error `debounce` expects a `(...args: unknown[]) => unknown` callback. 29502 handleUpdateSearchInput, 29503 300 29504 ); 29505 const handleToggleVariant = (font2, face) => { 29506 const newFontsToInstall = toggleFont(font2, face, fontsToInstall); 29507 setFontsToInstall(newFontsToInstall); 29508 }; 29509 const fontToInstallOutline = getFontsOutline(fontsToInstall); 29510 const installedFontsOutline = getFontsOutline(baseCustomFonts); 29511 const isFontFaceInstalled = (face) => !!selectedFont && isFontFontFaceInOutline( 29512 selectedFont.slug, 29513 selectedFont.fontFace ? face : null, 29514 // If the font has no fontFace, we want to check if the font is installed 29515 installedFontsOutline 29516 ); 29517 const installableFontFaces = selectedFont?.fontFace?.filter( 29518 (face) => !isFontFaceInstalled(face) 29519 ); 29520 const isAllInstalled = !!selectedFont && (selectedFont.fontFace?.length ? installableFontFaces?.length === 0 : isFontFontFaceInOutline( 29521 selectedFont.slug, 29522 null, 29523 installedFontsOutline 29524 )); 29525 const resetFontsToInstall = () => { 29526 setFontsToInstall([]); 29527 }; 29528 const selectFontCount = fontsToInstall.length > 0 ? fontsToInstall[0]?.fontFace?.length ?? 0 : 0; 29529 const isIndeterminate = selectFontCount > 0 && selectFontCount !== installableFontFaces?.length; 29530 const isSelectAllChecked = selectFontCount === installableFontFaces?.length; 29531 const toggleSelectAll = () => { 29532 const newFonts = []; 29533 if (!isSelectAllChecked && selectedFont) { 29534 newFonts.push( 29535 selectedFont.fontFace ? { ...selectedFont, fontFace: installableFontFaces } : selectedFont 29536 ); 29537 } 29538 setFontsToInstall(newFonts); 29539 }; 29540 const handleInstall = async () => { 29541 setNotice(null); 29542 const fontFamily = fontsToInstall[0]; 29543 try { 29544 if (fontFamily?.fontFace) { 29545 await Promise.all( 29546 fontFamily.fontFace.map(async (fontFace) => { 29547 if (fontFace.src) { 29548 fontFace.file = await downloadFontFaceAssets( 29549 fontFace.src 29550 ); 29551 } 29552 }) 29553 ); 29554 } 29555 } catch { 29556 setNotice({ 29557 type: "error", 29558 message: (0, import_i18n26.__)( 29559 "Error installing the fonts, could not be downloaded." 29560 ) 29561 }); 29562 return; 29563 } 29564 try { 29565 await installFonts([fontFamily]); 29566 setNotice({ 29567 type: "success", 29568 message: (0, import_i18n26.__)("Fonts were installed successfully.") 29569 }); 29570 } catch (error2) { 29571 setNotice({ 29572 type: "error", 29573 message: error2.message 29574 }); 29575 } 29576 resetFontsToInstall(); 29577 }; 29578 const getSortedFontFaces = (fontFamily) => { 29579 if (!fontFamily) { 29580 return []; 29581 } 29582 if (!fontFamily.fontFace || !fontFamily.fontFace.length) { 29583 return [ 29584 { 29585 fontFamily: fontFamily.fontFamily, 29586 fontStyle: "normal", 29587 fontWeight: "400" 29588 } 29589 ]; 29590 } 29591 return sortFontFaces(fontFamily.fontFace); 29592 }; 29593 if (renderConfirmDialog) { 29594 return /* @__PURE__ */ (0, import_jsx_runtime152.jsx)(google_fonts_confirm_dialog_default, {}); 29595 } 29596 const showActions = slug === "google-fonts" && !renderConfirmDialog && !selectedFont; 29597 return /* @__PURE__ */ (0, import_jsx_runtime152.jsxs)("div", { className: "font-library__tabpanel-layout", children: [ 29598 isLoading && /* @__PURE__ */ (0, import_jsx_runtime152.jsx)("div", { className: "font-library__loading", children: /* @__PURE__ */ (0, import_jsx_runtime152.jsx)( 29599 progress_exports.Root, 29600 { 29601 value: null, 29602 "aria-label": (0, import_i18n26.__)("Loading fonts"), 29603 children: /* @__PURE__ */ (0, import_jsx_runtime152.jsx)(progress_exports.Track, { children: /* @__PURE__ */ (0, import_jsx_runtime152.jsx)(progress_exports.Indicator, {}) }) 29604 } 29605 ) }), 29606 !isLoading && selectedCollection && /* @__PURE__ */ (0, import_jsx_runtime152.jsxs)(import_jsx_runtime152.Fragment, { children: [ 29607 /* @__PURE__ */ (0, import_jsx_runtime152.jsxs)( 29608 import_components25.Navigator, 29609 { 29610 initialPath: "/", 29611 className: "font-library__tabpanel-layout", 29612 children: [ 29613 /* @__PURE__ */ (0, import_jsx_runtime152.jsxs)(import_components25.Navigator.Screen, { path: "/", children: [ 29614 /* @__PURE__ */ (0, import_jsx_runtime152.jsxs)(import_components25.__experimentalHStack, { justify: "space-between", children: [ 29615 /* @__PURE__ */ (0, import_jsx_runtime152.jsxs)(import_components25.__experimentalVStack, { children: [ 29616 /* @__PURE__ */ (0, import_jsx_runtime152.jsx)(import_components25.__experimentalHeading, { level: 2, size: 13, children: selectedCollection.name }), 29617 /* @__PURE__ */ (0, import_jsx_runtime152.jsx)(import_components25.__experimentalText, { children: selectedCollection.description }) 29618 ] }), 29619 showActions && /* @__PURE__ */ (0, import_jsx_runtime152.jsxs)(menu_exports.Root, { children: [ 29620 /* @__PURE__ */ (0, import_jsx_runtime152.jsx)( 29621 menu_exports.Trigger, 29622 { 29623 render: /* @__PURE__ */ (0, import_jsx_runtime152.jsx)( 29624 import_components25.Button, 29625 { 29626 size: "small", 29627 icon: more_vertical_default, 29628 label: (0, import_i18n26.__)("Actions") 29629 } 29630 ) 29631 } 29632 ), 29633 /* @__PURE__ */ (0, import_jsx_runtime152.jsx)( 29634 menu_exports.Popup, 29635 { 29636 positioner: /* @__PURE__ */ (0, import_jsx_runtime152.jsx)( 29637 menu_exports.Positioner, 29638 { 29639 side: "bottom", 29640 align: "end" 29641 } 29642 ), 29643 children: /* @__PURE__ */ (0, import_jsx_runtime152.jsx)(menu_exports.Item, { onClick: revokeAccess, children: /* @__PURE__ */ (0, import_jsx_runtime152.jsx)(menu_exports.ItemLabel, { children: (0, import_i18n26.__)( 29644 "Revoke access to Google Fonts" 29645 ) }) }) 29646 } 29647 ) 29648 ] }) 29649 ] }), 29650 /* @__PURE__ */ (0, import_jsx_runtime152.jsx)(import_components25.__experimentalSpacer, { margin: 4 }), 29651 /* @__PURE__ */ (0, import_jsx_runtime152.jsxs)(import_components25.__experimentalHStack, { spacing: 4, justify: "space-between", children: [ 29652 /* @__PURE__ */ (0, import_jsx_runtime152.jsx)( 29653 import_components25.SearchControl, 29654 { 29655 className: "font-library__search", 29656 value: filters.search, 29657 placeholder: (0, import_i18n26.__)("Font name\u2026"), 29658 label: (0, import_i18n26.__)("Search"), 29659 onChange: debouncedUpdateSearchInput, 29660 hideLabelFromVision: false 29661 } 29662 ), 29663 /* @__PURE__ */ (0, import_jsx_runtime152.jsx)( 29664 import_components25.SelectControl, 29665 { 29666 label: (0, import_i18n26.__)("Category"), 29667 value: filters.category, 29668 onChange: handleCategoryFilter, 29669 children: categories && categories.map((category) => /* @__PURE__ */ (0, import_jsx_runtime152.jsx)( 29670 "option", 29671 { 29672 value: category.slug, 29673 children: category.name 29674 }, 29675 category.slug 29676 )) 29677 } 29678 ) 29679 ] }), 29680 /* @__PURE__ */ (0, import_jsx_runtime152.jsx)(import_components25.__experimentalSpacer, { margin: 4 }), 29681 !!selectedCollection?.font_families?.length && !fonts.length && /* @__PURE__ */ (0, import_jsx_runtime152.jsx)(import_components25.__experimentalText, { children: (0, import_i18n26.__)( 29682 "No fonts found. Try with a different search term." 29683 ) }), 29684 /* @__PURE__ */ (0, import_jsx_runtime152.jsx)("div", { className: "font-library__fonts-grid__main", children: /* @__PURE__ */ (0, import_jsx_runtime152.jsx)( 29685 "ul", 29686 { 29687 role: "list", 29688 className: "font-library__fonts-list", 29689 children: items.map((font2) => /* @__PURE__ */ (0, import_jsx_runtime152.jsx)( 29690 "li", 29691 { 29692 className: "font-library__fonts-list-item", 29693 children: /* @__PURE__ */ (0, import_jsx_runtime152.jsx)( 29694 font_card_default, 29695 { 29696 font: font2.font_family_settings, 29697 navigatorPath: "/fontFamily", 29698 shouldFocus: font2.font_family_settings.slug === lastSelectedFontSlug, 29699 onClick: () => { 29700 setSelectedFont( 29701 font2.font_family_settings 29702 ); 29703 } 29704 } 29705 ) 29706 }, 29707 font2.font_family_settings.slug 29708 )) 29709 } 29710 ) }) 29711 ] }), 29712 /* @__PURE__ */ (0, import_jsx_runtime152.jsxs)(import_components25.Navigator.Screen, { path: "/fontFamily", children: [ 29713 /* @__PURE__ */ (0, import_jsx_runtime152.jsxs)(import_components25.Flex, { justify: "flex-start", children: [ 29714 /* @__PURE__ */ (0, import_jsx_runtime152.jsx)( 29715 import_components25.Navigator.BackButton, 29716 { 29717 icon: (0, import_i18n26.isRTL)() ? chevron_right_default : chevron_left_default, 29718 size: "small", 29719 onClick: () => { 29720 setLastSelectedFontSlug( 29721 selectedFont?.slug 29722 ); 29723 setSelectedFont(null); 29724 setNotice(null); 29725 }, 29726 label: (0, import_i18n26.__)("Back") 29727 } 29728 ), 29729 /* @__PURE__ */ (0, import_jsx_runtime152.jsx)( 29730 import_components25.__experimentalHeading, 29731 { 29732 level: 2, 29733 size: 13, 29734 className: "global-styles-ui-header", 29735 children: selectedFont?.name 29736 } 29737 ) 29738 ] }), 29739 notice && /* @__PURE__ */ (0, import_jsx_runtime152.jsxs)(import_jsx_runtime152.Fragment, { children: [ 29740 /* @__PURE__ */ (0, import_jsx_runtime152.jsx)(import_components25.__experimentalSpacer, { margin: 1 }), 29741 /* @__PURE__ */ (0, import_jsx_runtime152.jsx)( 29742 import_components25.Notice, 29743 { 29744 status: notice.type, 29745 onRemove: () => setNotice(null), 29746 children: notice.message 29747 } 29748 ), 29749 /* @__PURE__ */ (0, import_jsx_runtime152.jsx)(import_components25.__experimentalSpacer, { margin: 1 }) 29750 ] }), 29751 /* @__PURE__ */ (0, import_jsx_runtime152.jsx)(import_components25.__experimentalSpacer, { margin: 4 }), 29752 /* @__PURE__ */ (0, import_jsx_runtime152.jsx)(import_components25.__experimentalText, { children: (0, import_i18n26.__)("Select font variants to install.") }), 29753 /* @__PURE__ */ (0, import_jsx_runtime152.jsx)(import_components25.__experimentalSpacer, { margin: 4 }), 29754 /* @__PURE__ */ (0, import_jsx_runtime152.jsx)( 29755 import_components25.CheckboxControl, 29756 { 29757 className: "font-library__select-all", 29758 label: (0, import_i18n26.__)("Select all"), 29759 checked: isSelectAllChecked || isAllInstalled, 29760 onChange: toggleSelectAll, 29761 indeterminate: isIndeterminate, 29762 disabled: isAllInstalled 29763 } 29764 ), 29765 /* @__PURE__ */ (0, import_jsx_runtime152.jsx)(import_components25.__experimentalVStack, { spacing: 0, children: /* @__PURE__ */ (0, import_jsx_runtime152.jsx)( 29766 "ul", 29767 { 29768 role: "list", 29769 className: "font-library__fonts-list", 29770 children: selectedFont && getSortedFontFaces(selectedFont).map( 29771 (face, i) => /* @__PURE__ */ (0, import_jsx_runtime152.jsx)( 29772 "li", 29773 { 29774 className: "font-library__fonts-list-item", 29775 children: /* @__PURE__ */ (0, import_jsx_runtime152.jsx)( 29776 collection_font_variant_default, 29777 { 29778 font: selectedFont, 29779 face, 29780 handleToggleVariant, 29781 selected: isFontFontFaceInOutline( 29782 selectedFont.slug, 29783 selectedFont.fontFace ? face : null, 29784 // If the font has no fontFace, we want to check if the font is in the outline 29785 fontToInstallOutline 29786 ), 29787 installed: isFontFaceInstalled( 29788 face 29789 ) 29790 } 29791 ) 29792 }, 29793 `face$i}` 29794 ) 29795 ) 29796 } 29797 ) }), 29798 /* @__PURE__ */ (0, import_jsx_runtime152.jsx)(import_components25.__experimentalSpacer, { margin: 16 }) 29799 ] }) 29800 ] 29801 } 29802 ), 29803 selectedFont && /* @__PURE__ */ (0, import_jsx_runtime152.jsx)( 29804 import_components25.Flex, 29805 { 29806 justify: "flex-end", 29807 className: "font-library__footer", 29808 children: /* @__PURE__ */ (0, import_jsx_runtime152.jsx)( 29809 import_components25.Button, 29810 { 29811 __next40pxDefaultSize: true, 29812 variant: "primary", 29813 onClick: handleInstall, 29814 isBusy: isInstalling, 29815 disabled: fontsToInstall.length === 0 || isInstalling, 29816 accessibleWhenDisabled: true, 29817 children: (0, import_i18n26.__)("Install") 29818 } 29819 ) 29820 } 29821 ), 29822 !selectedFont && /* @__PURE__ */ (0, import_jsx_runtime152.jsxs)( 29823 import_components25.__experimentalHStack, 29824 { 29825 expanded: false, 29826 className: "font-library__footer", 29827 justify: "end", 29828 spacing: 6, 29829 children: [ 29830 /* @__PURE__ */ (0, import_jsx_runtime152.jsx)( 29831 import_components25.__experimentalHStack, 29832 { 29833 justify: "flex-start", 29834 expanded: false, 29835 spacing: 1, 29836 className: "font-library__page-selection", 29837 children: (0, import_element82.createInterpolateElement)( 29838 (0, import_i18n26.sprintf)( 29839 // translators: 1: Current page number, 2: Total number of pages. 29840 (0, import_i18n26._x)( 29841 "<div>Page</div>%1$s<div>of %2$d</div>", 29842 "paging" 29843 ), 29844 "<CurrentPage />", 29845 totalPages 29846 ), 29847 { 29848 div: /* @__PURE__ */ (0, import_jsx_runtime152.jsx)("div", { "aria-hidden": true }), 29849 // @ts-expect-error — Tag injected via sprintf argument, not visible in format string. 29850 CurrentPage: /* @__PURE__ */ (0, import_jsx_runtime152.jsxs)( 29851 select_exports.Root, 29852 { 29853 value: page.toString(), 29854 onValueChange: (newPage) => { 29855 if (newPage !== null) { 29856 setPage( 29857 parseInt(newPage) 29858 ); 29859 } 29860 }, 29861 children: [ 29862 /* @__PURE__ */ (0, import_jsx_runtime152.jsx)( 29863 select_exports.Trigger, 29864 { 29865 className: "font-library__page-selection-trigger", 29866 size: "small", 29867 variant: "minimal", 29868 "aria-label": (0, import_i18n26.__)( 29869 "Current page" 29870 ) 29871 } 29872 ), 29873 /* @__PURE__ */ (0, import_jsx_runtime152.jsx)(select_exports.Popup, { width: "content", children: [ 29874 ...Array(totalPages) 29875 ].map((e, i) => { 29876 const value = (i + 1).toString(); 29877 return /* @__PURE__ */ (0, import_jsx_runtime152.jsx)( 29878 select_exports.Item, 29879 { 29880 value, 29881 size: "small", 29882 children: /* @__PURE__ */ (0, import_jsx_runtime152.jsx)(select_exports.ItemLabel, { children: value }) 29883 }, 29884 value 29885 ); 29886 }) }) 29887 ] 29888 } 29889 ) 29890 } 29891 ) 29892 } 29893 ), 29894 /* @__PURE__ */ (0, import_jsx_runtime152.jsxs)(import_components25.__experimentalHStack, { expanded: false, spacing: 1, children: [ 29895 /* @__PURE__ */ (0, import_jsx_runtime152.jsx)( 29896 import_components25.Button, 29897 { 29898 onClick: () => setPage(page - 1), 29899 disabled: page === 1, 29900 accessibleWhenDisabled: true, 29901 label: (0, import_i18n26.__)("Previous page"), 29902 icon: (0, import_i18n26.isRTL)() ? next_default : previous_default, 29903 showTooltip: true, 29904 size: "compact", 29905 tooltipPosition: "top" 29906 } 29907 ), 29908 /* @__PURE__ */ (0, import_jsx_runtime152.jsx)( 29909 import_components25.Button, 29910 { 29911 onClick: () => setPage(page + 1), 29912 disabled: page === totalPages, 29913 accessibleWhenDisabled: true, 29914 label: (0, import_i18n26.__)("Next page"), 29915 icon: (0, import_i18n26.isRTL)() ? previous_default : next_default, 29916 showTooltip: true, 29917 size: "compact", 29918 tooltipPosition: "top" 29919 } 29920 ) 29921 ] }) 29922 ] 29923 } 29924 ) 29925 ] }) 29926 ] }); 29927 } 29928 var font_collection_default = FontCollection; 29929 29930 // packages/global-styles-ui/build-module/font-library/upload-fonts.mjs 29931 var import_i18n27 = __toESM(require_i18n(), 1); 29932 var import_components26 = __toESM(require_components(), 1); 29933 var import_element83 = __toESM(require_element(), 1); 29934 29935 // packages/global-styles-ui/build-module/font-library/lib/unbrotli.mjs 29936 var __require2 = /* @__PURE__ */ ((x2) => typeof __require !== "undefined" ? __require : typeof Proxy !== "undefined" ? new Proxy(x2, { 29937 get: (a, b) => (typeof __require !== "undefined" ? __require : a)[b] 29938 }) : x2)(function(x2) { 29939 if (typeof __require !== "undefined") return __require.apply(this, arguments); 29940 throw Error('Dynamic require of "' + x2 + '" is not supported'); 29941 }); 29942 var unbrotli_default = (function() { 29943 var define, module, exports; 29944 return (/* @__PURE__ */ (function() { 29945 function r2(e, n, t) { 29946 function o(i2, f) { 29947 if (!n[i2]) { 29948 if (!e[i2]) { 29949 var c2 = "function" == typeof __require2 && __require2; 29950 if (!f && c2) return c2(i2, true); 29951 if (u) return u(i2, true); 29952 var a = new Error("Cannot find module '" + i2 + "'"); 29953 throw a.code = "MODULE_NOT_FOUND", a; 29954 } 29955 var p3 = n[i2] = { exports: {} }; 29956 e[i2][0].call( 29957 p3.exports, 29958 function(r22) { 29959 var n2 = e[i2][1][r22]; 29960 return o(n2 || r22); 29961 }, 29962 p3, 29963 p3.exports, 29964 r2, 29965 e, 29966 n, 29967 t 29968 ); 29969 } 29970 return n[i2].exports; 29971 } 29972 for (var u = "function" == typeof __require2 && __require2, i = 0; i < t.length; i++) 29973 o(t[i]); 29974 return o; 29975 } 29976 return r2; 29977 })())( 29978 { 29979 1: [ 29980 function(require2, module2, exports2) { 29981 var BROTLI_READ_SIZE = 4096; 29982 var BROTLI_IBUF_SIZE = 2 * BROTLI_READ_SIZE + 32; 29983 var BROTLI_IBUF_MASK = 2 * BROTLI_READ_SIZE - 1; 29984 var kBitMask = new Uint32Array([ 29985 0, 29986 1, 29987 3, 29988 7, 29989 15, 29990 31, 29991 63, 29992 127, 29993 255, 29994 511, 29995 1023, 29996 2047, 29997 4095, 29998 8191, 29999 16383, 30000 32767, 30001 65535, 30002 131071, 30003 262143, 30004 524287, 30005 1048575, 30006 2097151, 30007 4194303, 30008 8388607, 30009 16777215 30010 ]); 30011 function BrotliBitReader(input) { 30012 this.buf_ = new Uint8Array(BROTLI_IBUF_SIZE); 30013 this.input_ = input; 30014 this.reset(); 30015 } 30016 BrotliBitReader.READ_SIZE = BROTLI_READ_SIZE; 30017 BrotliBitReader.IBUF_MASK = BROTLI_IBUF_MASK; 30018 BrotliBitReader.prototype.reset = function() { 30019 this.buf_ptr_ = 0; 30020 this.val_ = 0; 30021 this.pos_ = 0; 30022 this.bit_pos_ = 0; 30023 this.bit_end_pos_ = 0; 30024 this.eos_ = 0; 30025 this.readMoreInput(); 30026 for (var i = 0; i < 4; i++) { 30027 this.val_ |= this.buf_[this.pos_] << 8 * i; 30028 ++this.pos_; 30029 } 30030 return this.bit_end_pos_ > 0; 30031 }; 30032 BrotliBitReader.prototype.readMoreInput = function() { 30033 if (this.bit_end_pos_ > 256) { 30034 return; 30035 } else if (this.eos_) { 30036 if (this.bit_pos_ > this.bit_end_pos_) 30037 throw new Error( 30038 "Unexpected end of input " + this.bit_pos_ + " " + this.bit_end_pos_ 30039 ); 30040 } else { 30041 var dst = this.buf_ptr_; 30042 var bytes_read = this.input_.read( 30043 this.buf_, 30044 dst, 30045 BROTLI_READ_SIZE 30046 ); 30047 if (bytes_read < 0) { 30048 throw new Error("Unexpected end of input"); 30049 } 30050 if (bytes_read < BROTLI_READ_SIZE) { 30051 this.eos_ = 1; 30052 for (var p3 = 0; p3 < 32; p3++) 30053 this.buf_[dst + bytes_read + p3] = 0; 30054 } 30055 if (dst === 0) { 30056 for (var p3 = 0; p3 < 32; p3++) 30057 this.buf_[(BROTLI_READ_SIZE << 1) + p3] = this.buf_[p3]; 30058 this.buf_ptr_ = BROTLI_READ_SIZE; 30059 } else { 30060 this.buf_ptr_ = 0; 30061 } 30062 this.bit_end_pos_ += bytes_read << 3; 30063 } 30064 }; 30065 BrotliBitReader.prototype.fillBitWindow = function() { 30066 while (this.bit_pos_ >= 8) { 30067 this.val_ >>>= 8; 30068 this.val_ |= this.buf_[this.pos_ & BROTLI_IBUF_MASK] << 24; 30069 ++this.pos_; 30070 this.bit_pos_ = this.bit_pos_ - 8 >>> 0; 30071 this.bit_end_pos_ = this.bit_end_pos_ - 8 >>> 0; 30072 } 30073 }; 30074 BrotliBitReader.prototype.readBits = function(n_bits) { 30075 if (32 - this.bit_pos_ < n_bits) { 30076 this.fillBitWindow(); 30077 } 30078 var val = this.val_ >>> this.bit_pos_ & kBitMask[n_bits]; 30079 this.bit_pos_ += n_bits; 30080 return val; 30081 }; 30082 module2.exports = BrotliBitReader; 30083 }, 30084 {} 30085 ], 30086 2: [ 30087 function(require2, module2, exports2) { 30088 var CONTEXT_LSB6 = 0; 30089 var CONTEXT_MSB6 = 1; 30090 var CONTEXT_UTF8 = 2; 30091 var CONTEXT_SIGNED = 3; 30092 exports2.lookup = new Uint8Array([ 30093 /* CONTEXT_UTF8, last byte. */ 30094 /* ASCII range. */ 30095 0, 30096 0, 30097 0, 30098 0, 30099 0, 30100 0, 30101 0, 30102 0, 30103 0, 30104 4, 30105 4, 30106 0, 30107 0, 30108 4, 30109 0, 30110 0, 30111 0, 30112 0, 30113 0, 30114 0, 30115 0, 30116 0, 30117 0, 30118 0, 30119 0, 30120 0, 30121 0, 30122 0, 30123 0, 30124 0, 30125 0, 30126 0, 30127 8, 30128 12, 30129 16, 30130 12, 30131 12, 30132 20, 30133 12, 30134 16, 30135 24, 30136 28, 30137 12, 30138 12, 30139 32, 30140 12, 30141 36, 30142 12, 30143 44, 30144 44, 30145 44, 30146 44, 30147 44, 30148 44, 30149 44, 30150 44, 30151 44, 30152 44, 30153 32, 30154 32, 30155 24, 30156 40, 30157 28, 30158 12, 30159 12, 30160 48, 30161 52, 30162 52, 30163 52, 30164 48, 30165 52, 30166 52, 30167 52, 30168 48, 30169 52, 30170 52, 30171 52, 30172 52, 30173 52, 30174 48, 30175 52, 30176 52, 30177 52, 30178 52, 30179 52, 30180 48, 30181 52, 30182 52, 30183 52, 30184 52, 30185 52, 30186 24, 30187 12, 30188 28, 30189 12, 30190 12, 30191 12, 30192 56, 30193 60, 30194 60, 30195 60, 30196 56, 30197 60, 30198 60, 30199 60, 30200 56, 30201 60, 30202 60, 30203 60, 30204 60, 30205 60, 30206 56, 30207 60, 30208 60, 30209 60, 30210 60, 30211 60, 30212 56, 30213 60, 30214 60, 30215 60, 30216 60, 30217 60, 30218 24, 30219 12, 30220 28, 30221 12, 30222 0, 30223 /* UTF8 continuation byte range. */ 30224 0, 30225 1, 30226 0, 30227 1, 30228 0, 30229 1, 30230 0, 30231 1, 30232 0, 30233 1, 30234 0, 30235 1, 30236 0, 30237 1, 30238 0, 30239 1, 30240 0, 30241 1, 30242 0, 30243 1, 30244 0, 30245 1, 30246 0, 30247 1, 30248 0, 30249 1, 30250 0, 30251 1, 30252 0, 30253 1, 30254 0, 30255 1, 30256 0, 30257 1, 30258 0, 30259 1, 30260 0, 30261 1, 30262 0, 30263 1, 30264 0, 30265 1, 30266 0, 30267 1, 30268 0, 30269 1, 30270 0, 30271 1, 30272 0, 30273 1, 30274 0, 30275 1, 30276 0, 30277 1, 30278 0, 30279 1, 30280 0, 30281 1, 30282 0, 30283 1, 30284 0, 30285 1, 30286 0, 30287 1, 30288 2, 30289 3, 30290 2, 30291 3, 30292 2, 30293 3, 30294 2, 30295 3, 30296 2, 30297 3, 30298 2, 30299 3, 30300 2, 30301 3, 30302 2, 30303 3, 30304 2, 30305 3, 30306 2, 30307 3, 30308 2, 30309 3, 30310 2, 30311 3, 30312 2, 30313 3, 30314 2, 30315 3, 30316 2, 30317 3, 30318 2, 30319 3, 30320 2, 30321 3, 30322 2, 30323 3, 30324 2, 30325 3, 30326 2, 30327 3, 30328 2, 30329 3, 30330 2, 30331 3, 30332 2, 30333 3, 30334 2, 30335 3, 30336 2, 30337 3, 30338 2, 30339 3, 30340 2, 30341 3, 30342 2, 30343 3, 30344 2, 30345 3, 30346 2, 30347 3, 30348 2, 30349 3, 30350 2, 30351 3, 30352 /* ASCII range. */ 30353 0, 30354 0, 30355 0, 30356 0, 30357 0, 30358 0, 30359 0, 30360 0, 30361 0, 30362 0, 30363 0, 30364 0, 30365 0, 30366 0, 30367 0, 30368 0, 30369 0, 30370 0, 30371 0, 30372 0, 30373 0, 30374 0, 30375 0, 30376 0, 30377 0, 30378 0, 30379 0, 30380 0, 30381 0, 30382 0, 30383 0, 30384 0, 30385 0, 30386 1, 30387 1, 30388 1, 30389 1, 30390 1, 30391 1, 30392 1, 30393 1, 30394 1, 30395 1, 30396 1, 30397 1, 30398 1, 30399 1, 30400 1, 30401 2, 30402 2, 30403 2, 30404 2, 30405 2, 30406 2, 30407 2, 30408 2, 30409 2, 30410 2, 30411 1, 30412 1, 30413 1, 30414 1, 30415 1, 30416 1, 30417 1, 30418 2, 30419 2, 30420 2, 30421 2, 30422 2, 30423 2, 30424 2, 30425 2, 30426 2, 30427 2, 30428 2, 30429 2, 30430 2, 30431 2, 30432 2, 30433 2, 30434 2, 30435 2, 30436 2, 30437 2, 30438 2, 30439 2, 30440 2, 30441 2, 30442 2, 30443 2, 30444 1, 30445 1, 30446 1, 30447 1, 30448 1, 30449 1, 30450 3, 30451 3, 30452 3, 30453 3, 30454 3, 30455 3, 30456 3, 30457 3, 30458 3, 30459 3, 30460 3, 30461 3, 30462 3, 30463 3, 30464 3, 30465 3, 30466 3, 30467 3, 30468 3, 30469 3, 30470 3, 30471 3, 30472 3, 30473 3, 30474 3, 30475 3, 30476 1, 30477 1, 30478 1, 30479 1, 30480 0, 30481 /* UTF8 continuation byte range. */ 30482 0, 30483 0, 30484 0, 30485 0, 30486 0, 30487 0, 30488 0, 30489 0, 30490 0, 30491 0, 30492 0, 30493 0, 30494 0, 30495 0, 30496 0, 30497 0, 30498 0, 30499 0, 30500 0, 30501 0, 30502 0, 30503 0, 30504 0, 30505 0, 30506 0, 30507 0, 30508 0, 30509 0, 30510 0, 30511 0, 30512 0, 30513 0, 30514 0, 30515 0, 30516 0, 30517 0, 30518 0, 30519 0, 30520 0, 30521 0, 30522 0, 30523 0, 30524 0, 30525 0, 30526 0, 30527 0, 30528 0, 30529 0, 30530 0, 30531 0, 30532 0, 30533 0, 30534 0, 30535 0, 30536 0, 30537 0, 30538 0, 30539 0, 30540 0, 30541 0, 30542 0, 30543 0, 30544 0, 30545 0, 30546 0, 30547 0, 30548 0, 30549 0, 30550 0, 30551 0, 30552 0, 30553 0, 30554 0, 30555 0, 30556 0, 30557 0, 30558 0, 30559 0, 30560 0, 30561 0, 30562 0, 30563 0, 30564 0, 30565 0, 30566 0, 30567 0, 30568 0, 30569 0, 30570 0, 30571 0, 30572 0, 30573 0, 30574 0, 30575 0, 30576 0, 30577 0, 30578 2, 30579 2, 30580 2, 30581 2, 30582 2, 30583 2, 30584 2, 30585 2, 30586 2, 30587 2, 30588 2, 30589 2, 30590 2, 30591 2, 30592 2, 30593 2, 30594 2, 30595 2, 30596 2, 30597 2, 30598 2, 30599 2, 30600 2, 30601 2, 30602 2, 30603 2, 30604 2, 30605 2, 30606 2, 30607 2, 30608 2, 30609 2, 30610 0, 30611 1, 30612 1, 30613 1, 30614 1, 30615 1, 30616 1, 30617 1, 30618 1, 30619 1, 30620 1, 30621 1, 30622 1, 30623 1, 30624 1, 30625 1, 30626 2, 30627 2, 30628 2, 30629 2, 30630 2, 30631 2, 30632 2, 30633 2, 30634 2, 30635 2, 30636 2, 30637 2, 30638 2, 30639 2, 30640 2, 30641 2, 30642 2, 30643 2, 30644 2, 30645 2, 30646 2, 30647 2, 30648 2, 30649 2, 30650 2, 30651 2, 30652 2, 30653 2, 30654 2, 30655 2, 30656 2, 30657 2, 30658 2, 30659 2, 30660 2, 30661 2, 30662 2, 30663 2, 30664 2, 30665 2, 30666 2, 30667 2, 30668 2, 30669 2, 30670 2, 30671 2, 30672 2, 30673 2, 30674 3, 30675 3, 30676 3, 30677 3, 30678 3, 30679 3, 30680 3, 30681 3, 30682 3, 30683 3, 30684 3, 30685 3, 30686 3, 30687 3, 30688 3, 30689 3, 30690 3, 30691 3, 30692 3, 30693 3, 30694 3, 30695 3, 30696 3, 30697 3, 30698 3, 30699 3, 30700 3, 30701 3, 30702 3, 30703 3, 30704 3, 30705 3, 30706 3, 30707 3, 30708 3, 30709 3, 30710 3, 30711 3, 30712 3, 30713 3, 30714 3, 30715 3, 30716 3, 30717 3, 30718 3, 30719 3, 30720 3, 30721 3, 30722 3, 30723 3, 30724 3, 30725 3, 30726 3, 30727 3, 30728 3, 30729 3, 30730 3, 30731 3, 30732 3, 30733 3, 30734 3, 30735 3, 30736 3, 30737 3, 30738 4, 30739 4, 30740 4, 30741 4, 30742 4, 30743 4, 30744 4, 30745 4, 30746 4, 30747 4, 30748 4, 30749 4, 30750 4, 30751 4, 30752 4, 30753 4, 30754 4, 30755 4, 30756 4, 30757 4, 30758 4, 30759 4, 30760 4, 30761 4, 30762 4, 30763 4, 30764 4, 30765 4, 30766 4, 30767 4, 30768 4, 30769 4, 30770 4, 30771 4, 30772 4, 30773 4, 30774 4, 30775 4, 30776 4, 30777 4, 30778 4, 30779 4, 30780 4, 30781 4, 30782 4, 30783 4, 30784 4, 30785 4, 30786 4, 30787 4, 30788 4, 30789 4, 30790 4, 30791 4, 30792 4, 30793 4, 30794 4, 30795 4, 30796 4, 30797 4, 30798 4, 30799 4, 30800 4, 30801 4, 30802 5, 30803 5, 30804 5, 30805 5, 30806 5, 30807 5, 30808 5, 30809 5, 30810 5, 30811 5, 30812 5, 30813 5, 30814 5, 30815 5, 30816 5, 30817 5, 30818 5, 30819 5, 30820 5, 30821 5, 30822 5, 30823 5, 30824 5, 30825 5, 30826 5, 30827 5, 30828 5, 30829 5, 30830 5, 30831 5, 30832 5, 30833 5, 30834 5, 30835 5, 30836 5, 30837 5, 30838 5, 30839 5, 30840 5, 30841 5, 30842 5, 30843 5, 30844 5, 30845 5, 30846 5, 30847 5, 30848 5, 30849 5, 30850 6, 30851 6, 30852 6, 30853 6, 30854 6, 30855 6, 30856 6, 30857 6, 30858 6, 30859 6, 30860 6, 30861 6, 30862 6, 30863 6, 30864 6, 30865 7, 30866 /* CONTEXT_SIGNED, last byte, same as the above values shifted by 3 bits. */ 30867 0, 30868 8, 30869 8, 30870 8, 30871 8, 30872 8, 30873 8, 30874 8, 30875 8, 30876 8, 30877 8, 30878 8, 30879 8, 30880 8, 30881 8, 30882 8, 30883 16, 30884 16, 30885 16, 30886 16, 30887 16, 30888 16, 30889 16, 30890 16, 30891 16, 30892 16, 30893 16, 30894 16, 30895 16, 30896 16, 30897 16, 30898 16, 30899 16, 30900 16, 30901 16, 30902 16, 30903 16, 30904 16, 30905 16, 30906 16, 30907 16, 30908 16, 30909 16, 30910 16, 30911 16, 30912 16, 30913 16, 30914 16, 30915 16, 30916 16, 30917 16, 30918 16, 30919 16, 30920 16, 30921 16, 30922 16, 30923 16, 30924 16, 30925 16, 30926 16, 30927 16, 30928 16, 30929 16, 30930 16, 30931 24, 30932 24, 30933 24, 30934 24, 30935 24, 30936 24, 30937 24, 30938 24, 30939 24, 30940 24, 30941 24, 30942 24, 30943 24, 30944 24, 30945 24, 30946 24, 30947 24, 30948 24, 30949 24, 30950 24, 30951 24, 30952 24, 30953 24, 30954 24, 30955 24, 30956 24, 30957 24, 30958 24, 30959 24, 30960 24, 30961 24, 30962 24, 30963 24, 30964 24, 30965 24, 30966 24, 30967 24, 30968 24, 30969 24, 30970 24, 30971 24, 30972 24, 30973 24, 30974 24, 30975 24, 30976 24, 30977 24, 30978 24, 30979 24, 30980 24, 30981 24, 30982 24, 30983 24, 30984 24, 30985 24, 30986 24, 30987 24, 30988 24, 30989 24, 30990 24, 30991 24, 30992 24, 30993 24, 30994 24, 30995 32, 30996 32, 30997 32, 30998 32, 30999 32, 31000 32, 31001 32, 31002 32, 31003 32, 31004 32, 31005 32, 31006 32, 31007 32, 31008 32, 31009 32, 31010 32, 31011 32, 31012 32, 31013 32, 31014 32, 31015 32, 31016 32, 31017 32, 31018 32, 31019 32, 31020 32, 31021 32, 31022 32, 31023 32, 31024 32, 31025 32, 31026 32, 31027 32, 31028 32, 31029 32, 31030 32, 31031 32, 31032 32, 31033 32, 31034 32, 31035 32, 31036 32, 31037 32, 31038 32, 31039 32, 31040 32, 31041 32, 31042 32, 31043 32, 31044 32, 31045 32, 31046 32, 31047 32, 31048 32, 31049 32, 31050 32, 31051 32, 31052 32, 31053 32, 31054 32, 31055 32, 31056 32, 31057 32, 31058 32, 31059 40, 31060 40, 31061 40, 31062 40, 31063 40, 31064 40, 31065 40, 31066 40, 31067 40, 31068 40, 31069 40, 31070 40, 31071 40, 31072 40, 31073 40, 31074 40, 31075 40, 31076 40, 31077 40, 31078 40, 31079 40, 31080 40, 31081 40, 31082 40, 31083 40, 31084 40, 31085 40, 31086 40, 31087 40, 31088 40, 31089 40, 31090 40, 31091 40, 31092 40, 31093 40, 31094 40, 31095 40, 31096 40, 31097 40, 31098 40, 31099 40, 31100 40, 31101 40, 31102 40, 31103 40, 31104 40, 31105 40, 31106 40, 31107 48, 31108 48, 31109 48, 31110 48, 31111 48, 31112 48, 31113 48, 31114 48, 31115 48, 31116 48, 31117 48, 31118 48, 31119 48, 31120 48, 31121 48, 31122 56, 31123 /* CONTEXT_LSB6, last byte. */ 31124 0, 31125 1, 31126 2, 31127 3, 31128 4, 31129 5, 31130 6, 31131 7, 31132 8, 31133 9, 31134 10, 31135 11, 31136 12, 31137 13, 31138 14, 31139 15, 31140 16, 31141 17, 31142 18, 31143 19, 31144 20, 31145 21, 31146 22, 31147 23, 31148 24, 31149 25, 31150 26, 31151 27, 31152 28, 31153 29, 31154 30, 31155 31, 31156 32, 31157 33, 31158 34, 31159 35, 31160 36, 31161 37, 31162 38, 31163 39, 31164 40, 31165 41, 31166 42, 31167 43, 31168 44, 31169 45, 31170 46, 31171 47, 31172 48, 31173 49, 31174 50, 31175 51, 31176 52, 31177 53, 31178 54, 31179 55, 31180 56, 31181 57, 31182 58, 31183 59, 31184 60, 31185 61, 31186 62, 31187 63, 31188 0, 31189 1, 31190 2, 31191 3, 31192 4, 31193 5, 31194 6, 31195 7, 31196 8, 31197 9, 31198 10, 31199 11, 31200 12, 31201 13, 31202 14, 31203 15, 31204 16, 31205 17, 31206 18, 31207 19, 31208 20, 31209 21, 31210 22, 31211 23, 31212 24, 31213 25, 31214 26, 31215 27, 31216 28, 31217 29, 31218 30, 31219 31, 31220 32, 31221 33, 31222 34, 31223 35, 31224 36, 31225 37, 31226 38, 31227 39, 31228 40, 31229 41, 31230 42, 31231 43, 31232 44, 31233 45, 31234 46, 31235 47, 31236 48, 31237 49, 31238 50, 31239 51, 31240 52, 31241 53, 31242 54, 31243 55, 31244 56, 31245 57, 31246 58, 31247 59, 31248 60, 31249 61, 31250 62, 31251 63, 31252 0, 31253 1, 31254 2, 31255 3, 31256 4, 31257 5, 31258 6, 31259 7, 31260 8, 31261 9, 31262 10, 31263 11, 31264 12, 31265 13, 31266 14, 31267 15, 31268 16, 31269 17, 31270 18, 31271 19, 31272 20, 31273 21, 31274 22, 31275 23, 31276 24, 31277 25, 31278 26, 31279 27, 31280 28, 31281 29, 31282 30, 31283 31, 31284 32, 31285 33, 31286 34, 31287 35, 31288 36, 31289 37, 31290 38, 31291 39, 31292 40, 31293 41, 31294 42, 31295 43, 31296 44, 31297 45, 31298 46, 31299 47, 31300 48, 31301 49, 31302 50, 31303 51, 31304 52, 31305 53, 31306 54, 31307 55, 31308 56, 31309 57, 31310 58, 31311 59, 31312 60, 31313 61, 31314 62, 31315 63, 31316 0, 31317 1, 31318 2, 31319 3, 31320 4, 31321 5, 31322 6, 31323 7, 31324 8, 31325 9, 31326 10, 31327 11, 31328 12, 31329 13, 31330 14, 31331 15, 31332 16, 31333 17, 31334 18, 31335 19, 31336 20, 31337 21, 31338 22, 31339 23, 31340 24, 31341 25, 31342 26, 31343 27, 31344 28, 31345 29, 31346 30, 31347 31, 31348 32, 31349 33, 31350 34, 31351 35, 31352 36, 31353 37, 31354 38, 31355 39, 31356 40, 31357 41, 31358 42, 31359 43, 31360 44, 31361 45, 31362 46, 31363 47, 31364 48, 31365 49, 31366 50, 31367 51, 31368 52, 31369 53, 31370 54, 31371 55, 31372 56, 31373 57, 31374 58, 31375 59, 31376 60, 31377 61, 31378 62, 31379 63, 31380 /* CONTEXT_MSB6, last byte. */ 31381 0, 31382 0, 31383 0, 31384 0, 31385 1, 31386 1, 31387 1, 31388 1, 31389 2, 31390 2, 31391 2, 31392 2, 31393 3, 31394 3, 31395 3, 31396 3, 31397 4, 31398 4, 31399 4, 31400 4, 31401 5, 31402 5, 31403 5, 31404 5, 31405 6, 31406 6, 31407 6, 31408 6, 31409 7, 31410 7, 31411 7, 31412 7, 31413 8, 31414 8, 31415 8, 31416 8, 31417 9, 31418 9, 31419 9, 31420 9, 31421 10, 31422 10, 31423 10, 31424 10, 31425 11, 31426 11, 31427 11, 31428 11, 31429 12, 31430 12, 31431 12, 31432 12, 31433 13, 31434 13, 31435 13, 31436 13, 31437 14, 31438 14, 31439 14, 31440 14, 31441 15, 31442 15, 31443 15, 31444 15, 31445 16, 31446 16, 31447 16, 31448 16, 31449 17, 31450 17, 31451 17, 31452 17, 31453 18, 31454 18, 31455 18, 31456 18, 31457 19, 31458 19, 31459 19, 31460 19, 31461 20, 31462 20, 31463 20, 31464 20, 31465 21, 31466 21, 31467 21, 31468 21, 31469 22, 31470 22, 31471 22, 31472 22, 31473 23, 31474 23, 31475 23, 31476 23, 31477 24, 31478 24, 31479 24, 31480 24, 31481 25, 31482 25, 31483 25, 31484 25, 31485 26, 31486 26, 31487 26, 31488 26, 31489 27, 31490 27, 31491 27, 31492 27, 31493 28, 31494 28, 31495 28, 31496 28, 31497 29, 31498 29, 31499 29, 31500 29, 31501 30, 31502 30, 31503 30, 31504 30, 31505 31, 31506 31, 31507 31, 31508 31, 31509 32, 31510 32, 31511 32, 31512 32, 31513 33, 31514 33, 31515 33, 31516 33, 31517 34, 31518 34, 31519 34, 31520 34, 31521 35, 31522 35, 31523 35, 31524 35, 31525 36, 31526 36, 31527 36, 31528 36, 31529 37, 31530 37, 31531 37, 31532 37, 31533 38, 31534 38, 31535 38, 31536 38, 31537 39, 31538 39, 31539 39, 31540 39, 31541 40, 31542 40, 31543 40, 31544 40, 31545 41, 31546 41, 31547 41, 31548 41, 31549 42, 31550 42, 31551 42, 31552 42, 31553 43, 31554 43, 31555 43, 31556 43, 31557 44, 31558 44, 31559 44, 31560 44, 31561 45, 31562 45, 31563 45, 31564 45, 31565 46, 31566 46, 31567 46, 31568 46, 31569 47, 31570 47, 31571 47, 31572 47, 31573 48, 31574 48, 31575 48, 31576 48, 31577 49, 31578 49, 31579 49, 31580 49, 31581 50, 31582 50, 31583 50, 31584 50, 31585 51, 31586 51, 31587 51, 31588 51, 31589 52, 31590 52, 31591 52, 31592 52, 31593 53, 31594 53, 31595 53, 31596 53, 31597 54, 31598 54, 31599 54, 31600 54, 31601 55, 31602 55, 31603 55, 31604 55, 31605 56, 31606 56, 31607 56, 31608 56, 31609 57, 31610 57, 31611 57, 31612 57, 31613 58, 31614 58, 31615 58, 31616 58, 31617 59, 31618 59, 31619 59, 31620 59, 31621 60, 31622 60, 31623 60, 31624 60, 31625 61, 31626 61, 31627 61, 31628 61, 31629 62, 31630 62, 31631 62, 31632 62, 31633 63, 31634 63, 31635 63, 31636 63, 31637 /* CONTEXT_{M,L}SB6, second last byte, */ 31638 0, 31639 0, 31640 0, 31641 0, 31642 0, 31643 0, 31644 0, 31645 0, 31646 0, 31647 0, 31648 0, 31649 0, 31650 0, 31651 0, 31652 0, 31653 0, 31654 0, 31655 0, 31656 0, 31657 0, 31658 0, 31659 0, 31660 0, 31661 0, 31662 0, 31663 0, 31664 0, 31665 0, 31666 0, 31667 0, 31668 0, 31669 0, 31670 0, 31671 0, 31672 0, 31673 0, 31674 0, 31675 0, 31676 0, 31677 0, 31678 0, 31679 0, 31680 0, 31681 0, 31682 0, 31683 0, 31684 0, 31685 0, 31686 0, 31687 0, 31688 0, 31689 0, 31690 0, 31691 0, 31692 0, 31693 0, 31694 0, 31695 0, 31696 0, 31697 0, 31698 0, 31699 0, 31700 0, 31701 0, 31702 0, 31703 0, 31704 0, 31705 0, 31706 0, 31707 0, 31708 0, 31709 0, 31710 0, 31711 0, 31712 0, 31713 0, 31714 0, 31715 0, 31716 0, 31717 0, 31718 0, 31719 0, 31720 0, 31721 0, 31722 0, 31723 0, 31724 0, 31725 0, 31726 0, 31727 0, 31728 0, 31729 0, 31730 0, 31731 0, 31732 0, 31733 0, 31734 0, 31735 0, 31736 0, 31737 0, 31738 0, 31739 0, 31740 0, 31741 0, 31742 0, 31743 0, 31744 0, 31745 0, 31746 0, 31747 0, 31748 0, 31749 0, 31750 0, 31751 0, 31752 0, 31753 0, 31754 0, 31755 0, 31756 0, 31757 0, 31758 0, 31759 0, 31760 0, 31761 0, 31762 0, 31763 0, 31764 0, 31765 0, 31766 0, 31767 0, 31768 0, 31769 0, 31770 0, 31771 0, 31772 0, 31773 0, 31774 0, 31775 0, 31776 0, 31777 0, 31778 0, 31779 0, 31780 0, 31781 0, 31782 0, 31783 0, 31784 0, 31785 0, 31786 0, 31787 0, 31788 0, 31789 0, 31790 0, 31791 0, 31792 0, 31793 0, 31794 0, 31795 0, 31796 0, 31797 0, 31798 0, 31799 0, 31800 0, 31801 0, 31802 0, 31803 0, 31804 0, 31805 0, 31806 0, 31807 0, 31808 0, 31809 0, 31810 0, 31811 0, 31812 0, 31813 0, 31814 0, 31815 0, 31816 0, 31817 0, 31818 0, 31819 0, 31820 0, 31821 0, 31822 0, 31823 0, 31824 0, 31825 0, 31826 0, 31827 0, 31828 0, 31829 0, 31830 0, 31831 0, 31832 0, 31833 0, 31834 0, 31835 0, 31836 0, 31837 0, 31838 0, 31839 0, 31840 0, 31841 0, 31842 0, 31843 0, 31844 0, 31845 0, 31846 0, 31847 0, 31848 0, 31849 0, 31850 0, 31851 0, 31852 0, 31853 0, 31854 0, 31855 0, 31856 0, 31857 0, 31858 0, 31859 0, 31860 0, 31861 0, 31862 0, 31863 0, 31864 0, 31865 0, 31866 0, 31867 0, 31868 0, 31869 0, 31870 0, 31871 0, 31872 0, 31873 0, 31874 0, 31875 0, 31876 0, 31877 0, 31878 0, 31879 0, 31880 0, 31881 0, 31882 0, 31883 0, 31884 0, 31885 0, 31886 0, 31887 0, 31888 0, 31889 0, 31890 0, 31891 0, 31892 0, 31893 0 31894 ]); 31895 exports2.lookupOffsets = new Uint16Array([ 31896 /* CONTEXT_LSB6 */ 31897 1024, 31898 1536, 31899 1280, 31900 1536, 31901 0, 31902 256, 31903 768, 31904 512 31905 ]); 31906 }, 31907 {} 31908 ], 31909 3: [ 31910 function(require2, module2, exports2) { 31911 var BrotliInput = require2("./streams").BrotliInput; 31912 var BrotliOutput = require2("./streams").BrotliOutput; 31913 var BrotliBitReader = require2("./bit_reader"); 31914 var BrotliDictionary = require2("./dictionary"); 31915 var HuffmanCode = require2("./huffman").HuffmanCode; 31916 var BrotliBuildHuffmanTable = require2("./huffman").BrotliBuildHuffmanTable; 31917 var Context = require2("./context"); 31918 var Prefix = require2("./prefix"); 31919 var Transform = require2("./transform"); 31920 var kDefaultCodeLength = 8; 31921 var kCodeLengthRepeatCode = 16; 31922 var kNumLiteralCodes = 256; 31923 var kNumInsertAndCopyCodes = 704; 31924 var kNumBlockLengthCodes = 26; 31925 var kLiteralContextBits = 6; 31926 var kDistanceContextBits = 2; 31927 var HUFFMAN_TABLE_BITS = 8; 31928 var HUFFMAN_TABLE_MASK = 255; 31929 var HUFFMAN_MAX_TABLE_SIZE = 1080; 31930 var CODE_LENGTH_CODES = 18; 31931 var kCodeLengthCodeOrder = new Uint8Array([ 31932 1, 31933 2, 31934 3, 31935 4, 31936 0, 31937 5, 31938 17, 31939 6, 31940 16, 31941 7, 31942 8, 31943 9, 31944 10, 31945 11, 31946 12, 31947 13, 31948 14, 31949 15 31950 ]); 31951 var NUM_DISTANCE_SHORT_CODES = 16; 31952 var kDistanceShortCodeIndexOffset = new Uint8Array([ 31953 3, 31954 2, 31955 1, 31956 0, 31957 3, 31958 3, 31959 3, 31960 3, 31961 3, 31962 3, 31963 2, 31964 2, 31965 2, 31966 2, 31967 2, 31968 2 31969 ]); 31970 var kDistanceShortCodeValueOffset = new Int8Array([ 31971 0, 31972 0, 31973 0, 31974 0, 31975 -1, 31976 1, 31977 -2, 31978 2, 31979 -3, 31980 3, 31981 -1, 31982 1, 31983 -2, 31984 2, 31985 -3, 31986 3 31987 ]); 31988 var kMaxHuffmanTableSize = new Uint16Array([ 31989 256, 31990 402, 31991 436, 31992 468, 31993 500, 31994 534, 31995 566, 31996 598, 31997 630, 31998 662, 31999 694, 32000 726, 32001 758, 32002 790, 32003 822, 32004 854, 32005 886, 32006 920, 32007 952, 32008 984, 32009 1016, 32010 1048, 32011 1080 32012 ]); 32013 function DecodeWindowBits(br) { 32014 var n; 32015 if (br.readBits(1) === 0) { 32016 return 16; 32017 } 32018 n = br.readBits(3); 32019 if (n > 0) { 32020 return 17 + n; 32021 } 32022 n = br.readBits(3); 32023 if (n > 0) { 32024 return 8 + n; 32025 } 32026 return 17; 32027 } 32028 function DecodeVarLenUint8(br) { 32029 if (br.readBits(1)) { 32030 var nbits = br.readBits(3); 32031 if (nbits === 0) { 32032 return 1; 32033 } else { 32034 return br.readBits(nbits) + (1 << nbits); 32035 } 32036 } 32037 return 0; 32038 } 32039 function MetaBlockLength() { 32040 this.meta_block_length = 0; 32041 this.input_end = 0; 32042 this.is_uncompressed = 0; 32043 this.is_metadata = false; 32044 } 32045 function DecodeMetaBlockLength(br) { 32046 var out = new MetaBlockLength(); 32047 var size_nibbles; 32048 var size_bytes; 32049 var i; 32050 out.input_end = br.readBits(1); 32051 if (out.input_end && br.readBits(1)) { 32052 return out; 32053 } 32054 size_nibbles = br.readBits(2) + 4; 32055 if (size_nibbles === 7) { 32056 out.is_metadata = true; 32057 if (br.readBits(1) !== 0) 32058 throw new Error("Invalid reserved bit"); 32059 size_bytes = br.readBits(2); 32060 if (size_bytes === 0) return out; 32061 for (i = 0; i < size_bytes; i++) { 32062 var next_byte = br.readBits(8); 32063 if (i + 1 === size_bytes && size_bytes > 1 && next_byte === 0) 32064 throw new Error("Invalid size byte"); 32065 out.meta_block_length |= next_byte << i * 8; 32066 } 32067 } else { 32068 for (i = 0; i < size_nibbles; ++i) { 32069 var next_nibble = br.readBits(4); 32070 if (i + 1 === size_nibbles && size_nibbles > 4 && next_nibble === 0) 32071 throw new Error("Invalid size nibble"); 32072 out.meta_block_length |= next_nibble << i * 4; 32073 } 32074 } 32075 ++out.meta_block_length; 32076 if (!out.input_end && !out.is_metadata) { 32077 out.is_uncompressed = br.readBits(1); 32078 } 32079 return out; 32080 } 32081 function ReadSymbol(table, index2, br) { 32082 var start_index = index2; 32083 var nbits; 32084 br.fillBitWindow(); 32085 index2 += br.val_ >>> br.bit_pos_ & HUFFMAN_TABLE_MASK; 32086 nbits = table[index2].bits - HUFFMAN_TABLE_BITS; 32087 if (nbits > 0) { 32088 br.bit_pos_ += HUFFMAN_TABLE_BITS; 32089 index2 += table[index2].value; 32090 index2 += br.val_ >>> br.bit_pos_ & (1 << nbits) - 1; 32091 } 32092 br.bit_pos_ += table[index2].bits; 32093 return table[index2].value; 32094 } 32095 function ReadHuffmanCodeLengths(code_length_code_lengths, num_symbols, code_lengths, br) { 32096 var symbol = 0; 32097 var prev_code_len = kDefaultCodeLength; 32098 var repeat = 0; 32099 var repeat_code_len = 0; 32100 var space = 32768; 32101 var table = []; 32102 for (var i = 0; i < 32; i++) 32103 table.push(new HuffmanCode(0, 0)); 32104 BrotliBuildHuffmanTable( 32105 table, 32106 0, 32107 5, 32108 code_length_code_lengths, 32109 CODE_LENGTH_CODES 32110 ); 32111 while (symbol < num_symbols && space > 0) { 32112 var p3 = 0; 32113 var code_len; 32114 br.readMoreInput(); 32115 br.fillBitWindow(); 32116 p3 += br.val_ >>> br.bit_pos_ & 31; 32117 br.bit_pos_ += table[p3].bits; 32118 code_len = table[p3].value & 255; 32119 if (code_len < kCodeLengthRepeatCode) { 32120 repeat = 0; 32121 code_lengths[symbol++] = code_len; 32122 if (code_len !== 0) { 32123 prev_code_len = code_len; 32124 space -= 32768 >> code_len; 32125 } 32126 } else { 32127 var extra_bits = code_len - 14; 32128 var old_repeat; 32129 var repeat_delta; 32130 var new_len = 0; 32131 if (code_len === kCodeLengthRepeatCode) { 32132 new_len = prev_code_len; 32133 } 32134 if (repeat_code_len !== new_len) { 32135 repeat = 0; 32136 repeat_code_len = new_len; 32137 } 32138 old_repeat = repeat; 32139 if (repeat > 0) { 32140 repeat -= 2; 32141 repeat <<= extra_bits; 32142 } 32143 repeat += br.readBits(extra_bits) + 3; 32144 repeat_delta = repeat - old_repeat; 32145 if (symbol + repeat_delta > num_symbols) { 32146 throw new Error( 32147 "[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols" 32148 ); 32149 } 32150 for (var x2 = 0; x2 < repeat_delta; x2++) 32151 code_lengths[symbol + x2] = repeat_code_len; 32152 symbol += repeat_delta; 32153 if (repeat_code_len !== 0) { 32154 space -= repeat_delta << 15 - repeat_code_len; 32155 } 32156 } 32157 } 32158 if (space !== 0) { 32159 throw new Error( 32160 "[ReadHuffmanCodeLengths] space = " + space 32161 ); 32162 } 32163 for (; symbol < num_symbols; symbol++) 32164 code_lengths[symbol] = 0; 32165 } 32166 function ReadHuffmanCode(alphabet_size, tables, table, br) { 32167 var table_size = 0; 32168 var simple_code_or_skip; 32169 var code_lengths = new Uint8Array(alphabet_size); 32170 br.readMoreInput(); 32171 simple_code_or_skip = br.readBits(2); 32172 if (simple_code_or_skip === 1) { 32173 var i; 32174 var max_bits_counter = alphabet_size - 1; 32175 var max_bits = 0; 32176 var symbols = new Int32Array(4); 32177 var num_symbols = br.readBits(2) + 1; 32178 while (max_bits_counter) { 32179 max_bits_counter >>= 1; 32180 ++max_bits; 32181 } 32182 for (i = 0; i < num_symbols; ++i) { 32183 symbols[i] = br.readBits(max_bits) % alphabet_size; 32184 code_lengths[symbols[i]] = 2; 32185 } 32186 code_lengths[symbols[0]] = 1; 32187 switch (num_symbols) { 32188 case 1: 32189 break; 32190 case 3: 32191 if (symbols[0] === symbols[1] || symbols[0] === symbols[2] || symbols[1] === symbols[2]) { 32192 throw new Error( 32193 "[ReadHuffmanCode] invalid symbols" 32194 ); 32195 } 32196 break; 32197 case 2: 32198 if (symbols[0] === symbols[1]) { 32199 throw new Error( 32200 "[ReadHuffmanCode] invalid symbols" 32201 ); 32202 } 32203 code_lengths[symbols[1]] = 1; 32204 break; 32205 case 4: 32206 if (symbols[0] === symbols[1] || symbols[0] === symbols[2] || symbols[0] === symbols[3] || symbols[1] === symbols[2] || symbols[1] === symbols[3] || symbols[2] === symbols[3]) { 32207 throw new Error( 32208 "[ReadHuffmanCode] invalid symbols" 32209 ); 32210 } 32211 if (br.readBits(1)) { 32212 code_lengths[symbols[2]] = 3; 32213 code_lengths[symbols[3]] = 3; 32214 } else { 32215 code_lengths[symbols[0]] = 2; 32216 } 32217 break; 32218 } 32219 } else { 32220 var i; 32221 var code_length_code_lengths = new Uint8Array( 32222 CODE_LENGTH_CODES 32223 ); 32224 var space = 32; 32225 var num_codes = 0; 32226 var huff = [ 32227 new HuffmanCode(2, 0), 32228 new HuffmanCode(2, 4), 32229 new HuffmanCode(2, 3), 32230 new HuffmanCode(3, 2), 32231 new HuffmanCode(2, 0), 32232 new HuffmanCode(2, 4), 32233 new HuffmanCode(2, 3), 32234 new HuffmanCode(4, 1), 32235 new HuffmanCode(2, 0), 32236 new HuffmanCode(2, 4), 32237 new HuffmanCode(2, 3), 32238 new HuffmanCode(3, 2), 32239 new HuffmanCode(2, 0), 32240 new HuffmanCode(2, 4), 32241 new HuffmanCode(2, 3), 32242 new HuffmanCode(4, 5) 32243 ]; 32244 for (i = simple_code_or_skip; i < CODE_LENGTH_CODES && space > 0; ++i) { 32245 var code_len_idx = kCodeLengthCodeOrder[i]; 32246 var p3 = 0; 32247 var v2; 32248 br.fillBitWindow(); 32249 p3 += br.val_ >>> br.bit_pos_ & 15; 32250 br.bit_pos_ += huff[p3].bits; 32251 v2 = huff[p3].value; 32252 code_length_code_lengths[code_len_idx] = v2; 32253 if (v2 !== 0) { 32254 space -= 32 >> v2; 32255 ++num_codes; 32256 } 32257 } 32258 if (!(num_codes === 1 || space === 0)) 32259 throw new Error( 32260 "[ReadHuffmanCode] invalid num_codes or space" 32261 ); 32262 ReadHuffmanCodeLengths( 32263 code_length_code_lengths, 32264 alphabet_size, 32265 code_lengths, 32266 br 32267 ); 32268 } 32269 table_size = BrotliBuildHuffmanTable( 32270 tables, 32271 table, 32272 HUFFMAN_TABLE_BITS, 32273 code_lengths, 32274 alphabet_size 32275 ); 32276 if (table_size === 0) { 32277 throw new Error( 32278 "[ReadHuffmanCode] BuildHuffmanTable failed: " 32279 ); 32280 } 32281 return table_size; 32282 } 32283 function ReadBlockLength(table, index2, br) { 32284 var code; 32285 var nbits; 32286 code = ReadSymbol(table, index2, br); 32287 nbits = Prefix.kBlockLengthPrefixCode[code].nbits; 32288 return Prefix.kBlockLengthPrefixCode[code].offset + br.readBits(nbits); 32289 } 32290 function TranslateShortCodes(code, ringbuffer, index2) { 32291 var val; 32292 if (code < NUM_DISTANCE_SHORT_CODES) { 32293 index2 += kDistanceShortCodeIndexOffset[code]; 32294 index2 &= 3; 32295 val = ringbuffer[index2] + kDistanceShortCodeValueOffset[code]; 32296 } else { 32297 val = code - NUM_DISTANCE_SHORT_CODES + 1; 32298 } 32299 return val; 32300 } 32301 function MoveToFront(v2, index2) { 32302 var value = v2[index2]; 32303 var i = index2; 32304 for (; i; --i) v2[i] = v2[i - 1]; 32305 v2[0] = value; 32306 } 32307 function InverseMoveToFrontTransform(v2, v_len) { 32308 var mtf = new Uint8Array(256); 32309 var i; 32310 for (i = 0; i < 256; ++i) { 32311 mtf[i] = i; 32312 } 32313 for (i = 0; i < v_len; ++i) { 32314 var index2 = v2[i]; 32315 v2[i] = mtf[index2]; 32316 if (index2) MoveToFront(mtf, index2); 32317 } 32318 } 32319 function HuffmanTreeGroup(alphabet_size, num_htrees) { 32320 this.alphabet_size = alphabet_size; 32321 this.num_htrees = num_htrees; 32322 this.codes = new Array( 32323 num_htrees + num_htrees * kMaxHuffmanTableSize[alphabet_size + 31 >>> 5] 32324 ); 32325 this.htrees = new Uint32Array(num_htrees); 32326 } 32327 HuffmanTreeGroup.prototype.decode = function(br) { 32328 var i; 32329 var table_size; 32330 var next = 0; 32331 for (i = 0; i < this.num_htrees; ++i) { 32332 this.htrees[i] = next; 32333 table_size = ReadHuffmanCode( 32334 this.alphabet_size, 32335 this.codes, 32336 next, 32337 br 32338 ); 32339 next += table_size; 32340 } 32341 }; 32342 function DecodeContextMap(context_map_size, br) { 32343 var out = { num_htrees: null, context_map: null }; 32344 var use_rle_for_zeros; 32345 var max_run_length_prefix = 0; 32346 var table; 32347 var i; 32348 br.readMoreInput(); 32349 var num_htrees = out.num_htrees = DecodeVarLenUint8(br) + 1; 32350 var context_map = out.context_map = new Uint8Array( 32351 context_map_size 32352 ); 32353 if (num_htrees <= 1) { 32354 return out; 32355 } 32356 use_rle_for_zeros = br.readBits(1); 32357 if (use_rle_for_zeros) { 32358 max_run_length_prefix = br.readBits(4) + 1; 32359 } 32360 table = []; 32361 for (i = 0; i < HUFFMAN_MAX_TABLE_SIZE; i++) { 32362 table[i] = new HuffmanCode(0, 0); 32363 } 32364 ReadHuffmanCode( 32365 num_htrees + max_run_length_prefix, 32366 table, 32367 0, 32368 br 32369 ); 32370 for (i = 0; i < context_map_size; ) { 32371 var code; 32372 br.readMoreInput(); 32373 code = ReadSymbol(table, 0, br); 32374 if (code === 0) { 32375 context_map[i] = 0; 32376 ++i; 32377 } else if (code <= max_run_length_prefix) { 32378 var reps = 1 + (1 << code) + br.readBits(code); 32379 while (--reps) { 32380 if (i >= context_map_size) { 32381 throw new Error( 32382 "[DecodeContextMap] i >= context_map_size" 32383 ); 32384 } 32385 context_map[i] = 0; 32386 ++i; 32387 } 32388 } else { 32389 context_map[i] = code - max_run_length_prefix; 32390 ++i; 32391 } 32392 } 32393 if (br.readBits(1)) { 32394 InverseMoveToFrontTransform( 32395 context_map, 32396 context_map_size 32397 ); 32398 } 32399 return out; 32400 } 32401 function DecodeBlockType(max_block_type, trees, tree_type, block_types, ringbuffers, indexes, br) { 32402 var ringbuffer = tree_type * 2; 32403 var index2 = tree_type; 32404 var type_code = ReadSymbol( 32405 trees, 32406 tree_type * HUFFMAN_MAX_TABLE_SIZE, 32407 br 32408 ); 32409 var block_type; 32410 if (type_code === 0) { 32411 block_type = ringbuffers[ringbuffer + (indexes[index2] & 1)]; 32412 } else if (type_code === 1) { 32413 block_type = ringbuffers[ringbuffer + (indexes[index2] - 1 & 1)] + 1; 32414 } else { 32415 block_type = type_code - 2; 32416 } 32417 if (block_type >= max_block_type) { 32418 block_type -= max_block_type; 32419 } 32420 block_types[tree_type] = block_type; 32421 ringbuffers[ringbuffer + (indexes[index2] & 1)] = block_type; 32422 ++indexes[index2]; 32423 } 32424 function CopyUncompressedBlockToOutput(output, len, pos, ringbuffer, ringbuffer_mask, br) { 32425 var rb_size = ringbuffer_mask + 1; 32426 var rb_pos = pos & ringbuffer_mask; 32427 var br_pos = br.pos_ & BrotliBitReader.IBUF_MASK; 32428 var nbytes; 32429 if (len < 8 || br.bit_pos_ + (len << 3) < br.bit_end_pos_) { 32430 while (len-- > 0) { 32431 br.readMoreInput(); 32432 ringbuffer[rb_pos++] = br.readBits(8); 32433 if (rb_pos === rb_size) { 32434 output.write(ringbuffer, rb_size); 32435 rb_pos = 0; 32436 } 32437 } 32438 return; 32439 } 32440 if (br.bit_end_pos_ < 32) { 32441 throw new Error( 32442 "[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32" 32443 ); 32444 } 32445 while (br.bit_pos_ < 32) { 32446 ringbuffer[rb_pos] = br.val_ >>> br.bit_pos_; 32447 br.bit_pos_ += 8; 32448 ++rb_pos; 32449 --len; 32450 } 32451 nbytes = br.bit_end_pos_ - br.bit_pos_ >> 3; 32452 if (br_pos + nbytes > BrotliBitReader.IBUF_MASK) { 32453 var tail = BrotliBitReader.IBUF_MASK + 1 - br_pos; 32454 for (var x2 = 0; x2 < tail; x2++) 32455 ringbuffer[rb_pos + x2] = br.buf_[br_pos + x2]; 32456 nbytes -= tail; 32457 rb_pos += tail; 32458 len -= tail; 32459 br_pos = 0; 32460 } 32461 for (var x2 = 0; x2 < nbytes; x2++) 32462 ringbuffer[rb_pos + x2] = br.buf_[br_pos + x2]; 32463 rb_pos += nbytes; 32464 len -= nbytes; 32465 if (rb_pos >= rb_size) { 32466 output.write(ringbuffer, rb_size); 32467 rb_pos -= rb_size; 32468 for (var x2 = 0; x2 < rb_pos; x2++) 32469 ringbuffer[x2] = ringbuffer[rb_size + x2]; 32470 } 32471 while (rb_pos + len >= rb_size) { 32472 nbytes = rb_size - rb_pos; 32473 if (br.input_.read(ringbuffer, rb_pos, nbytes) < nbytes) { 32474 throw new Error( 32475 "[CopyUncompressedBlockToOutput] not enough bytes" 32476 ); 32477 } 32478 output.write(ringbuffer, rb_size); 32479 len -= nbytes; 32480 rb_pos = 0; 32481 } 32482 if (br.input_.read(ringbuffer, rb_pos, len) < len) { 32483 throw new Error( 32484 "[CopyUncompressedBlockToOutput] not enough bytes" 32485 ); 32486 } 32487 br.reset(); 32488 } 32489 function JumpToByteBoundary(br) { 32490 var new_bit_pos = br.bit_pos_ + 7 & ~7; 32491 var pad_bits = br.readBits(new_bit_pos - br.bit_pos_); 32492 return pad_bits == 0; 32493 } 32494 function BrotliDecompressedSize(buffer) { 32495 var input = new BrotliInput(buffer); 32496 var br = new BrotliBitReader(input); 32497 DecodeWindowBits(br); 32498 var out = DecodeMetaBlockLength(br); 32499 return out.meta_block_length; 32500 } 32501 exports2.BrotliDecompressedSize = BrotliDecompressedSize; 32502 function BrotliDecompressBuffer(buffer, output_size) { 32503 var input = new BrotliInput(buffer); 32504 if (output_size == null) { 32505 output_size = BrotliDecompressedSize(buffer); 32506 } 32507 var output_buffer = new Uint8Array(output_size); 32508 var output = new BrotliOutput(output_buffer); 32509 BrotliDecompress(input, output); 32510 if (output.pos < output.buffer.length) { 32511 output.buffer = output.buffer.subarray( 32512 0, 32513 output.pos 32514 ); 32515 } 32516 return output.buffer; 32517 } 32518 exports2.BrotliDecompressBuffer = BrotliDecompressBuffer; 32519 function BrotliDecompress(input, output) { 32520 var i; 32521 var pos = 0; 32522 var input_end = 0; 32523 var window_bits = 0; 32524 var max_backward_distance; 32525 var max_distance = 0; 32526 var ringbuffer_size; 32527 var ringbuffer_mask; 32528 var ringbuffer; 32529 var ringbuffer_end; 32530 var dist_rb = [16, 15, 11, 4]; 32531 var dist_rb_idx = 0; 32532 var prev_byte1 = 0; 32533 var prev_byte2 = 0; 32534 var hgroup = [ 32535 new HuffmanTreeGroup(0, 0), 32536 new HuffmanTreeGroup(0, 0), 32537 new HuffmanTreeGroup(0, 0) 32538 ]; 32539 var block_type_trees; 32540 var block_len_trees; 32541 var br; 32542 var kRingBufferWriteAheadSlack = 128 + BrotliBitReader.READ_SIZE; 32543 br = new BrotliBitReader(input); 32544 window_bits = DecodeWindowBits(br); 32545 max_backward_distance = (1 << window_bits) - 16; 32546 ringbuffer_size = 1 << window_bits; 32547 ringbuffer_mask = ringbuffer_size - 1; 32548 ringbuffer = new Uint8Array( 32549 ringbuffer_size + kRingBufferWriteAheadSlack + BrotliDictionary.maxDictionaryWordLength 32550 ); 32551 ringbuffer_end = ringbuffer_size; 32552 block_type_trees = []; 32553 block_len_trees = []; 32554 for (var x2 = 0; x2 < 3 * HUFFMAN_MAX_TABLE_SIZE; x2++) { 32555 block_type_trees[x2] = new HuffmanCode(0, 0); 32556 block_len_trees[x2] = new HuffmanCode(0, 0); 32557 } 32558 while (!input_end) { 32559 var meta_block_remaining_len = 0; 32560 var is_uncompressed; 32561 var block_length = [1 << 28, 1 << 28, 1 << 28]; 32562 var block_type = [0]; 32563 var num_block_types = [1, 1, 1]; 32564 var block_type_rb = [0, 1, 0, 1, 0, 1]; 32565 var block_type_rb_index = [0]; 32566 var distance_postfix_bits; 32567 var num_direct_distance_codes; 32568 var distance_postfix_mask; 32569 var num_distance_codes; 32570 var context_map = null; 32571 var context_modes = null; 32572 var num_literal_htrees; 32573 var dist_context_map = null; 32574 var num_dist_htrees; 32575 var context_offset = 0; 32576 var context_map_slice = null; 32577 var literal_htree_index = 0; 32578 var dist_context_offset = 0; 32579 var dist_context_map_slice = null; 32580 var dist_htree_index = 0; 32581 var context_lookup_offset1 = 0; 32582 var context_lookup_offset2 = 0; 32583 var context_mode; 32584 var htree_command; 32585 for (i = 0; i < 3; ++i) { 32586 hgroup[i].codes = null; 32587 hgroup[i].htrees = null; 32588 } 32589 br.readMoreInput(); 32590 var _out = DecodeMetaBlockLength(br); 32591 meta_block_remaining_len = _out.meta_block_length; 32592 if (pos + meta_block_remaining_len > output.buffer.length) { 32593 var tmp = new Uint8Array( 32594 pos + meta_block_remaining_len 32595 ); 32596 tmp.set(output.buffer); 32597 output.buffer = tmp; 32598 } 32599 input_end = _out.input_end; 32600 is_uncompressed = _out.is_uncompressed; 32601 if (_out.is_metadata) { 32602 JumpToByteBoundary(br); 32603 for (; meta_block_remaining_len > 0; --meta_block_remaining_len) { 32604 br.readMoreInput(); 32605 br.readBits(8); 32606 } 32607 continue; 32608 } 32609 if (meta_block_remaining_len === 0) { 32610 continue; 32611 } 32612 if (is_uncompressed) { 32613 br.bit_pos_ = br.bit_pos_ + 7 & ~7; 32614 CopyUncompressedBlockToOutput( 32615 output, 32616 meta_block_remaining_len, 32617 pos, 32618 ringbuffer, 32619 ringbuffer_mask, 32620 br 32621 ); 32622 pos += meta_block_remaining_len; 32623 continue; 32624 } 32625 for (i = 0; i < 3; ++i) { 32626 num_block_types[i] = DecodeVarLenUint8(br) + 1; 32627 if (num_block_types[i] >= 2) { 32628 ReadHuffmanCode( 32629 num_block_types[i] + 2, 32630 block_type_trees, 32631 i * HUFFMAN_MAX_TABLE_SIZE, 32632 br 32633 ); 32634 ReadHuffmanCode( 32635 kNumBlockLengthCodes, 32636 block_len_trees, 32637 i * HUFFMAN_MAX_TABLE_SIZE, 32638 br 32639 ); 32640 block_length[i] = ReadBlockLength( 32641 block_len_trees, 32642 i * HUFFMAN_MAX_TABLE_SIZE, 32643 br 32644 ); 32645 block_type_rb_index[i] = 1; 32646 } 32647 } 32648 br.readMoreInput(); 32649 distance_postfix_bits = br.readBits(2); 32650 num_direct_distance_codes = NUM_DISTANCE_SHORT_CODES + (br.readBits(4) << distance_postfix_bits); 32651 distance_postfix_mask = (1 << distance_postfix_bits) - 1; 32652 num_distance_codes = num_direct_distance_codes + (48 << distance_postfix_bits); 32653 context_modes = new Uint8Array( 32654 num_block_types[0] 32655 ); 32656 for (i = 0; i < num_block_types[0]; ++i) { 32657 br.readMoreInput(); 32658 context_modes[i] = br.readBits(2) << 1; 32659 } 32660 var _o1 = DecodeContextMap( 32661 num_block_types[0] << kLiteralContextBits, 32662 br 32663 ); 32664 num_literal_htrees = _o1.num_htrees; 32665 context_map = _o1.context_map; 32666 var _o2 = DecodeContextMap( 32667 num_block_types[2] << kDistanceContextBits, 32668 br 32669 ); 32670 num_dist_htrees = _o2.num_htrees; 32671 dist_context_map = _o2.context_map; 32672 hgroup[0] = new HuffmanTreeGroup( 32673 kNumLiteralCodes, 32674 num_literal_htrees 32675 ); 32676 hgroup[1] = new HuffmanTreeGroup( 32677 kNumInsertAndCopyCodes, 32678 num_block_types[1] 32679 ); 32680 hgroup[2] = new HuffmanTreeGroup( 32681 num_distance_codes, 32682 num_dist_htrees 32683 ); 32684 for (i = 0; i < 3; ++i) { 32685 hgroup[i].decode(br); 32686 } 32687 context_map_slice = 0; 32688 dist_context_map_slice = 0; 32689 context_mode = context_modes[block_type[0]]; 32690 context_lookup_offset1 = Context.lookupOffsets[context_mode]; 32691 context_lookup_offset2 = Context.lookupOffsets[context_mode + 1]; 32692 htree_command = hgroup[1].htrees[0]; 32693 while (meta_block_remaining_len > 0) { 32694 var cmd_code; 32695 var range_idx; 32696 var insert_code; 32697 var copy_code; 32698 var insert_length; 32699 var copy_length; 32700 var distance_code; 32701 var distance; 32702 var context; 32703 var j2; 32704 var copy_dst; 32705 br.readMoreInput(); 32706 if (block_length[1] === 0) { 32707 DecodeBlockType( 32708 num_block_types[1], 32709 block_type_trees, 32710 1, 32711 block_type, 32712 block_type_rb, 32713 block_type_rb_index, 32714 br 32715 ); 32716 block_length[1] = ReadBlockLength( 32717 block_len_trees, 32718 HUFFMAN_MAX_TABLE_SIZE, 32719 br 32720 ); 32721 htree_command = hgroup[1].htrees[block_type[1]]; 32722 } 32723 --block_length[1]; 32724 cmd_code = ReadSymbol( 32725 hgroup[1].codes, 32726 htree_command, 32727 br 32728 ); 32729 range_idx = cmd_code >> 6; 32730 if (range_idx >= 2) { 32731 range_idx -= 2; 32732 distance_code = -1; 32733 } else { 32734 distance_code = 0; 32735 } 32736 insert_code = Prefix.kInsertRangeLut[range_idx] + (cmd_code >> 3 & 7); 32737 copy_code = Prefix.kCopyRangeLut[range_idx] + (cmd_code & 7); 32738 insert_length = Prefix.kInsertLengthPrefixCode[insert_code].offset + br.readBits( 32739 Prefix.kInsertLengthPrefixCode[insert_code].nbits 32740 ); 32741 copy_length = Prefix.kCopyLengthPrefixCode[copy_code].offset + br.readBits( 32742 Prefix.kCopyLengthPrefixCode[copy_code].nbits 32743 ); 32744 prev_byte1 = ringbuffer[pos - 1 & ringbuffer_mask]; 32745 prev_byte2 = ringbuffer[pos - 2 & ringbuffer_mask]; 32746 for (j2 = 0; j2 < insert_length; ++j2) { 32747 br.readMoreInput(); 32748 if (block_length[0] === 0) { 32749 DecodeBlockType( 32750 num_block_types[0], 32751 block_type_trees, 32752 0, 32753 block_type, 32754 block_type_rb, 32755 block_type_rb_index, 32756 br 32757 ); 32758 block_length[0] = ReadBlockLength( 32759 block_len_trees, 32760 0, 32761 br 32762 ); 32763 context_offset = block_type[0] << kLiteralContextBits; 32764 context_map_slice = context_offset; 32765 context_mode = context_modes[block_type[0]]; 32766 context_lookup_offset1 = Context.lookupOffsets[context_mode]; 32767 context_lookup_offset2 = Context.lookupOffsets[context_mode + 1]; 32768 } 32769 context = Context.lookup[context_lookup_offset1 + prev_byte1] | Context.lookup[context_lookup_offset2 + prev_byte2]; 32770 literal_htree_index = context_map[context_map_slice + context]; 32771 --block_length[0]; 32772 prev_byte2 = prev_byte1; 32773 prev_byte1 = ReadSymbol( 32774 hgroup[0].codes, 32775 hgroup[0].htrees[literal_htree_index], 32776 br 32777 ); 32778 ringbuffer[pos & ringbuffer_mask] = prev_byte1; 32779 if ((pos & ringbuffer_mask) === ringbuffer_mask) { 32780 output.write( 32781 ringbuffer, 32782 ringbuffer_size 32783 ); 32784 } 32785 ++pos; 32786 } 32787 meta_block_remaining_len -= insert_length; 32788 if (meta_block_remaining_len <= 0) break; 32789 if (distance_code < 0) { 32790 var context; 32791 br.readMoreInput(); 32792 if (block_length[2] === 0) { 32793 DecodeBlockType( 32794 num_block_types[2], 32795 block_type_trees, 32796 2, 32797 block_type, 32798 block_type_rb, 32799 block_type_rb_index, 32800 br 32801 ); 32802 block_length[2] = ReadBlockLength( 32803 block_len_trees, 32804 2 * HUFFMAN_MAX_TABLE_SIZE, 32805 br 32806 ); 32807 dist_context_offset = block_type[2] << kDistanceContextBits; 32808 dist_context_map_slice = dist_context_offset; 32809 } 32810 --block_length[2]; 32811 context = (copy_length > 4 ? 3 : copy_length - 2) & 255; 32812 dist_htree_index = dist_context_map[dist_context_map_slice + context]; 32813 distance_code = ReadSymbol( 32814 hgroup[2].codes, 32815 hgroup[2].htrees[dist_htree_index], 32816 br 32817 ); 32818 if (distance_code >= num_direct_distance_codes) { 32819 var nbits; 32820 var postfix; 32821 var offset4; 32822 distance_code -= num_direct_distance_codes; 32823 postfix = distance_code & distance_postfix_mask; 32824 distance_code >>= distance_postfix_bits; 32825 nbits = (distance_code >> 1) + 1; 32826 offset4 = (2 + (distance_code & 1) << nbits) - 4; 32827 distance_code = num_direct_distance_codes + (offset4 + br.readBits(nbits) << distance_postfix_bits) + postfix; 32828 } 32829 } 32830 distance = TranslateShortCodes( 32831 distance_code, 32832 dist_rb, 32833 dist_rb_idx 32834 ); 32835 if (distance < 0) { 32836 throw new Error( 32837 "[BrotliDecompress] invalid distance" 32838 ); 32839 } 32840 if (pos < max_backward_distance && max_distance !== max_backward_distance) { 32841 max_distance = pos; 32842 } else { 32843 max_distance = max_backward_distance; 32844 } 32845 copy_dst = pos & ringbuffer_mask; 32846 if (distance > max_distance) { 32847 if (copy_length >= BrotliDictionary.minDictionaryWordLength && copy_length <= BrotliDictionary.maxDictionaryWordLength) { 32848 var offset4 = BrotliDictionary.offsetsByLength[copy_length]; 32849 var word_id = distance - max_distance - 1; 32850 var shift4 = BrotliDictionary.sizeBitsByLength[copy_length]; 32851 var mask = (1 << shift4) - 1; 32852 var word_idx = word_id & mask; 32853 var transform_idx = word_id >> shift4; 32854 offset4 += word_idx * copy_length; 32855 if (transform_idx < Transform.kNumTransforms) { 32856 var len = Transform.transformDictionaryWord( 32857 ringbuffer, 32858 copy_dst, 32859 offset4, 32860 copy_length, 32861 transform_idx 32862 ); 32863 copy_dst += len; 32864 pos += len; 32865 meta_block_remaining_len -= len; 32866 if (copy_dst >= ringbuffer_end) { 32867 output.write( 32868 ringbuffer, 32869 ringbuffer_size 32870 ); 32871 for (var _x8 = 0; _x8 < copy_dst - ringbuffer_end; _x8++) 32872 ringbuffer[_x8] = ringbuffer[ringbuffer_end + _x8]; 32873 } 32874 } else { 32875 throw new Error( 32876 "Invalid backward reference. pos: " + pos + " distance: " + distance + " len: " + copy_length + " bytes left: " + meta_block_remaining_len 32877 ); 32878 } 32879 } else { 32880 throw new Error( 32881 "Invalid backward reference. pos: " + pos + " distance: " + distance + " len: " + copy_length + " bytes left: " + meta_block_remaining_len 32882 ); 32883 } 32884 } else { 32885 if (distance_code > 0) { 32886 dist_rb[dist_rb_idx & 3] = distance; 32887 ++dist_rb_idx; 32888 } 32889 if (copy_length > meta_block_remaining_len) { 32890 throw new Error( 32891 "Invalid backward reference. pos: " + pos + " distance: " + distance + " len: " + copy_length + " bytes left: " + meta_block_remaining_len 32892 ); 32893 } 32894 for (j2 = 0; j2 < copy_length; ++j2) { 32895 ringbuffer[pos & ringbuffer_mask] = ringbuffer[pos - distance & ringbuffer_mask]; 32896 if ((pos & ringbuffer_mask) === ringbuffer_mask) { 32897 output.write( 32898 ringbuffer, 32899 ringbuffer_size 32900 ); 32901 } 32902 ++pos; 32903 --meta_block_remaining_len; 32904 } 32905 } 32906 prev_byte1 = ringbuffer[pos - 1 & ringbuffer_mask]; 32907 prev_byte2 = ringbuffer[pos - 2 & ringbuffer_mask]; 32908 } 32909 pos &= 1073741823; 32910 } 32911 output.write(ringbuffer, pos & ringbuffer_mask); 32912 } 32913 exports2.BrotliDecompress = BrotliDecompress; 32914 BrotliDictionary.init(); 32915 }, 32916 { 32917 "./bit_reader": 1, 32918 "./context": 2, 32919 "./dictionary": 6, 32920 "./huffman": 7, 32921 "./prefix": 9, 32922 "./streams": 10, 32923 "./transform": 11 32924 } 32925 ], 32926 4: [ 32927 function(require2, module2, exports2) { 32928 var base64 = require2("base64-js"); 32929 exports2.init = function() { 32930 var BrotliDecompressBuffer = require2("./decode").BrotliDecompressBuffer; 32931 var compressed = base64.toByteArray( 32932 require2("./dictionary.bin.js") 32933 ); 32934 return BrotliDecompressBuffer(compressed); 32935 }; 32936 }, 32937 { "./decode": 3, "./dictionary.bin.js": 5, "base64-js": 8 } 32938 ], 32939 5: [ 32940 function(require2, module2, exports2) { 32941 module2.exports = "W5/fcQLn5gKf2XUbAiQ1XULX+TZz6ADToDsgqk6qVfeC0e4m6OO2wcQ1J76ZBVRV1fRkEsdu//62zQsFEZWSTCnMhcsQKlS2qOhuVYYMGCkV0fXWEoMFbESXrKEZ9wdUEsyw9g4bJlEt1Y6oVMxMRTEVbCIwZzJzboK5j8m4YH02qgXYhv1V+PM435sLVxyHJihaJREEhZGqL03txGFQLm76caGO/ovxKvzCby/3vMTtX/459f0igi7WutnKiMQ6wODSoRh/8Lx1V3Q99MvKtwB6bHdERYRY0hStJoMjNeTsNX7bn+Y7e4EQ3bf8xBc7L0BsyfFPK43dGSXpL6clYC/I328h54/VYrQ5i0648FgbGtl837svJ35L3Mot/+nPlNpWgKx1gGXQYqX6n+bbZ7wuyCHKcUok12Xjqub7NXZGzqBx0SD+uziNf87t7ve42jxSKQoW3nyxVrWIGlFShhCKxjpZZ5MeGna0+lBkk+kaN8F9qFBAFgEogyMBdcX/T1W/WnMOi/7ycWUQloEBKGeC48MkiwqJkJO+12eQiOFHMmck6q/IjWW3RZlany23TBm+cNr/84/oi5GGmGBZWrZ6j+zykVozz5fT/QH/Da6WTbZYYPynVNO7kxzuNN2kxKKWche5WveitPKAecB8YcAHz/+zXLjcLzkdDSktNIDwZE9J9X+tto43oJy65wApM3mDzYtCwX9lM+N5VR3kXYo0Z3t0TtXfgBFg7gU8oN0Dgl7fZlUbhNll+0uuohRVKjrEd8egrSndy5/Tgd2gqjA4CAVuC7ESUmL3DZoGnfhQV8uwnpi8EGvAVVsowNRxPudck7+oqAUDkwZopWqFnW1riss0t1z6iCISVKreYGNvQcXv+1L9+jbP8cd/dPUiqBso2q+7ZyFBvENCkkVr44iyPbtOoOoCecWsiuqMSML5lv+vN5MzUr+Dnh73G7Q1YnRYJVYXHRJaNAOByiaK6CusgFdBPE40r0rvqXV7tksKO2DrHYXBTv8P5ysqxEx8VDXUDDqkPH6NNOV/a2WH8zlkXRELSa8P+heNyJBBP7PgsG1EtWtNef6/i+lcayzQwQCsduidpbKfhWUDgAEmyhGu/zVTacI6RS0zTABrOYueemnVa19u9fT23N/Ta6RvTpof5DWygqreCqrDAgM4LID1+1T/taU6yTFVLqXOv+/MuQOFnaF8vLMKD7tKWDoBdALgxF33zQccCcdHx8fKIVdW69O7qHtXpeGr9jbbpFA+qRMWr5hp0s67FPc7HAiLV0g0/peZlW7hJPYEhZyhpSwahnf93/tZgfqZWXFdmdXBzqxGHLrQKxoAY6fRoBhgCRPmmGueYZ5JexTVDKUIXzkG/fqp/0U3hAgQdJ9zumutK6nqWbaqvm1pgu03IYR+G+8s0jDBBz8cApZFSBeuWasyqo2OMDKAZCozS+GWSvL/HsE9rHxooe17U3s/lTE+VZAk4j3dp6uIGaC0JMiqR5CUsabPyM0dOYDR7Ea7ip4USZlya38YfPtvrX/tBlhHilj55nZ1nfN24AOAi9BVtz/Mbn8AEDJCqJgsVUa6nQnSxv2Fs7l/NlCzpfYEjmPrNyib/+t0ei2eEMjvNhLkHCZlci4WhBe7ePZTmzYqlY9+1pxtS4GB+5lM1BHT9tS270EWUDYFq1I0yY/fNiAk4bk9yBgmef/f2k6AlYQZHsNFnW8wBQxCd68iWv7/35bXfz3JZmfGligWAKRjIs3IpzxQ27vAglHSiOzCYzJ9L9A1CdiyFvyR66ucA4jKifu5ehwER26yV7HjKqn5Mfozo7Coxxt8LWWPT47BeMxX8p0Pjb7hZn+6bw7z3Lw+7653j5sI8CLu5kThpMlj1m4c2ch3jGcP1FsT13vuK3qjecKTZk2kHcOZY40UX+qdaxstZqsqQqgXz+QGF99ZJLqr3VYu4aecl1Ab5GmqS8k/GV5b95zxQ5d4EfXUJ6kTS/CXF/aiqKDOT1T7Jz5z0PwDUcwr9clLN1OJGCiKfqvah+h3XzrBOiLOW8wvn8gW6qE8vPxi+Efv+UH55T7PQFVMh6cZ1pZQlzJpKZ7P7uWvwPGJ6DTlR6wbyj3Iv2HyefnRo/dv7dNx+qaa0N38iBsR++Uil7Wd4afwDNsrzDAK4fXZwvEY/jdKuIKXlfrQd2C39dW7ntnRbIp9OtGy9pPBn/V2ASoi/2UJZfS+xuGLH8bnLuPlzdTNS6zdyk8Dt/h6sfOW5myxh1f+zf3zZ3MX/mO9cQPp5pOx967ZA6/pqHvclNfnUFF+rq+Vd7alKr6KWPcIDhpn6v2K6NlUu6LrKo8b/pYpU/Gazfvtwhn7tEOUuXht5rUJdSf6sLjYf0VTYDgwJ81yaqKTUYej/tbHckSRb/HZicwGJqh1mAHB/IuNs9dc9yuvF3D5Xocm3elWFdq5oEy70dYFit79yaLiNjPj5UUcVmZUVhQEhW5V2Z6Cm4HVH/R8qlamRYwBileuh07CbEce3TXa2JmXWBf+ozt319psboobeZhVnwhMZzOeQJzhpTDbP71Tv8HuZxxUI/+ma3XW6DFDDs4+qmpERwHGBd2edxwUKlODRdUWZ/g0GOezrbzOZauFMai4QU6GVHV6aPNBiBndHSsV4IzpvUiiYyg6OyyrL4Dj5q/Lw3N5kAwftEVl9rNd7Jk5PDij2hTH6wIXnsyXkKePxbmHYgC8A6an5Fob/KH5GtC0l4eFso+VpxedtJHdHpNm+Bvy4C79yVOkrZsLrQ3OHCeB0Ra+kBIRldUGlDCEmq2RwXnfyh6Dz+alk6eftI2n6sastRrGwbwszBeDRS/Fa/KwRJkCzTsLr/JCs5hOPE/MPLYdZ1F1fv7D+VmysX6NpOC8aU9F4Qs6HvDyUy9PvFGDKZ/P5101TYHFl8pjj6wm/qyS75etZhhfg0UEL4OYmHk6m6dO192AzoIyPSV9QedDA4Ml23rRbqxMPMxf7FJnDc5FTElVS/PyqgePzmwVZ26NWhRDQ+oaT7ly7ell4s3DypS1s0g+tOr7XHrrkZj9+x/mJBttrLx98lFIaRZzHz4aC7r52/JQ4VjHahY2/YVXZn/QC2ztQb/sY3uRlyc5vQS8nLPGT/n27495i8HPA152z7Fh5aFpyn1GPJKHuPL8Iw94DuW3KjkURAWZXn4EQy89xiKEHN1mk/tkM4gYDBxwNoYvRfE6LFqsxWJtPrDGbsnLMap3Ka3MUoytW0cvieozOmdERmhcqzG+3HmZv2yZeiIeQTKGdRT4HHNxekm1tY+/n06rGmFleqLscSERzctTKM6G9P0Pc1RmVvrascIxaO1CQCiYPE15bD7c3xSeW7gXxYjgxcrUlcbIvO0r+Yplhx0kTt3qafDOmFyMjgGxXu73rddMHpV1wMubyAGcf/v5dLr5P72Ta9lBF+fzMJrMycwv+9vnU3ANIl1cH9tfW7af8u0/HG0vV47jNFXzFTtaha1xvze/s8KMtCYucXc1nzfd/MQydUXn/b72RBt5wO/3jRcMH9BdhC/yctKBIveRYPrNpDWqBsO8VMmP+WvRaOcA4zRMR1PvSoO92rS7pYEv+fZfEfTMzEdM+6X5tLlyxExhqLRkms5EuLovLfx66de5fL2/yX02H52FPVwahrPqmN/E0oVXnsCKhbi/yRxX83nRbUKWhzYceXOntfuXn51NszJ6MO73pQf5Pl4in3ec4JU8hF7ppV34+mm9r1LY0ee/i1O1wpd8+zfLztE0cqBxggiBi5Bu95v9l3r9r/U5hweLn+TbfxowrWDqdJauKd8+q/dH8sbPkc9ttuyO94f7/XK/nHX46MPFLEb5qQlNPvhJ50/59t9ft3LXu7uVaWaO2bDrDCnRSzZyWvFKxO1+vT8MwwunR3bX0CkfPjqb4K9O19tn5X50PvmYpEwHtiW9WtzuV/s76B1zvLLNkViNd8ySxIl/3orfqP90TyTGaf7/rx8jQzeHJXdmh/N6YDvbvmTBwCdxfEQ1NcL6wNMdSIXNq7b1EUzRy1/Axsyk5p22GMG1b+GxFgbHErZh92wuvco0AuOLXct9hvw2nw/LqIcDRRmJmmZzcgUa7JpM/WV/S9IUfbF56TL2orzqwebdRD8nIYNJ41D/hz37Fo11p2Y21wzPcn713qVGhqtevStYfGH4n69OEJtPvbbLYWvscDqc3Hgnu166+tAyLnxrX0Y5zoYjV++1sI7t5kMr02KT/+uwtkc+rZLOf/qn/s3nYCf13Dg8/sB2diJgjGqjQ+TLhxbzyue2Ob7X6/9lUwW7a+lbznHzOYy8LKW1C/uRPbQY3KW/0gO9LXunHLvPL97afba9bFtc9hmz7GAttjVYlCvQAiOwAk/gC5+hkLEs6tr3AZKxLJtOEwk2dLxTYWsIB/j/ToWtIWzo906FrSG8iaqqqqqqiIiIiAgzMzMzNz+AyK+01/zi8n8S+Y1MjoRaQ80WU/G8MBlO+53VPXANrWm4wzGUVZUjjBJZVdhpcfkjsmcWaO+UEldXi1e+zq+HOsCpknYshuh8pOLISJun7TN0EIGW2xTnlOImeecnoGW4raxe2G1T3HEvfYUYMhG+gAFOAwh5nK8mZhwJMmN7r224QVsNFvZ87Z0qatvknklyPDK3Hy45PgVKXji52Wen4d4PlFVVYGnNap+fSpFbK90rYnhUc6n91Q3AY9E0tJOFrcfZtm/491XbcG/jsViUPPX76qmeuiz+qY1Hk7/1VPM405zWVuoheLUimpWYdVzCmUdKHebMdzgrYrb8mL2eeLSnRWHdonfZa8RsOU9F37w+591l5FLYHiOqWeHtE/lWrBHcRKp3uhtr8yXm8LU/5ms+NM6ZKsqu90cFZ4o58+k4rdrtB97NADFbwmEG7lXqvirhOTOqU14xuUF2myIjURcPHrPOQ4lmM3PeMg7bUuk0nnZi67bXsU6H8lhqIo8TaOrEafCO1ARK9PjC0QOoq2BxmMdgYB9G/lIb9++fqNJ2s7BHGFyBNmZAR8J3KCo012ikaSP8BCrf6VI0X5xdnbhHIO+B5rbOyB54zXkzfObyJ4ecwxfqBJMLFc7m59rNcw7hoHnFZ0b00zee+gTqvjm61Pb4xn0kcDX4jvHM0rBXZypG3DCKnD/Waa/ZtHmtFPgO5eETx+k7RrVg3aSwm2YoNXnCs3XPQDhNn+Fia6IlOOuIG6VJH7TP6ava26ehKHQa2T4N0tcZ9dPCGo3ZdnNltsHQbeYt5vPnJezV/cAeNypdml1vCHI8M81nSRP5Qi2+mI8v/sxiZru9187nRtp3f/42NemcONa+4eVC3PCZzc88aZh851CqSsshe70uPxeN/dmYwlwb3trwMrN1Gq8jbnApcVDx/yDPeYs5/7r62tsQ6lLg+DiFXTEhzR9dHqv0iT4tgj825W+H3XiRUNUZT2kR9Ri0+lp+UM3iQtS8uOE23Ly4KYtvqH13jghUntJRAewuzNLDXp8RxdcaA3cMY6TO2IeSFRXezeWIjCqyhsUdMYuCgYTZSKpBype1zRfq8FshvfBPc6BAQWl7/QxIDp3VGo1J3vn42OEs3qznws+YLRXbymyB19a9XBx6n/owcyxlEYyFWCi+kG9F+EyD/4yn80+agaZ9P7ay2Dny99aK2o91FkfEOY8hBwyfi5uwx2y5SaHmG+oq/zl1FX/8irOf8Y3vAcX/6uLP6A6nvMO24edSGPjQc827Rw2atX+z2bKq0CmW9mOtYnr5/AfDa1ZfPaXnKtlWborup7QYx+Or2uWb+N3N//2+yDcXMqIJdf55xl7/vsj4WoPPlxLxtVrkJ4w/tTe3mLdATOOYwxcq52w5Wxz5MbPdVs5O8/lhfE7dPj0bIiPQ3QV0iqm4m3YX8hRfc6jQ3fWepevMqUDJd86Z4vwM40CWHnn+WphsGHfieF02D3tmZvpWD+kBpNCFcLnZhcmmrhpGzzbdA+sQ1ar18OJD87IOKOFoRNznaHPNHUfUNhvY1iU+uhvEvpKHaUn3qK3exVVyX4joipp3um7FmYJWmA+WbIDshRpbVRx5/nqstCgy87FGbfVB8yDGCqS+2qCsnRwnSAN6zgzxfdB2nBT/vZ4/6uxb6oH8b4VBRxiIB93wLa47hG3w2SL/2Z27yOXJFwZpSJaBYyvajA7vRRYNKqljXKpt/CFD/tSMr18DKKbwB0xggBePatl1nki0yvqW5zchlyZmJ0OTxJ3D+fsYJs/mxYN5+Le5oagtcl+YsVvy8kSjI2YGvGjvmpkRS9W2dtXqWnVuxUhURm1lKtou/hdEq19VBp9OjGvHEQSmrpuf2R24mXGheil8KeiANY8fW1VERUfBImb64j12caBZmRViZHbeVMjCrPDg9A90IXrtnsYCuZtRQ0PyrKDjBNOsPfKsg1pA02gHlVr0OXiFhtp6nJqXVzcbfM0KnzC3ggOENPE9VBdmHKN6LYaijb4wXxJn5A0FSDF5j+h1ooZx885Jt3ZKzO5n7Z5WfNEOtyyPqQEnn7WLv5Fis3PdgMshjF1FRydbNyeBbyKI1oN1TRVrVK7kgsb/zjX4NDPIRMctVeaxVB38Vh1x5KbeJbU138AM5KzmZu3uny0ErygxiJF7GVXUrPzFxrlx1uFdAaZFDN9cvIb74qD9tzBMo7L7WIEYK+sla1DVMHpF0F7b3+Y6S+zjvLeDMCpapmJo1weBWuxKF3rOocih1gun4BoJh1kWnV/Jmiq6uOhK3VfKxEHEkafjLgK3oujaPzY6SXg8phhL4TNR1xvJd1Wa0aYFfPUMLrNBDCh4AuGRTbtKMc6Z1Udj8evY/ZpCuMAUefdo69DZUngoqE1P9A3PJfOf7WixCEj+Y6t7fYeHbbxUAoFV3M89cCKfma3fc1+jKRe7MFWEbQqEfyzO2x/wrO2VYH7iYdQ9BkPyI8/3kXBpLaCpU7eC0Yv/am/tEDu7HZpqg0EvHo0nf/R/gRzUWy33/HXMJQeu1GylKmOkXzlCfGFruAcPPhaGqZOtu19zsJ1SO2Jz4Ztth5cBX6mRQwWmDwryG9FUMlZzNckMdK+IoMJv1rOWnBamS2w2KHiaPMPLC15hCZm4KTpoZyj4E2TqC/P6r7/EhnDMhKicZZ1ZwxuC7DPzDGs53q8gXaI9kFTK+2LTq7bhwsTbrMV8Rsfua5lMS0FwbTitUVnVa1yTb5IX51mmYnUcP9wPr8Ji1tiYJeJV9GZTrQhF7vvdU2OTU42ogJ9FDwhmycI2LIg++03C6scYhUyUuMV5tkw6kGUoL+mjNC38+wMdWNljn6tGPpRES7veqrSn5TRuv+dh6JVL/iDHU1db4c9WK3++OrH3PqziF916UMUKn8G67nN60GfWiHrXYhUG3yVWmyYak59NHj8t1smG4UDiWz2rPHNrKnN4Zo1LBbr2/eF9YZ0n0blx2nG4X+EKFxvS3W28JESD+FWk61VCD3z/URGHiJl++7TdBwkCj6tGOH3qDb0QqcOF9Kzpj0HUb/KyFW3Yhj2VMKJqGZleFBH7vqvf7WqLC3XMuHV8q8a4sTFuxUtkD/6JIBvKaVjv96ndgruKZ1k/BHzqf2K9fLk7HGXANyLDd1vxkK/i055pnzl+zw6zLnwXlVYVtfmacJgEpRP1hbGgrYPVN6v2lG+idQNGmwcKXu/8xEj/P6qe/sB2WmwNp6pp8jaISMkwdleFXYK55NHWLTTbutSUqjBfDGWo/Yg918qQ+8BRZSAHZbfuNZz2O0sov1Ue4CWlVg3rFhM3Kljj9ksGd/NUhk4nH+a5UN2+1i8+NM3vRNp7uQ6sqexSCukEVlVZriHNqFi5rLm9TMWa4qm3idJqppQACol2l4VSuvWLfta4JcXy3bROPNbXOgdOhG47LC0CwW/dMlSx4Jf17aEU3yA1x9p+Yc0jupXgcMuYNku64iYOkGToVDuJvlbEKlJqsmiHbvNrIVZEH+yFdF8DbleZ6iNiWwMqvtMp/mSpwx5KxRrT9p3MAPTHGtMbfvdFhyj9vhaKcn3At8Lc16Ai+vBcSp1ztXi7rCJZx/ql7TXcclq6Q76UeKWDy9boS0WHIjUuWhPG8LBmW5y2rhuTpM5vsLt+HOLh1Yf0DqXa9tsfC+kaKt2htA0ai/L2i7RKoNjEwztkmRU0GfgW1TxUvPFhg0V7DdfWJk5gfrccpYv+MA9M0dkGTLECeYwUixRzjRFdmjG7zdZIl3XKB9YliNKI31lfa7i2JG5C8Ss+rHe0D7Z696/V3DEAOWHnQ9yNahMUl5kENWS6pHKKp2D1BaSrrHdE1w2qNxIztpXgUIrF0bm15YML4b6V1k+GpNysTahKMVrrS85lTVo9OGJ96I47eAy5rYWpRf/mIzeoYU1DKaQCTUVwrhHeyNoDqHel+lLxr9WKzhSYw7vrR6+V5q0pfi2k3L1zqkubY6rrd9ZLvSuWNf0uqnkY+FpTvFzSW9Fp0b9l8JA7THV9eCi/PY/SCZIUYx3BU2alj7Cm3VV6eYpios4b6WuNOJdYXUK3zTqj5CVG2FqYM4Z7CuIU0qO05XR0d71FHM0YhZmJmTRfLlXEumN82BGtzdX0S19t1e+bUieK8zRmqpa4Qc5TSjifmaQsY2ETLjhI36gMR1+7qpjdXXHiceUekfBaucHShAOiFXmv3sNmGQyU5iVgnoocuonQXEPTFwslHtS8R+A47StI9wj0iSrtbi5rMysczFiImsQ+bdFClnFjjpXXwMy6O7qfjOr8Fb0a7ODItisjnn3EQO16+ypd1cwyaAW5Yzxz5QknfMO7643fXW/I9y3U2xH27Oapqr56Z/tEzglj6IbT6HEHjopiXqeRbe5mQQvxtcbDOVverN0ZgMdzqRYRjaXtMRd56Q4cZSmdPvZJdSrhJ1D9zNXPqAEqPIavPdfubt5oke2kmv0dztIszSv2VYuoyf1UuopbsYb+uX9h6WpwjpgtZ6fNNawNJ4q8O3CFoSbioAaOSZMx2GYaPYB+rEb6qjQiNRFQ76TvwNFVKD+BhH9VhcKGsXzmMI7BptU/CNWolM7YzROvpFAntsiWJp6eR2d3GarcYShVYSUqhmYOWj5E96NK2WvmYNTeY7Zs4RUEdv9h9QT4EseKt6LzLrqEOs3hxAY1MaNWpSa6zZx8F3YOVeCYMS88W+CYHDuWe4yoc6YK+djDuEOrBR5lvh0r+Q9uM88lrjx9x9AtgpQVNE8r+3O6Gvw59D+kBF/UMXyhliYUtPjmvXGY6Dk3x+kEOW+GtdMVC4EZTqoS/jmR0P0LS75DOc/w2vnri97M4SdbZ8qeU7gg8DVbERkU5geaMQO3mYrSYyAngeUQqrN0C0/vsFmcgWNXNeidsTAj7/4MncJR0caaBUpbLK1yBCBNRjEv6KvuVSdpPnEMJdsRRtqJ+U8tN1gXA4ePHc6ZT0eviI73UOJF0fEZ8YaneAQqQdGphNvwM4nIqPnXxV0xA0fnCT+oAhJuyw/q8jO0y8CjSteZExwBpIN6SvNp6A5G/abi6egeND/1GTguhuNjaUbbnSbGd4L8937Ezm34Eyi6n1maeOBxh3PI0jzJDf5mh/BsLD7F2GOKvlA/5gtvxI3/eV4sLfKW5Wy+oio+es/u6T8UU+nsofy57Icb/JlZHPFtCgd/x+bwt3ZT+xXTtTtTrGAb4QehC6X9G+8YT+ozcLxDsdCjsuOqwPFnrdLYaFc92Ui0m4fr39lYmlCaqTit7G6O/3kWDkgtXjNH4BiEm/+jegQnihOtfffn33WxsFjhfMd48HT+f6o6X65j7XR8WLSHMFkxbvOYsrRsF1bowDuSQ18Mkxk4qz2zoGPL5fu9h2Hqmt1asl3Q3Yu3szOc+spiCmX4AETBM3pLoTYSp3sVxahyhL8eC4mPN9k2x3o0xkiixIzM3CZFzf5oR4mecQ5+ax2wCah3/crmnHoqR0+KMaOPxRif1oEFRFOO/kTPPmtww+NfMXxEK6gn6iU32U6fFruIz8Q4WgljtnaCVTBgWx7diUdshC9ZEa5yKpRBBeW12r/iNc/+EgNqmhswNB8SBoihHXeDF7rrWDLcmt3V8GYYN7pXRy4DZjj4DJuUBL5iC3DQAaoo4vkftqVTYRGLS3mHZ7gdmdTTqbgNN/PTdTCOTgXolc88MhXAEUMdX0iy1JMuk5wLsgeu0QUYlz2S4skTWwJz6pOm/8ihrmgGfFgri+ZWUK2gAPHgbWa8jaocdSuM4FJYoKicYX/ZSENkg9Q1ZzJfwScfVnR2DegOGwCvmogaWJCLQepv9WNlU6QgsmOwICquU28Mlk3d9W5E81lU/5Ez0LcX6lwKMWDNluNKfBDUy/phJgBcMnfkh9iRxrdOzgs08JdPB85Lwo+GUSb4t3nC+0byqMZtO2fQJ4U2zGIr49t/28qmmGv2RanDD7a3FEcdtutkW8twwwlUSpb8QalodddbBfNHKDQ828BdE7OBgFdiKYohLawFYqpybQoxATZrheLhdI7+0Zlu9Q1myRcd15r9UIm8K2LGJxqTegntqNVMKnf1a8zQiyUR1rxoqjiFxeHxqFcYUTHfDu7rhbWng6qOxOsI+5A1p9mRyEPdVkTlE24vY54W7bWc6jMgZvNXdfC9/9q7408KDsbdL7Utz7QFSDetz2picArzrdpL8OaCHC9V26RroemtDZ5yNM/KGkWMyTmfnInEvwtSD23UcFcjhaE3VKzkoaEMKGBft4XbIO6forTY1lmGQwVmKicBCiArDzE+1oIxE08fWeviIOD5TznqH+OoHadvoOP20drMPe5Irg3XBQziW2XDuHYzjqQQ4wySssjXUs5H+t3FWYMHppUnBHMx/nYIT5d7OmjDbgD9F6na3m4l7KdkeSO3kTEPXafiWinogag7b52taiZhL1TSvBFmEZafFq2H8khQaZXuitCewT5FBgVtPK0j4xUHPfUz3Q28eac1Z139DAP23dgki94EC8vbDPTQC97HPPSWjUNG5tWKMsaxAEMKC0665Xvo1Ntd07wCLNf8Q56mrEPVpCxlIMVlQlWRxM3oAfpgIc+8KC3rEXUog5g06vt7zgXY8grH7hhwVSaeuvC06YYRAwpbyk/Unzj9hLEZNs2oxPQB9yc+GnL6zTgq7rI++KDJwX2SP8Sd6YzTuw5lV/kU6eQxRD12omfQAW6caTR4LikYkBB1CMOrvgRr/VY75+NSB40Cni6bADAtaK+vyxVWpf9NeKJxN2KYQ8Q2xPB3K1s7fuhvWbr2XpgW044VD6DRs0qXoqKf1NFsaGvKJc47leUV3pppP/5VTKFhaGuol4Esfjf5zyCyUHmHthChcYh4hYLQF+AFWsuq4t0wJyWgdwQVOZiV0efRHPoK5+E1vjz9wTJmVkITC9oEstAsyZSgE/dbicwKr89YUxKZI+owD205Tm5lnnmDRuP/JnzxX3gMtlrcX0UesZdxyQqYQuEW4R51vmQ5xOZteUd8SJruMlTUzhtVw/Nq7eUBcqN2/HVotgfngif60yKEtoUx3WYOZlVJuJOh8u59fzSDPFYtQgqDUAGyGhQOAvKroXMcOYY0qjnStJR/G3aP+Jt1sLVlGV8POwr/6OGsqetnyF3TmTqZjENfnXh51oxe9qVUw2M78EzAJ+IM8lZ1MBPQ9ZWSVc4J3mWSrLKrMHReA5qdGoz0ODRsaA+vwxXA2cAM4qlfzBJA6581m4hzxItQw5dxrrBL3Y6kCbUcFxo1S8jyV44q//+7ASNNudZ6xeaNOSIUffqMn4A9lIjFctYn2gpEPAb3f7p3iIBN8H14FUGQ9ct2hPsL+cEsTgUrR47uJVN4n4wt/wgfwwHuOnLd4yobkofy8JvxSQTA7rMpDIc608SlZFJfZYcmbT0tAHpPE8MrtQ42siTUNWxqvWZOmvu9f0JPoQmg+6l7sZWwyfi6PXkxJnwBraUG0MYG4zYHQz3igy/XsFkx5tNQxw43qvI9dU3f0DdhOUlHKjmi1VAr2Kiy0HZwD8VeEbhh0OiDdMYspolQsYdSwjCcjeowIXNZVUPmL2wwIkYhmXKhGozdCJ4lRKbsf4NBh/XnQoS92NJEWOVOFs2YhN8c5QZFeK0pRdAG40hqvLbmoSA8xQmzOOEc7wLcme9JOsjPCEgpCwUs9E2DohMHRhUeyGIN6TFvrbny8nDuilsDpzrH5mS76APoIEJmItS67sQJ+nfwddzmjPxcBEBBCw0kWDwd0EZCkNeOD7NNQhtBm7KHL9mRxj6U1yWU2puzlIDtpYxdH4ZPeXBJkTGAJfUr/oTCz/iypY6uXaR2V1doPxJYlrw2ghH0D5gbrhFcIxzYwi4a/4hqVdf2DdxBp6vGYDjavxMAAoy+1+3aiO6S3W/QAKNVXagDtvsNtx7Ks+HKgo6U21B+QSZgIogV5Bt+BnXisdVfy9VyXV+2P5fMuvdpAjM1o/K9Z+XnE4EOCrue+kcdYHqAQ0/Y/OmNlQ6OI33jH/uD1RalPaHpJAm2av0/xtpqdXVKNDrc9F2izo23Wu7firgbURFDNX9eGGeYBhiypyXZft2j3hTvzE6PMWKsod//rEILDkzBXfi7xh0eFkfb3/1zzPK/PI5Nk3FbZyTl4mq5BfBoVoqiPHO4Q4QKZAlrQ3MdNfi3oxIjvsM3kAFv3fdufurqYR3PSwX/mpGy/GFI/B2MNPiNdOppWVbs/gjF3YH+QA9jMhlAbhvasAHstB0IJew09iAkmXHl1/TEj+jvHOpOGrPRQXbPADM+Ig2/OEcUcpgPTItMtW4DdqgfYVI/+4hAFWYjUGpOP/UwNuB7+BbKOcALbjobdgzeBQfjgNSp2GOpxzGLj70Vvq5cw2AoYENwKLUtJUX8sGRox4dVa/TN4xKwaKcl9XawQR/uNus700Hf17pyNnezrUgaY9e4MADhEDBpsJT6y1gDJs1q6wlwGhuUzGR7C8kgpjPyHWwsvrf3yn1zJEIRa5eSxoLAZOCR9xbuztxFRJW9ZmMYfCFJ0evm9F2fVnuje92Rc4Pl6A8bluN8MZyyJGZ0+sNSb//DvAFxC2BqlEsFwccWeAl6CyBcQV1bx4mQMBP1Jxqk1EUADNLeieS2dUFbQ/c/kvwItbZ7tx0st16viqd53WsRmPTKv2AD8CUnhtPWg5aUegNpsYgasaw2+EVooeNKmrW3MFtj76bYHJm5K9gpAXZXsE5U8DM8XmVOSJ1F1WnLy6nQup+jx52bAb+rCq6y9WXl2B2oZDhfDkW7H3oYfT/4xx5VncBuxMXP2lNfhUVQjSSzSRbuZFE4vFawlzveXxaYKVs8LpvAb8IRYF3ZHiRnm0ADeNPWocwxSzNseG7NrSEVZoHdKWqaGEBz1N8Pt7kFbqh3LYmAbm9i1IChIpLpM5AS6mr6OAPHMwwznVy61YpBYX8xZDN/a+lt7n+x5j4bNOVteZ8lj3hpAHSx1VR8vZHec4AHO9XFCdjZ9eRkSV65ljMmZVzaej2qFn/qt1lvWzNZEfHxK3qOJrHL6crr0CRzMox5f2e8ALBB4UGFZKA3tN6F6IXd32GTJXGQ7DTi9j/dNcLF9jCbDcWGKxoKTYblIwbLDReL00LRcDPMcQuXLMh5YzgtfjkFK1DP1iDzzYYVZz5M/kWYRlRpig1htVRjVCknm+h1M5LiEDXOyHREhvzCGpFZjHS0RsK27o2avgdilrJkalWqPW3D9gmwV37HKmfM3F8YZj2ar+vHFvf3B8CRoH4kDHIK9mrAg+owiEwNjjd9V+FsQKYR8czJrUkf7Qoi2YaW6EVDZp5zYlqiYtuXOTHk4fAcZ7qBbdLDiJq0WNV1l2+Hntk1mMWvxrYmc8kIx8G3rW36J6Ra4lLrTOCgiOihmow+YnzUT19jbV2B3RWqSHyxkhmgsBqMYWvOcUom1jDQ436+fcbu3xf2bbeqU/ca+C4DOKE+e3qvmeMqW3AxejfzBRFVcwVYPq4L0APSWWoJu+5UYX4qg5U6YTioqQGPG9XrnuZ/BkxuYpe6Li87+18EskyQW/uA+uk2rpHpr6hut2TlVbKgWkFpx+AZffweiw2+VittkEyf/ifinS/0ItRL2Jq3tQOcxPaWO2xrG68GdFoUpZgFXaP2wYVtRc6xYCfI1CaBqyWpg4bx8OHBQwsV4XWMibZZ0LYjWEy2IxQ1mZrf1/UNbYCJplWu3nZ4WpodIGVA05d+RWSS+ET9tH3RfGGmNI1cIY7evZZq7o+a0bjjygpmR3mVfalkT/SZGT27Q8QGalwGlDOS9VHCyFAIL0a1Q7JiW3saz9gqY8lqKynFrPCzxkU4SIfLc9VfCI5edgRhDXs0edO992nhTKHriREP1NJC6SROMgQ0xO5kNNZOhMOIT99AUElbxqeZF8A3xrfDJsWtDnUenAHdYWSwAbYjFqQZ+D5gi3hNK8CSxU9i6f6ClL9IGlj1OPMQAsr84YG6ijsJpCaGWj75c3yOZKBB9mNpQNPUKkK0D6wgLH8MGoyRxTX6Y05Q4AnYNXMZwXM4eij/9WpsM/9CoRnFQXGR6MEaY+FXvXEO3RO0JaStk6OXuHVATHJE+1W+TU3bSZ2ksMtqjO0zfSJCdBv7y2d8DMx6TfVme3q0ZpTKMMu4YL/t7ciTNtdDkwPogh3Cnjx7qk08SHwf+dksZ7M2vCOlfsF0hQ6J4ehPCaHTNrM/zBSOqD83dBEBCW/F/LEmeh0nOHd7oVl3/Qo/9GUDkkbj7yz+9cvvu+dDAtx8NzCDTP4iKdZvk9MWiizvtILLepysflSvTLFBZ37RLwiriqyRxYv/zrgFd/9XVHh/OmzBvDX4mitMR/lUavs2Vx6cR94lzAkplm3IRNy4TFfu47tuYs9EQPIPVta4P64tV+sZ7n3ued3cgEx2YK+QL5+xms6osk8qQbTyuKVGdaX9FQqk6qfDnT5ykxk0VK7KZ62b6DNDUfQlqGHxSMKv1P0XN5BqMeKG1P4Wp5QfZDUCEldppoX0U6ss2jIko2XpURKCIhfaOqLPfShdtS37ZrT+jFRSH2xYVV1rmT/MBtRQhxiO4MQ3iAGlaZi+9PWBEIXOVnu9jN1f921lWLZky9bqbM3J2MAAI9jmuAx3gyoEUa6P2ivs0EeNv/OR+AX6q5SW6l5HaoFuS6jr6yg9limu+P0KYKzfMXWcQSfTXzpOzKEKpwI3YGXZpSSy2LTlMgfmFA3CF6R5c9xWEtRuCg2ZPUQ2Nb6dRFTNd4TfGHrnEWSKHPuRyiJSDAZ+KX0VxmSHjGPbQTLVpqixia2uyhQ394gBMt7C3ZAmxn/DJS+l1fBsAo2Eir/C0jG9csd4+/tp12pPc/BVJGaK9mfvr7M/CeztrmCO5qY06Edi4xAGtiEhnWAbzLy2VEyazE1J5nPmgU4RpW4Sa0TnOT6w5lgt3/tMpROigHHmexBGAMY0mdcDbDxWIz41NgdD6oxgHsJRgr5RnT6wZAkTOcStU4NMOQNemSO7gxGahdEsC+NRVGxMUhQmmM0llWRbbmFGHzEqLM4Iw0H7577Kyo+Zf+2cUFIOw93gEY171vQaM0HLwpjpdRR6Jz7V0ckE7XzYJ0TmY9znLdzkva0vNrAGGT5SUZ5uaHDkcGvI0ySpwkasEgZPMseYcu85w8HPdSNi+4T6A83iAwDbxgeFcB1ZM2iGXzFcEOUlYVrEckaOyodfvaYSQ7GuB4ISE0nYJc15X/1ciDTPbPCgYJK55VkEor4LvzL9S2WDy4xj+6FOqVyTAC2ZNowheeeSI5hA/02l8UYkv4nk9iaVn+kCVEUstgk5Hyq+gJm6R9vG3rhuM904he/hFmNQaUIATB1y3vw+OmxP4X5Yi6A5I5jJufHCjF9+AGNwnEllZjUco6XhsO5T5+R3yxz5yLVOnAn0zuS+6zdj0nTJbEZCbXJdtpfYZfCeCOqJHoE2vPPFS6eRLjIJlG69X93nfR0mxSFXzp1Zc0lt/VafDaImhUMtbnqWVb9M4nGNQLN68BHP7AR8Il9dkcxzmBv8PCZlw9guY0lurbBsmNYlwJZsA/B15/HfkbjbwPddaVecls/elmDHNW2r4crAx43feNkfRwsaNq/yyJ0d/p5hZ6AZajz7DBfUok0ZU62gCzz7x8eVfJTKA8IWn45vINLSM1q+HF9CV9qF3zP6Ml21kPPL3CXzkuYUlnSqT+Ij4tI/od5KwIs+tDajDs64owN7tOAd6eucGz+KfO26iNcBFpbWA5732bBNWO4kHNpr9D955L61bvHCF/mwSrz6eQaDjfDEANqGMkFc+NGxpKZzCD2sj/JrHd+zlPQ8Iz7Q+2JVIiVCuCKoK/hlAEHzvk/Piq3mRL1rT/fEh9hoT5GJmeYswg1otiKydizJ/fS2SeKHVu6Z3JEHjiW8NaTQgP5xdBli8nC57XiN9hrquBu99hn9zqwo92+PM2JXtpeVZS0PdqR5mDyDreMMtEws+CpwaRyyzoYtfcvt9PJIW0fJVNNi/FFyRsea7peLvJrL+5b4GOXJ8tAr+ATk9f8KmiIsRhqRy0vFzwRV3Z5dZ3QqIU8JQ/uQpkJbjMUMFj2F9sCFeaBjI4+fL/oN3+LQgjI4zuAfQ+3IPIPFQBccf0clJpsfpnBxD84atwtupkGqKvrH7cGNl/QcWcSi6wcVDML6ljOgYbo+2BOAWNNjlUBPiyitUAwbnhFvLbnqw42kR3Yp2kv2dMeDdcGOX5kT4S6M44KHEB/SpCfl7xgsUvs+JNY9G3O2X/6FEt9FyAn57lrbiu+tl83sCymSvq9eZbe9mchL7MTf/Ta78e80zSf0hYY5eUU7+ff14jv7Xy8qjzfzzzvaJnrIdvFb5BLWKcWGy5/w7+vV2cvIfwHqdTB+RuJK5oj9mbt0Hy94AmjMjjwYNZlNS6uiyxNnwNyt3gdreLb64p/3+08nXkb92LTkkRgFOwk1oGEVllcOj5lv1hfAZywDows0944U8vUFw+A/nuVq/UCygsrmWIBnHyU01d0XJPwriEOvx/ISK6Pk4y2w0gmojZs7lU8TtakBAdne4v/aNxmMpK4VcGMp7si0yqsiolXRuOi1Z1P7SqD3Zmp0CWcyK4Ubmp2SXiXuI5nGLCieFHKHNRIlcY3Pys2dwMTYCaqlyWSITwr2oGXvyU3h1Pf8eQ3w1bnD7ilocVjYDkcXR3Oo1BXgMLTUjNw2xMVwjtp99NhSVc5aIWrDQT5DHPKtCtheBP4zHcw4dz2eRdTMamhlHhtfgqJJHI7NGDUw1XL8vsSeSHyKqDtqoAmrQqsYwvwi7HW3ojWyhIa5oz5xJTaq14NAzFLjVLR12rRNUQ6xohDnrWFb5bG9yf8aCD8d5phoackcNJp+Dw3Due3RM+5Rid7EuIgsnwgpX0rUWh/nqPtByMhMZZ69NpgvRTKZ62ViZ+Q7Dp5r4K0d7EfJuiy06KuIYauRh5Ecrhdt2QpTS1k1AscEHvapNbU3HL1F2TFyR33Wxb5MvH5iZsrn3SDcsxlnnshO8PLwmdGN+paWnQuORtZGX37uhFT64SeuPsx8UOokY6ON85WdQ1dki5zErsJGazcBOddWJEKqNPiJpsMD1GrVLrVY+AOdPWQneTyyP1hRX/lMM4ZogGGOhYuAdr7F/DOiAoc++cn5vlf0zkMUJ40Z1rlgv9BelPqVOpxKeOpzKdF8maK+1Vv23MO9k/8+qpLoxrIGH2EDQlnGmH8CD31G8QqlyQIcpmR5bwmSVw9/Ns6IHgulCRehvZ/+VrM60Cu/r3AontFfrljew74skYe2uyn7JKQtFQBQRJ9ryGic/zQOsbS4scUBctA8cPToQ3x6ZBQu6DPu5m1bnCtP8TllLYA0UTQNVqza5nfew3Mopy1GPUwG5jsl0OVXniPmAcmLqO5HG8Hv3nSLecE9oOjPDXcsTxoCBxYyzBdj4wmnyEV4kvFDunipS8SSkvdaMnTBN9brHUR8xdmmEAp/Pdqk9uextp1t+JrtXwpN/MG2w/qhRMpSNxQ1uhg/kKO30eQ/FyHUDkWHT8V6gGRU4DhDMxZu7xXij9Ui6jlpWmQCqJg3FkOTq3WKneCRYZxBXMNAVLQgHXSCGSqNdjebY94oyIpVjMYehAiFx/tqzBXFHZaL5PeeD74rW5OysFoUXY8sebUZleFTUa/+zBKVTFDopTReXNuZq47QjkWnxjirCommO4L/GrFtVV21EpMyw8wyThL5Y59d88xtlx1g1ttSICDwnof6lt/6zliPzgVUL8jWBjC0o2D6Kg+jNuThkAlaDJsq/AG2aKA//A76avw2KNqtv223P+Wq3StRDDNKFFgtsFukYt1GFDWooFVXitaNhb3RCyJi4cMeNjROiPEDb4k+G3+hD8tsg+5hhmSc/8t2JTSwYoCzAI75doq8QTHe+E/Tw0RQSUDlU+6uBeNN3h6jJGX/mH8oj0i3caCNsjvTnoh73BtyZpsflHLq6AfwJNCDX4S98h4+pCOhGKDhV3rtkKHMa3EG4J9y8zFWI4UsfNzC/Rl5midNn7gwoN9j23HGCQQ+OAZpTTPMdiVow740gIyuEtd0qVxMyNXhHcnuXRKdw5wDUSL358ktjMXmAkvIB73BLa1vfF9BAUZInPYJiwxqFWQQBVk7gQH4ojfUQ/KEjn+A/WR6EEe4CtbpoLe1mzHkajgTIoE0SLDHVauKhrq12zrAXBGbPPWKCt4DGedq3JyGRbmPFW32bE7T20+73BatV/qQhhBWfWBFHfhYWXjALts38FemnoT+9bn1jDBMcUMmYgSc0e7GQjv2MUBwLU8ionCpgV+Qrhg7iUIfUY6JFxR0Y+ZTCPM+rVuq0GNLyJXX6nrUTt8HzFBRY1E/FIm2EeVA9NcXrj7S6YYIChVQCWr/m2fYUjC4j0XLkzZ8GCSLfmkW3PB/xq+nlXsKVBOj7vTvqKCOMq7Ztqr3cQ+N8gBnPaAps+oGwWOkbuxnRYj/x/WjiDclVrs22xMK4qArE1Ztk1456kiJriw6abkNeRHogaPRBgbgF9Z8i/tbzWELN4CvbqtrqV9TtGSnmPS2F9kqOIBaazHYaJ9bi3AoDBvlZasMluxt0BDXfhp02Jn411aVt6S4TUB8ZgFDkI6TP6gwPY85w+oUQSsjIeXVminrwIdK2ZAawb8Se6XOJbOaliQxHSrnAeONDLuCnFejIbp4YDtBcQCwMsYiRZfHefuEJqJcwKTTJ8sx5hjHmJI1sPFHOr6W9AhZ2NAod38mnLQk1gOz2LCAohoQbgMbUK9RMEA3LkiF7Sr9tLZp6lkciIGhE2V546w3Mam53VtVkGbB9w0Yk2XiRnCmbpxmHr2k4eSC0RuNbjNsUfDIfc8DZvRvgUDe1IlKdZTzcT4ZGEb53dp8VtsoZlyXzLHOdAbsp1LPTVaHvLA0GYDFMbAW/WUBfUAdHwqLFAV+3uHvYWrCfhUOR2i89qvCBoOb48usAGdcF2M4aKn79k/43WzBZ+xR1L0uZfia70XP9soQReeuhZiUnXFDG1T8/OXNmssTSnYO+3kVLAgeiY719uDwL9FQycgLPessNihMZbAKG7qwPZyG11G1+ZA3jAX2yddpYfmaKBlmfcK/V0mwIRUDC0nJSOPUl2KB8h13F4dlVZiRhdGY5farwN+f9hEb1cRi41ZcGDn6Xe9MMSTOY81ULJyXIHSWFIQHstVYLiJEiUjktlHiGjntN5/btB8Fu+vp28zl2fZXN+dJDyN6EXhS+0yzqpl/LSJNEUVxmu7BsNdjAY0jVsAhkNuuY0E1G48ej25mSt+00yPbQ4SRCVkIwb6ISvYtmJRPz9Zt5dk76blf+lJwAPH5KDF+vHAmACLoCdG2Adii6dOHnNJnTmZtoOGO8Q1jy1veMw6gbLFToQmfJa7nT7Al89mRbRkZZQxJTKgK5Kc9INzmTJFp0tpAPzNmyL/F08bX3nhCumM/cR/2RPn9emZ3VljokttZD1zVWXlUIqEU7SLk5I0lFRU0AcENXBYazNaVzsVHA/sD3o9hm42wbHIRb/BBQTKzAi8s3+bMtpOOZgLdQzCYPfX3UUxKd1WYVkGH7lh/RBBgMZZwXzU9+GYxdBqlGs0LP+DZ5g2BWNh6FAcR944B+K/JTWI3t9YyVyRhlP4CCoUk/mmF7+r2pilVBjxXBHFaBfBtr9hbVn2zDuI0kEOG3kBx8CGdPOjX1ph1POOZJUO1JEGG0jzUy2tK4X0CgVNYhmkqqQysRNtKuPdCJqK3WW57kaV17vXgiyPrl4KEEWgiGF1euI4QkSFHFf0TDroQiLNKJiLbdhH0YBhriRNCHPxSqJmNNoketaioohqMglh6wLtEGWSM1EZbQg72h0UJAIPVFCAJOThpQGGdKfFovcwEeiBuZHN2Ob4uVM7+gwZLz1D9E7ta4RmMZ24OBBAg7Eh6dLXGofZ4U2TFOCQMKjwhVckjrydRS+YaqCw1kYt6UexuzbNEDyYLTZnrY1PzsHZJT4U+awO2xlqTSYu6n/U29O2wPXgGOEKDMSq+zTUtyc8+6iLp0ivav4FKx+xxVy4FxhIF/pucVDqpsVe2jFOfdZhTzLz2QjtzvsTCvDPU7bzDH2eXVKUV9TZ+qFtaSSxnYgYdXKwVreIgvWhT9eGDB2OvnWyPLfIIIfNnfIxU8nW7MbcH05nhlsYtaW9EZRsxWcKdEqInq1DiZPKCz7iGmAU9/ccnnQud2pNgIGFYOTAWjhIrd63aPDgfj8/sdlD4l+UTlcxTI9jbaMqqN0gQxSHs60IAcW3cH4p3V1aSciTKB29L1tz2eUQhRiTgTvmqc+sGtBNh4ky0mQJGsdycBREP+fAaSs1EREDVo5gvgi5+aCN7NECw30owbCc1mSpjiahyNVwJd1jiGgzSwfTpzf2c5XJvG/g1n0fH88KHNnf+u7ZiRMlXueSIsloJBUtW9ezvsx9grfsX/FNxnbxU1Lvg0hLxixypHKGFAaPu0xCD8oDTeFSyfRT6s8109GMUZL8m2xXp8X2dpPCWWdX84iga4BrTlOfqox4shqEgh/Ht4qRst52cA1xOIUuOxgfUivp6v5f8IVyaryEdpVk72ERAwdT4aoY1usBgmP+0m06Q216H/nubtNYxHaOIYjcach3A8Ez/zc0KcShhel0HCYjFsA0FjYqyJ5ZUH1aZw3+zWC0hLpM6GDfcAdn9fq2orPmZbW6XXrf+Krc9RtvII5jeD3dFoT1KwZJwxfUMvc5KLfn8rROW23Jw89sJ2a5dpB3qWDUBWF2iX8OCuKprHosJ2mflBR+Wqs86VvgI/XMnsqb97+VlKdPVysczPj8Jhzf+WCvGBHijAqYlavbF60soMWlHbvKT+ScvhprgeTln51xX0sF+Eadc/l2s2a5BgkVbHYyz0E85p0LstqH+gEGiR84nBRRFIn8hLSZrGwqjZ3E29cuGi+5Z5bp7EM8MWFa9ssS/vy4VrDfECSv7DSU84DaP0sXI3Ap4lWznQ65nQoTKRWU30gd7Nn8ZowUvGIx4aqyXGwmA/PB4qN8msJUODezUHEl0VP9uo+cZ8vPFodSIB4C7lQYjEFj8yu49C2KIV3qxMFYTevG8KqAr0TPlkbzHHnTpDpvpzziAiNFh8xiT7C/TiyH0EguUw4vxAgpnE27WIypV+uFN2zW7xniF/n75trs9IJ5amB1zXXZ1LFkJ6GbS/dFokzl4cc2mamVwhL4XU0Av5gDWAl+aEWhAP7t2VIwU+EpvfOPDcLASX7H7lZpXA2XQfbSlD4qU18NffNPoAKMNSccBfO9YVVgmlW4RydBqfHAV7+hrZ84WJGho6bNT0YMhxxLdOx/dwGj0oyak9aAkNJ8lRJzUuA8sR+fPyiyTgUHio5+Pp+YaKlHrhR41jY5NESPS3x+zTMe0S2HnLOKCOQPpdxKyviBvdHrCDRqO+l96HhhNBLXWv4yEMuEUYo8kXnYJM8oIgVM4XJ+xXOev4YbWeqsvgq0lmw4/PiYr9sYLt+W5EAuYSFnJEan8CwJwbtASBfLBBpJZiRPor/aCJBZsM+MhvS7ZepyHvU8m5WSmaZnxuLts8ojl6KkS8oSAHkq5GWlCB/NgJ5W3rO2Cj1MK7ahxsCrbTT3a0V/QQH+sErxV4XUWDHx0kkFy25bPmBMBQ6BU3HoHhhYcJB9JhP6NXUWKxnE0raXHB6U9KHpWdQCQI72qevp5fMzcm+AvC85rsynVQhruDA9fp9COe7N56cg1UKGSas89vrN+WlGLYTwi5W+0xYdKEGtGCeNJwXKDU0XqU5uQYnWsMwTENLGtbQMvoGjIFIEMzCRal4rnBAg7D/CSn8MsCvS+FDJJAzoiioJEhZJgAp9n2+1Yznr7H+6eT4YkJ9Mpj60ImcW4i4iHDLn9RydB8dx3QYm3rsX6n4VRrZDsYK6DCGwkwd5n3/INFEpk16fYpP6JtMQpqEMzcOfQGAHXBTEGzuLJ03GYQL9bmV2/7ExDlRf+Uvf1sM2frRtCWmal12pMgtonvSCtR4n1CLUZRdTHDHP1Otwqd+rcdlavnKjUB/OYXQHUJzpNyFoKpQK+2OgrEKpGyIgIBgn2y9QHnTJihZOpEvOKIoHAMGAXHmj21Lym39Mbiow4IF+77xNuewziNVBxr6KD5e+9HzZSBIlUa/AmsDFJFXeyrQakR3FwowTGcADJHcEfhGkXYNGSYo4dh4bxwLM+28xjiqkdn0/3R4UEkvcBrBfn/SzBc1XhKM2VPlJgKSorjDac96V2UnQYXl1/yZPT4DVelgO+soMjexXwYO58VLl5xInQUZI8jc3H2CPnCNb9X05nOxIy4MlecasTqGK6s2az4RjpF2cQP2G28R+7wDPsZDZC/kWtjdoHC7SpdPmqQrUAhMwKVuxCmYTiD9q/O7GHtZvPSN0CAUQN/rymXZNniYLlJDE70bsk6Xxsh4kDOdxe7A2wo7P9F5YvqqRDI6brf79yPCSp4I0jVoO4YnLYtX5nzspR5WB4AKOYtR1ujXbOQpPyYDvfRE3FN5zw0i7reehdi7yV0YDRKRllGCGRk5Yz+Uv1fYl2ZwrnGsqsjgAVo0xEUba8ohjaNMJNwTwZA/wBDWFSCpg1eUH8MYL2zdioxRTqgGQrDZxQyNzyBJPXZF0+oxITJAbj7oNC5JwgDMUJaM5GqlGCWc//KCIrI+aclEe4IA0uzv7cuj6GCdaJONpi13O544vbtIHBF+A+JeDFUQNy61Gki3rtyQ4aUywn6ru314/dkGiP8Iwjo0J/2Txs49ZkwEl4mx+iYUUO55I6pJzU4P+7RRs+DXZkyKUYZqVWrPF4I94m4Wx1tXeE74o9GuX977yvJ/jkdak8+AmoHVjI15V+WwBdARFV2IPirJgVMdsg1Pez2VNHqa7EHWdTkl3XTcyjG9BiueWFvQfXI8aWSkuuRmqi/HUuzqyvLJfNfs0txMqldYYflWB1BS31WkuPJGGwXUCpjiQSktkuBMWwHjSkQxeehqw1Kgz0Trzm7QbtgxiEPDVmWCNCAeCfROTphd1ZNOhzLy6XfJyG6Xgd5MCAZw4xie0Sj5AnY1/akDgNS9YFl3Y06vd6FAsg2gVQJtzG7LVq1OH2frbXNHWH/NY89NNZ4QUSJqL2yEcGADbT38X0bGdukqYlSoliKOcsSTuqhcaemUeYLLoI8+MZor2RxXTRThF1LrHfqf/5LcLAjdl4EERgUysYS2geE+yFdasU91UgUDsc2cSQ1ZoT9+uLOwdgAmifwQqF028INc2IQEDfTmUw3eZxvz7Ud1z3xc1PQfeCvfKsB9jOhRj7rFyb9XcDWLcYj0bByosychMezMLVkFiYcdBBQtvI6K0KRuOZQH2kBsYHJaXTkup8F0eIhO1/GcIwWKpr2mouB7g5TUDJNvORXPXa/mU8bh27TAZYBe2sKx4NSv5OjnHIWD2RuysCzBlUfeNXhDd2jxnHoUlheJ3jBApzURy0fwm2FwwsSU0caQGl0Kv8hopRQE211NnvtLRsmCNrhhpEDoNiZEzD2QdJWKbRRWnaFedXHAELSN0t0bfsCsMf0ktfBoXBoNA+nZN9+pSlmuzspFevmsqqcMllzzvkyXrzoA+Ryo1ePXpdGOoJvhyru+EBRsmOp7MXZ0vNUMUqHLUoKglg1p73sWeZmPc+KAw0pE2zIsFFE5H4192KwDvDxdxEYoDBDNZjbg2bmADTeUKK57IPD4fTYF4c6EnXx/teYMORBDtIhPJneiZny7Nv/zG+YmekIKCoxr6kauE2bZtBLufetNG0BtBY7f+/ImUypMBvdWu/Q7vTMRzw5aQGZWuc1V0HEsItFYMIBnoKGZ0xcarba/TYZq50kCaflFysYjA4EDKHqGdpYWdKYmm+a7TADmW35yfnOYpZYrkpVEtiqF0EujI00aeplNs2k+qyFZNeE3CDPL9P6b4PQ/kataHkVpLSEVGK7EX6rAa7IVNrvZtFvOA6okKvBgMtFDAGZOx88MeBcJ8AR3AgUUeIznAN6tjCUipGDZONm1FjWJp4A3QIzSaIOmZ7DvF/ysYYbM/fFDOV0jntAjRdapxJxL0eThpEhKOjCDDq2ks+3GrwxqIFKLe1WdOzII8XIOPGnwy6LKXVfpSDOTEfaRsGujhpS4hBIsMOqHbl16PJxc4EkaVu9wpEYlF/84NSv5Zum4drMfp9yXbzzAOJqqS4YkI4cBrFrC7bMPiCfgI3nNZAqkk3QOZqR+yyqx+nDQKBBBZ7QKrfGMCL+XpqFaBJU0wpkBdAhbR4hJsmT5aynlvkouoxm/NjD5oe6BzVIO9uktM+/5dEC5P7vZvarmuO/lKXz4sBabVPIATuKTrwbJP8XUkdM6uEctHKXICUJGjaZIWRbZp8czquQYfY6ynBUCfIU+gG6wqSIBmYIm9pZpXdaL121V7q0VjDjmQnXvMe7ysoEZnZL15B0SpxS1jjd83uNIOKZwu5MPzg2NhOx3xMOPYwEn2CUzbSrwAs5OAtrz3GAaUkJOU74XwjaYUmGJdZBS1NJVkGYrToINLKDjxcuIlyfVsKQSG/G4DyiO2SlQvJ0d0Ot1uOG5IFSAkq+PRVMgVMDvOIJMdqjeCFKUGRWBW9wigYvcbU7CQL/7meF2KZAaWl+4y9uhowAX7elogAvItAAxo2+SFxGRsHGEW9BnhlTuWigYxRcnVUBRQHV41LV+Fr5CJYV7sHfeywswx4XMtUx6EkBhR+q8AXXUA8uPJ73Pb49i9KG9fOljvXeyFj9ixgbo6CcbAJ7WHWqKHy/h+YjBwp6VcN7M89FGzQ04qbrQtgrOFybg3gQRTYG5xn73ArkfQWjCJROwy3J38Dx/D7jOa6BBNsitEw1wGq780EEioOeD+ZGp2J66ADiVGMayiHYucMk8nTK2zzT9CnEraAk95kQjy4k0GRElLL5YAKLQErJ5rp1eay9O4Fb6yJGm9U4FaMwPGxtKD6odIIHKoWnhKo1U8KIpFC+MVn59ZXmc7ZTBZfsg6FQ8W10YfTr4u0nYrpHZbZ1jXiLmooF0cOm0+mPnJBXQtepc7n0BqOipNCqI6yyloTeRShNKH04FIo0gcMk0H/xThyN4pPAWjDDkEp3lNNPRNVfpMI44CWRlRgViP64eK0JSRp0WUvCWYumlW/c58Vcz/yMwVcW5oYb9+26TEhwvbxiNg48hl1VI1UXTU//Eta+BMKnGUivctfL5wINDD0giQL1ipt6U7C9cd4+lgqY2lMUZ02Uv6Prs+ZEZer7ZfWBXVghlfOOrClwsoOFKzWEfz6RZu1eCs+K8fLvkts5+BX0gyrFYve0C3qHrn5U/Oh6D/CihmWIrY7HUZRhJaxde+tldu6adYJ+LeXupQw0XExC36RETdNFxcq9glMu4cNQSX9cqR/GQYp+IxUkIcNGWVU7ZtGa6P3XAyodRt0XeS3Tp01AnCh0ZbUh4VrSZeV9RWfSoWyxnY3hzcZ30G/InDq4wxRrEejreBxnhIQbkxenxkaxl+k7eLUQkUR6vKJ2iDFNGX3WmVA1yaOH+mvhBd+sE6vacQzFobwY5BqEAFmejwW5ne7HtVNolOUgJc8CsUxmc/LBi8N5mu9VsIA5HyErnS6zeCz7VLI9+n/hbT6hTokMXTVyXJRKSG2hd2labXTbtmK4fNH3IZBPreSA4FMeVouVN3zG5x9CiGpLw/3pceo4qGqp+rVp+z+7yQ98oEf+nyH4F3+J9IheDBa94Wi63zJbLBCIZm7P0asHGpIJt3PzE3m0S4YIWyXBCVXGikj8MudDPB/6Nm2v4IxJ5gU0ii0guy5SUHqGUYzTP0jIJU5E82RHUXtX4lDdrihBLdP1YaG1AGUC12rQKuIaGvCpMjZC9bWSCYnjDlvpWbkdXMTNeBHLKiuoozMGIvkczmP0aRJSJ8PYnLCVNhKHXBNckH79e8Z8Kc2wUej4sQZoH8qDRGkg86maW/ZQWGNnLcXmq3FlXM6ssR/3P6E/bHMvm6HLrv1yRixit25JsH3/IOr2UV4BWJhxXW5BJ6Xdr07n9kF3ZNAk6/Xpc5MSFmYJ2R7bdL8Kk7q1OU9Elg/tCxJ8giT27wSTySF0GOxg4PbYJdi/Nyia9Nn89CGDulfJemm1aiEr/eleGSN+5MRrVJ4K6lgyTTIW3i9cQ0dAi6FHt0YMbH3wDSAtGLSAccezzxHitt1QdhW36CQgPcA8vIIBh3/JNjf/Obmc2yzpk8edSlS4lVdwgW5vzbYEyFoF4GCBBby1keVNueHAH+evi+H7oOVfS3XuPQSNTXOONAbzJeSb5stwdQHl1ZjrGoE49I8+A9j3t+ahhQj74FCSWpZrj7wRSFJJnnwi1T9HL5qrCFW/JZq6P62XkMWTb+u4lGpKfmmwiJWx178GOG7KbrZGqyWwmuyKWPkNswkZ1q8uptUlviIi+AXh2bOOTOLsrtNkfqbQJeh24reebkINLkjut5r4d9GR/r8CBa9SU0UQhsnZp5cP+RqWCixRm7i4YRFbtZ4EAkhtNa6jHb6gPYQv7MKqkPLRmX3dFsK8XsRLVZ6IEVrCbmNDc8o5mqsogjAQfoC9Bc7R6gfw03m+lQpv6kTfhxscDIX6s0w+fBxtkhjXAXr10UouWCx3C/p/FYwJRS/AXRKkjOb5CLmK4XRe0+xeDDwVkJPZau52bzLEDHCqV0f44pPgKOkYKgTZJ33fmk3Tu8SdxJ02SHM8Fem5SMsWqRyi2F1ynfRJszcFKykdWlNqgDA/L9lKYBmc7Zu/q9ii1FPF47VJkqhirUob53zoiJtVVRVwMR34gV9iqcBaHbRu9kkvqk3yMpfRFG49pKKjIiq7h/VpRwPGTHoY4cg05X5028iHsLvUW/uz+kjPyIEhhcKUwCkJAwbR9pIEGOn8z6svAO8i89sJ3dL5qDWFYbS+HGPRMxYwJItFQN86YESeJQhn2urGiLRffQeLptDl8dAgb+Tp47UQPxWOw17OeChLN1WnzlkPL1T5O+O3Menpn4C3IY5LEepHpnPeZHbvuWfeVtPlkH4LZjPbBrkJT3NoRJzBt86CO0Xq59oQ+8dsm0ymRcmQyn8w71mhmcuEI5byuF+C88VPYly2sEzjlzAQ3vdn/1+Hzguw6qFNNbqenhZGbdiG6RwZaTG7jTA2X9RdXjDN9yj1uQpyO4Lx8KRAcZcbZMafp4wPOd5MdXoFY52V1A8M9hi3sso93+uprE0qYNMjkE22CvK4HuUxqN7oIz5pWuETq1lQAjqlSlqdD2Rnr/ggp/TVkQYjn9lMfYelk2sH5HPdopYo7MHwlV1or9Bxf+QCyLzm92vzG2wjiIjC/ZHEJzeroJl6bdFPTpZho5MV2U86fLQqxNlGIMqCGy+9WYhJ8ob1r0+Whxde9L2PdysETv97O+xVw+VNN1TZSQN5I6l9m5Ip6pLIqLm4a1B1ffH6gHyqT9p82NOjntRWGIofO3bJz5GhkvSWbsXueTAMaJDou99kGLqDlhwBZNEQ4mKPuDvVwSK4WmLluHyhA97pZiVe8g+JxmnJF8IkV/tCs4Jq/HgOoAEGR9tCDsDbDmi3OviUQpG5D8XmKcSAUaFLRXb2lmJTNYdhtYyfjBYZQmN5qT5CNuaD3BVnlkCk7bsMW3AtXkNMMTuW4HjUERSJnVQ0vsBGa1wo3Qh7115XGeTF3NTz8w0440AgU7c3bSXO/KMINaIWXd0oLpoq/0/QJxCQSJ9XnYy1W7TYLBJpHsVWD1ahsA7FjNvRd6mxCiHsm8g6Z0pnzqIpF1dHUtP2ITU5Z1hZHbu+L3BEEStBbL9XYvGfEakv1bmf+bOZGnoiuHEdlBnaChxYKNzB23b8sw8YyT7Ajxfk49eJIAvdbVkdFCe2J0gMefhQ0bIZxhx3fzMIysQNiN8PgOUKxOMur10LduigREDRMZyP4oGWrP1GFY4t6groASsZ421os48wAdnrbovNhLt7ScNULkwZ5AIZJTrbaKYTLjA1oJ3sIuN/aYocm/9uoQHEIlacF1s/TM1fLcPTL38O9fOsjMEIwoPKfvt7opuI9G2Hf/PR4aCLDQ7wNmIdEuXJ/QNL72k5q4NejAldPfe3UVVqzkys8YZ/jYOGOp6c+YzRCrCuq0M11y7TiN6qk7YXRMn/gukxrEimbMQjr3jwRM6dKVZ4RUfWQr8noPXLJq6yh5R3EH1IVOHESst/LItbG2D2vRsZRkAObzvQAAD3mb3/G4NzopI0FAiHfbpq0X72adg6SRj+8OHMShtFxxLZlf/nLgRLbClwl5WmaYSs+yEjkq48tY7Z2bE0N91mJwt+ua0NlRJIDh0HikF4UvSVorFj2YVu9YeS5tfvlVjPSoNu/Zu6dEUfBOT555hahBdN3Sa5Xuj2Rvau1lQNIaC944y0RWj9UiNDskAK1WoL+EfXcC6IbBXFRyVfX/WKXxPAwUyIAGW8ggZ08hcijKTt1YKnUO6QPvcrmDVAb0FCLIXn5id4fD/Jx4tw/gbXs7WF9b2RgXtPhLBG9vF5FEkdHAKrQHZAJC/HWvk7nvzzDzIXZlfFTJoC3JpGgLPBY7SQTjGlUvG577yNutZ1hTfs9/1nkSXK9zzKLRZ3VODeKUovJe0WCq1zVMYxCJMenmNzPIU2S8TA4E7wWmbNkxq9rI2dd6v0VpcAPVMxnDsvWTWFayyqvKZO7Z08a62i/oH2/jxf8rpmfO64in3FLiL1GX8IGtVE9M23yGsIqJbxDTy+LtaMWDaPqkymb5VrQdzOvqldeU0SUi6IirG8UZ3jcpRbwHa1C0Dww9G/SFX3gPvTJQE+kyz+g1BeMILKKO+olcHzctOWgzxYHnOD7dpCRtuZEXACjgqesZMasoPgnuDC4nUviAAxDc5pngjoAITIkvhKwg5d608pdrZcA+qn5TMT6Uo/QzBaOxBCLTJX3Mgk85rMfsnWx86oLxf7p2PX5ONqieTa/qM3tPw4ZXvlAp83NSD8F7+ZgctK1TpoYwtiU2h02HCGioH5tkVCqNVTMH5p00sRy2JU1qyDBP2CII/Dg4WDsIl+zgeX7589srx6YORRQMBfKbodbB743Tl4WLKOEnwWUVBsm94SOlCracU72MSyj068wdpYjyz1FwC2bjQnxnB6Mp/pZ+yyZXtguEaYB+kqhjQ6UUmwSFazOb+rhYjLaoiM+aN9/8KKn0zaCTFpN9eKwWy7/u4EHzO46TdFSNjMfn2iPSJwDPCFHc0I1+vjdAZw5ZjqR/uzi9Zn20oAa5JnLEk/EA3VRWE7J/XrupfFJPtCUuqHPpnlL7ISJtRpSVcB8qsZCm2QEkWoROtCKKxUh3yEcMbWYJwk6DlEBG0bZP6eg06FL3v6RPb7odGuwm7FN8fG4woqtB8e7M5klPpo97GoObNwt+ludTAmxyC5hmcFx+dIvEZKI6igFKHqLH01iY1o7903VzG9QGetyVx5RNmBYUU+zIuSva/yIcECUi4pRmE3VkF2avqulQEUY4yZ/wmNboBzPmAPey3+dSYtBZUjeWWT0pPwCz4Vozxp9xeClIU60qvEFMQCaPvPaA70WlOP9f/ey39macvpGCVa+zfa8gO44wbxpJUlC8GN/pRMTQtzY8Z8/hiNrU+Zq64ZfFGIkdj7m7abcK1EBtws1X4J/hnqvasPvvDSDYWN+QcQVGMqXalkDtTad5rYY0TIR1Eqox3czwPMjKPvF5sFv17Thujr1IZ1Ytl4VX1J0vjXKmLY4lmXipRAro0qVGEcXxEVMMEl54jQMd4J7RjgomU0j1ptjyxY+cLiSyXPfiEcIS2lWDK3ISAy6UZ3Hb5vnPncA94411jcy75ay6B6DSTzK6UTCZR9uDANtPBrvIDgjsfarMiwoax2OlLxaSoYn4iRgkpEGqEkwox5tyI8aKkLlfZ12lO11TxsqRMY89j5JaO55XfPJPDL1LGSnC88Re9Ai+Nu5bZjtwRrvFITUFHPR4ZmxGslQMecgbZO7nHk32qHxYkdvWpup07ojcMCaVrpFAyFZJJbNvBpZfdf39Hdo2kPtT7v0/f8R/B5Nz4f1t9/3zNM/7n6SUHfcWk5dfQFJvcJMgPolGCpOFb/WC0FGWU2asuQyT+rm88ZKZ78Cei/CAh939CH0JYbpZIPtxc2ufXqjS3pHH9lnWK4iJ7OjR/EESpCo2R3MYKyE7rHfhTvWho4cL1QdN4jFTyR6syMwFm124TVDDRXMNveI1Dp/ntwdz8k8kxw7iFSx6+Yx6O+1LzMVrN0BBzziZi9kneZSzgollBnVwBh6oSOPHXrglrOj+QmR/AESrhDpKrWT+8/AiMDxS/5wwRNuGQPLlJ9ovomhJWn8sMLVItQ8N/7IXvtD8kdOoHaw+vBSbFImQsv/OCAIui99E+YSIOMlMvBXkAt+NAZK8wB9Jf8CPtB+TOUOR+z71d/AFXpPBT6+A5FLjxMjLIEoJzrQfquvxEIi+WoUzGR1IzQFNvbYOnxb2PyQ0kGdyXKzW2axQL8lNAXPk6NEjqrRD1oZtKLlFoofrXw0dCNWASHzy+7PSzOUJ3XtaPZsxLDjr+o41fKuKWNmjiZtfkOzItvlV2MDGSheGF0ma04qE3TUEfqJMrXFm7DpK+27DSvCUVf7rbNoljPhha5W7KBqVq0ShUSTbRmuqPtQreVWH4JET5yMhuqMoSd4r/N8sDmeQiQQvi1tcZv7Moc7dT5X5AtCD6kNEGZOzVcNYlpX4AbTsLgSYYliiPyVoniuYYySxsBy5cgb3pD+EK0Gpb0wJg031dPgaL8JZt6sIvzNPEHfVPOjXmaXj4bd4voXzpZ5GApMhILgMbCEWZ2zwgdeQgjNHLbPIt+KqxRwWPLTN6HwZ0Ouijj4UF+Sg0Au8XuIKW0WxlexdrFrDcZJ8Shauat3X0XmHygqgL1nAu2hrJFb4wZXkcS+i36KMyU1yFvYv23bQUJi/3yQpqr/naUOoiEWOxckyq/gq43dFou1DVDaYMZK9tho7+IXXokBCs5GRfOcBK7g3A+jXQ39K4YA8PBRW4m5+yR0ZAxWJncjRVbITvIAPHYRt1EJ3YLiUbqIvoKHtzHKtUy1ddRUQ0AUO41vonZDUOW+mrszw+SW/6Q/IUgNpcXFjkM7F4CSSQ2ExZg85otsMs7kqsQD4OxYeBNDcSpifjMoLb7GEbGWTwasVObmB/bfPcUlq0wYhXCYEDWRW02TP5bBrYsKTGWjnWDDJ1F7zWai0zW/2XsCuvBQjPFcTYaQX3tSXRSm8hsAoDdjArK/OFp6vcWYOE7lizP0Yc+8p16i7/NiXIiiQTp7c7Xus925VEtlKAjUdFhyaiLT7VxDagprMFwix4wZ05u0qj7cDWFd0W9OYHIu3JbJKMXRJ1aYNovugg+QqRN7fNHSi26VSgBpn+JfMuPo3aeqPWik/wI5Rz3BWarPQX4i5+dM0npwVOsX+KsOhC7vDg+OJsz4Q5zlnIeflUWL6QYMbf9WDfLmosLF4Qev3mJiOuHjoor/dMeBpA9iKDkMjYBNbRo414HCxjsHrB4EXNbHzNMDHCLuNBG6Sf+J4MZ/ElVsDSLxjIiGsTPhw8BPjxbfQtskj+dyNMKOOcUYIRBEIqbazz3lmjlRQhplxq673VklMMY6597vu+d89ec/zq7Mi4gQvh87ehYbpOuZEXj5g/Q7S7BFDAAB9DzG35SC853xtWVcnZQoH54jeOqYLR9NDuwxsVthTV7V99n/B7HSbAytbEyVTz/5NhJ8gGIjG0E5j3griULUd5Rg7tQR+90hJgNQKQH2btbSfPcaTOfIexc1db1BxUOhM1vWCpLaYuKr3FdNTt/T3PWCpEUWDKEtzYrjpzlL/wri3MITKsFvtF8QVV/NhVo97aKIBgdliNc10dWdXVDpVtsNn+2UIolrgqdWA4EY8so0YvB4a+aLzMXiMAuOHQrXY0tr+CL10JbvZzgjJJuB1cRkdT7DUqTvnswVUp5kkUSFVtIIFYK05+tQxT6992HHNWVhWxUsD1PkceIrlXuUVRogwmfdhyrf6zzaL8+c0L7GXMZOteAhAVQVwdJh+7nrX7x4LaIIfz2F2v7Dg/uDfz2Fa+4gFm2zHAor8UqimJG3VTJtZEoFXhnDYXvxMJFc6ku2bhbCxzij2z5UNuK0jmp1mnvkVNUfR+SEmj1Lr94Lym75PO7Fs0MIr3GdsWXRXSfgLTVY0FLqba97u1In8NAcY7IC6TjWLigwKEIm43NxTdaVTv9mcKkzuzBkKd8x/xt1p/9BbP7Wyb4bpo1K1gnOpbLvKz58pWl3B55RJ/Z5mRDLPtNQg14jdOEs9+h/V5UVpwrAI8kGbX8KPVPDIMfIqKDjJD9UyDOPhjZ3vFAyecwyq4akUE9mDOtJEK1hpDyi6Ae87sWAClXGTiwPwN7PXWwjxaR79ArHRIPeYKTunVW24sPr/3HPz2IwH8oKH4OlWEmt4BLM6W5g4kMcYbLwj2usodD1088stZA7VOsUSpEVl4w7NMb1EUHMRxAxLF0CIV+0L3iZb+ekB1vSDSFjAZ3hfLJf7gFaXrOKn+mhR+rWw/eTXIcAgl4HvFuBg1LOmOAwJH3eoVEjjwheKA4icbrQCmvAtpQ0mXG0agYp5mj4Rb6mdQ+RV4QBPbxMqh9C7o8nP0Wko2ocnCHeRGhN1XVyT2b9ACsL+6ylUy+yC3QEnaKRIJK91YtaoSrcWZMMwxuM0E9J68Z+YyjA0g8p1PfHAAIROy6Sa04VXOuT6A351FOWhKfTGsFJ3RTJGWYPoLk5FVK4OaYR9hkJvezwF9vQN1126r6isMGXWTqFW+3HL3I/jurlIdDWIVvYY+s6yq7lrFSPAGRdnU7PVwY/SvWbZGpXzy3BQ2LmAJlrONUsZs4oGkly0V267xbD5KMY8woNNsmWG1VVgLCra8aQBBcI4DP2BlNwxhiCtHlaz6OWFoCW0vMR3ErrG7JyMjTSCnvRcsEHgmPnwA6iNpJ2DrFb4gLlhKJyZGaWkA97H6FFdwEcLT6DRQQL++fOkVC4cYGW1TG/3iK5dShRSuiBulmihqgjR45Vi03o2RbQbP3sxt90VxQ6vzdlGfkXmmKmjOi080JSHkLntjvsBJnv7gKscOaTOkEaRQqAnCA4HWtB4XnMtOhpRmH2FH8tTXrIjAGNWEmudQLCkcVlGTQ965Kh0H6ixXbgImQP6b42B49sO5C8pc7iRlgyvSYvcnH9FgQ3azLbQG2cUW96SDojTQStxkOJyOuDGTHAnnWkz29aEwN9FT8EJ4yhXOg+jLTrCPKeEoJ9a7lDXOjEr8AgX4BmnMQ668oW0zYPyQiVMPxKRHtpfnEEyaKhdzNVThlxxDQNdrHeZiUFb6NoY2KwvSb7BnRcpJy+/g/zAYx3fYSN5QEaVD2Y1VsNWxB0BSO12MRsRY8JLfAezRMz5lURuLUnG1ToKk6Q30FughqWN6gBNcFxP/nY/iv+iaUQOa+2Nuym46wtI/DvSfzSp1jEi4SdYBE7YhTiVV5cX9gwboVDMVgZp5YBQlHOQvaDNfcCoCJuYhf5kz5kwiIKPjzgpcRJHPbOhJajeoeRL53cuMahhV8Z7IRr6M4hW0JzT7mzaMUzQpm866zwM7Cs07fJYXuWvjAMkbe5O6V4bu71sOG6JQ4oL8zIeXHheFVavzxmlIyBkgc9IZlEDplMPr8xlcyss4pVUdwK1e7CK2kTsSdq7g5SHRAl3pYUB9Ko4fsh4qleOyJv1z3KFSTSvwEcRO/Ew8ozEDYZSqpfoVW9uhJfYrNAXR0Z3VmeoAD+rVWtwP/13sE/3ICX3HhDG3CMc476dEEC0K3umSAD4j+ZQLVdFOsWL2C1TH5+4KiSWH+lMibo+B55hR3Gq40G1n25sGcN0mEcoU2wN9FCVyQLBhYOu9aHVLWjEKx2JIUZi5ySoHUAI9b8hGzaLMxCZDMLhv8MkcpTqEwz9KFDpCpqQhVmsGQN8m24wyB82FAKNmjgfKRsXRmsSESovAwXjBIoMKSG51p6Um8b3i7GISs7kjTq/PZoioCfJzfKdJTN0Q45kQEQuh9H88M3yEs3DbtRTKALraM0YC8laiMiOOe6ADmTcCiREeAWZelBaEXRaSuj2lx0xHaRYqF65O0Lo5OCFU18A8cMDE4MLYm9w2QSr9NgQAIcRxZsNpA7UJR0e71JL+VU+ISWFk5I97lra8uGg7GlQYhGd4Gc6rxsLFRiIeGO4abP4S4ekQ1fiqDCy87GZHd52fn5aaDGuvOmIofrzpVwMvtbreZ/855OaXTRcNiNE0wzGZSxbjg26v8ko8L537v/XCCWP2MFaArJpvnkep0pA+O86MWjRAZPQRfznZiSIaTppy6m3p6HrNSsY7fDtz7Cl4V/DJAjQDoyiL2uwf1UHVd2AIrzBUSlJaTj4k6NL97a/GqhWKU9RUmjnYKpm2r+JYUcrkCuZKvcYvrg8pDoUKQywY9GDWg03DUFSirlUXBS5SWn/KAntnf0IdHGL/7mwXqDG+LZYjbEdQmqUqq4y54TNmWUP7IgcAw5816YBzwiNIJiE9M4lPCzeI/FGBeYy3p6IAmH4AjXXmvQ4Iy0Y82NTobcAggT2Cdqz6Mx4TdGoq9fn2etrWKUNFyatAHydQTVUQ2S5OWVUlugcNvoUrlA8cJJz9MqOa/W3iVno4zDHfE7zhoY5f5lRTVZDhrQbR8LS4eRLz8iPMyBL6o4PiLlp89FjdokQLaSBmKHUwWp0na5fE3v9zny2YcDXG/jfI9sctulHRbdkI5a4GOPJx4oAJQzVZ/yYAado8KNZUdEFs9ZPiBsausotXMNebEgr0dyopuqfScFJ3ODNPHgclACPdccwv0YJGQdsN2lhoV4HVGBxcEUeUX/alr4nqpcc1CCR3vR7g40zteQg/JvWmFlUE4mAiTpHlYGrB7w+U2KdSwQz2QJKBe/5eiixWipmfP15AFWrK8Sh1GBBYLgzki1wTMhGQmagXqJ2+FuqJ8f0XzXCVJFHQdMAw8xco11HhM347alrAu+wmX3pDFABOvkC+WPX0Uhg1Z5MVHKNROxaR84YV3s12UcM+70cJ460SzEaKLyh472vOMD3XnaK7zxZcXlWqenEvcjmgGNR2OKbI1s8U+iwiW+HotHalp3e1MGDy6BMVIvajnAzkFHbeVsgjmJUkrP9OAwnEHYXVBqYx3q7LvXjoVR0mY8h+ZaOnh053pdsGkmbqhyryN01eVHySr+CkDYkSMeZ1xjPNVM+gVLTDKu2VGsMUJqWO4TwPDP0VOg2/8ITbAUaMGb4LjL7L+Pi11lEVMXTYIlAZ/QHmTENjyx3kDkBdfcvvQt6tKk6jYFM4EG5UXDTaF5+1ZjRz6W7MdJPC+wTkbDUim4p5QQH3b9kGk2Bkilyeur8Bc20wm5uJSBO95GfYDI1EZipoRaH7uVveneqz43tlTZGRQ4a7CNmMHgXyOQQOL6WQkgMUTQDT8vh21aSdz7ERiZT1jK9F+v6wgFvuEmGngSvIUR2CJkc5tx1QygfZnAruONobB1idCLB1FCfO7N1ZdRocT8/Wye+EnDiO9pzqIpnLDl4bkaRKW+ekBVwHn46Shw1X0tclt/0ROijuUB4kIInrVJU4buWf4YITJtjOJ6iKdr1u+flgQeFH70GxKjhdgt/MrwfB4K/sXczQ+9zYcrD4dhY6qZhZ010rrxggWA8JaZyg2pYij8ieYEg1aZJkZK9O1Re7sB0iouf60rK0Gd+AYlp7soqCBCDGwfKeUQhCBn0E0o0GS6PdmjLi0TtCYZeqazqwN+yNINIA8Lk3iPDnWUiIPLGNcHmZDxfeK0iAdxm/T7LnN+gemRL61hHIc0NCAZaiYJR+OHnLWSe8sLrK905B5eEJHNlWq4RmEXIaFTmo49f8w61+NwfEUyuJAwVqZCLFcyHBKAcIVj3sNzfEOXzVKIndxHw+AR93owhbCxUZf6Gs8cz6/1VdrFEPrv330+9s6BtMVPJ3zl/Uf9rUi0Z/opexfdL3ykF76e999GPfVv8fJv/Y/+/5hEMon1tqNFyVRevV9y9/uIvsG3dbB8GRRrgaEXfhx+2xeOFt+cEn3RZanNxdEe2+B6MHpNbrRE53PlDifPvFcp4kO78ILR0T4xyW/WGPyBsqGdoA7zJJCu1TKbGfhnqgnRbxbB2B3UZoeQ2bz2sTVnUwokTcTU21RxN1PYPS3Sar7T0eRIsyCNowr9amwoMU/od9s2APtiKNL6ENOlyKADstAEWKA+sdKDhrJ6BOhRJmZ+QJbAaZ3/5Fq0/lumCgEzGEbu3yi0Y4I4EgVAjqxh4HbuQn0GrRhOWyAfsglQJAVL1y/6yezS2k8RE2MstJLh92NOB3GCYgFXznF4d25qiP4ZCyI4RYGesut6FXK6GwPpKK8WHEkhYui0AyEmr5Ml3uBFtPFdnioI8RiCooa7Z1G1WuyIi3nSNglutc+xY8BkeW3JJXPK6jd2VIMpaSxpVtFq+R+ySK9J6WG5Qvt+C+QH1hyYUOVK7857nFmyDBYgZ/o+AnibzNVqyYCJQvyDXDTK+iXdkA71bY7TL3bvuLxLBQ8kbTvTEY9aqkQ3+MiLWbEgjLzOH+lXgco1ERgzd80rDCymlpaRQbOYnKG/ODoFl46lzT0cjM5FYVvv0qLUbD5lyJtMUaC1pFlTkNONx6lliaX9o0i/1vws5bNKn5OuENQEKmLlcP4o2ZmJjD4zzd3Fk32uQ4uRWkPSUqb4LBe3EXHdORNB2BWsws5daRnMfNVX7isPSb1hMQdAJi1/qmDMfRUlCU74pmnzjbXfL8PVG8NsW6IQM2Ne23iCPIpryJjYbVnm5hCvKpMa7HLViNiNc+xTfDIaKm3jctViD8A1M9YPJNk003VVr4Zo2MuGW8vil8SLaGpPXqG7I4DLdtl8a4Rbx1Lt4w5Huqaa1XzZBtj208EJVGcmKYEuaeN27zT9EE6a09JerXdEbpaNgNqYJdhP1NdqiPKsbDRUi86XvvNC7rME5mrSQtrzAZVndtSjCMqd8BmaeGR4l4YFULGRBeXIV9Y4yxLFdyoUNpiy2IhePSWzBofYPP0eIa2q5JP4j9G8at/AqoSsLAUuRXtvgsqX/zYwsE+of6oSDbUOo4RMJw+DOUTJq+hnqwKim9Yy/napyZNTc2rCq6V9jHtJbxGPDwlzWj/Sk3zF/BHOlT/fSjSq7FqlPI1q6J+ru8Aku008SFINXZfOfnZNOvGPMtEmn2gLPt+H4QLA+/SYe4j398auzhKIp2Pok3mPC5q1IN1HgR+mnEfc4NeeHYwd2/kpszR3cBn7ni9NbIqhtSWFW8xbUJuUPVOeeXu3j0IGZmFNiwaNZ6rH4/zQ2ODz6tFxRLsUYZu1bfd1uIvfQDt4YD/efKYv8VF8bHGDgK22w2Wqwpi43vNCOXFJZCGMqWiPbL8mil6tsmOTXAWCyMCw73e2rADZj2IK6rqksM3EXF2cbLb4vjB14wa/yXK5vwU+05MzERJ5nXsXsW21o7M+gO0js2OyKciP5uF2iXyb2DiptwQeHeqygkrNsqVCSlldxBMpwHi1vfc8RKpP/4L3Lmpq6DZcvhDDfxTCE3splacTcOtXdK2g303dIWBVe2wD/Gvja1cClFQ67gw0t1ZUttsUgQ1Veky8oOpS6ksYEc4bqseCbZy766SvL3FodmnahlWJRgVCNjPxhL/fk2wyvlKhITH/VQCipOI0dNcRa5B1M5HmOBjTLeZQJy237e2mobwmDyJNHePhdDmiknvLKaDbShL+Is1XTCJuLQd2wmdJL7+mKvs294whXQD+vtd88KKk0DXP8B1Xu9J+xo69VOuFgexgTrcvI6SyltuLix9OPuE6/iRJYoBMEXxU4shQMf4Fjqwf1PtnJ/wWSZd29rhZjRmTGgiGTAUQqRz+nCdjeMfYhsBD5Lv60KILWEvNEHfmsDs2L0A252351eUoYxAysVaCJVLdH9QFWAmqJDCODUcdoo12+gd6bW2boY0pBVHWL6LQDK5bYWh1V8vFvi0cRpfwv7cJiMX3AZNJuTddHehTIdU0YQ/sQ1dLoF2xQPcCuHKiuCWOY30DHe1OwcClLAhqAKyqlnIbH/8u9ScJpcS4kgp6HKDUdiOgRaRGSiUCRBjzI5gSksMZKqy7Sd51aeg0tgJ+x0TH9YH2Mgsap9N7ENZdEB0bey2DMTrBA1hn56SErNHf3tKtqyL9b6yXEP97/rc+jgD2N1LNUH6RM9AzP3kSipr06RkKOolR7HO768jjWiH1X92jA7dkg7gcNcjqsZCgfqWw0tPXdLg20cF6vnQypg7gLtkazrHAodyYfENPQZsdfnjMZiNu4nJO97D1/sQE+3vNFzrSDOKw+keLECYf7RJwVHeP/j79833oZ0egonYB2FlFE5qj02B/LVOMJQlsB8uNg3Leg4qtZwntsOSNidR0abbZmAK4sCzvt8Yiuz2yrNCJoH5O8XvX/vLeR/BBYTWj0sOPYM/jyxRd5+/JziKAABaPcw/34UA3aj/gLZxZgRCWN6m4m3demanNgsx0P237/Q+Ew5VYnJPkyCY0cIVHoFn2Ay/e7U4P19APbPFXEHX94N6KhEMPG7iwB3+I+O1jd5n6VSgHegxgaSawO6iQCYFgDsPSMsNOcUj4q3sF6KzGaH/0u5PQoAj/8zq6Uc9MoNrGqhYeb2jQo0WlGlXjxtanZLS24/OIN5Gx/2g684BPDQpwlqnkFcxpmP/osnOXrFuu4PqifouQH0eF5qCkvITQbJw/Zvy5mAHWC9oU+cTiYhJmSfKsCyt1cGVxisKu+NymEQIAyaCgud/V09qT3nk/9s/SWsYtha7yNpzBIMM40rCSGaJ9u6lEkl00vXBiEt7p9P5IBCiavynEOv7FgLqPdeqxRiCwuFVMolSIUBcoyfUC2e2FJSAUgYdVGFf0b0Kn2EZlK97yyxrT2MVgvtRikfdaAW8RwEEfN+B7/eK8bBdp7URpbqn1xcrC6d2UjdsKbzCjBFqkKkoZt7Mrhg6YagE7spkqj0jOrWM+UGQ0MUlG2evP1uE1p2xSv4dMK0dna6ENcNUF+xkaJ7B764NdxLCpuvhblltVRAf7vK5qPttJ/9RYFUUSGcLdibnz6mf7WkPO3MkUUhR2mAOuGv8IWw5XG1ZvoVMnjSAZe6T7WYA99GENxoHkMiKxHlCuK5Gd0INrISImHQrQmv6F4mqU/TTQ8nHMDzCRivKySQ8dqkpQgnUMnwIkaAuc6/FGq1hw3b2Sba398BhUwUZSAIO8XZvnuLdY2n6hOXws+gq9BHUKcKFA6kz6FDnpxLPICa3qGhnc97bo1FT/XJk48LrkHJ2CAtBv0RtN97N21plfpXHvZ8gMJb7Zc4cfI6MbPwsW7AilCSXMFIEUEmir8XLEklA0ztYbGpTTGqttp5hpFTTIqUyaAIqvMT9A/x+Ji5ejA4Bhxb/cl1pUdOD6epd3yilIdO6j297xInoiBPuEDW2/UfslDyhGkQs7Wy253bVnlT+SWg89zYIK/9KXFl5fe+jow2rd5FXv8zDPrmfMXiUPt9QBO/iK4QGbX5j/7Rx1c1vzsY8ONbP3lVIaPrhL4+1QrECTN3nyKavGG0gBBtHvTKhGoBHgMXHStFowN+HKrPriYu+OZ05Frn8okQrPaaxoKP1ULCS/cmKFN3gcH7HQlVjraCeQmtjg1pSQxeuqXiSKgLpxc/1OiZsU4+n4lz4hpahGyWBURLi4642n1gn9qz9bIsaCeEPJ0uJmenMWp2tJmIwLQ6VSgDYErOeBCfSj9P4G/vI7oIF+l/n5fp956QgxGvur77ynawAu3G9MdFbJbu49NZnWnnFcQHjxRuhUYvg1U/e84N4JTecciDAKb/KYIFXzloyuE1eYXf54MmhjTq7B/yBToDzzpx3tJCTo3HCmVPYfmtBRe3mPYEE/6RlTIxbf4fSOcaKFGk4gbaUWe44hVk9SZzhW80yfW5QWBHxmtUzvMhfVQli4gZTktIOZd9mjJ5hsbmzttaHQB29Am3dZkmx3g/qvYocyhZ2PXAWsNQiIaf+Q8W/MWPIK7/TjvCx5q2XRp4lVWydMc2wIQkhadDB0xsnw/kSEyGjLKjI4coVIwtubTF3E7MJ6LS6UOsJKj82XVAVPJJcepfewbzE91ivXZvOvYfsmMevwtPpfMzGmC7WJlyW2j0jh7AF1JLmwEJSKYwIvu6DHc3YnyLH9ZdIBnQ+nOVDRiP+REpqv++typYHIvoJyICGA40d8bR7HR2k7do6UQTHF4oriYeIQbxKe4Th6+/l1BjUtS9hqORh3MbgvYrStXTfSwaBOmAVQZzpYNqsAmQyjY56MUqty3c/xH6GuhNvNaG9vGbG6cPtBM8UA3e8r51D0AR9kozKuGGSMgLz3nAHxDNnc7GTwpLj7/6HeWp1iksDeTjwCLpxejuMtpMnGJgsiku1sOACwQ9ukzESiDRN77YNESxR5LphOlcASXA5uIts1LnBIcn1J7BLWs49DMALSnuz95gdOrTZr0u1SeYHinno/pE58xYoXbVO/S+FEMMs5qyWkMnp8Q3ClyTlZP52Y9nq7b8fITPuVXUk9ohG5EFHw4gAEcjFxfKb3xuAsEjx2z1wxNbSZMcgS9GKyW3R6KwJONgtA64LTyxWm8Bvudp0M1FdJPEGopM4Fvg7G/hsptkhCfHFegv4ENwxPeXmYhxwZy7js+BeM27t9ODBMynVCLJ7RWcBMteZJtvjOYHb5lOnCLYWNEMKC59BA7covu1cANa2PXL05iGdufOzkgFqqHBOrgQVUmLEc+Mkz4Rq8O6WkNr7atNkH4M8d+SD1t/tSzt3oFql+neVs+AwEI5JaBJaxARtY2Z4mKoUqxds4UpZ0sv3zIbNoo0J4fihldQTX3XNcuNcZmcrB5LTWMdzeRuAtBk3cZHYQF6gTi3PNuDJ0nmR+4LPLoHvxQIxRgJ9iNNXqf2SYJhcvCtJiVWo85TsyFOuq7EyBPJrAdhEgE0cTq16FQXhYPJFqSfiVn0IQnPOy0LbU4BeG94QjdYNB0CiQ3QaxQqD2ebSMiNjaVaw8WaM4Z5WnzcVDsr4eGweSLa2DE3BWViaxhZFIcSTjgxNCAfelg+hznVOYoe5VqTYs1g7WtfTm3e4/WduC6p+qqAM8H4ZyrJCGpewThTDPe6H7CzX/zQ8Tm+r65HeZn+MsmxUciEWPlAVaK/VBaQBWfoG/aRL/jSZIQfep/89GjasWmbaWzeEZ2R1FOjvyJT37O9B8046SRSKVEnXWlBqbkb5XCS3qFeuE9xb9+frEknxWB5h1D/hruz2iVDEAS7+qkEz5Ot5agHJc7WCdY94Ws61sURcX5nG8UELGBAHZ3i+3VulAyT0nKNNz4K2LBHBWJcTBX1wzf+//u/j/9+//v87+9/l9Lbh/L/uyNYiTsWV2LwsjaA6MxTuzFMqmxW8Jw/+IppdX8t/Clgi1rI1SN0UC/r6tX/4lUc2VV1OQReSeCsjUpKZchw4XUcjHfw6ryCV3R8s6VXm67vp4n+lcPV9gJwmbKQEsmrJi9c2vkwrm8HFbVYNTaRGq8D91t9n5+U+aD/hNtN3HjC/nC/vUoGFSCkXP+NlRcmLUqLbiUBl4LYf1U/CCvwtd3ryCH8gUmGITAxiH1O5rnGTz7y1LuFjmnFGQ1UWuM7HwfXtWl2fPFKklYwNUpF2IL/TmaRETjQiM5SJacI+3Gv5MBU8lP5Io6gWkawpyzNEVGqOdx4YlO1dCvjbWFZWbCmeiFKPSlMKtKcMFLs/KQxtgAHi7NZNCQ32bBAW2mbHflVZ8wXKi1JKVHkW20bnYnl3dKWJeWJOiX3oKPBD6Zbi0ZvSIuWktUHB8qDR8DMMh1ZfkBL9FS9x5r0hBGLJ8pUCJv3NYH+Ae8p40mZWd5m5fhobFjQeQvqTT4VKWIYfRL0tfaXKiVl75hHReuTJEcqVlug+eOIIc4bdIydtn2K0iNZPsYWQvQio2qbO3OqAlPHDDOB7DfjGEfVF51FqqNacd6QmgFKJpMfLp5DHTv4wXlONKVXF9zTJpDV4m1sYZqJPhotcsliZM8yksKkCkzpiXt+EcRQvSQqmBS9WdWkxMTJXPSw94jqI3varCjQxTazjlMH8jTS8ilaW8014/vwA/LNa+YiFoyyx3s/KswP3O8QW1jtq45yTM/DX9a8M4voTVaO2ebvw1EooDw/yg6Y1faY+WwrdVs5Yt0hQ5EwRfYXSFxray1YvSM+kYmlpLG2/9mm1MfmbKHXr44Ih8nVKb1M537ZANUkCtdsPZ80JVKVKabVHCadaLXg+IV8i5GSwpZti0h6diTaKs9sdpUKEpd7jDUpYmHtiX33SKiO3tuydkaxA7pEc9XIQEOfWJlszj5YpL5bKeQyT7aZSBOamvSHl8xsWvgo26IP/bqk+0EJUz+gkkcvlUlyPp2kdKFtt7y5aCdks9ZJJcFp5ZWeaWKgtnXMN3ORwGLBE0PtkEIek5FY2aVssUZHtsWIvnljMVJtuVIjpZup/5VL1yPOHWWHkOMc6YySWMckczD5jUj2mlLVquFaMU8leGVaqeXis+aRRL8zm4WuBk6cyWfGMxgtr8useQEx7k/PvRoZyd9nde1GUCV84gMX8Ogu/BWezYPSR27llzQnA97oo0pYyxobYUJfsj+ysTm9zJ+S4pk0TGo9VTG0KjqYhTmALfoDZVKla2b5yhv241PxFaLJs3i05K0AAIdcGxCJZmT3ZdT7CliR7q+kur7WdQjygYtOWRL9B8E4s4LI8KpAj7bE0dg7DLOaX+MGeAi0hMMSSWZEz+RudXbZCsGYS0QqiXjH9XQbd8sCB+nIVTq7/T/FDS+zWY9q7Z2fdq1tdLb6v3hKKVDAw5gjj6o9r1wHFROdHc18MJp4SJ2Ucvu+iQ9EgkekW8VCM+psM6y+/2SBy8tNN4a3L1MzP+OLsyvESo5gS7IQOnIqMmviJBVc6zbVG1n8eXiA3j46kmvvtJlewwNDrxk4SbJOtP/TV/lIVK9ueShNbbMHfwnLTLLhbZuO79ec5XvfgRwLFK+w1r5ZWW15rVFZrE+wKqNRv5KqsLNfpGgnoUU6Y71NxEmN7MyqwqAQqoIULOw/LbuUB2+uE75gJt+kq1qY4LoxV+qR/zalupea3D5+WMeaRIn0sAI6DDWDh158fqUb4YhAxhREbUN0qyyJYkBU4V2KARXDT65gW3gRsiv7xSPYEKLwzgriWcWgPr0sbZnv7m1XHNFW6xPdGNZUdxFiUYlmXNjDVWuu7LCkX/nVkrXaJhiYktBISC2xgBXQnNEP+cptWl1eG62a7CPXrnrkTQ5BQASbEqUZWMDiZUisKyHDeLFOaJILUo5f6iDt4ZO8MlqaKLto0AmTHVVbkGuyPa1R/ywZsWRoRDoRdNMMHwYTsklMVnlAd2S0282bgMI8fiJpDh69OSL6K3qbo20KfpNMurnYGQSr/stFqZ7hYsxKlLnKAKhsmB8AIpEQ4bd/NrTLTXefsE6ChRmKWjXKVgpGoPs8GAicgKVw4K0qgDgy1A6hFq1WRat3fHF+FkU+b6H4NWpOU3KXTxrIb2qSHAb+qhm8hiSROi/9ofapjxhyKxxntPpge6KL5Z4+WBMYkAcE6+0Hd3Yh2zBsK2MV3iW0Y6cvOCroXlRb2MMJtdWx+3dkFzGh2Pe3DZ9QpSqpaR/rE1ImOrHqYYyccpiLC22amJIjRWVAherTfpQLmo6/K2pna85GrDuQPlH1Tsar8isAJbXLafSwOof4gg9RkAGm/oYpBQQiPUoyDk2BCQ1k+KILq48ErFo4WSRhHLq/y7mgw3+L85PpP6xWr6cgp9sOjYjKagOrxF148uhuaWtjet953fh1IQiEzgC+d2IgBCcUZqgTAICm2bR8oCjDLBsmg+ThyhfD+zBalsKBY1Ce54Y/t9cwfbLu9SFwEgphfopNA3yNxgyDafUM3mYTovZNgPGdd4ZFFOj1vtfFW3u7N+iHEN1HkeesDMXKPyoCDCGVMo4GCCD6PBhQ3dRZIHy0Y/3MaE5zU9mTCrwwnZojtE+qNpMSkJSpmGe0EzLyFelMJqhfFQ7a50uXxZ8pCc2wxtAKWgHoeamR2O7R+bq7IbPYItO0esdRgoTaY38hZLJ5y02oIVwoPokGIzxAMDuanQ1vn2WDQ00Rh6o5QOaCRu99fwDbQcN0XAuqkFpxT/cfz3slGRVokrNU0iqiMAJFEbKScZdmSkTUznC0U+MfwFOGdLgsewRyPKwBZYSmy6U325iUhBQNxbAC3FLKDV9VSOuQpOOukJ/GAmu/tyEbX9DgEp6dv1zoU0IqzpG6gssSjIYRVPGgU1QAQYRgIT8gEV0EXr1sqeh2I6rXjtmoCYyEDCe/PkFEi/Q48FuT29p557iN+LCwk5CK/CZ2WdAdfQZh2Z9QGrzPLSNRj5igUWzl9Vi0rCqH8G1Kp4QMLkuwMCAypdviDXyOIk0AHTM8HBYKh3b0/F+DxoNj4ZdoZfCpQVdnZarqoMaHWnMLNVcyevytGsrXQEoIbubqWYNo7NRHzdc0zvT21fWVirj7g36iy6pxogfvgHp1xH1Turbz8QyyHnXeBJicpYUctbzApwzZ1HT+FPEXMAgUZetgeGMwt4G+DHiDT2Lu+PT21fjJCAfV16a/Wu1PqOkUHSTKYhWW6PhhHUlNtWzFnA7MbY+r64vkwdpfNB2JfWgWXAvkzd42K4lN9x7Wrg4kIKgXCb4mcW595MCPJ/cTfPAMQMFWwnqwde4w8HZYJFpQwcSMhjVz4B8p6ncSCN1X4klxoIH4BN2J6taBMj6lHkAOs8JJAmXq5xsQtrPIPIIp/HG6i21xMGcFgqDXSRF0xQg14d2uy6HgKE13LSvQe52oShF5Jx1R6avyL4thhXQZHfC94oZzuPUBKFYf1VvDaxIrtV6dNGSx7DO0i1p6CzBkuAmEqyWceQY7F9+U0ObYDzoa1iKao/cOD/v6Q9gHrrr1uCeOk8fST9MG23Ul0KmM3r+Wn6Hi6WAcL7gEeaykicvgjzkjSwFsAXIR81Zx4QJ6oosVyJkCcT+4xAldCcihqvTf94HHUPXYp3REIaR4dhpQF6+FK1H0i9i7Pvh8owu3lO4PT1iuqu+DkL2Bj9+kdfGAg2TXw03iNHyobxofLE2ibjsYDPgeEQlRMR7afXbSGQcnPjI2D+sdtmuQ771dbASUsDndU7t58jrrNGRzISvwioAlHs5FA+cBE5Ccznkd8NMV6BR6ksnKLPZnMUawRDU1MZ/ib3xCdkTblHKu4blNiylH5n213yM0zubEie0o4JhzcfAy3H5qh2l17uLooBNLaO+gzonTH2uF8PQu9EyH+pjGsACTMy4cHzsPdymUSXYJOMP3yTkXqvO/lpvt0cX5ekDEu9PUfBeZODkFuAjXCaGdi6ew4qxJ8PmFfwmPpkgQjQlWqomFY6UkjmcnAtJG75EVR+NpzGpP1Ef5qUUbfowrC3zcSLX3BxgWEgEx/v9cP8H8u1Mvt9/rMDYf6sjwU1xSOPBgzFEeJLMRVFtKo5QHsUYT8ZRLCah27599EuqoC9PYjYO6aoAMHB8X1OHwEAYouHfHB3nyb2B+SnZxM/vw/bCtORjLMSy5aZoEpvgdGvlJfNPFUu/p7Z4VVK1hiI0/UTuB3ZPq4ohEbm7Mntgc1evEtknaosgZSwnDC2BdMmibpeg48X8Ixl+/8+xXdbshQXUPPvx8jT3fkELivHSmqbhblfNFShWAyQnJ3WBU6SMYSIpTDmHjdLVAdlADdz9gCplZw6mTiHqDwIsxbm9ErGusiVpg2w8Q3khKV/R9Oj8PFeF43hmW/nSd99nZzhyjCX3QOZkkB6BsH4H866WGyv9E0hVAzPYah2tkRfQZMmP2rinfOeQalge0ovhduBjJs9a1GBwReerceify49ctOh5/65ATYuMsAkVltmvTLBk4oHpdl6i+p8DoNj4Fb2vhdFYer2JSEilEwPd5n5zNoGBXEjreg/wh2NFnNRaIUHSOXa4eJRwygZoX6vnWnqVdCRT1ARxeFrNBJ+tsdooMwqnYhE7zIxnD8pZH+P0Nu1wWxCPTADfNWmqx626IBJJq6NeapcGeOmbtXvl0TeWG0Y7OGGV4+EHTtNBIT5Wd0Bujl7inXgZgfXTM5efD3qDTJ54O9v3Bkv+tdIRlq1kXcVD0BEMirmFxglNPt5pedb1AnxuCYMChUykwsTIWqT23XDpvTiKEru1cTcEMeniB+HQDehxPXNmkotFdwUPnilB/u4Nx5Xc6l8J9jH1EgKZUUt8t8cyoZleDBEt8oibDmJRAoMKJ5Oe9CSWS5ZMEJvacsGVdXDWjp/Ype5x0p9PXB2PAwt2LRD3d+ftNgpuyvxlP8pB84oB1i73vAVpwyrmXW72hfW6Dzn9Jkj4++0VQ4d0KSx1AsDA4OtXXDo63/w+GD+zC7w5SJaxsmnlYRQ4dgdjA7tTl2KNLnpJ+mvkoDxtt1a4oPaX3EVqj96o9sRKBQqU7ZOiupeAIyLMD+Y3YwHx30XWHB5CQiw7q3mj1EDlP2eBsZbz79ayUMbyHQ7s8gu4Lgip1LiGJj7NQj905/+rgUYKAA5qdrlHKIknWmqfuR+PB8RdBkDg/NgnlT89G72h2NvySnj7UyBwD+mi/IWs1xWbxuVwUIVXun5cMqBtFbrccI+DILjsVQg6eeq0itiRfedn89CvyFtpkxaauEvSANuZmB1p8FGPbU94J9medwsZ9HkUYjmI7OH5HuxendLbxTaYrPuIfE2ffXFKhoNBUp33HsFAXmCV/Vxpq5AYgFoRr5Ay93ZLRlgaIPjhZjXZZChT+aE5iWAXMX0oSFQEtwjiuhQQItTQX5IYrKfKB+queTNplR1Hoflo5/I6aPPmACwQCE2jTOYo5Dz1cs7Sod0KTG/3kEDGk3kUaUCON19xSJCab3kNpWZhSWkO8l+SpW70Wn3g0ciOIJO5JXma6dbos6jyisuxXwUUhj2+1uGhcvuliKtWwsUTw4gi1c/diEEpZHoKoxTBeMDmhPhKTx7TXWRakV8imJR355DcIHkR9IREHxohP4TbyR5LtFU24umRPRmEYHbpe1LghyxPx7YgUHjNbbQFRQhh4KeU1EabXx8FS3JAxp2rwRDoeWkJgWRUSKw6gGP5U2PuO9V4ZuiKXGGzFQuRuf+tkSSsbBtRJKhCi3ENuLlXhPbjTKD4djXVnfXFds6Zb+1XiUrRfyayGxJq1+SYBEfbKlgjiSmk0orgTqzSS+DZ5rTqsJbttiNtp+KMqGE2AHGFw6jQqM5vD6vMptmXV9OAjq49Uf/Lx9Opam+Hn5O9p8qoBBAQixzQZ4eNVkO9sPzJAMyR1y4/RCQQ1s0pV5KAU5sKLw3tkcFbI/JqrjCsK4Mw+W8aod4lioYuawUiCyVWBE/qPaFi5bnkgpfu/ae47174rI1fqQoTbW0HrU6FAejq7ByM0V4zkZTg02/YJK2N7hUQRCeZ4BIgSEqgD8XsjzG6LIsSbuHoIdz/LhFzbNn1clci1NHWJ0/6/O8HJMdIpEZbqi1RrrFfoo/rI/7ufm2MPG5lUI0IYJ4MAiHRTSOFJ2oTverFHYXThkYFIoyFx6rMYFgaOKM4xNWdlOnIcKb/suptptgTOTdVIf4YgdaAjJnIAm4qNNHNQqqAzvi53GkyRCEoseUBrHohZsjUbkR8gfKtc/+Oa72lwxJ8Mq6HDfDATbfbJhzeIuFQJSiw1uZprHlzUf90WgqG76zO0eCB1WdPv1IT6sNxxh91GEL2YpgC97ikFHyoaH92ndwduqZ6IYjkg20DX33MWdoZk7QkcKUCgisIYslOaaLyvIIqRKWQj16jE1DlQWJJaPopWTJjXfixEjRJJo8g4++wuQjbq+WVYjsqCuNIQW3YjnxKe2M5ZKEqq+cX7ZVgnkbsU3RWIyXA1rxv4kGersYJjD//auldXGmcEbcfTeF16Y1708FB1HIfmWv6dSFi6oD4E+RIjCsEZ+kY7dKnwReJJw3xCjKvi3kGN42rvyhUlIz0Bp+fNSV5xwFiuBzG296e5s/oHoFtUyUplmPulIPl+e1CQIQVtjlzLzzzbV+D/OVQtYzo5ixtMi5BmHuG4N/uKfJk5UIREp7+12oZlKtPBomXSzAY0KgtbPzzZoHQxujnREUgBU+O/jKKhgxVhRPtbqyHiUaRwRpHv7pgRPyUrnE7fYkVblGmfTY28tFCvlILC04Tz3ivkNWVazA+OsYrxvRM/hiNn8Fc4bQBeUZABGx5S/xFf9Lbbmk298X7iFg2yeimvsQqqJ+hYbt6uq+Zf9jC+Jcwiccd61NKQtFvGWrgJiHB5lwi6fR8KzYS7EaEHf/ka9EC7H8D+WEa3TEACHBkNSj/cXxFeq4RllC+fUFm2xtstYLL2nos1DfzsC9vqDDdRVcPA3Ho95aEQHvExVThXPqym65llkKlfRXbPTRiDepdylHjmV9YTWAEjlD9DdQnCem7Aj/ml58On366392214B5zrmQz/9ySG2mFqEwjq5sFl5tYJPw5hNz8lyZPUTsr5E0F2C9VMPnZckWP7+mbwp/BiN7f4kf7vtGnZF2JGvjK/sDX1RtcFY5oPQnE4lIAYV49U3C9SP0LCY/9i/WIFK9ORjzM9kG/KGrAuwFmgdEpdLaiqQNpCTGZVuAO65afkY1h33hrqyLjZy92JK3/twdj9pafFcwfXONmPQWldPlMe7jlP24Js0v9m8bIJ9TgS2IuRvE9ZVRaCwSJYOtAfL5H/YS4FfzKWKbek+GFulheyKtDNlBtrdmr+KU+ibHTdalzFUmMfxw3f36x+3cQbJLItSilW9cuvZEMjKw987jykZRlsH/UI+HlKfo2tLwemBEeBFtmxF2xmItA/dAIfQ+rXnm88dqvXa+GapOYVt/2waFimXFx3TC2MUiOi5/Ml+3rj/YU6Ihx2hXgiDXFsUeQkRAD6wF3SCPi2flk7XwKAA4zboqynuELD312EJ88lmDEVOMa1W/K/a8tGylZRMrMoILyoMQzzbDJHNZrhH77L9qSC42HVmKiZ5S0016UTp83gOhCwz9XItK9fgXfK3F5d7nZCBUekoLxrutQaPHa16Rjsa0gTrzyjqTnmcIcrxg6X6dkKiucudc0DD5W4pJPf0vuDW8r5/uw24YfMuxFRpD2ovT2mFX79xH6Jf+MVdv2TYqR6/955QgVPe3JCD/WjAYcLA9tpXgFiEjge2J5ljeI/iUzg91KQuHkII4mmHZxC3XQORLAC6G7uFn5LOmlnXkjFdoO976moNTxElS8HdxWoPAkjjocDR136m2l+f5t6xaaNgdodOvTu0rievnhNAB79WNrVs6EsPgkgfahF9gSFzzAd+rJSraw5Mllit7vUP5YxA843lUpu6/5jAR0RvH4rRXkSg3nE+O5GFyfe+L0s5r3k05FyghSFnKo4TTgs07qj4nTLqOYj6qaW9knJTDkF5OFMYbmCP+8H16Ty482OjvERV6OFyw043L9w3hoJi408sR+SGo1WviXUu8d7qS+ehKjpKwxeCthsm2LBFSFeetx0x4AaKPxtp3CxdWqCsLrB1s/j5TAhc1jNZsXWl6tjo/WDoewxzg8T8NnhZ1niUwL/nhfygLanCnRwaFGDyLw+sfZhyZ1UtYTp8TYB6dE7R3VsKKH95CUxJ8u8N+9u2/9HUNKHW3x3w5GQrfOPafk2w5qZq8MaHT0ebeY3wIsp3rN9lrpIsW9c1ws3VNV+JwNz0Lo9+V7zZr6GD56We6gWVIvtmam5GPPkVAbr74r6SwhuL+TRXtW/0pgyX16VNl4/EAD50TnUPuwrW6OcUO2VlWXS0inq872kk7GUlW6o/ozFKq+Sip6LcTtSDfDrPTcCHhx75H8BeRon+KG2wRwzfDgWhALmiWOMO6h3pm1UCZEPEjScyk7tdLx6WrdA2N1QTPENvNnhCQjW6kl057/qv7IwRryHrZBCwVSbLLnFRiHdTwk8mlYixFt1slEcPD7FVht13HyqVeyD55HOXrh2ElAxJyinGeoFzwKA91zfrdLvDxJSjzmImfvTisreI25EDcVfGsmxLVbfU8PGe/7NmWWKjXcdTJ11jAlVIY/Bv/mcxg/Q10vCHwKG1GW/XbJq5nxDhyLqiorn7Wd7VEVL8UgVzpHMjQ+Z8DUgSukiVwWAKkeTlVVeZ7t1DGnCgJVIdBPZAEK5f8CDyDNo7tK4/5DBjdD5MPV86TaEhGsLVFPQSI68KlBYy84FievdU9gWh6XZrugvtCZmi9vfd6db6V7FmoEcRHnG36VZH8N4aZaldq9zZawt1uBFgxYYx+Gs/qW1jwANeFy+LCoymyM6zgG7j8bGzUyLhvrbJkTYAEdICEb4kMKusKT9V3eIwMLsjdUdgijMc+7iKrr+TxrVWG0U+W95SGrxnxGrE4eaJFfgvAjUM4SAy8UaRwE9j6ZQH5qYAWGtXByvDiLSDfOD0yFA3UCMKSyQ30fyy1mIRg4ZcgZHLNHWl+c9SeijOvbOJxoQy7lTN2r3Y8p6ovxvUY74aOYbuVezryqXA6U+fcp6wSV9X5/OZKP18tB56Ua0gMyxJI7XyNT7IrqN8GsB9rL/kP5KMrjXxgqKLDa+V5OCH6a5hmOWemMUsea9vQl9t5Oce76PrTyTv50ExOqngE3PHPfSL//AItPdB7kGnyTRhVUUFNdJJ2z7RtktZwgmQzhBG/G7QsjZmJfCE7k75EmdIKH7xlnmDrNM/XbTT6FzldcH/rcRGxlPrv4qDScqE7JSmQABJWqRT/TUcJSwoQM+1jvDigvrjjH8oeK2in1S+/yO1j8xAws/T5u0VnIvAPqaE1atNuN0cuRliLcH2j0nTL4JpcR7w9Qya0JoaHgsOiALLCCzRkl1UUESz+ze/gIXHGtDwgYrK6pCFKJ1webSDog4zTlPkgXZqxlQDiYMjhDpwTtBW2WxthWbov9dt2X9XFLFmcF+eEc1UaQ74gqZiZsdj63pH1qcv3Vy8JYciogIVKsJ8Yy3J9w/GhjWVSQAmrS0BPOWK+RKV+0lWqXgYMnIFwpcZVD7zPSp547i9HlflB8gVnSTGmmq1ClO081OW/UH11pEQMfkEdDFzjLC1Cdo/BdL3s7cXb8J++Hzz1rhOUVZFIPehRiZ8VYu6+7Er7j5PSZu9g/GBdmNzJmyCD9wiswj9BZw+T3iBrg81re36ihMLjoVLoWc+62a1U/7qVX5CpvTVF7rocSAKwv4cBVqZm7lLDS/qoXs4fMs/VQi6BtVbNA3uSzKpQfjH1o3x4LrvkOn40zhm6hjduDglzJUwA0POabgdXIndp9fzhOo23Pe+Rk9GSLX0d71Poqry8NQDTzNlsa+JTNG9+UrEf+ngxCjGEsDCc0bz+udVRyHQI1jmEO3S+IOQycEq7XwB6z3wfMfa73m8PVRp+iOgtZfeSBl01xn03vMaQJkyj7vnhGCklsCWVRUl4y+5oNUzQ63B2dbjDF3vikd/3RUMifPYnX5Glfuk2FsV/7RqjI9yKTbE8wJY+74p7qXO8+dIYgjtLD/N8TJtRh04N9tXJA4H59IkMmLElgvr0Q5OCeVfdAt+5hkh4pQgfRMHpL74XatLQpPiOyHRs/OdmHtBf8nOZcxVKzdGclIN16lE7kJ+pVMjspOI+5+TqLRO6m0ZpNXJoZRv9MPDRcAfJUtNZHyig/s2wwReakFgPPJwCQmu1I30/tcBbji+Na53i1W1N+BqoY7Zxo+U/M9XyJ4Ok2SSkBtoOrwuhAY3a03Eu6l8wFdIG1cN+e8hopTkiKF093KuH/BcB39rMiGDLn6XVhGKEaaT/vqb/lufuAdpGExevF1+J9itkFhCfymWr9vGb3BTK4j598zRH7+e+MU9maruZqb0pkGxRDRE1CD4Z8LV4vhgPidk5w2Bq816g3nHw1//j3JStz7NR9HIWELO8TMn3QrP/zZp//+Dv9p429/ogv+GATR+n/UdF+ns9xNkXZQJXY4t9jMkJNUFygAtzndXwjss+yWH9HAnLQQfhAskdZS2l01HLWv7L7us5uTH409pqitvfSOQg/c+Zt7k879P3K9+WV68n7+3cZfuRd/dDPP/03rn+d+/nBvWfgDlt8+LzjqJ/vx3CnNOwiXhho778C96iD+1TBvRZYeP+EH81LE0vVwOOrmCLB3iKzI1x+vJEsrPH4uF0UB4TJ4X3uDfOCo3PYpYe0MF4bouh0DQ/l43fxUF7Y+dpWuvTSffB0yO2UQUETI/LwCZE3BvnevJ7c9zUlY3H58xzke6DNFDQG8n0WtDN4LAYN4nogKav1ezOfK/z+t6tsCTp+dhx4ymjWuCJk1dEUifDP+HyS4iP/Vg9B2jTo9L4NbiBuDS4nuuHW6H+JDQn2JtqRKGkEQPEYE7uzazXIkcxIAqUq1esasZBETlEZY7y7Jo+RoV/IsjY9eIMkUvr42Hc0xqtsavZvhz1OLwSxMOTuqzlhb0WbdOwBH9EYiyBjatz40bUxTHbiWxqJ0uma19qhPruvcWJlbiSSH48OLDDpaHPszvyct41ZfTu10+vjox6kOqK6v0K/gEPphEvMl/vwSv+A4Hhm36JSP9IXTyCZDm4kKsqD5ay8b1Sad/vaiyO5N/sDfEV6Z4q95E+yfjxpqBoBETW2C7xl4pIO2bDODDFurUPwE7EWC2Uplq+AHmBHvir2PSgkR12/Ry65O0aZtQPeXi9mTlF/Wj5GQ+vFkYyhXsLTjrBSP9hwk4GPqDP5rBn5/l8b0mLRAvRSzXHc293bs3s8EsdE3m2exxidWVB4joHR+S+dz5/W+v00K3TqN14CDBth8eWcsTbiwXPsygHdGid0PEdy6HHm2v/IUuV5RVapYmzGsX90mpnIdNGcOOq64Dbc5GUbYpD9M7S+6cLY//QmjxFLP5cuTFRm3vA5rkFZroFnO3bjHF35uU3s8mvL7Tp9nyTc4mymTJ5sLIp7umSnGkO23faehtz3mmTS7fbVx5rP7x3HXIjRNeq/A3xCs9JNB08c9S9BF2O3bOur0ItslFxXgRPdaapBIi4dRpKGxVz7ir69t/bc9qTxjvtOyGOfiLGDhR4fYywHv1WdOplxIV87TpLBy3Wc0QP0P9s4G7FBNOdITS/tep3o3h1TEa5XDDii7fWtqRzUEReP2fbxz7bHWWJdbIOxOUJZtItNZpTFRfj6vm9sYjRxQVO+WTdiOhdPeTJ+8YirPvoeL88l5iLYOHd3b/Imkq+1ZN1El3UikhftuteEYxf1Wujof8Pr4ICTu5ezZyZ4tHQMxlzUHLYO2VMOoNMGL/20S5i2o2obfk+8qqdR7xzbRDbgU0lnuIgz4LelQ5XS7xbLuSQtNS95v3ZUOdaUx/Qd8qxCt6xf2E62yb/HukLO6RyorV8KgYl5YNc75y+KvefrxY+lc/64y9kvWP0a0bDz/rojq+RWjO06WeruWqNFU7r3HPIcLWRql8ICZsz2Ls/qOm/CLn6++X+Qf7mGspYCrZod/lpl6Rw4xN/yuq8gqV4B6aHk1hVE1SfILxWu5gvXqbfARYQpspcxKp1F/c8XOPzkZvmoSw+vEqBLdrq1fr3wAPv5NnM9i8F+jdAuxkP5Z71c6uhK3enlnGymr7UsWZKC12qgUiG8XXGQ9mxnqz4GSIlybF9eXmbqj2sHX+a1jf0gRoONHRdRSrIq03Ty89eQ1GbV/Bk+du4+V15zls+vvERvZ4E7ZbnxWTVjDjb4o/k8jlw44pTIrUGxxuJvBeO+heuhOjpFsO6lVJ/aXnJDa/bM0Ql1cLbXE/Pbv3EZ3vj3iVrB5irjupZTzlnv677NrI9UNYNqbPgp/HZXS+lJmk87wec+7YOxTDo2aw2l3NfDr34VNlvqWJBknuK7oSlZ6/T10zuOoPZOeoIk81N+sL843WJ2Q4Z0fZ3scsqC/JV2fuhWi1jGURSKZV637lf53Xnnx16/vKEXY89aVJ0fv91jGdfG+G4+sniwHes4hS+udOr4RfhFhG/F5gUG35QaU+McuLmclb5ZWmR+sG5V6nf+PxYzlrnFGxpZaK8eqqVo0NfmAWoGfXDiT/FnUbWvzGDOTr8aktOZWg4BYvz5YH12ZbfCcGtNk+dDAZNGWvHov+PIOnY9Prjg8h/wLRrT69suaMVZ5bNuK00lSVpnqSX1NON/81FoP92rYndionwgOiA8WMf4vc8l15KqEEG4yAm2+WAN5Brfu1sq9suWYqgoajgOYt/JCk1gC8wPkK+XKCtRX6TAtgvrnuBgNRmn6I8lVDipOVB9kX6Oxkp4ZKyd1M6Gj8/v2U7k+YQBL95Kb9PQENucJb0JlW3b5tObN7m/Z1j1ev388d7o15zgXsI9CikAGAViR6lkJv7nb4Ak40M2G8TJ447kN+pvfHiOFjSUSP6PM+QfbAywKJCBaxSVxpizHseZUyUBhq59vFwrkyGoRiHbo0apweEZeSLuNiQ+HAekOnarFg00dZNXaPeoHPTRR0FmEyqYExOVaaaO8c0uFUh7U4e/UxdBmthlBDgg257Q33j1hA7HTxSeTTSuVnPZbgW1nodwmG16aKBDKxEetv7D9OjO0JhrbJTnoe+kcGoDJazFSO8/fUN9Jy/g4XK5PUkw2dgPDGpJqBfhe7GA+cjzfE/EGsMM+FV9nj9IAhrSfT/J3QE5TEIYyk5UjsI6ZZcCPr6A8FZUF4g9nnpVmjX90MLSQysIPD0nFzqwCcSJmIb5mYv2Cmk+C1MDFkZQyCBq4c/Yai9LJ6xYkGS/x2s5/frIW2vmG2Wrv0APpCdgCA9snFvfpe8uc0OwdRs4G9973PGEBnQB5qKrCQ6m6X/H7NInZ7y/1674/ZXOVp7OeuCRk8JFS516VHrnH1HkIUIlTIljjHaQtEtkJtosYul77cVwjk3gW1Ajaa6zWeyHGLlpk3VHE2VFzT2yI/EvlGUSz2H9zYE1s4nsKMtMqNyKNtL/59CpFJki5Fou6VXGm8vWATEPwrUVOLvoA8jLuwOzVBCgHB2Cr5V6OwEWtJEKokJkfc87h+sNHTvMb0KVTp5284QTPupoWvQVUwUeogZR3kBMESYo0mfukewRVPKh5+rzLQb7HKjFFIgWhj1w3yN/qCNoPI8XFiUgBNT1hCHBsAz8L7Oyt8wQWUFj92ONn/APyJFg8hzueqoJdNj57ROrFbffuS/XxrSXLTRgj5uxZjpgQYceeMc2wJrahReSKpm3QjHfqExTLAB2ipVumE8pqcZv8LYXQiPHHsgb5BMW8zM5pvQit+mQx8XGaVDcfVbLyMTlY8xcfmm/RSAT/H09UQol5gIz7rESDmnrQ4bURIB4iRXMDQwxgex1GgtDxKp2HayIkR+E/aDmCttNm2C6lytWdfOVzD6X2SpDWjQDlMRvAp1symWv4my1bPCD+E1EmGnMGWhNwmycJnDV2WrQNxO45ukEb08AAffizYKVULp15I4vbNK5DzWwCSUADfmKhfGSUqii1L2UsE8rB7mLuHuUJZOx4+WiizHBJ/hwboaBzhpNOVvgFTf5cJsHef7L1HCI9dOUUbb+YxUJWn6dYOLz+THi91kzY5dtO5c+grX7v0jEbsuoOGnoIreDIg/sFMyG+TyCLIcAWd1IZ1UNFxE8Uie13ucm40U2fcxC0u3WLvLOxwu+F7MWUsHsdtFQZ7W+nlfCASiAKyh8rnP3EyDByvtJb6Kax6/HkLzT9SyEyTMVM1zPtM0MJY14DmsWh4MgD15Ea9Hd00AdkTZ0EiG5NAGuIBzQJJ0JR0na+OB7lQA6UKxMfihIQ7GCCnVz694QvykWXTxpS2soDu+smru1UdIxSvAszBFD1c8c6ZOobA8bJiJIvuycgIXBQIXWwhyTgZDQxJTRXgEwRNAawGSXO0a1DKjdihLVNp/taE/xYhsgwe+VpKEEB4LlraQyE84gEihxCnbfoyOuJIEXy2FIYw+JjRusybKlU2g/vhTSGTydvCvXhYBdtAXtS2v7LkHtmXh/8fly1do8FI/D0f8UbzVb5h+KRhMGSAmR2mhi0YG/uj7wgxcfzCrMvdjitUIpXDX8ae2JcF/36qUWIMwN6JsjaRGNj+jEteGDcFyTUb8X/NHSucKMJp7pduxtD6KuxVlyxxwaeiC1FbGBESO84lbyrAugYxdl+2N8/6AgWpo/IeoAOcsG35IA/b3AuSyoa55L7llBLlaWlEWvuCFd8f8NfcTUgzJv6CbB+6ohWwodlk9nGWFpBAOaz5uEW5xBvmjnHFeDsb0mXwayj3mdYq5gxxNf3H3/tnCgHwjSrpSgVxLmiTtuszdRUFIsn6LiMPjL808vL1uQhDbM7aA43mISXReqjSskynIRcHCJ9qeFopJfx9tqyUoGbSwJex/0aDE3plBPGtNBYgWbdLom3+Q/bjdizR2/AS/c/dH/d3G7pyl1qDXgtOFtEqidwLqxPYtrNEveasWq3vPUUtqTeu8gpov4bdOQRI2kneFvRNMrShyVeEupK1PoLDPMSfWMIJcs267mGB8X9CehQCF0gIyhpP10mbyM7lwW1e6TGvHBV1sg/UyTghHPGRqMyaebC6pbB1WKNCQtlai1GGvmq9zUKaUzLaXsXEBYtHxmFbEZ2kJhR164LhWW2Tlp1dhsGE7ZgIWRBOx3Zcu2DxgH+G83WTPceKG0TgQKKiiNNOlWgvqNEbnrk6fVD+AqRam2OguZb0YWSTX88N+i/ELSxbaUUpPx4vJUzYg/WonSeA8xUK6u7DPHgpqWpEe6D4cXg5uK9FIYVba47V/nb+wyOtk+zG8RrS4EA0ouwa04iByRLSvoJA2FzaobbZtXnq8GdbfqEp5I2dpfpj59TCVif6+E75p665faiX8gS213RqBxTZqfHP46nF6NSenOneuT+vgbLUbdTH2/t0REFXZJOEB6DHvx6N6g9956CYrY/AYcm9gELJXYkrSi+0F0geKDZgOCIYkLU/+GOW5aGj8mvLFgtFH5+XC8hvAE3CvHRfl4ofM/Qwk4x2A+R+nyc9gNu/9Tem7XW4XRnyRymf52z09cTOdr+PG6+P/Vb4QiXlwauc5WB1z3o+IJjlbxI8MyWtSzT+k4sKVbhF3xa+vDts3NxXa87iiu+xRH9cAprnOL2h6vV54iQRXuOAj1s8nLFK8gZ70ThIQcWdF19/2xaJmT0efrkNDkWbpAQPdo92Z8+Hn/aLjbOzB9AI/k12fPs9HhUNDJ1u6ax2VxD3R6PywN7BrLJ26z6s3QoMp76qzzwetrDABKSGkfW5PwS1GvYNUbK6uRqxfyVGNyFB0E+OugMM8kKwmJmupuRWO8XkXXXQECyRVw9UyIrtCtcc4oNqXqr7AURBmKn6Khz3eBN96LwIJrAGP9mr/59uTOSx631suyT+QujDd4beUFpZ0kJEEnjlP+X/Kr2kCKhnENTg4BsMTOmMqlj2WMFLRUlVG0fzdCBgUta9odrJfpVdFomTi6ak0tFjXTcdqqvWBAzjY6hVrH9sbt3Z9gn+AVDpTcQImefbB4edirjzrsNievve4ZT4EUZWV3TxEsIW+9MT/RJoKfZZYSRGfC1CwPG/9rdMOM8qR/LUYvw5f/emUSoD7YSFuOoqchdUg2UePd1eCtFSKgxLSZ764oy4lvRCIH6bowPxZWwxNFctksLeil47pfevcBipkkBIc4ngZG+kxGZ71a72KQ7VaZ6MZOZkQJZXM6kb/Ac0/XkJx8dvyfJcWbI3zONEaEPIW8GbkYjsZcwy+eMoKrYjDmvEEixHzkCSCRPRzhOfJZuLdcbx19EL23MA8rnjTZZ787FGMnkqnpuzB5/90w1gtUSRaWcb0eta8198VEeZMUSfIhyuc4/nywFQ9uqn7jdqXh+5wwv+RK9XouNPbYdoEelNGo34KyySwigsrfCe0v/PlWPvQvQg8R0KgHO18mTVThhQrlbEQ0Kp/JxPdjHyR7E1QPw/ut0r+HDDG7BwZFm9IqEUZRpv2WpzlMkOemeLcAt5CsrzskLGaVOAxyySzZV/D2EY7ydNZMf8e8VhHcKGHAWNszf1EOq8fNstijMY4JXyATwTdncFFqcNDfDo+mWFvxJJpc4sEZtjXyBdoFcxbUmniCoKq5jydUHNjYJxMqN1KzYV62MugcELVhS3Bnd+TLLOh7dws/zSXWzxEb4Nj4aFun5x4kDWLK5TUF/yCXB/cZYvI9kPgVsG2jShtXkxfgT+xzjJofXqPEnIXIQ1lnIdmVzBOM90EXvJUW6a0nZ/7XjJGl8ToO3H/fdxnxmTNKBZxnkpXLVgLXCZywGT3YyS75w/PAH5I/jMuRspej8xZObU9kREbRA+kqjmKRFaKGWAmFQspC+QLbKPf0RaK3OXvBSWqo46p70ws/eZpu6jCtZUgQy6r4tHMPUdAgWGGUYNbuv/1a6K+MVFsd3T183+T8capSo6m0+Sh57fEeG/95dykGJBQMj09DSW2bY0mUonDy9a8trLnnL5B5LW3Nl8rJZNysO8Zb+80zXxqUGFpud3Qzwb7bf+8mq6x0TAnJU9pDQR9YQmZhlna2xuxJt0aCO/f1SU8gblOrbIyMsxTlVUW69VJPzYU2HlRXcqE2lLLxnObZuz2tT9CivfTAUYfmzJlt/lOPgsR6VN64/xQd4Jlk/RV7UKVv2Gx/AWsmTAuCWKhdwC+4HmKEKYZh2Xis4KsUR1BeObs1c13wqFRnocdmuheaTV30gvVXZcouzHKK5zwrN52jXJEuX6dGx3BCpV/++4f3hyaW/cQJLFKqasjsMuO3B3WlMq2gyYfdK1e7L2pO/tRye2mwzwZPfdUMrl5wdLqdd2Kv/wVtnpyWYhd49L6rsOV+8HXPrWH2Kup89l2tz6bf80iYSd+V4LROSOHeamvexR524q4r43rTmtFzQvArpvWfLYFZrbFspBsXNUqqenjxNNsFXatZvlIhk7teUPfK+YL32F8McTnjv0BZNppb+vshoCrtLXjIWq3EJXpVXIlG6ZNL0dh6qEm2WMwDjD3LfOfkGh1/czYc/0qhiD2ozNnH4882MVVt3JbVFkbwowNCO3KL5IoYW5wlVeGCViOuv1svZx7FbzxKzA4zGqBlRRaRWCobXaVq4yYCWbZf8eiJwt3OY+MFiSJengcFP2t0JMfzOiJ7cECvpx7neg1Rc5x+7myPJOXt2FohVRyXtD+/rDoTOyGYInJelZMjolecVHUhUNqvdZWg2J2t0jPmiLFeRD/8fOT4o+NGILb+TufCo9ceBBm3JLVn+MO2675n7qiEX/6W+188cYg3Zn5NSTjgOKfWFSAANa6raCxSoVU851oJLY11WIoYK0du0ec5E4tCnAPoKh71riTsjVIp3gKvBbEYQiNYrmH22oLQWA2AdwMnID6PX9b58dR2QKo4qag1D1Z+L/FwEKTR7osOZPWECPJIHQqPUsM5i/CH5YupVPfFA5pHUBcsesh8eO5YhyWnaVRPZn/BmdXVumZWPxMP5e28zm2uqHgFoT9CymHYNNrzrrjlXZM06HnzDxYNlI5b/QosxLmmrqDFqmogQdqk0WLkUceoAvQxHgkIyvWU69BPFr24VB6+lx75Rna6dGtrmOxDnvBojvi1/4dHjVeg8owofPe1cOnxU1ioh016s/Vudv9mhV9f35At+Sh28h1bpp8xhr09+vf47Elx3Ms6hyp6QvB3t0vnLbOhwo660cp7K0vvepabK7YJfxEWWfrC2YzJfYOjygPwfwd/1amTqa0hZ5ueebhWYVMubRTwIjj+0Oq0ohU3zfRfuL8gt59XsHdwKtxTQQ4Y2qz6gisxnm2UdlmpEkgOsZz7iEk6QOt8BuPwr+NR01LTqXmJo1C76o1N274twJvl+I069TiLpenK/miRxhyY8jvYV6W1WuSwhH9q7kuwnJMtm7IWcqs7HsnyHSqWXLSpYtZGaR1V3t0gauninFPZGtWskF65rtti48UV9uV9KM8kfDYs0pgB00S+TlzTXV6P8mxq15b9En8sz3jWSszcifZa/NuufPNnNTb031pptt0+sRSH/7UG8pzbsgtt3OG3ut7B9JzDMt2mTZuyRNIV8D54TuTrpNcHtgmMlYJeiY9XS83NYJicjRjtJSf9BZLsQv629QdDsKQhTK5CnXhpk7vMNkHzPhm0ExW/VCGApHfPyBagtZQTQmPHx7g5IXXsrQDPzIVhv2LB6Ih138iSDww1JNHrDvzUxvp73MsQBVhW8EbrReaVUcLB1R3PUXyaYG4HpJUcLVxMgDxcPkVRQpL7VTAGabDzbKcvg12t5P8TSGQkrj/gOrpnbiDHwluA73xbXts/L7u468cRWSWRtgTwlQnA47EKg0OiZDgFxAKQQUcsbGomITgeXUAAyKe03eA7Mp4gnyKQmm0LXJtEk6ddksMJCuxDmmHzmVhO+XaN2A54MIh3niw5CF7PwiXFZrnA8wOdeHLvvhdoqIDG9PDI7UnWWHq526T8y6ixJPhkuVKZnoUruOpUgOOp3iIKBjk+yi1vHo5cItHXb1PIKzGaZlRS0g5d3MV2pD8FQdGYLZ73aae/eEIUePMc4NFz8pIUfLCrrF4jVWH5gQneN3S8vANBmUXrEcKGn6hIUN95y1vpsvLwbGpzV9L0ZKTan6TDXM05236uLJcIEMKVAxKNT0K8WljuwNny3BNQRfzovA85beI9zr1AGNYnYCVkR1aGngWURUrgqR+gRrQhxW81l3CHevjvGEPzPMTxdsIfB9dfGRbZU0cg/1mcubtECX4tvaedmNAvTxCJtc2QaoUalGfENCGK7IS/O8CRpdOVca8EWCRwv2sSWE8CJPW5PCugjCXPd3h6U60cPD+bdhtXZuYB6stcoveE7Sm5MM2yvfUHXFSW7KzLmi7/EeEWL0wqcOH9MOSKjhCHHmw+JGLcYE/7SBZQCRggox0ZZTAxrlzNNXYXL5fNIjkdT4YMqVUz6p8YDt049v4OXGdg3qTrtLBUXOZf7ahPlZAY/O+7Sp0bvGSHdyQ8B1LOsplqMb9Se8VAE7gIdSZvxbRSrfl+Lk5Qaqi5QJceqjitdErcHXg/3MryljPSIAMaaloFm1cVwBJ8DNmkDqoGROSHFetrgjQ5CahuKkdH5pRPigMrgTtlFI8ufJPJSUlGgTjbBSvpRc0zypiUn6U5KZqcRoyrtzhmJ7/caeZkmVRwJQeLOG8LY6vP5ChpKhc8Js0El+n6FXqbx9ItdtLtYP92kKfaTLtCi8StLZdENJa9Ex1nOoz1kQ7qxoiZFKRyLf4O4CHRT0T/0W9F8epNKVoeyxUXhy3sQMMsJjQJEyMOjmOhMFgOmmlscV4eFi1CldU92yjwleirEKPW3bPAuEhRZV7JsKV3Lr5cETAiFuX5Nw5UlF7d2HZ96Bh0sgFIL5KGaKSoVYVlvdKpZJVP5+NZ7xDEkQhmDgsDKciazJCXJ6ZN2B3FY2f6VZyGl/t4aunGIAk/BHaS+i+SpdRfnB/OktOvyjinWNfM9Ksr6WwtCa1hCmeRI6icpFM4o8quCLsikU0tMoZI/9EqXRMpKGaWzofl4nQuVQm17d5fU5qXCQeCDqVaL9XJ9qJ08n3G3EFZS28SHEb3cdRBdtO0YcTzil3QknNKEe/smQ1fTb0XbpyNB5xAeuIlf+5KWlEY0DqJbsnzJlQxJPOVyHiKMx5Xu9FcEv1Fbg6Fhm4t+Jyy5JC1W3YO8dYLsO0PXPbxodBgttTbH3rt9Cp1lJIk2r3O1Zqu94eRbnIz2f50lWolYzuKsj4PMok4abHLO8NAC884hiXx5Fy5pWKO0bWL7uEGXaJCtznhP67SlQ4xjWIfgq6EpZ28QMtuZK7JC0RGbl9nA4XtFLug/NLMoH1pGt9IonAJqcEDLyH6TDROcbsmGPaGIxMo41IUAnQVPMPGByp4mOmh9ZQMkBAcksUK55LsZj7E5z5XuZoyWCKu6nHmDq22xI/9Z8YdxJy4kWpD16jLVrpwGLWfyOD0Wd+cBzFBxVaGv7S5k9qwh/5t/LQEXsRqI3Q9Rm3QIoaZW9GlsDaKOUyykyWuhNOprSEi0s1G4rgoiX1V743EELti+pJu5og6X0g6oTynUqlhH9k6ezyRi05NGZHz0nvp3HOJr7ebrAUFrDjbkFBObEvdQWkkUbL0pEvMU46X58vF9j9F3j6kpyetNUBItrEubW9ZvMPM4qNqLlsSBJqOH3XbNwv/cXDXNxN8iFLzUhteisYY+RlHYOuP29/Cb+L+xv+35Rv7xudnZ6ohK4cMPfCG8KI7dNmjNk/H4e84pOxn/sZHK9psfvj8ncA8qJz7O8xqbxESDivGJOZzF7o5PJLQ7g34qAWoyuA+x3btU98LT6ZyGyceIXjrqob2CAVql4VOTQPUQYvHV/g4zAuCZGvYQBtf0wmd5lilrvuEn1BXLny01B4h4SMDlYsnNpm9d7m9h578ufpef9Z4WplqWQvqo52fyUA7J24eZD5av6SyGIV9kpmHNqyvdfzcpEMw97BvknV2fq+MFHun9BT3Lsf8pbzvisWiIQvYkng+8Vxk1V+dli1u56kY50LRjaPdotvT5BwqtwyF+emo/z9J3yVUVGfKrxQtJMOAQWoQii/4dp9wgybSa5mkucmRLtEQZ/pz0tL/NVcgWAd95nEQ3Tg6tNbuyn3Iepz65L3huMUUBntllWuu4DbtOFSMSbpILV4fy6wlM0SOvi6CpLh81c1LreIvKd61uEWBcDw1lUBUW1I0Z+m/PaRlX+PQ/oxg0Ye6KUiIiTF4ADNk59Ydpt5/rkxmq9tV5Kcp/eQLUVVmBzQNVuytQCP6Ezd0G8eLxWyHpmZWJ3bAzkWTtg4lZlw42SQezEmiUPaJUuR/qklVA/87S4ArFCpALdY3QRdUw3G3XbWUp6aq9z0zUizcPa7351p9JXOZyfdZBFnqt90VzQndXB/mwf8LC9STj5kenVpNuqOQQP3mIRJj7eV21FxG8VAxKrEn3c+XfmZ800EPb9/5lIlijscUbB6da0RQaMook0zug1G0tKi/JBC4rw7/D3m4ARzAkzMcVrDcT2SyFtUdWAsFlsPDFqV3N+EjyXaoEePwroaZCiLqEzb8MW+PNE9TmTC01EzWli51PzZvUqkmyuROU+V6ik+Le/9qT6nwzUzf9tP68tYei0YaDGx6kAd7jn1cKqOCuYbiELH9zYqcc4MnRJjkeGiqaGwLImhyeKs+xKJMBlOJ05ow9gGCKZ1VpnMKoSCTbMS+X+23y042zOb5MtcY/6oBeAo1Vy89OTyhpavFP78jXCcFH0t7Gx24hMEOm2gsEfGabVpQgvFqbQKMsknFRRmuPHcZu0Su/WMFphZvB2r/EGbG72rpGGho3h+Msz0uGzJ7hNK2uqQiE1qmn0zgacKYYZBCqsxV+sjbpoVdSilW/b94n2xNb648VmNIoizqEWhBnsen+d0kbCPmRItfWqSBeOd9Wne3c6bcd6uvXOJ6WdiSsuXq0ndhqrQ4QoWUjCjYtZ0EAhnSOP1m44xkf0O7jXghrzSJWxP4a/t72jU29Vu2rvu4n7HfHkkmQOMGSS+NPeLGO5I73mC2B7+lMiBQQZRM9/9liLIfowupUFAbPBbR+lxDM6M8Ptgh1paJq5Rvs7yEuLQv/7d1oU2woFSb3FMPWQOKMuCuJ7pDDjpIclus5TeEoMBy2YdVB4fxmesaCeMNsEgTHKS5WDSGyNUOoEpcC2OFWtIRf0w27ck34/DjxRTVIcc9+kqZE6iMSiVDsiKdP/Xz5XfEhm/sBhO50p1rvJDlkyyxuJ9SPgs7YeUJBjXdeAkE+P9OQJm6SZnn1svcduI78dYmbkE2mtziPrcjVisXG78spLvbZaSFx/Rks9zP4LKn0Cdz/3JsetkT06A8f/yCgMO6Mb1Hme0JJ7b2wZz1qleqTuKBGokhPVUZ0dVu+tnQYNEY1fmkZSz6+EGZ5EzL7657mreZGR3jUfaEk458PDniBzsSmBKhDRzfXameryJv9/D5m6HIqZ0R+ouCE54Dzp4IJuuD1e4Dc5i+PpSORJfG23uVgqixAMDvchMR0nZdH5brclYwRoJRWv/rlxGRI5ffD5NPGmIDt7vDE1434pYdVZIFh89Bs94HGGJbTwrN8T6lh1HZFTOB4lWzWj6EVqxSMvC0/ljWBQ3F2kc/mO2b6tWonT2JEqEwFts8rz2h+oWNds9ceR2cb7zZvJTDppHaEhK5avWqsseWa2Dt5BBhabdWSktS80oMQrL4TvAM9b5HMmyDnO+OkkbMXfUJG7eXqTIG6lqSOEbqVR+qYdP7uWb57WEJqzyh411GAVsDinPs7KvUeXItlcMdOUWzXBH6zscymV1LLVCtc8IePojzXHF9m5b5zGwBRdzcyUJkiu938ApmAayRdJrX1PmVguWUvt2ThQ62czItTyWJMW2An/hdDfMK7SiFQlGIdAbltHz3ycoh7j9V7GxNWBpbtcSdqm4XxRwTawc3cbZ+xfSv9qQfEkDKfZTwCkqWGI/ur250ItXlMlh6vUNWEYIg9A3GzbgmbqvTN8js2YMo87CU5y6nZ4dbJLDQJj9fc7yM7tZzJDZFtqOcU8+mZjYlq4VmifI23iHb1ZoT9E+kT2dolnP1AfiOkt7PQCSykBiXy5mv637IegWSKj9IKrYZf4Lu9+I7ub+mkRdlvYzehh/jaJ9n7HUH5b2IbgeNdkY7wx1yVzxS7pbvky6+nmVUtRllEFfweUQ0/nG017WoUYSxs+j2B4FV/F62EtHlMWZXYrjGHpthnNb1x66LKZ0Qe92INWHdfR/vqp02wMS8r1G4dJqHok8KmQ7947G13a4YXbsGgHcBvRuVu1eAi4/A5+ZixmdSXM73LupB/LH7O9yxLTVXJTyBbI1S49TIROrfVCOb/czZ9pM4JsZx8kUz8dQGv7gUWKxXvTH7QM/3J2OuXXgciUhqY+cgtaOliQQVOYthBLV3xpESZT3rmfEYNZxmpBbb24CRao86prn+i9TNOh8VxRJGXJfXHATJHs1T5txgc/opYrY8XjlGQQbRcoxIBcnVsMjmU1ymmIUL4dviJXndMAJ0Yet+c7O52/p98ytlmAsGBaTAmMhimAnvp1TWNGM9BpuitGj+t810CU2UhorrjPKGtThVC8WaXw04WFnT5fTjqmPyrQ0tN3CkLsctVy2xr0ZWgiWVZ1OrlFjjxJYsOiZv2cAoOvE+7sY0I/TwWcZqMoyIKNOftwP7w++Rfg67ljfovKYa50if3fzE/8aPYVey/Nq35+nH2sLPh/fP5TsylSKGOZ4k69d2PnH43+kq++sRXHQqGArWdwhx+hpwQC6JgT2uxehYU4Zbw7oNb6/HLikPyJROGK2ouyr+vzseESp9G50T4AyFrSqOQ0rroCYP4sMDFBrHn342EyZTMlSyk47rHSq89Y9/nI3zG5lX16Z5lxphguLOcZUndL8wNcrkyjH82jqg8Bo8OYkynrxZvbFno5lUS3OPr8Ko3mX9NoRPdYOKKjD07bvgFgpZ/RF+YzkWvJ/Hs/tUbfeGzGWLxNAjfDzHHMVSDwB5SabQLsIZHiBp43FjGkaienYoDd18hu2BGwOK7U3o70K/WY/kuuKdmdrykIBUdG2mvE91L1JtTbh20mOLbk1vCAamu7utlXeGU2ooVikbU/actcgmsC1FKk2qmj3GWeIWbj4tGIxE7BLcBWUvvcnd/lYxsMV4F917fWeFB/XbINN3qGvIyTpCalz1lVewdIGqeAS/gB8Mi+sA+BqDiX3VGD2eUunTRbSY+AuDy4E3Qx3hAhwnSXX+B0zuj3eQ1miS8Vux2z/l6/BkWtjKGU72aJkOCWhGcSf3+kFkkB15vGOsQrSdFr6qTj0gBYiOlnBO41170gOWHSUoBVRU2JjwppYdhIFDfu7tIRHccSNM5KZOFDPz0TGMAjzzEpeLwTWp+kn201kU6NjbiMQJx83+LX1e1tZ10kuChJZ/XBUQ1dwaBHjTDJDqOympEk8X2M3VtVw21JksChA8w1tTefO3RJ1FMbqZ01bHHkudDB/OhLfe7P5GOHaI28ZXKTMuqo0hLWQ4HabBsGG7NbP1RiXtETz074er6w/OerJWEqjmkq2y51q1BVI+JUudnVa3ogBpzdhFE7fC7kybrAt2Z6RqDjATAUEYeYK45WMupBKQRtQlU+uNsjnzj6ZmGrezA+ASrWxQ6LMkHRXqXwNq7ftv28dUx/ZSJciDXP2SWJsWaN0FjPX9Yko6LobZ7aYW/IdUktI9apTLyHS8DyWPyuoZyxN1TK/vtfxk3HwWh6JczZC8Ftn0bIJay2g+n5wd7lm9rEsKO+svqVmi+c1j88hSCxbzrg4+HEP0Nt1/B6YW1XVm09T1CpAKjc9n18hjqsaFGdfyva1ZG0Xu3ip6N6JGpyTSqY5h4BOlpLPaOnyw45PdXTN+DtAKg7DLrLFTnWusoSBHk3s0d7YouJHq85/R09Tfc37ENXZF48eAYLnq9GLioNcwDZrC6FW6godB8JnqYUPvn0pWLfQz0lM0Yy8Mybgn84Ds3Q9bDP10bLyOV+qzxa4Rd9Dhu7cju8mMaONXK3UqmBQ9qIg7etIwEqM/kECk/Dzja4Bs1xR+Q/tCbc8IKrSGsTdJJ0vge7IG20W687uVmK6icWQ6cD3lwFzgNMGtFvO5qyJeKflGLAAcQZOrkxVwy3cWvqlGpvjmf9Qe6Ap20MPbV92DPV0OhFM4kz8Yr0ffC2zLWSQ1kqY6QdQrttR3kh1YLtQd1kCEv5hVoPIRWl5ERcUTttBIrWp6Xs5Ehh5OUUwI5aEBvuiDmUoENmnVw1FohCrbRp1A1E+XSlWVOTi7ADW+5Ohb9z1vK4qx5R5lPdGCPBJZ00mC+Ssp8VUbgpGAvXWMuWQQRbCqI6Rr2jtxZxtfP7W/8onz+yz0Gs76LaT5HX9ecyiZCB/ZR/gFtMxPsDwohoeCRtiuLxE1GM1vUEUgBv86+eehL58/P56QFGQ/MqOe/vC76L63jzmeax4exd/OKTUvkXg+fOJUHych9xt/9goJMrapSgvXrj8+8vk/N80f22Sewj6cyGqt1B6mztoeklVHHraouhvHJaG/OuBz6DHKMpFmQULU1bRWlyYE0RPXYYkUycIemN7TLtgNCJX6BqdyxDKkegO7nJK5xQ7OVYDZTMf9bVHidtk6DQX9Et+V9M7esgbsYBdEeUpsB0Xvw2kd9+rI7V+m47u+O/tq7mw7262HU1WlS9uFzsV6JxIHNmUCy0QS9e077JGRFbG65z3/dOKB/Zk+yDdKpUmdXjn/aS3N5nv4fK7bMHHmPlHd4E2+iTbV5rpzScRnxk6KARuDTJ8Q1LpK2mP8gj1EbuJ9RIyY+EWK4hCiIDBAS1Tm2IEXAFfgKPgdL9O6mAa06wjCcUAL6EsxPQWO9VNegBPm/0GgkZbDxCynxujX/92vmGcjZRMAY45puak2sFLCLSwXpEsyy5fnF0jGJBhm+fNSHKKUUfy+276A7/feLOFxxUuHRNJI2Osenxyvf8DAGObT60pfTTlhEg9u/KKkhJqm5U1/+BEcSkpFDA5XeCqxwXmPac1jcuZ3JWQ+p0NdWzb/5v1ZvF8GtMTFFEdQjpLO0bwPb0BHNWnip3liDXI2fXf05jjvfJ0NpjLCUgfTh9CMFYVFKEd4Z/OG/2C+N435mnK+9t1gvCiVcaaH7rK4+PjCvpVNiz+t2QyqH1O8x3JKZVl6Q+Lp/XK8wMjVMslOq9FdSw5FtUs/CptXH9PW+wbWHgrV17R5jTVOtGtKFu3nb80T+E0tv9QkzW3J2dbaw/8ddAKZ0pxIaEqLjlPrji3VgJ3GvdFvlqD8075woxh4fVt0JZE0KVFsAvqhe0dqN9b35jtSpnYMXkU+vZq+IAHad3IHc2s/LYrnD1anfG46IFiMIr9oNbZDWvwthqYNqOigaKd/XlLU4XHfk/PXIjPsLy/9/kAtQ+/wKH+hI/IROWj5FPvTZAT9f7j4ZXQyG4M0TujMAFXYkKvEHv1xhySekgXGGqNxWeWKlf8dDAlLuB1cb/qOD+rk7cmwt+1yKpk9cudqBanTi6zTbXRtV8qylNtjyOVKy1HTz0GW9rjt6sSjAZcT5R+KdtyYb0zyqG9pSLuCw5WBwAn7fjBjKLLoxLXMI+52L9cLwIR2B6OllJZLHJ8vDxmWdtF+QJnmt1rsHPIWY20lftk8fYePkAIg6Hgn532QoIpegMxiWgAOfe5/U44APR8Ac0NeZrVh3gEhs12W+tVSiWiUQekf/YBECUy5fdYbA08dd7VzPAP9aiVcIB9k6tY7WdJ1wNV+bHeydNtmC6G5ICtFC1ZwmJU/j8hf0I8TRVKSiz5oYIa93EpUI78X8GYIAZabx47/n8LDAAJ0nNtP1rpROprqKMBRecShca6qXuTSI3jZBLOB3Vp381B5rCGhjSvh/NSVkYp2qIdP/Bg="; 32942 }, 32943 {} 32944 ], 32945 6: [ 32946 function(require2, module2, exports2) { 32947 var data = require2("./dictionary-browser"); 32948 exports2.init = function() { 32949 exports2.dictionary = data.init(); 32950 }; 32951 exports2.offsetsByLength = new Uint32Array([ 32952 0, 32953 0, 32954 0, 32955 0, 32956 0, 32957 4096, 32958 9216, 32959 21504, 32960 35840, 32961 44032, 32962 53248, 32963 63488, 32964 74752, 32965 87040, 32966 93696, 32967 100864, 32968 104704, 32969 106752, 32970 108928, 32971 113536, 32972 115968, 32973 118528, 32974 119872, 32975 121280, 32976 122016 32977 ]); 32978 exports2.sizeBitsByLength = new Uint8Array([ 32979 0, 32980 0, 32981 0, 32982 0, 32983 10, 32984 10, 32985 11, 32986 11, 32987 10, 32988 10, 32989 10, 32990 10, 32991 10, 32992 9, 32993 9, 32994 8, 32995 7, 32996 7, 32997 8, 32998 7, 32999 7, 33000 6, 33001 6, 33002 5, 33003 5 33004 ]); 33005 exports2.minDictionaryWordLength = 4; 33006 exports2.maxDictionaryWordLength = 24; 33007 }, 33008 { "./dictionary-browser": 4 } 33009 ], 33010 7: [ 33011 function(require2, module2, exports2) { 33012 function HuffmanCode(bits, value) { 33013 this.bits = bits; 33014 this.value = value; 33015 } 33016 exports2.HuffmanCode = HuffmanCode; 33017 var MAX_LENGTH = 15; 33018 function GetNextKey(key, len) { 33019 var step = 1 << len - 1; 33020 while (key & step) { 33021 step >>= 1; 33022 } 33023 return (key & step - 1) + step; 33024 } 33025 function ReplicateValue(table, i, step, end, code) { 33026 do { 33027 end -= step; 33028 table[i + end] = new HuffmanCode( 33029 code.bits, 33030 code.value 33031 ); 33032 } while (end > 0); 33033 } 33034 function NextTableBitSize(count, len, root_bits) { 33035 var left = 1 << len - root_bits; 33036 while (len < MAX_LENGTH) { 33037 left -= count[len]; 33038 if (left <= 0) break; 33039 ++len; 33040 left <<= 1; 33041 } 33042 return len - root_bits; 33043 } 33044 exports2.BrotliBuildHuffmanTable = function(root_table, table, root_bits, code_lengths, code_lengths_size) { 33045 var start_table = table; 33046 var code; 33047 var len; 33048 var symbol; 33049 var key; 33050 var step; 33051 var low; 33052 var mask; 33053 var table_bits; 33054 var table_size; 33055 var total_size; 33056 var sorted; 33057 var count = new Int32Array( 33058 MAX_LENGTH + 1 33059 ); 33060 var offset4 = new Int32Array( 33061 MAX_LENGTH + 1 33062 ); 33063 sorted = new Int32Array(code_lengths_size); 33064 for (symbol = 0; symbol < code_lengths_size; symbol++) { 33065 count[code_lengths[symbol]]++; 33066 } 33067 offset4[1] = 0; 33068 for (len = 1; len < MAX_LENGTH; len++) { 33069 offset4[len + 1] = offset4[len] + count[len]; 33070 } 33071 for (symbol = 0; symbol < code_lengths_size; symbol++) { 33072 if (code_lengths[symbol] !== 0) { 33073 sorted[offset4[code_lengths[symbol]]++] = symbol; 33074 } 33075 } 33076 table_bits = root_bits; 33077 table_size = 1 << table_bits; 33078 total_size = table_size; 33079 if (offset4[MAX_LENGTH] === 1) { 33080 for (key = 0; key < total_size; ++key) { 33081 root_table[table + key] = new HuffmanCode( 33082 0, 33083 sorted[0] & 65535 33084 ); 33085 } 33086 return total_size; 33087 } 33088 key = 0; 33089 symbol = 0; 33090 for (len = 1, step = 2; len <= root_bits; ++len, step <<= 1) { 33091 for (; count[len] > 0; --count[len]) { 33092 code = new HuffmanCode( 33093 len & 255, 33094 sorted[symbol++] & 65535 33095 ); 33096 ReplicateValue( 33097 root_table, 33098 table + key, 33099 step, 33100 table_size, 33101 code 33102 ); 33103 key = GetNextKey(key, len); 33104 } 33105 } 33106 mask = total_size - 1; 33107 low = -1; 33108 for (len = root_bits + 1, step = 2; len <= MAX_LENGTH; ++len, step <<= 1) { 33109 for (; count[len] > 0; --count[len]) { 33110 if ((key & mask) !== low) { 33111 table += table_size; 33112 table_bits = NextTableBitSize( 33113 count, 33114 len, 33115 root_bits 33116 ); 33117 table_size = 1 << table_bits; 33118 total_size += table_size; 33119 low = key & mask; 33120 root_table[start_table + low] = new HuffmanCode( 33121 table_bits + root_bits & 255, 33122 table - start_table - low & 65535 33123 ); 33124 } 33125 code = new HuffmanCode( 33126 len - root_bits & 255, 33127 sorted[symbol++] & 65535 33128 ); 33129 ReplicateValue( 33130 root_table, 33131 table + (key >> root_bits), 33132 step, 33133 table_size, 33134 code 33135 ); 33136 key = GetNextKey(key, len); 33137 } 33138 } 33139 return total_size; 33140 }; 33141 }, 33142 {} 33143 ], 33144 8: [ 33145 function(require2, module2, exports2) { 33146 "use strict"; 33147 exports2.byteLength = byteLength; 33148 exports2.toByteArray = toByteArray; 33149 exports2.fromByteArray = fromByteArray; 33150 var lookup = []; 33151 var revLookup = []; 33152 var Arr = typeof Uint8Array !== "undefined" ? Uint8Array : Array; 33153 var code = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; 33154 for (var i = 0, len = code.length; i < len; ++i) { 33155 lookup[i] = code[i]; 33156 revLookup[code.charCodeAt(i)] = i; 33157 } 33158 revLookup["-".charCodeAt(0)] = 62; 33159 revLookup["_".charCodeAt(0)] = 63; 33160 function getLens(b64) { 33161 var len2 = b64.length; 33162 if (len2 % 4 > 0) { 33163 throw new Error( 33164 "Invalid string. Length must be a multiple of 4" 33165 ); 33166 } 33167 var validLen = b64.indexOf("="); 33168 if (validLen === -1) validLen = len2; 33169 var placeHoldersLen = validLen === len2 ? 0 : 4 - validLen % 4; 33170 return [validLen, placeHoldersLen]; 33171 } 33172 function byteLength(b64) { 33173 var lens = getLens(b64); 33174 var validLen = lens[0]; 33175 var placeHoldersLen = lens[1]; 33176 return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen; 33177 } 33178 function _byteLength(b64, validLen, placeHoldersLen) { 33179 return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen; 33180 } 33181 function toByteArray(b64) { 33182 var tmp; 33183 var lens = getLens(b64); 33184 var validLen = lens[0]; 33185 var placeHoldersLen = lens[1]; 33186 var arr = new Arr( 33187 _byteLength(b64, validLen, placeHoldersLen) 33188 ); 33189 var curByte = 0; 33190 var len2 = placeHoldersLen > 0 ? validLen - 4 : validLen; 33191 for (var i2 = 0; i2 < len2; i2 += 4) { 33192 tmp = revLookup[b64.charCodeAt(i2)] << 18 | revLookup[b64.charCodeAt(i2 + 1)] << 12 | revLookup[b64.charCodeAt(i2 + 2)] << 6 | revLookup[b64.charCodeAt(i2 + 3)]; 33193 arr[curByte++] = tmp >> 16 & 255; 33194 arr[curByte++] = tmp >> 8 & 255; 33195 arr[curByte++] = tmp & 255; 33196 } 33197 if (placeHoldersLen === 2) { 33198 tmp = revLookup[b64.charCodeAt(i2)] << 2 | revLookup[b64.charCodeAt(i2 + 1)] >> 4; 33199 arr[curByte++] = tmp & 255; 33200 } 33201 if (placeHoldersLen === 1) { 33202 tmp = revLookup[b64.charCodeAt(i2)] << 10 | revLookup[b64.charCodeAt(i2 + 1)] << 4 | revLookup[b64.charCodeAt(i2 + 2)] >> 2; 33203 arr[curByte++] = tmp >> 8 & 255; 33204 arr[curByte++] = tmp & 255; 33205 } 33206 return arr; 33207 } 33208 function tripletToBase64(num) { 33209 return lookup[num >> 18 & 63] + lookup[num >> 12 & 63] + lookup[num >> 6 & 63] + lookup[num & 63]; 33210 } 33211 function encodeChunk(uint8, start, end) { 33212 var tmp; 33213 var output = []; 33214 for (var i2 = start; i2 < end; i2 += 3) { 33215 tmp = (uint8[i2] << 16 & 16711680) + (uint8[i2 + 1] << 8 & 65280) + (uint8[i2 + 2] & 255); 33216 output.push(tripletToBase64(tmp)); 33217 } 33218 return output.join(""); 33219 } 33220 function fromByteArray(uint8) { 33221 var tmp; 33222 var len2 = uint8.length; 33223 var extraBytes = len2 % 3; 33224 var parts = []; 33225 var maxChunkLength = 16383; 33226 for (var i2 = 0, len22 = len2 - extraBytes; i2 < len22; i2 += maxChunkLength) { 33227 parts.push( 33228 encodeChunk( 33229 uint8, 33230 i2, 33231 i2 + maxChunkLength > len22 ? len22 : i2 + maxChunkLength 33232 ) 33233 ); 33234 } 33235 if (extraBytes === 1) { 33236 tmp = uint8[len2 - 1]; 33237 parts.push( 33238 lookup[tmp >> 2] + lookup[tmp << 4 & 63] + "==" 33239 ); 33240 } else if (extraBytes === 2) { 33241 tmp = (uint8[len2 - 2] << 8) + uint8[len2 - 1]; 33242 parts.push( 33243 lookup[tmp >> 10] + lookup[tmp >> 4 & 63] + lookup[tmp << 2 & 63] + "=" 33244 ); 33245 } 33246 return parts.join(""); 33247 } 33248 }, 33249 {} 33250 ], 33251 9: [ 33252 function(require2, module2, exports2) { 33253 function PrefixCodeRange(offset4, nbits) { 33254 this.offset = offset4; 33255 this.nbits = nbits; 33256 } 33257 exports2.kBlockLengthPrefixCode = [ 33258 new PrefixCodeRange(1, 2), 33259 new PrefixCodeRange(5, 2), 33260 new PrefixCodeRange(9, 2), 33261 new PrefixCodeRange(13, 2), 33262 new PrefixCodeRange(17, 3), 33263 new PrefixCodeRange(25, 3), 33264 new PrefixCodeRange(33, 3), 33265 new PrefixCodeRange(41, 3), 33266 new PrefixCodeRange(49, 4), 33267 new PrefixCodeRange(65, 4), 33268 new PrefixCodeRange(81, 4), 33269 new PrefixCodeRange(97, 4), 33270 new PrefixCodeRange(113, 5), 33271 new PrefixCodeRange(145, 5), 33272 new PrefixCodeRange(177, 5), 33273 new PrefixCodeRange(209, 5), 33274 new PrefixCodeRange(241, 6), 33275 new PrefixCodeRange(305, 6), 33276 new PrefixCodeRange(369, 7), 33277 new PrefixCodeRange(497, 8), 33278 new PrefixCodeRange(753, 9), 33279 new PrefixCodeRange(1265, 10), 33280 new PrefixCodeRange(2289, 11), 33281 new PrefixCodeRange(4337, 12), 33282 new PrefixCodeRange(8433, 13), 33283 new PrefixCodeRange(16625, 24) 33284 ]; 33285 exports2.kInsertLengthPrefixCode = [ 33286 new PrefixCodeRange(0, 0), 33287 new PrefixCodeRange(1, 0), 33288 new PrefixCodeRange(2, 0), 33289 new PrefixCodeRange(3, 0), 33290 new PrefixCodeRange(4, 0), 33291 new PrefixCodeRange(5, 0), 33292 new PrefixCodeRange(6, 1), 33293 new PrefixCodeRange(8, 1), 33294 new PrefixCodeRange(10, 2), 33295 new PrefixCodeRange(14, 2), 33296 new PrefixCodeRange(18, 3), 33297 new PrefixCodeRange(26, 3), 33298 new PrefixCodeRange(34, 4), 33299 new PrefixCodeRange(50, 4), 33300 new PrefixCodeRange(66, 5), 33301 new PrefixCodeRange(98, 5), 33302 new PrefixCodeRange(130, 6), 33303 new PrefixCodeRange(194, 7), 33304 new PrefixCodeRange(322, 8), 33305 new PrefixCodeRange(578, 9), 33306 new PrefixCodeRange(1090, 10), 33307 new PrefixCodeRange(2114, 12), 33308 new PrefixCodeRange(6210, 14), 33309 new PrefixCodeRange(22594, 24) 33310 ]; 33311 exports2.kCopyLengthPrefixCode = [ 33312 new PrefixCodeRange(2, 0), 33313 new PrefixCodeRange(3, 0), 33314 new PrefixCodeRange(4, 0), 33315 new PrefixCodeRange(5, 0), 33316 new PrefixCodeRange(6, 0), 33317 new PrefixCodeRange(7, 0), 33318 new PrefixCodeRange(8, 0), 33319 new PrefixCodeRange(9, 0), 33320 new PrefixCodeRange(10, 1), 33321 new PrefixCodeRange(12, 1), 33322 new PrefixCodeRange(14, 2), 33323 new PrefixCodeRange(18, 2), 33324 new PrefixCodeRange(22, 3), 33325 new PrefixCodeRange(30, 3), 33326 new PrefixCodeRange(38, 4), 33327 new PrefixCodeRange(54, 4), 33328 new PrefixCodeRange(70, 5), 33329 new PrefixCodeRange(102, 5), 33330 new PrefixCodeRange(134, 6), 33331 new PrefixCodeRange(198, 7), 33332 new PrefixCodeRange(326, 8), 33333 new PrefixCodeRange(582, 9), 33334 new PrefixCodeRange(1094, 10), 33335 new PrefixCodeRange(2118, 24) 33336 ]; 33337 exports2.kInsertRangeLut = [0, 0, 8, 8, 0, 16, 8, 16, 16]; 33338 exports2.kCopyRangeLut = [0, 8, 0, 8, 16, 0, 16, 8, 16]; 33339 }, 33340 {} 33341 ], 33342 10: [ 33343 function(require2, module2, exports2) { 33344 function BrotliInput(buffer) { 33345 this.buffer = buffer; 33346 this.pos = 0; 33347 } 33348 BrotliInput.prototype.read = function(buf, i, count) { 33349 if (this.pos + count > this.buffer.length) { 33350 count = this.buffer.length - this.pos; 33351 } 33352 for (var p3 = 0; p3 < count; p3++) 33353 buf[i + p3] = this.buffer[this.pos + p3]; 33354 this.pos += count; 33355 return count; 33356 }; 33357 exports2.BrotliInput = BrotliInput; 33358 function BrotliOutput(buf) { 33359 this.buffer = buf; 33360 this.pos = 0; 33361 } 33362 BrotliOutput.prototype.write = function(buf, count) { 33363 if (this.pos + count > this.buffer.length) 33364 throw new Error( 33365 "Output buffer is not large enough" 33366 ); 33367 this.buffer.set(buf.subarray(0, count), this.pos); 33368 this.pos += count; 33369 return count; 33370 }; 33371 exports2.BrotliOutput = BrotliOutput; 33372 }, 33373 {} 33374 ], 33375 11: [ 33376 function(require2, module2, exports2) { 33377 var BrotliDictionary = require2("./dictionary"); 33378 var kIdentity = 0; 33379 var kOmitLast1 = 1; 33380 var kOmitLast2 = 2; 33381 var kOmitLast3 = 3; 33382 var kOmitLast4 = 4; 33383 var kOmitLast5 = 5; 33384 var kOmitLast6 = 6; 33385 var kOmitLast7 = 7; 33386 var kOmitLast8 = 8; 33387 var kOmitLast9 = 9; 33388 var kUppercaseFirst = 10; 33389 var kUppercaseAll = 11; 33390 var kOmitFirst1 = 12; 33391 var kOmitFirst2 = 13; 33392 var kOmitFirst3 = 14; 33393 var kOmitFirst4 = 15; 33394 var kOmitFirst5 = 16; 33395 var kOmitFirst6 = 17; 33396 var kOmitFirst7 = 18; 33397 var kOmitFirst8 = 19; 33398 var kOmitFirst9 = 20; 33399 function Transform(prefix, transform, suffix) { 33400 this.prefix = new Uint8Array(prefix.length); 33401 this.transform = transform; 33402 this.suffix = new Uint8Array(suffix.length); 33403 for (var i = 0; i < prefix.length; i++) 33404 this.prefix[i] = prefix.charCodeAt(i); 33405 for (var i = 0; i < suffix.length; i++) 33406 this.suffix[i] = suffix.charCodeAt(i); 33407 } 33408 var kTransforms = [ 33409 new Transform("", kIdentity, ""), 33410 new Transform("", kIdentity, " "), 33411 new Transform(" ", kIdentity, " "), 33412 new Transform("", kOmitFirst1, ""), 33413 new Transform("", kUppercaseFirst, " "), 33414 new Transform("", kIdentity, " the "), 33415 new Transform(" ", kIdentity, ""), 33416 new Transform("s ", kIdentity, " "), 33417 new Transform("", kIdentity, " of "), 33418 new Transform("", kUppercaseFirst, ""), 33419 new Transform("", kIdentity, " and "), 33420 new Transform("", kOmitFirst2, ""), 33421 new Transform("", kOmitLast1, ""), 33422 new Transform(", ", kIdentity, " "), 33423 new Transform("", kIdentity, ", "), 33424 new Transform(" ", kUppercaseFirst, " "), 33425 new Transform("", kIdentity, " in "), 33426 new Transform("", kIdentity, " to "), 33427 new Transform("e ", kIdentity, " "), 33428 new Transform("", kIdentity, '"'), 33429 new Transform("", kIdentity, "."), 33430 new Transform("", kIdentity, '">'), 33431 new Transform("", kIdentity, "\n"), 33432 new Transform("", kOmitLast3, ""), 33433 new Transform("", kIdentity, "]"), 33434 new Transform("", kIdentity, " for "), 33435 new Transform("", kOmitFirst3, ""), 33436 new Transform("", kOmitLast2, ""), 33437 new Transform("", kIdentity, " a "), 33438 new Transform("", kIdentity, " that "), 33439 new Transform(" ", kUppercaseFirst, ""), 33440 new Transform("", kIdentity, ". "), 33441 new Transform(".", kIdentity, ""), 33442 new Transform(" ", kIdentity, ", "), 33443 new Transform("", kOmitFirst4, ""), 33444 new Transform("", kIdentity, " with "), 33445 new Transform("", kIdentity, "'"), 33446 new Transform("", kIdentity, " from "), 33447 new Transform("", kIdentity, " by "), 33448 new Transform("", kOmitFirst5, ""), 33449 new Transform("", kOmitFirst6, ""), 33450 new Transform(" the ", kIdentity, ""), 33451 new Transform("", kOmitLast4, ""), 33452 new Transform("", kIdentity, ". The "), 33453 new Transform("", kUppercaseAll, ""), 33454 new Transform("", kIdentity, " on "), 33455 new Transform("", kIdentity, " as "), 33456 new Transform("", kIdentity, " is "), 33457 new Transform("", kOmitLast7, ""), 33458 new Transform("", kOmitLast1, "ing "), 33459 new Transform("", kIdentity, "\n "), 33460 new Transform("", kIdentity, ":"), 33461 new Transform(" ", kIdentity, ". "), 33462 new Transform("", kIdentity, "ed "), 33463 new Transform("", kOmitFirst9, ""), 33464 new Transform("", kOmitFirst7, ""), 33465 new Transform("", kOmitLast6, ""), 33466 new Transform("", kIdentity, "("), 33467 new Transform("", kUppercaseFirst, ", "), 33468 new Transform("", kOmitLast8, ""), 33469 new Transform("", kIdentity, " at "), 33470 new Transform("", kIdentity, "ly "), 33471 new Transform(" the ", kIdentity, " of "), 33472 new Transform("", kOmitLast5, ""), 33473 new Transform("", kOmitLast9, ""), 33474 new Transform(" ", kUppercaseFirst, ", "), 33475 new Transform("", kUppercaseFirst, '"'), 33476 new Transform(".", kIdentity, "("), 33477 new Transform("", kUppercaseAll, " "), 33478 new Transform("", kUppercaseFirst, '">'), 33479 new Transform("", kIdentity, '="'), 33480 new Transform(" ", kIdentity, "."), 33481 new Transform(".com/", kIdentity, ""), 33482 new Transform(" the ", kIdentity, " of the "), 33483 new Transform("", kUppercaseFirst, "'"), 33484 new Transform("", kIdentity, ". This "), 33485 new Transform("", kIdentity, ","), 33486 new Transform(".", kIdentity, " "), 33487 new Transform("", kUppercaseFirst, "("), 33488 new Transform("", kUppercaseFirst, "."), 33489 new Transform("", kIdentity, " not "), 33490 new Transform(" ", kIdentity, '="'), 33491 new Transform("", kIdentity, "er "), 33492 new Transform(" ", kUppercaseAll, " "), 33493 new Transform("", kIdentity, "al "), 33494 new Transform(" ", kUppercaseAll, ""), 33495 new Transform("", kIdentity, "='"), 33496 new Transform("", kUppercaseAll, '"'), 33497 new Transform("", kUppercaseFirst, ". "), 33498 new Transform(" ", kIdentity, "("), 33499 new Transform("", kIdentity, "ful "), 33500 new Transform(" ", kUppercaseFirst, ". "), 33501 new Transform("", kIdentity, "ive "), 33502 new Transform("", kIdentity, "less "), 33503 new Transform("", kUppercaseAll, "'"), 33504 new Transform("", kIdentity, "est "), 33505 new Transform(" ", kUppercaseFirst, "."), 33506 new Transform("", kUppercaseAll, '">'), 33507 new Transform(" ", kIdentity, "='"), 33508 new Transform("", kUppercaseFirst, ","), 33509 new Transform("", kIdentity, "ize "), 33510 new Transform("", kUppercaseAll, "."), 33511 new Transform("\xC2\xA0", kIdentity, ""), 33512 new Transform(" ", kIdentity, ","), 33513 new Transform("", kUppercaseFirst, '="'), 33514 new Transform("", kUppercaseAll, '="'), 33515 new Transform("", kIdentity, "ous "), 33516 new Transform("", kUppercaseAll, ", "), 33517 new Transform("", kUppercaseFirst, "='"), 33518 new Transform(" ", kUppercaseFirst, ","), 33519 new Transform(" ", kUppercaseAll, '="'), 33520 new Transform(" ", kUppercaseAll, ", "), 33521 new Transform("", kUppercaseAll, ","), 33522 new Transform("", kUppercaseAll, "("), 33523 new Transform("", kUppercaseAll, ". "), 33524 new Transform(" ", kUppercaseAll, "."), 33525 new Transform("", kUppercaseAll, "='"), 33526 new Transform(" ", kUppercaseAll, ". "), 33527 new Transform(" ", kUppercaseFirst, '="'), 33528 new Transform(" ", kUppercaseAll, "='"), 33529 new Transform(" ", kUppercaseFirst, "='") 33530 ]; 33531 exports2.kTransforms = kTransforms; 33532 exports2.kNumTransforms = kTransforms.length; 33533 function ToUpperCase(p3, i) { 33534 if (p3[i] < 192) { 33535 if (p3[i] >= 97 && p3[i] <= 122) { 33536 p3[i] ^= 32; 33537 } 33538 return 1; 33539 } 33540 if (p3[i] < 224) { 33541 p3[i + 1] ^= 32; 33542 return 2; 33543 } 33544 p3[i + 2] ^= 5; 33545 return 3; 33546 } 33547 exports2.transformDictionaryWord = function(dst, idx, word, len, transform) { 33548 var prefix = kTransforms[transform].prefix; 33549 var suffix = kTransforms[transform].suffix; 33550 var t = kTransforms[transform].transform; 33551 var skip = t < kOmitFirst1 ? 0 : t - (kOmitFirst1 - 1); 33552 var i = 0; 33553 var start_idx = idx; 33554 var uppercase; 33555 if (skip > len) { 33556 skip = len; 33557 } 33558 var prefix_pos = 0; 33559 while (prefix_pos < prefix.length) { 33560 dst[idx++] = prefix[prefix_pos++]; 33561 } 33562 word += skip; 33563 len -= skip; 33564 if (t <= kOmitLast9) { 33565 len -= t; 33566 } 33567 for (i = 0; i < len; i++) { 33568 dst[idx++] = BrotliDictionary.dictionary[word + i]; 33569 } 33570 uppercase = idx - len; 33571 if (t === kUppercaseFirst) { 33572 ToUpperCase(dst, uppercase); 33573 } else if (t === kUppercaseAll) { 33574 while (len > 0) { 33575 var step = ToUpperCase(dst, uppercase); 33576 uppercase += step; 33577 len -= step; 33578 } 33579 } 33580 var suffix_pos = 0; 33581 while (suffix_pos < suffix.length) { 33582 dst[idx++] = suffix[suffix_pos++]; 33583 } 33584 return idx - start_idx; 33585 }; 33586 }, 33587 { "./dictionary": 6 } 33588 ], 33589 12: [ 33590 function(require2, module2, exports2) { 33591 module2.exports = require2("./dec/decode").BrotliDecompressBuffer; 33592 }, 33593 { "./dec/decode": 3 } 33594 ] 33595 }, 33596 {}, 33597 [12] 33598 )(12); 33599 })(); 33600 33601 // packages/global-styles-ui/build-module/font-library/lib/inflate.mjs 33602 var __require3 = /* @__PURE__ */ ((x2) => typeof __require !== "undefined" ? __require : typeof Proxy !== "undefined" ? new Proxy(x2, { 33603 get: (a, b) => (typeof __require !== "undefined" ? __require : a)[b] 33604 }) : x2)(function(x2) { 33605 if (typeof __require !== "undefined") return __require.apply(this, arguments); 33606 throw Error('Dynamic require of "' + x2 + '" is not supported'); 33607 }); 33608 var inflate_default = (function() { 33609 var define, module, exports; 33610 return (/* @__PURE__ */ (function() { 33611 function r2(e, n, t) { 33612 function o(i2, f) { 33613 if (!n[i2]) { 33614 if (!e[i2]) { 33615 var c2 = "function" == typeof __require3 && __require3; 33616 if (!f && c2) return c2(i2, true); 33617 if (u) return u(i2, true); 33618 var a = new Error("Cannot find module '" + i2 + "'"); 33619 throw a.code = "MODULE_NOT_FOUND", a; 33620 } 33621 var p3 = n[i2] = { exports: {} }; 33622 e[i2][0].call( 33623 p3.exports, 33624 function(r22) { 33625 var n2 = e[i2][1][r22]; 33626 return o(n2 || r22); 33627 }, 33628 p3, 33629 p3.exports, 33630 r2, 33631 e, 33632 n, 33633 t 33634 ); 33635 } 33636 return n[i2].exports; 33637 } 33638 for (var u = "function" == typeof __require3 && __require3, i = 0; i < t.length; i++) 33639 o(t[i]); 33640 return o; 33641 } 33642 return r2; 33643 })())( 33644 { 33645 1: [ 33646 function(require2, module2, exports2) { 33647 "use strict"; 33648 var TYPED_OK = typeof Uint8Array !== "undefined" && typeof Uint16Array !== "undefined" && typeof Int32Array !== "undefined"; 33649 function _has(obj, key) { 33650 return Object.prototype.hasOwnProperty.call(obj, key); 33651 } 33652 exports2.assign = function(obj) { 33653 var sources = Array.prototype.slice.call( 33654 arguments, 33655 1 33656 ); 33657 while (sources.length) { 33658 var source = sources.shift(); 33659 if (!source) { 33660 continue; 33661 } 33662 if (typeof source !== "object") { 33663 throw new TypeError( 33664 source + "must be non-object" 33665 ); 33666 } 33667 for (var p3 in source) { 33668 if (_has(source, p3)) { 33669 obj[p3] = source[p3]; 33670 } 33671 } 33672 } 33673 return obj; 33674 }; 33675 exports2.shrinkBuf = function(buf, size4) { 33676 if (buf.length === size4) { 33677 return buf; 33678 } 33679 if (buf.subarray) { 33680 return buf.subarray(0, size4); 33681 } 33682 buf.length = size4; 33683 return buf; 33684 }; 33685 var fnTyped = { 33686 arraySet: function(dest, src, src_offs, len, dest_offs) { 33687 if (src.subarray && dest.subarray) { 33688 dest.set( 33689 src.subarray(src_offs, src_offs + len), 33690 dest_offs 33691 ); 33692 return; 33693 } 33694 for (var i = 0; i < len; i++) { 33695 dest[dest_offs + i] = src[src_offs + i]; 33696 } 33697 }, 33698 // Join array of chunks to single array. 33699 flattenChunks: function(chunks) { 33700 var i, l2, len, pos, chunk, result; 33701 len = 0; 33702 for (i = 0, l2 = chunks.length; i < l2; i++) { 33703 len += chunks[i].length; 33704 } 33705 result = new Uint8Array(len); 33706 pos = 0; 33707 for (i = 0, l2 = chunks.length; i < l2; i++) { 33708 chunk = chunks[i]; 33709 result.set(chunk, pos); 33710 pos += chunk.length; 33711 } 33712 return result; 33713 } 33714 }; 33715 var fnUntyped = { 33716 arraySet: function(dest, src, src_offs, len, dest_offs) { 33717 for (var i = 0; i < len; i++) { 33718 dest[dest_offs + i] = src[src_offs + i]; 33719 } 33720 }, 33721 // Join array of chunks to single array. 33722 flattenChunks: function(chunks) { 33723 return [].concat.apply([], chunks); 33724 } 33725 }; 33726 exports2.setTyped = function(on) { 33727 if (on) { 33728 exports2.Buf8 = Uint8Array; 33729 exports2.Buf16 = Uint16Array; 33730 exports2.Buf32 = Int32Array; 33731 exports2.assign(exports2, fnTyped); 33732 } else { 33733 exports2.Buf8 = Array; 33734 exports2.Buf16 = Array; 33735 exports2.Buf32 = Array; 33736 exports2.assign(exports2, fnUntyped); 33737 } 33738 }; 33739 exports2.setTyped(TYPED_OK); 33740 }, 33741 {} 33742 ], 33743 2: [ 33744 function(require2, module2, exports2) { 33745 "use strict"; 33746 var utils = require2("./common"); 33747 var STR_APPLY_OK = true; 33748 var STR_APPLY_UIA_OK = true; 33749 try { 33750 String.fromCharCode.apply(null, [0]); 33751 } catch (__53) { 33752 STR_APPLY_OK = false; 33753 } 33754 try { 33755 String.fromCharCode.apply(null, new Uint8Array(1)); 33756 } catch (__53) { 33757 STR_APPLY_UIA_OK = false; 33758 } 33759 var _utf8len = new utils.Buf8(256); 33760 for (var q2 = 0; q2 < 256; q2++) { 33761 _utf8len[q2] = q2 >= 252 ? 6 : q2 >= 248 ? 5 : q2 >= 240 ? 4 : q2 >= 224 ? 3 : q2 >= 192 ? 2 : 1; 33762 } 33763 _utf8len[254] = _utf8len[254] = 1; 33764 exports2.string2buf = function(str) { 33765 var buf, c2, c22, m_pos, i, str_len = str.length, buf_len = 0; 33766 for (m_pos = 0; m_pos < str_len; m_pos++) { 33767 c2 = str.charCodeAt(m_pos); 33768 if ((c2 & 64512) === 55296 && m_pos + 1 < str_len) { 33769 c22 = str.charCodeAt(m_pos + 1); 33770 if ((c22 & 64512) === 56320) { 33771 c2 = 65536 + (c2 - 55296 << 10) + (c22 - 56320); 33772 m_pos++; 33773 } 33774 } 33775 buf_len += c2 < 128 ? 1 : c2 < 2048 ? 2 : c2 < 65536 ? 3 : 4; 33776 } 33777 buf = new utils.Buf8(buf_len); 33778 for (i = 0, m_pos = 0; i < buf_len; m_pos++) { 33779 c2 = str.charCodeAt(m_pos); 33780 if ((c2 & 64512) === 55296 && m_pos + 1 < str_len) { 33781 c22 = str.charCodeAt(m_pos + 1); 33782 if ((c22 & 64512) === 56320) { 33783 c2 = 65536 + (c2 - 55296 << 10) + (c22 - 56320); 33784 m_pos++; 33785 } 33786 } 33787 if (c2 < 128) { 33788 buf[i++] = c2; 33789 } else if (c2 < 2048) { 33790 buf[i++] = 192 | c2 >>> 6; 33791 buf[i++] = 128 | c2 & 63; 33792 } else if (c2 < 65536) { 33793 buf[i++] = 224 | c2 >>> 12; 33794 buf[i++] = 128 | c2 >>> 6 & 63; 33795 buf[i++] = 128 | c2 & 63; 33796 } else { 33797 buf[i++] = 240 | c2 >>> 18; 33798 buf[i++] = 128 | c2 >>> 12 & 63; 33799 buf[i++] = 128 | c2 >>> 6 & 63; 33800 buf[i++] = 128 | c2 & 63; 33801 } 33802 } 33803 return buf; 33804 }; 33805 function buf2binstring(buf, len) { 33806 if (len < 65534) { 33807 if (buf.subarray && STR_APPLY_UIA_OK || !buf.subarray && STR_APPLY_OK) { 33808 return String.fromCharCode.apply( 33809 null, 33810 utils.shrinkBuf(buf, len) 33811 ); 33812 } 33813 } 33814 var result = ""; 33815 for (var i = 0; i < len; i++) { 33816 result += String.fromCharCode(buf[i]); 33817 } 33818 return result; 33819 } 33820 exports2.buf2binstring = function(buf) { 33821 return buf2binstring(buf, buf.length); 33822 }; 33823 exports2.binstring2buf = function(str) { 33824 var buf = new utils.Buf8(str.length); 33825 for (var i = 0, len = buf.length; i < len; i++) { 33826 buf[i] = str.charCodeAt(i); 33827 } 33828 return buf; 33829 }; 33830 exports2.buf2string = function(buf, max2) { 33831 var i, out, c2, c_len; 33832 var len = max2 || buf.length; 33833 var utf16buf = new Array(len * 2); 33834 for (out = 0, i = 0; i < len; ) { 33835 c2 = buf[i++]; 33836 if (c2 < 128) { 33837 utf16buf[out++] = c2; 33838 continue; 33839 } 33840 c_len = _utf8len[c2]; 33841 if (c_len > 4) { 33842 utf16buf[out++] = 65533; 33843 i += c_len - 1; 33844 continue; 33845 } 33846 c2 &= c_len === 2 ? 31 : c_len === 3 ? 15 : 7; 33847 while (c_len > 1 && i < len) { 33848 c2 = c2 << 6 | buf[i++] & 63; 33849 c_len--; 33850 } 33851 if (c_len > 1) { 33852 utf16buf[out++] = 65533; 33853 continue; 33854 } 33855 if (c2 < 65536) { 33856 utf16buf[out++] = c2; 33857 } else { 33858 c2 -= 65536; 33859 utf16buf[out++] = 55296 | c2 >> 10 & 1023; 33860 utf16buf[out++] = 56320 | c2 & 1023; 33861 } 33862 } 33863 return buf2binstring(utf16buf, out); 33864 }; 33865 exports2.utf8border = function(buf, max2) { 33866 var pos; 33867 max2 = max2 || buf.length; 33868 if (max2 > buf.length) { 33869 max2 = buf.length; 33870 } 33871 pos = max2 - 1; 33872 while (pos >= 0 && (buf[pos] & 192) === 128) { 33873 pos--; 33874 } 33875 if (pos < 0) { 33876 return max2; 33877 } 33878 if (pos === 0) { 33879 return max2; 33880 } 33881 return pos + _utf8len[buf[pos]] > max2 ? pos : max2; 33882 }; 33883 }, 33884 { "./common": 1 } 33885 ], 33886 3: [ 33887 function(require2, module2, exports2) { 33888 "use strict"; 33889 function adler32(adler, buf, len, pos) { 33890 var s1 = adler & 65535 | 0, s2 = adler >>> 16 & 65535 | 0, n = 0; 33891 while (len !== 0) { 33892 n = len > 2e3 ? 2e3 : len; 33893 len -= n; 33894 do { 33895 s1 = s1 + buf[pos++] | 0; 33896 s2 = s2 + s1 | 0; 33897 } while (--n); 33898 s1 %= 65521; 33899 s2 %= 65521; 33900 } 33901 return s1 | s2 << 16 | 0; 33902 } 33903 module2.exports = adler32; 33904 }, 33905 {} 33906 ], 33907 4: [ 33908 function(require2, module2, exports2) { 33909 "use strict"; 33910 module2.exports = { 33911 /* Allowed flush values; see deflate() and inflate() below for details */ 33912 Z_NO_FLUSH: 0, 33913 Z_PARTIAL_FLUSH: 1, 33914 Z_SYNC_FLUSH: 2, 33915 Z_FULL_FLUSH: 3, 33916 Z_FINISH: 4, 33917 Z_BLOCK: 5, 33918 Z_TREES: 6, 33919 /* Return codes for the compression/decompression functions. Negative values 33920 * are errors, positive values are used for special but normal events. 33921 */ 33922 Z_OK: 0, 33923 Z_STREAM_END: 1, 33924 Z_NEED_DICT: 2, 33925 Z_ERRNO: -1, 33926 Z_STREAM_ERROR: -2, 33927 Z_DATA_ERROR: -3, 33928 //Z_MEM_ERROR: -4, 33929 Z_BUF_ERROR: -5, 33930 //Z_VERSION_ERROR: -6, 33931 /* compression levels */ 33932 Z_NO_COMPRESSION: 0, 33933 Z_BEST_SPEED: 1, 33934 Z_BEST_COMPRESSION: 9, 33935 Z_DEFAULT_COMPRESSION: -1, 33936 Z_FILTERED: 1, 33937 Z_HUFFMAN_ONLY: 2, 33938 Z_RLE: 3, 33939 Z_FIXED: 4, 33940 Z_DEFAULT_STRATEGY: 0, 33941 /* Possible values of the data_type field (though see inflate()) */ 33942 Z_BINARY: 0, 33943 Z_TEXT: 1, 33944 //Z_ASCII: 1, // = Z_TEXT (deprecated) 33945 Z_UNKNOWN: 2, 33946 /* The deflate compression method */ 33947 Z_DEFLATED: 8 33948 //Z_NULL: null // Use -1 or null inline, depending on var type 33949 }; 33950 }, 33951 {} 33952 ], 33953 5: [ 33954 function(require2, module2, exports2) { 33955 "use strict"; 33956 function makeTable() { 33957 var c2, table = []; 33958 for (var n = 0; n < 256; n++) { 33959 c2 = n; 33960 for (var k2 = 0; k2 < 8; k2++) { 33961 c2 = c2 & 1 ? 3988292384 ^ c2 >>> 1 : c2 >>> 1; 33962 } 33963 table[n] = c2; 33964 } 33965 return table; 33966 } 33967 var crcTable = makeTable(); 33968 function crc32(crc, buf, len, pos) { 33969 var t = crcTable, end = pos + len; 33970 crc ^= -1; 33971 for (var i = pos; i < end; i++) { 33972 crc = crc >>> 8 ^ t[(crc ^ buf[i]) & 255]; 33973 } 33974 return crc ^ -1; 33975 } 33976 module2.exports = crc32; 33977 }, 33978 {} 33979 ], 33980 6: [ 33981 function(require2, module2, exports2) { 33982 "use strict"; 33983 function GZheader() { 33984 this.text = 0; 33985 this.time = 0; 33986 this.xflags = 0; 33987 this.os = 0; 33988 this.extra = null; 33989 this.extra_len = 0; 33990 this.name = ""; 33991 this.comment = ""; 33992 this.hcrc = 0; 33993 this.done = false; 33994 } 33995 module2.exports = GZheader; 33996 }, 33997 {} 33998 ], 33999 7: [ 34000 function(require2, module2, exports2) { 34001 "use strict"; 34002 var BAD = 30; 34003 var TYPE = 12; 34004 module2.exports = function inflate_fast(strm, start) { 34005 var state; 34006 var _in; 34007 var last; 34008 var _out; 34009 var beg; 34010 var end; 34011 var dmax; 34012 var wsize; 34013 var whave; 34014 var wnext; 34015 var s_window; 34016 var hold; 34017 var bits; 34018 var lcode; 34019 var dcode; 34020 var lmask; 34021 var dmask; 34022 var here; 34023 var op; 34024 var len; 34025 var dist; 34026 var from; 34027 var from_source; 34028 var input, output; 34029 state = strm.state; 34030 _in = strm.next_in; 34031 input = strm.input; 34032 last = _in + (strm.avail_in - 5); 34033 _out = strm.next_out; 34034 output = strm.output; 34035 beg = _out - (start - strm.avail_out); 34036 end = _out + (strm.avail_out - 257); 34037 dmax = state.dmax; 34038 wsize = state.wsize; 34039 whave = state.whave; 34040 wnext = state.wnext; 34041 s_window = state.window; 34042 hold = state.hold; 34043 bits = state.bits; 34044 lcode = state.lencode; 34045 dcode = state.distcode; 34046 lmask = (1 << state.lenbits) - 1; 34047 dmask = (1 << state.distbits) - 1; 34048 top: do { 34049 if (bits < 15) { 34050 hold += input[_in++] << bits; 34051 bits += 8; 34052 hold += input[_in++] << bits; 34053 bits += 8; 34054 } 34055 here = lcode[hold & lmask]; 34056 dolen: for (; ; ) { 34057 op = here >>> 24; 34058 hold >>>= op; 34059 bits -= op; 34060 op = here >>> 16 & 255; 34061 if (op === 0) { 34062 output[_out++] = here & 65535; 34063 } else if (op & 16) { 34064 len = here & 65535; 34065 op &= 15; 34066 if (op) { 34067 if (bits < op) { 34068 hold += input[_in++] << bits; 34069 bits += 8; 34070 } 34071 len += hold & (1 << op) - 1; 34072 hold >>>= op; 34073 bits -= op; 34074 } 34075 if (bits < 15) { 34076 hold += input[_in++] << bits; 34077 bits += 8; 34078 hold += input[_in++] << bits; 34079 bits += 8; 34080 } 34081 here = dcode[hold & dmask]; 34082 dodist: for (; ; ) { 34083 op = here >>> 24; 34084 hold >>>= op; 34085 bits -= op; 34086 op = here >>> 16 & 255; 34087 if (op & 16) { 34088 dist = here & 65535; 34089 op &= 15; 34090 if (bits < op) { 34091 hold += input[_in++] << bits; 34092 bits += 8; 34093 if (bits < op) { 34094 hold += input[_in++] << bits; 34095 bits += 8; 34096 } 34097 } 34098 dist += hold & (1 << op) - 1; 34099 if (dist > dmax) { 34100 strm.msg = "invalid distance too far back"; 34101 state.mode = BAD; 34102 break top; 34103 } 34104 hold >>>= op; 34105 bits -= op; 34106 op = _out - beg; 34107 if (dist > op) { 34108 op = dist - op; 34109 if (op > whave) { 34110 if (state.sane) { 34111 strm.msg = "invalid distance too far back"; 34112 state.mode = BAD; 34113 break top; 34114 } 34115 } 34116 from = 0; 34117 from_source = s_window; 34118 if (wnext === 0) { 34119 from += wsize - op; 34120 if (op < len) { 34121 len -= op; 34122 do { 34123 output[_out++] = s_window[from++]; 34124 } while (--op); 34125 from = _out - dist; 34126 from_source = output; 34127 } 34128 } else if (wnext < op) { 34129 from += wsize + wnext - op; 34130 op -= wnext; 34131 if (op < len) { 34132 len -= op; 34133 do { 34134 output[_out++] = s_window[from++]; 34135 } while (--op); 34136 from = 0; 34137 if (wnext < len) { 34138 op = wnext; 34139 len -= op; 34140 do { 34141 output[_out++] = s_window[from++]; 34142 } while (--op); 34143 from = _out - dist; 34144 from_source = output; 34145 } 34146 } 34147 } else { 34148 from += wnext - op; 34149 if (op < len) { 34150 len -= op; 34151 do { 34152 output[_out++] = s_window[from++]; 34153 } while (--op); 34154 from = _out - dist; 34155 from_source = output; 34156 } 34157 } 34158 while (len > 2) { 34159 output[_out++] = from_source[from++]; 34160 output[_out++] = from_source[from++]; 34161 output[_out++] = from_source[from++]; 34162 len -= 3; 34163 } 34164 if (len) { 34165 output[_out++] = from_source[from++]; 34166 if (len > 1) { 34167 output[_out++] = from_source[from++]; 34168 } 34169 } 34170 } else { 34171 from = _out - dist; 34172 do { 34173 output[_out++] = output[from++]; 34174 output[_out++] = output[from++]; 34175 output[_out++] = output[from++]; 34176 len -= 3; 34177 } while (len > 2); 34178 if (len) { 34179 output[_out++] = output[from++]; 34180 if (len > 1) { 34181 output[_out++] = output[from++]; 34182 } 34183 } 34184 } 34185 } else if ((op & 64) === 0) { 34186 here = dcode[(here & 65535) + (hold & (1 << op) - 1)]; 34187 continue dodist; 34188 } else { 34189 strm.msg = "invalid distance code"; 34190 state.mode = BAD; 34191 break top; 34192 } 34193 break; 34194 } 34195 } else if ((op & 64) === 0) { 34196 here = lcode[(here & 65535) + (hold & (1 << op) - 1)]; 34197 continue dolen; 34198 } else if (op & 32) { 34199 state.mode = TYPE; 34200 break top; 34201 } else { 34202 strm.msg = "invalid literal/length code"; 34203 state.mode = BAD; 34204 break top; 34205 } 34206 break; 34207 } 34208 } while (_in < last && _out < end); 34209 len = bits >> 3; 34210 _in -= len; 34211 bits -= len << 3; 34212 hold &= (1 << bits) - 1; 34213 strm.next_in = _in; 34214 strm.next_out = _out; 34215 strm.avail_in = _in < last ? 5 + (last - _in) : 5 - (_in - last); 34216 strm.avail_out = _out < end ? 257 + (end - _out) : 257 - (_out - end); 34217 state.hold = hold; 34218 state.bits = bits; 34219 return; 34220 }; 34221 }, 34222 {} 34223 ], 34224 8: [ 34225 function(require2, module2, exports2) { 34226 "use strict"; 34227 var utils = require2("../utils/common"); 34228 var adler32 = require2("./adler32"); 34229 var crc32 = require2("./crc32"); 34230 var inflate_fast = require2("./inffast"); 34231 var inflate_table = require2("./inftrees"); 34232 var CODES = 0; 34233 var LENS = 1; 34234 var DISTS = 2; 34235 var Z_FINISH = 4; 34236 var Z_BLOCK = 5; 34237 var Z_TREES = 6; 34238 var Z_OK = 0; 34239 var Z_STREAM_END = 1; 34240 var Z_NEED_DICT = 2; 34241 var Z_STREAM_ERROR = -2; 34242 var Z_DATA_ERROR = -3; 34243 var Z_MEM_ERROR = -4; 34244 var Z_BUF_ERROR = -5; 34245 var Z_DEFLATED = 8; 34246 var HEAD = 1; 34247 var FLAGS = 2; 34248 var TIME = 3; 34249 var OS = 4; 34250 var EXLEN = 5; 34251 var EXTRA = 6; 34252 var NAME = 7; 34253 var COMMENT = 8; 34254 var HCRC = 9; 34255 var DICTID = 10; 34256 var DICT = 11; 34257 var TYPE = 12; 34258 var TYPEDO = 13; 34259 var STORED = 14; 34260 var COPY_ = 15; 34261 var COPY = 16; 34262 var TABLE = 17; 34263 var LENLENS = 18; 34264 var CODELENS = 19; 34265 var LEN_ = 20; 34266 var LEN = 21; 34267 var LENEXT = 22; 34268 var DIST = 23; 34269 var DISTEXT = 24; 34270 var MATCH = 25; 34271 var LIT = 26; 34272 var CHECK = 27; 34273 var LENGTH = 28; 34274 var DONE = 29; 34275 var BAD = 30; 34276 var MEM = 31; 34277 var SYNC = 32; 34278 var ENOUGH_LENS = 852; 34279 var ENOUGH_DISTS = 592; 34280 var MAX_WBITS = 15; 34281 var DEF_WBITS = MAX_WBITS; 34282 function zswap32(q2) { 34283 return (q2 >>> 24 & 255) + (q2 >>> 8 & 65280) + ((q2 & 65280) << 8) + ((q2 & 255) << 24); 34284 } 34285 function InflateState() { 34286 this.mode = 0; 34287 this.last = false; 34288 this.wrap = 0; 34289 this.havedict = false; 34290 this.flags = 0; 34291 this.dmax = 0; 34292 this.check = 0; 34293 this.total = 0; 34294 this.head = null; 34295 this.wbits = 0; 34296 this.wsize = 0; 34297 this.whave = 0; 34298 this.wnext = 0; 34299 this.window = null; 34300 this.hold = 0; 34301 this.bits = 0; 34302 this.length = 0; 34303 this.offset = 0; 34304 this.extra = 0; 34305 this.lencode = null; 34306 this.distcode = null; 34307 this.lenbits = 0; 34308 this.distbits = 0; 34309 this.ncode = 0; 34310 this.nlen = 0; 34311 this.ndist = 0; 34312 this.have = 0; 34313 this.next = null; 34314 this.lens = new utils.Buf16( 34315 320 34316 ); 34317 this.work = new utils.Buf16( 34318 288 34319 ); 34320 this.lendyn = null; 34321 this.distdyn = null; 34322 this.sane = 0; 34323 this.back = 0; 34324 this.was = 0; 34325 } 34326 function inflateResetKeep(strm) { 34327 var state; 34328 if (!strm || !strm.state) { 34329 return Z_STREAM_ERROR; 34330 } 34331 state = strm.state; 34332 strm.total_in = strm.total_out = state.total = 0; 34333 strm.msg = ""; 34334 if (state.wrap) { 34335 strm.adler = state.wrap & 1; 34336 } 34337 state.mode = HEAD; 34338 state.last = 0; 34339 state.havedict = 0; 34340 state.dmax = 32768; 34341 state.head = null; 34342 state.hold = 0; 34343 state.bits = 0; 34344 state.lencode = state.lendyn = new utils.Buf32( 34345 ENOUGH_LENS 34346 ); 34347 state.distcode = state.distdyn = new utils.Buf32( 34348 ENOUGH_DISTS 34349 ); 34350 state.sane = 1; 34351 state.back = -1; 34352 return Z_OK; 34353 } 34354 function inflateReset(strm) { 34355 var state; 34356 if (!strm || !strm.state) { 34357 return Z_STREAM_ERROR; 34358 } 34359 state = strm.state; 34360 state.wsize = 0; 34361 state.whave = 0; 34362 state.wnext = 0; 34363 return inflateResetKeep(strm); 34364 } 34365 function inflateReset2(strm, windowBits) { 34366 var wrap; 34367 var state; 34368 if (!strm || !strm.state) { 34369 return Z_STREAM_ERROR; 34370 } 34371 state = strm.state; 34372 if (windowBits < 0) { 34373 wrap = 0; 34374 windowBits = -windowBits; 34375 } else { 34376 wrap = (windowBits >> 4) + 1; 34377 if (windowBits < 48) { 34378 windowBits &= 15; 34379 } 34380 } 34381 if (windowBits && (windowBits < 8 || windowBits > 15)) { 34382 return Z_STREAM_ERROR; 34383 } 34384 if (state.window !== null && state.wbits !== windowBits) { 34385 state.window = null; 34386 } 34387 state.wrap = wrap; 34388 state.wbits = windowBits; 34389 return inflateReset(strm); 34390 } 34391 function inflateInit2(strm, windowBits) { 34392 var ret; 34393 var state; 34394 if (!strm) { 34395 return Z_STREAM_ERROR; 34396 } 34397 state = new InflateState(); 34398 strm.state = state; 34399 state.window = null; 34400 ret = inflateReset2(strm, windowBits); 34401 if (ret !== Z_OK) { 34402 strm.state = null; 34403 } 34404 return ret; 34405 } 34406 function inflateInit(strm) { 34407 return inflateInit2(strm, DEF_WBITS); 34408 } 34409 var virgin = true; 34410 var lenfix, distfix; 34411 function fixedtables(state) { 34412 if (virgin) { 34413 var sym; 34414 lenfix = new utils.Buf32(512); 34415 distfix = new utils.Buf32(32); 34416 sym = 0; 34417 while (sym < 144) { 34418 state.lens[sym++] = 8; 34419 } 34420 while (sym < 256) { 34421 state.lens[sym++] = 9; 34422 } 34423 while (sym < 280) { 34424 state.lens[sym++] = 7; 34425 } 34426 while (sym < 288) { 34427 state.lens[sym++] = 8; 34428 } 34429 inflate_table( 34430 LENS, 34431 state.lens, 34432 0, 34433 288, 34434 lenfix, 34435 0, 34436 state.work, 34437 { bits: 9 } 34438 ); 34439 sym = 0; 34440 while (sym < 32) { 34441 state.lens[sym++] = 5; 34442 } 34443 inflate_table( 34444 DISTS, 34445 state.lens, 34446 0, 34447 32, 34448 distfix, 34449 0, 34450 state.work, 34451 { bits: 5 } 34452 ); 34453 virgin = false; 34454 } 34455 state.lencode = lenfix; 34456 state.lenbits = 9; 34457 state.distcode = distfix; 34458 state.distbits = 5; 34459 } 34460 function updatewindow(strm, src, end, copy) { 34461 var dist; 34462 var state = strm.state; 34463 if (state.window === null) { 34464 state.wsize = 1 << state.wbits; 34465 state.wnext = 0; 34466 state.whave = 0; 34467 state.window = new utils.Buf8(state.wsize); 34468 } 34469 if (copy >= state.wsize) { 34470 utils.arraySet( 34471 state.window, 34472 src, 34473 end - state.wsize, 34474 state.wsize, 34475 0 34476 ); 34477 state.wnext = 0; 34478 state.whave = state.wsize; 34479 } else { 34480 dist = state.wsize - state.wnext; 34481 if (dist > copy) { 34482 dist = copy; 34483 } 34484 utils.arraySet( 34485 state.window, 34486 src, 34487 end - copy, 34488 dist, 34489 state.wnext 34490 ); 34491 copy -= dist; 34492 if (copy) { 34493 utils.arraySet( 34494 state.window, 34495 src, 34496 end - copy, 34497 copy, 34498 0 34499 ); 34500 state.wnext = copy; 34501 state.whave = state.wsize; 34502 } else { 34503 state.wnext += dist; 34504 if (state.wnext === state.wsize) { 34505 state.wnext = 0; 34506 } 34507 if (state.whave < state.wsize) { 34508 state.whave += dist; 34509 } 34510 } 34511 } 34512 return 0; 34513 } 34514 function inflate(strm, flush) { 34515 var state; 34516 var input, output; 34517 var next; 34518 var put; 34519 var have, left; 34520 var hold; 34521 var bits; 34522 var _in, _out; 34523 var copy; 34524 var from; 34525 var from_source; 34526 var here = 0; 34527 var here_bits, here_op, here_val; 34528 var last_bits, last_op, last_val; 34529 var len; 34530 var ret; 34531 var hbuf = new utils.Buf8( 34532 4 34533 ); 34534 var opts; 34535 var n; 34536 var order = ( 34537 /* permutation of code lengths */ 34538 [ 34539 16, 34540 17, 34541 18, 34542 0, 34543 8, 34544 7, 34545 9, 34546 6, 34547 10, 34548 5, 34549 11, 34550 4, 34551 12, 34552 3, 34553 13, 34554 2, 34555 14, 34556 1, 34557 15 34558 ] 34559 ); 34560 if (!strm || !strm.state || !strm.output || !strm.input && strm.avail_in !== 0) { 34561 return Z_STREAM_ERROR; 34562 } 34563 state = strm.state; 34564 if (state.mode === TYPE) { 34565 state.mode = TYPEDO; 34566 } 34567 put = strm.next_out; 34568 output = strm.output; 34569 left = strm.avail_out; 34570 next = strm.next_in; 34571 input = strm.input; 34572 have = strm.avail_in; 34573 hold = state.hold; 34574 bits = state.bits; 34575 _in = have; 34576 _out = left; 34577 ret = Z_OK; 34578 inf_leave: for (; ; ) { 34579 switch (state.mode) { 34580 case HEAD: 34581 if (state.wrap === 0) { 34582 state.mode = TYPEDO; 34583 break; 34584 } 34585 while (bits < 16) { 34586 if (have === 0) { 34587 break inf_leave; 34588 } 34589 have--; 34590 hold += input[next++] << bits; 34591 bits += 8; 34592 } 34593 if (state.wrap & 2 && hold === 35615) { 34594 state.check = 0; 34595 hbuf[0] = hold & 255; 34596 hbuf[1] = hold >>> 8 & 255; 34597 state.check = crc32( 34598 state.check, 34599 hbuf, 34600 2, 34601 0 34602 ); 34603 hold = 0; 34604 bits = 0; 34605 state.mode = FLAGS; 34606 break; 34607 } 34608 state.flags = 0; 34609 if (state.head) { 34610 state.head.done = false; 34611 } 34612 if (!(state.wrap & 1) || (((hold & 255) << 8) + (hold >> 8)) % 31) { 34613 strm.msg = "incorrect header check"; 34614 state.mode = BAD; 34615 break; 34616 } 34617 if ((hold & 15) !== Z_DEFLATED) { 34618 strm.msg = "unknown compression method"; 34619 state.mode = BAD; 34620 break; 34621 } 34622 hold >>>= 4; 34623 bits -= 4; 34624 len = (hold & 15) + 8; 34625 if (state.wbits === 0) { 34626 state.wbits = len; 34627 } else if (len > state.wbits) { 34628 strm.msg = "invalid window size"; 34629 state.mode = BAD; 34630 break; 34631 } 34632 state.dmax = 1 << len; 34633 strm.adler = state.check = 1; 34634 state.mode = hold & 512 ? DICTID : TYPE; 34635 hold = 0; 34636 bits = 0; 34637 break; 34638 case FLAGS: 34639 while (bits < 16) { 34640 if (have === 0) { 34641 break inf_leave; 34642 } 34643 have--; 34644 hold += input[next++] << bits; 34645 bits += 8; 34646 } 34647 state.flags = hold; 34648 if ((state.flags & 255) !== Z_DEFLATED) { 34649 strm.msg = "unknown compression method"; 34650 state.mode = BAD; 34651 break; 34652 } 34653 if (state.flags & 57344) { 34654 strm.msg = "unknown header flags set"; 34655 state.mode = BAD; 34656 break; 34657 } 34658 if (state.head) { 34659 state.head.text = hold >> 8 & 1; 34660 } 34661 if (state.flags & 512) { 34662 hbuf[0] = hold & 255; 34663 hbuf[1] = hold >>> 8 & 255; 34664 state.check = crc32( 34665 state.check, 34666 hbuf, 34667 2, 34668 0 34669 ); 34670 } 34671 hold = 0; 34672 bits = 0; 34673 state.mode = TIME; 34674 /* falls through */ 34675 case TIME: 34676 while (bits < 32) { 34677 if (have === 0) { 34678 break inf_leave; 34679 } 34680 have--; 34681 hold += input[next++] << bits; 34682 bits += 8; 34683 } 34684 if (state.head) { 34685 state.head.time = hold; 34686 } 34687 if (state.flags & 512) { 34688 hbuf[0] = hold & 255; 34689 hbuf[1] = hold >>> 8 & 255; 34690 hbuf[2] = hold >>> 16 & 255; 34691 hbuf[3] = hold >>> 24 & 255; 34692 state.check = crc32( 34693 state.check, 34694 hbuf, 34695 4, 34696 0 34697 ); 34698 } 34699 hold = 0; 34700 bits = 0; 34701 state.mode = OS; 34702 /* falls through */ 34703 case OS: 34704 while (bits < 16) { 34705 if (have === 0) { 34706 break inf_leave; 34707 } 34708 have--; 34709 hold += input[next++] << bits; 34710 bits += 8; 34711 } 34712 if (state.head) { 34713 state.head.xflags = hold & 255; 34714 state.head.os = hold >> 8; 34715 } 34716 if (state.flags & 512) { 34717 hbuf[0] = hold & 255; 34718 hbuf[1] = hold >>> 8 & 255; 34719 state.check = crc32( 34720 state.check, 34721 hbuf, 34722 2, 34723 0 34724 ); 34725 } 34726 hold = 0; 34727 bits = 0; 34728 state.mode = EXLEN; 34729 /* falls through */ 34730 case EXLEN: 34731 if (state.flags & 1024) { 34732 while (bits < 16) { 34733 if (have === 0) { 34734 break inf_leave; 34735 } 34736 have--; 34737 hold += input[next++] << bits; 34738 bits += 8; 34739 } 34740 state.length = hold; 34741 if (state.head) { 34742 state.head.extra_len = hold; 34743 } 34744 if (state.flags & 512) { 34745 hbuf[0] = hold & 255; 34746 hbuf[1] = hold >>> 8 & 255; 34747 state.check = crc32( 34748 state.check, 34749 hbuf, 34750 2, 34751 0 34752 ); 34753 } 34754 hold = 0; 34755 bits = 0; 34756 } else if (state.head) { 34757 state.head.extra = null; 34758 } 34759 state.mode = EXTRA; 34760 /* falls through */ 34761 case EXTRA: 34762 if (state.flags & 1024) { 34763 copy = state.length; 34764 if (copy > have) { 34765 copy = have; 34766 } 34767 if (copy) { 34768 if (state.head) { 34769 len = state.head.extra_len - state.length; 34770 if (!state.head.extra) { 34771 state.head.extra = new Array( 34772 state.head.extra_len 34773 ); 34774 } 34775 utils.arraySet( 34776 state.head.extra, 34777 input, 34778 next, 34779 // extra field is limited to 65536 bytes 34780 // - no need for additional size check 34781 copy, 34782 /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/ 34783 len 34784 ); 34785 } 34786 if (state.flags & 512) { 34787 state.check = crc32( 34788 state.check, 34789 input, 34790 copy, 34791 next 34792 ); 34793 } 34794 have -= copy; 34795 next += copy; 34796 state.length -= copy; 34797 } 34798 if (state.length) { 34799 break inf_leave; 34800 } 34801 } 34802 state.length = 0; 34803 state.mode = NAME; 34804 /* falls through */ 34805 case NAME: 34806 if (state.flags & 2048) { 34807 if (have === 0) { 34808 break inf_leave; 34809 } 34810 copy = 0; 34811 do { 34812 len = input[next + copy++]; 34813 if (state.head && len && state.length < 65536) { 34814 state.head.name += String.fromCharCode(len); 34815 } 34816 } while (len && copy < have); 34817 if (state.flags & 512) { 34818 state.check = crc32( 34819 state.check, 34820 input, 34821 copy, 34822 next 34823 ); 34824 } 34825 have -= copy; 34826 next += copy; 34827 if (len) { 34828 break inf_leave; 34829 } 34830 } else if (state.head) { 34831 state.head.name = null; 34832 } 34833 state.length = 0; 34834 state.mode = COMMENT; 34835 /* falls through */ 34836 case COMMENT: 34837 if (state.flags & 4096) { 34838 if (have === 0) { 34839 break inf_leave; 34840 } 34841 copy = 0; 34842 do { 34843 len = input[next + copy++]; 34844 if (state.head && len && state.length < 65536) { 34845 state.head.comment += String.fromCharCode(len); 34846 } 34847 } while (len && copy < have); 34848 if (state.flags & 512) { 34849 state.check = crc32( 34850 state.check, 34851 input, 34852 copy, 34853 next 34854 ); 34855 } 34856 have -= copy; 34857 next += copy; 34858 if (len) { 34859 break inf_leave; 34860 } 34861 } else if (state.head) { 34862 state.head.comment = null; 34863 } 34864 state.mode = HCRC; 34865 /* falls through */ 34866 case HCRC: 34867 if (state.flags & 512) { 34868 while (bits < 16) { 34869 if (have === 0) { 34870 break inf_leave; 34871 } 34872 have--; 34873 hold += input[next++] << bits; 34874 bits += 8; 34875 } 34876 if (hold !== (state.check & 65535)) { 34877 strm.msg = "header crc mismatch"; 34878 state.mode = BAD; 34879 break; 34880 } 34881 hold = 0; 34882 bits = 0; 34883 } 34884 if (state.head) { 34885 state.head.hcrc = state.flags >> 9 & 1; 34886 state.head.done = true; 34887 } 34888 strm.adler = state.check = 0; 34889 state.mode = TYPE; 34890 break; 34891 case DICTID: 34892 while (bits < 32) { 34893 if (have === 0) { 34894 break inf_leave; 34895 } 34896 have--; 34897 hold += input[next++] << bits; 34898 bits += 8; 34899 } 34900 strm.adler = state.check = zswap32(hold); 34901 hold = 0; 34902 bits = 0; 34903 state.mode = DICT; 34904 /* falls through */ 34905 case DICT: 34906 if (state.havedict === 0) { 34907 strm.next_out = put; 34908 strm.avail_out = left; 34909 strm.next_in = next; 34910 strm.avail_in = have; 34911 state.hold = hold; 34912 state.bits = bits; 34913 return Z_NEED_DICT; 34914 } 34915 strm.adler = state.check = 1; 34916 state.mode = TYPE; 34917 /* falls through */ 34918 case TYPE: 34919 if (flush === Z_BLOCK || flush === Z_TREES) { 34920 break inf_leave; 34921 } 34922 /* falls through */ 34923 case TYPEDO: 34924 if (state.last) { 34925 hold >>>= bits & 7; 34926 bits -= bits & 7; 34927 state.mode = CHECK; 34928 break; 34929 } 34930 while (bits < 3) { 34931 if (have === 0) { 34932 break inf_leave; 34933 } 34934 have--; 34935 hold += input[next++] << bits; 34936 bits += 8; 34937 } 34938 state.last = hold & 1; 34939 hold >>>= 1; 34940 bits -= 1; 34941 switch (hold & 3) { 34942 case 0: 34943 state.mode = STORED; 34944 break; 34945 case 1: 34946 fixedtables(state); 34947 state.mode = LEN_; 34948 if (flush === Z_TREES) { 34949 hold >>>= 2; 34950 bits -= 2; 34951 break inf_leave; 34952 } 34953 break; 34954 case 2: 34955 state.mode = TABLE; 34956 break; 34957 case 3: 34958 strm.msg = "invalid block type"; 34959 state.mode = BAD; 34960 } 34961 hold >>>= 2; 34962 bits -= 2; 34963 break; 34964 case STORED: 34965 hold >>>= bits & 7; 34966 bits -= bits & 7; 34967 while (bits < 32) { 34968 if (have === 0) { 34969 break inf_leave; 34970 } 34971 have--; 34972 hold += input[next++] << bits; 34973 bits += 8; 34974 } 34975 if ((hold & 65535) !== (hold >>> 16 ^ 65535)) { 34976 strm.msg = "invalid stored block lengths"; 34977 state.mode = BAD; 34978 break; 34979 } 34980 state.length = hold & 65535; 34981 hold = 0; 34982 bits = 0; 34983 state.mode = COPY_; 34984 if (flush === Z_TREES) { 34985 break inf_leave; 34986 } 34987 /* falls through */ 34988 case COPY_: 34989 state.mode = COPY; 34990 /* falls through */ 34991 case COPY: 34992 copy = state.length; 34993 if (copy) { 34994 if (copy > have) { 34995 copy = have; 34996 } 34997 if (copy > left) { 34998 copy = left; 34999 } 35000 if (copy === 0) { 35001 break inf_leave; 35002 } 35003 utils.arraySet( 35004 output, 35005 input, 35006 next, 35007 copy, 35008 put 35009 ); 35010 have -= copy; 35011 next += copy; 35012 left -= copy; 35013 put += copy; 35014 state.length -= copy; 35015 break; 35016 } 35017 state.mode = TYPE; 35018 break; 35019 case TABLE: 35020 while (bits < 14) { 35021 if (have === 0) { 35022 break inf_leave; 35023 } 35024 have--; 35025 hold += input[next++] << bits; 35026 bits += 8; 35027 } 35028 state.nlen = (hold & 31) + 257; 35029 hold >>>= 5; 35030 bits -= 5; 35031 state.ndist = (hold & 31) + 1; 35032 hold >>>= 5; 35033 bits -= 5; 35034 state.ncode = (hold & 15) + 4; 35035 hold >>>= 4; 35036 bits -= 4; 35037 if (state.nlen > 286 || state.ndist > 30) { 35038 strm.msg = "too many length or distance symbols"; 35039 state.mode = BAD; 35040 break; 35041 } 35042 state.have = 0; 35043 state.mode = LENLENS; 35044 /* falls through */ 35045 case LENLENS: 35046 while (state.have < state.ncode) { 35047 while (bits < 3) { 35048 if (have === 0) { 35049 break inf_leave; 35050 } 35051 have--; 35052 hold += input[next++] << bits; 35053 bits += 8; 35054 } 35055 state.lens[order[state.have++]] = hold & 7; 35056 hold >>>= 3; 35057 bits -= 3; 35058 } 35059 while (state.have < 19) { 35060 state.lens[order[state.have++]] = 0; 35061 } 35062 state.lencode = state.lendyn; 35063 state.lenbits = 7; 35064 opts = { bits: state.lenbits }; 35065 ret = inflate_table( 35066 CODES, 35067 state.lens, 35068 0, 35069 19, 35070 state.lencode, 35071 0, 35072 state.work, 35073 opts 35074 ); 35075 state.lenbits = opts.bits; 35076 if (ret) { 35077 strm.msg = "invalid code lengths set"; 35078 state.mode = BAD; 35079 break; 35080 } 35081 state.have = 0; 35082 state.mode = CODELENS; 35083 /* falls through */ 35084 case CODELENS: 35085 while (state.have < state.nlen + state.ndist) { 35086 for (; ; ) { 35087 here = state.lencode[hold & (1 << state.lenbits) - 1]; 35088 here_bits = here >>> 24; 35089 here_op = here >>> 16 & 255; 35090 here_val = here & 65535; 35091 if (here_bits <= bits) { 35092 break; 35093 } 35094 if (have === 0) { 35095 break inf_leave; 35096 } 35097 have--; 35098 hold += input[next++] << bits; 35099 bits += 8; 35100 } 35101 if (here_val < 16) { 35102 hold >>>= here_bits; 35103 bits -= here_bits; 35104 state.lens[state.have++] = here_val; 35105 } else { 35106 if (here_val === 16) { 35107 n = here_bits + 2; 35108 while (bits < n) { 35109 if (have === 0) { 35110 break inf_leave; 35111 } 35112 have--; 35113 hold += input[next++] << bits; 35114 bits += 8; 35115 } 35116 hold >>>= here_bits; 35117 bits -= here_bits; 35118 if (state.have === 0) { 35119 strm.msg = "invalid bit length repeat"; 35120 state.mode = BAD; 35121 break; 35122 } 35123 len = state.lens[state.have - 1]; 35124 copy = 3 + (hold & 3); 35125 hold >>>= 2; 35126 bits -= 2; 35127 } else if (here_val === 17) { 35128 n = here_bits + 3; 35129 while (bits < n) { 35130 if (have === 0) { 35131 break inf_leave; 35132 } 35133 have--; 35134 hold += input[next++] << bits; 35135 bits += 8; 35136 } 35137 hold >>>= here_bits; 35138 bits -= here_bits; 35139 len = 0; 35140 copy = 3 + (hold & 7); 35141 hold >>>= 3; 35142 bits -= 3; 35143 } else { 35144 n = here_bits + 7; 35145 while (bits < n) { 35146 if (have === 0) { 35147 break inf_leave; 35148 } 35149 have--; 35150 hold += input[next++] << bits; 35151 bits += 8; 35152 } 35153 hold >>>= here_bits; 35154 bits -= here_bits; 35155 len = 0; 35156 copy = 11 + (hold & 127); 35157 hold >>>= 7; 35158 bits -= 7; 35159 } 35160 if (state.have + copy > state.nlen + state.ndist) { 35161 strm.msg = "invalid bit length repeat"; 35162 state.mode = BAD; 35163 break; 35164 } 35165 while (copy--) { 35166 state.lens[state.have++] = len; 35167 } 35168 } 35169 } 35170 if (state.mode === BAD) { 35171 break; 35172 } 35173 if (state.lens[256] === 0) { 35174 strm.msg = "invalid code -- missing end-of-block"; 35175 state.mode = BAD; 35176 break; 35177 } 35178 state.lenbits = 9; 35179 opts = { bits: state.lenbits }; 35180 ret = inflate_table( 35181 LENS, 35182 state.lens, 35183 0, 35184 state.nlen, 35185 state.lencode, 35186 0, 35187 state.work, 35188 opts 35189 ); 35190 state.lenbits = opts.bits; 35191 if (ret) { 35192 strm.msg = "invalid literal/lengths set"; 35193 state.mode = BAD; 35194 break; 35195 } 35196 state.distbits = 6; 35197 state.distcode = state.distdyn; 35198 opts = { bits: state.distbits }; 35199 ret = inflate_table( 35200 DISTS, 35201 state.lens, 35202 state.nlen, 35203 state.ndist, 35204 state.distcode, 35205 0, 35206 state.work, 35207 opts 35208 ); 35209 state.distbits = opts.bits; 35210 if (ret) { 35211 strm.msg = "invalid distances set"; 35212 state.mode = BAD; 35213 break; 35214 } 35215 state.mode = LEN_; 35216 if (flush === Z_TREES) { 35217 break inf_leave; 35218 } 35219 /* falls through */ 35220 case LEN_: 35221 state.mode = LEN; 35222 /* falls through */ 35223 case LEN: 35224 if (have >= 6 && left >= 258) { 35225 strm.next_out = put; 35226 strm.avail_out = left; 35227 strm.next_in = next; 35228 strm.avail_in = have; 35229 state.hold = hold; 35230 state.bits = bits; 35231 inflate_fast(strm, _out); 35232 put = strm.next_out; 35233 output = strm.output; 35234 left = strm.avail_out; 35235 next = strm.next_in; 35236 input = strm.input; 35237 have = strm.avail_in; 35238 hold = state.hold; 35239 bits = state.bits; 35240 if (state.mode === TYPE) { 35241 state.back = -1; 35242 } 35243 break; 35244 } 35245 state.back = 0; 35246 for (; ; ) { 35247 here = state.lencode[hold & (1 << state.lenbits) - 1]; 35248 here_bits = here >>> 24; 35249 here_op = here >>> 16 & 255; 35250 here_val = here & 65535; 35251 if (here_bits <= bits) { 35252 break; 35253 } 35254 if (have === 0) { 35255 break inf_leave; 35256 } 35257 have--; 35258 hold += input[next++] << bits; 35259 bits += 8; 35260 } 35261 if (here_op && (here_op & 240) === 0) { 35262 last_bits = here_bits; 35263 last_op = here_op; 35264 last_val = here_val; 35265 for (; ; ) { 35266 here = state.lencode[last_val + ((hold & (1 << last_bits + last_op) - 1) >> last_bits)]; 35267 here_bits = here >>> 24; 35268 here_op = here >>> 16 & 255; 35269 here_val = here & 65535; 35270 if (last_bits + here_bits <= bits) { 35271 break; 35272 } 35273 if (have === 0) { 35274 break inf_leave; 35275 } 35276 have--; 35277 hold += input[next++] << bits; 35278 bits += 8; 35279 } 35280 hold >>>= last_bits; 35281 bits -= last_bits; 35282 state.back += last_bits; 35283 } 35284 hold >>>= here_bits; 35285 bits -= here_bits; 35286 state.back += here_bits; 35287 state.length = here_val; 35288 if (here_op === 0) { 35289 state.mode = LIT; 35290 break; 35291 } 35292 if (here_op & 32) { 35293 state.back = -1; 35294 state.mode = TYPE; 35295 break; 35296 } 35297 if (here_op & 64) { 35298 strm.msg = "invalid literal/length code"; 35299 state.mode = BAD; 35300 break; 35301 } 35302 state.extra = here_op & 15; 35303 state.mode = LENEXT; 35304 /* falls through */ 35305 case LENEXT: 35306 if (state.extra) { 35307 n = state.extra; 35308 while (bits < n) { 35309 if (have === 0) { 35310 break inf_leave; 35311 } 35312 have--; 35313 hold += input[next++] << bits; 35314 bits += 8; 35315 } 35316 state.length += hold & (1 << state.extra) - 1; 35317 hold >>>= state.extra; 35318 bits -= state.extra; 35319 state.back += state.extra; 35320 } 35321 state.was = state.length; 35322 state.mode = DIST; 35323 /* falls through */ 35324 case DIST: 35325 for (; ; ) { 35326 here = state.distcode[hold & (1 << state.distbits) - 1]; 35327 here_bits = here >>> 24; 35328 here_op = here >>> 16 & 255; 35329 here_val = here & 65535; 35330 if (here_bits <= bits) { 35331 break; 35332 } 35333 if (have === 0) { 35334 break inf_leave; 35335 } 35336 have--; 35337 hold += input[next++] << bits; 35338 bits += 8; 35339 } 35340 if ((here_op & 240) === 0) { 35341 last_bits = here_bits; 35342 last_op = here_op; 35343 last_val = here_val; 35344 for (; ; ) { 35345 here = state.distcode[last_val + ((hold & (1 << last_bits + last_op) - 1) >> last_bits)]; 35346 here_bits = here >>> 24; 35347 here_op = here >>> 16 & 255; 35348 here_val = here & 65535; 35349 if (last_bits + here_bits <= bits) { 35350 break; 35351 } 35352 if (have === 0) { 35353 break inf_leave; 35354 } 35355 have--; 35356 hold += input[next++] << bits; 35357 bits += 8; 35358 } 35359 hold >>>= last_bits; 35360 bits -= last_bits; 35361 state.back += last_bits; 35362 } 35363 hold >>>= here_bits; 35364 bits -= here_bits; 35365 state.back += here_bits; 35366 if (here_op & 64) { 35367 strm.msg = "invalid distance code"; 35368 state.mode = BAD; 35369 break; 35370 } 35371 state.offset = here_val; 35372 state.extra = here_op & 15; 35373 state.mode = DISTEXT; 35374 /* falls through */ 35375 case DISTEXT: 35376 if (state.extra) { 35377 n = state.extra; 35378 while (bits < n) { 35379 if (have === 0) { 35380 break inf_leave; 35381 } 35382 have--; 35383 hold += input[next++] << bits; 35384 bits += 8; 35385 } 35386 state.offset += hold & (1 << state.extra) - 1; 35387 hold >>>= state.extra; 35388 bits -= state.extra; 35389 state.back += state.extra; 35390 } 35391 if (state.offset > state.dmax) { 35392 strm.msg = "invalid distance too far back"; 35393 state.mode = BAD; 35394 break; 35395 } 35396 state.mode = MATCH; 35397 /* falls through */ 35398 case MATCH: 35399 if (left === 0) { 35400 break inf_leave; 35401 } 35402 copy = _out - left; 35403 if (state.offset > copy) { 35404 copy = state.offset - copy; 35405 if (copy > state.whave) { 35406 if (state.sane) { 35407 strm.msg = "invalid distance too far back"; 35408 state.mode = BAD; 35409 break; 35410 } 35411 } 35412 if (copy > state.wnext) { 35413 copy -= state.wnext; 35414 from = state.wsize - copy; 35415 } else { 35416 from = state.wnext - copy; 35417 } 35418 if (copy > state.length) { 35419 copy = state.length; 35420 } 35421 from_source = state.window; 35422 } else { 35423 from_source = output; 35424 from = put - state.offset; 35425 copy = state.length; 35426 } 35427 if (copy > left) { 35428 copy = left; 35429 } 35430 left -= copy; 35431 state.length -= copy; 35432 do { 35433 output[put++] = from_source[from++]; 35434 } while (--copy); 35435 if (state.length === 0) { 35436 state.mode = LEN; 35437 } 35438 break; 35439 case LIT: 35440 if (left === 0) { 35441 break inf_leave; 35442 } 35443 output[put++] = state.length; 35444 left--; 35445 state.mode = LEN; 35446 break; 35447 case CHECK: 35448 if (state.wrap) { 35449 while (bits < 32) { 35450 if (have === 0) { 35451 break inf_leave; 35452 } 35453 have--; 35454 hold |= input[next++] << bits; 35455 bits += 8; 35456 } 35457 _out -= left; 35458 strm.total_out += _out; 35459 state.total += _out; 35460 if (_out) { 35461 strm.adler = state.check = /*UPDATE(state.check, put - _out, _out);*/ 35462 state.flags ? crc32( 35463 state.check, 35464 output, 35465 _out, 35466 put - _out 35467 ) : adler32( 35468 state.check, 35469 output, 35470 _out, 35471 put - _out 35472 ); 35473 } 35474 _out = left; 35475 if ((state.flags ? hold : zswap32(hold)) !== state.check) { 35476 strm.msg = "incorrect data check"; 35477 state.mode = BAD; 35478 break; 35479 } 35480 hold = 0; 35481 bits = 0; 35482 } 35483 state.mode = LENGTH; 35484 /* falls through */ 35485 case LENGTH: 35486 if (state.wrap && state.flags) { 35487 while (bits < 32) { 35488 if (have === 0) { 35489 break inf_leave; 35490 } 35491 have--; 35492 hold += input[next++] << bits; 35493 bits += 8; 35494 } 35495 if (hold !== (state.total & 4294967295)) { 35496 strm.msg = "incorrect length check"; 35497 state.mode = BAD; 35498 break; 35499 } 35500 hold = 0; 35501 bits = 0; 35502 } 35503 state.mode = DONE; 35504 /* falls through */ 35505 case DONE: 35506 ret = Z_STREAM_END; 35507 break inf_leave; 35508 case BAD: 35509 ret = Z_DATA_ERROR; 35510 break inf_leave; 35511 case MEM: 35512 return Z_MEM_ERROR; 35513 case SYNC: 35514 /* falls through */ 35515 default: 35516 return Z_STREAM_ERROR; 35517 } 35518 } 35519 strm.next_out = put; 35520 strm.avail_out = left; 35521 strm.next_in = next; 35522 strm.avail_in = have; 35523 state.hold = hold; 35524 state.bits = bits; 35525 if (state.wsize || _out !== strm.avail_out && state.mode < BAD && (state.mode < CHECK || flush !== Z_FINISH)) { 35526 if (updatewindow( 35527 strm, 35528 strm.output, 35529 strm.next_out, 35530 _out - strm.avail_out 35531 )) { 35532 state.mode = MEM; 35533 return Z_MEM_ERROR; 35534 } 35535 } 35536 _in -= strm.avail_in; 35537 _out -= strm.avail_out; 35538 strm.total_in += _in; 35539 strm.total_out += _out; 35540 state.total += _out; 35541 if (state.wrap && _out) { 35542 strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/ 35543 state.flags ? crc32( 35544 state.check, 35545 output, 35546 _out, 35547 strm.next_out - _out 35548 ) : adler32( 35549 state.check, 35550 output, 35551 _out, 35552 strm.next_out - _out 35553 ); 35554 } 35555 strm.data_type = state.bits + (state.last ? 64 : 0) + (state.mode === TYPE ? 128 : 0) + (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0); 35556 if ((_in === 0 && _out === 0 || flush === Z_FINISH) && ret === Z_OK) { 35557 ret = Z_BUF_ERROR; 35558 } 35559 return ret; 35560 } 35561 function inflateEnd(strm) { 35562 if (!strm || !strm.state) { 35563 return Z_STREAM_ERROR; 35564 } 35565 var state = strm.state; 35566 if (state.window) { 35567 state.window = null; 35568 } 35569 strm.state = null; 35570 return Z_OK; 35571 } 35572 function inflateGetHeader(strm, head2) { 35573 var state; 35574 if (!strm || !strm.state) { 35575 return Z_STREAM_ERROR; 35576 } 35577 state = strm.state; 35578 if ((state.wrap & 2) === 0) { 35579 return Z_STREAM_ERROR; 35580 } 35581 state.head = head2; 35582 head2.done = false; 35583 return Z_OK; 35584 } 35585 function inflateSetDictionary(strm, dictionary) { 35586 var dictLength = dictionary.length; 35587 var state; 35588 var dictid; 35589 var ret; 35590 if (!strm || !strm.state) { 35591 return Z_STREAM_ERROR; 35592 } 35593 state = strm.state; 35594 if (state.wrap !== 0 && state.mode !== DICT) { 35595 return Z_STREAM_ERROR; 35596 } 35597 if (state.mode === DICT) { 35598 dictid = 1; 35599 dictid = adler32( 35600 dictid, 35601 dictionary, 35602 dictLength, 35603 0 35604 ); 35605 if (dictid !== state.check) { 35606 return Z_DATA_ERROR; 35607 } 35608 } 35609 ret = updatewindow( 35610 strm, 35611 dictionary, 35612 dictLength, 35613 dictLength 35614 ); 35615 if (ret) { 35616 state.mode = MEM; 35617 return Z_MEM_ERROR; 35618 } 35619 state.havedict = 1; 35620 return Z_OK; 35621 } 35622 exports2.inflateReset = inflateReset; 35623 exports2.inflateReset2 = inflateReset2; 35624 exports2.inflateResetKeep = inflateResetKeep; 35625 exports2.inflateInit = inflateInit; 35626 exports2.inflateInit2 = inflateInit2; 35627 exports2.inflate = inflate; 35628 exports2.inflateEnd = inflateEnd; 35629 exports2.inflateGetHeader = inflateGetHeader; 35630 exports2.inflateSetDictionary = inflateSetDictionary; 35631 exports2.inflateInfo = "pako inflate (from Nodeca project)"; 35632 }, 35633 { 35634 "../utils/common": 1, 35635 "./adler32": 3, 35636 "./crc32": 5, 35637 "./inffast": 7, 35638 "./inftrees": 9 35639 } 35640 ], 35641 9: [ 35642 function(require2, module2, exports2) { 35643 "use strict"; 35644 var utils = require2("../utils/common"); 35645 var MAXBITS = 15; 35646 var ENOUGH_LENS = 852; 35647 var ENOUGH_DISTS = 592; 35648 var CODES = 0; 35649 var LENS = 1; 35650 var DISTS = 2; 35651 var lbase = [ 35652 /* Length codes 257..285 base */ 35653 3, 35654 4, 35655 5, 35656 6, 35657 7, 35658 8, 35659 9, 35660 10, 35661 11, 35662 13, 35663 15, 35664 17, 35665 19, 35666 23, 35667 27, 35668 31, 35669 35, 35670 43, 35671 51, 35672 59, 35673 67, 35674 83, 35675 99, 35676 115, 35677 131, 35678 163, 35679 195, 35680 227, 35681 258, 35682 0, 35683 0 35684 ]; 35685 var lext = [ 35686 /* Length codes 257..285 extra */ 35687 16, 35688 16, 35689 16, 35690 16, 35691 16, 35692 16, 35693 16, 35694 16, 35695 17, 35696 17, 35697 17, 35698 17, 35699 18, 35700 18, 35701 18, 35702 18, 35703 19, 35704 19, 35705 19, 35706 19, 35707 20, 35708 20, 35709 20, 35710 20, 35711 21, 35712 21, 35713 21, 35714 21, 35715 16, 35716 72, 35717 78 35718 ]; 35719 var dbase = [ 35720 /* Distance codes 0..29 base */ 35721 1, 35722 2, 35723 3, 35724 4, 35725 5, 35726 7, 35727 9, 35728 13, 35729 17, 35730 25, 35731 33, 35732 49, 35733 65, 35734 97, 35735 129, 35736 193, 35737 257, 35738 385, 35739 513, 35740 769, 35741 1025, 35742 1537, 35743 2049, 35744 3073, 35745 4097, 35746 6145, 35747 8193, 35748 12289, 35749 16385, 35750 24577, 35751 0, 35752 0 35753 ]; 35754 var dext = [ 35755 /* Distance codes 0..29 extra */ 35756 16, 35757 16, 35758 16, 35759 16, 35760 17, 35761 17, 35762 18, 35763 18, 35764 19, 35765 19, 35766 20, 35767 20, 35768 21, 35769 21, 35770 22, 35771 22, 35772 23, 35773 23, 35774 24, 35775 24, 35776 25, 35777 25, 35778 26, 35779 26, 35780 27, 35781 27, 35782 28, 35783 28, 35784 29, 35785 29, 35786 64, 35787 64 35788 ]; 35789 module2.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts) { 35790 var bits = opts.bits; 35791 var len = 0; 35792 var sym = 0; 35793 var min2 = 0, max2 = 0; 35794 var root = 0; 35795 var curr = 0; 35796 var drop = 0; 35797 var left = 0; 35798 var used = 0; 35799 var huff = 0; 35800 var incr; 35801 var fill; 35802 var low; 35803 var mask; 35804 var next; 35805 var base = null; 35806 var base_index = 0; 35807 var end; 35808 var count = new utils.Buf16(MAXBITS + 1); 35809 var offs = new utils.Buf16(MAXBITS + 1); 35810 var extra = null; 35811 var extra_index = 0; 35812 var here_bits, here_op, here_val; 35813 for (len = 0; len <= MAXBITS; len++) { 35814 count[len] = 0; 35815 } 35816 for (sym = 0; sym < codes; sym++) { 35817 count[lens[lens_index + sym]]++; 35818 } 35819 root = bits; 35820 for (max2 = MAXBITS; max2 >= 1; max2--) { 35821 if (count[max2] !== 0) { 35822 break; 35823 } 35824 } 35825 if (root > max2) { 35826 root = max2; 35827 } 35828 if (max2 === 0) { 35829 table[table_index++] = 1 << 24 | 64 << 16 | 0; 35830 table[table_index++] = 1 << 24 | 64 << 16 | 0; 35831 opts.bits = 1; 35832 return 0; 35833 } 35834 for (min2 = 1; min2 < max2; min2++) { 35835 if (count[min2] !== 0) { 35836 break; 35837 } 35838 } 35839 if (root < min2) { 35840 root = min2; 35841 } 35842 left = 1; 35843 for (len = 1; len <= MAXBITS; len++) { 35844 left <<= 1; 35845 left -= count[len]; 35846 if (left < 0) { 35847 return -1; 35848 } 35849 } 35850 if (left > 0 && (type === CODES || max2 !== 1)) { 35851 return -1; 35852 } 35853 offs[1] = 0; 35854 for (len = 1; len < MAXBITS; len++) { 35855 offs[len + 1] = offs[len] + count[len]; 35856 } 35857 for (sym = 0; sym < codes; sym++) { 35858 if (lens[lens_index + sym] !== 0) { 35859 work[offs[lens[lens_index + sym]]++] = sym; 35860 } 35861 } 35862 if (type === CODES) { 35863 base = extra = work; 35864 end = 19; 35865 } else if (type === LENS) { 35866 base = lbase; 35867 base_index -= 257; 35868 extra = lext; 35869 extra_index -= 257; 35870 end = 256; 35871 } else { 35872 base = dbase; 35873 extra = dext; 35874 end = -1; 35875 } 35876 huff = 0; 35877 sym = 0; 35878 len = min2; 35879 next = table_index; 35880 curr = root; 35881 drop = 0; 35882 low = -1; 35883 used = 1 << root; 35884 mask = used - 1; 35885 if (type === LENS && used > ENOUGH_LENS || type === DISTS && used > ENOUGH_DISTS) { 35886 return 1; 35887 } 35888 for (; ; ) { 35889 here_bits = len - drop; 35890 if (work[sym] < end) { 35891 here_op = 0; 35892 here_val = work[sym]; 35893 } else if (work[sym] > end) { 35894 here_op = extra[extra_index + work[sym]]; 35895 here_val = base[base_index + work[sym]]; 35896 } else { 35897 here_op = 32 + 64; 35898 here_val = 0; 35899 } 35900 incr = 1 << len - drop; 35901 fill = 1 << curr; 35902 min2 = fill; 35903 do { 35904 fill -= incr; 35905 table[next + (huff >> drop) + fill] = here_bits << 24 | here_op << 16 | here_val | 0; 35906 } while (fill !== 0); 35907 incr = 1 << len - 1; 35908 while (huff & incr) { 35909 incr >>= 1; 35910 } 35911 if (incr !== 0) { 35912 huff &= incr - 1; 35913 huff += incr; 35914 } else { 35915 huff = 0; 35916 } 35917 sym++; 35918 if (--count[len] === 0) { 35919 if (len === max2) { 35920 break; 35921 } 35922 len = lens[lens_index + work[sym]]; 35923 } 35924 if (len > root && (huff & mask) !== low) { 35925 if (drop === 0) { 35926 drop = root; 35927 } 35928 next += min2; 35929 curr = len - drop; 35930 left = 1 << curr; 35931 while (curr + drop < max2) { 35932 left -= count[curr + drop]; 35933 if (left <= 0) { 35934 break; 35935 } 35936 curr++; 35937 left <<= 1; 35938 } 35939 used += 1 << curr; 35940 if (type === LENS && used > ENOUGH_LENS || type === DISTS && used > ENOUGH_DISTS) { 35941 return 1; 35942 } 35943 low = huff & mask; 35944 table[low] = root << 24 | curr << 16 | next - table_index | 0; 35945 } 35946 } 35947 if (huff !== 0) { 35948 table[next + huff] = len - drop << 24 | 64 << 16 | 0; 35949 } 35950 opts.bits = root; 35951 return 0; 35952 }; 35953 }, 35954 { "../utils/common": 1 } 35955 ], 35956 10: [ 35957 function(require2, module2, exports2) { 35958 "use strict"; 35959 module2.exports = { 35960 2: "need dictionary", 35961 1: "stream end", 35962 0: "", 35963 "-1": "file error", 35964 "-2": "stream error", 35965 "-3": "data error", 35966 "-4": "insufficient memory", 35967 "-5": "buffer error", 35968 "-6": "incompatible version" 35969 }; 35970 }, 35971 {} 35972 ], 35973 11: [ 35974 function(require2, module2, exports2) { 35975 "use strict"; 35976 function ZStream() { 35977 this.input = null; 35978 this.next_in = 0; 35979 this.avail_in = 0; 35980 this.total_in = 0; 35981 this.output = null; 35982 this.next_out = 0; 35983 this.avail_out = 0; 35984 this.total_out = 0; 35985 this.msg = ""; 35986 this.state = null; 35987 this.data_type = 2; 35988 this.adler = 0; 35989 } 35990 module2.exports = ZStream; 35991 }, 35992 {} 35993 ], 35994 "/lib/inflate.js": [ 35995 function(require2, module2, exports2) { 35996 "use strict"; 35997 var zlib_inflate = require2("./zlib/inflate"); 35998 var utils = require2("./utils/common"); 35999 var strings = require2("./utils/strings"); 36000 var c2 = require2("./zlib/constants"); 36001 var msg = require2("./zlib/messages"); 36002 var ZStream = require2("./zlib/zstream"); 36003 var GZheader = require2("./zlib/gzheader"); 36004 var toString = Object.prototype.toString; 36005 function Inflate(options) { 36006 if (!(this instanceof Inflate)) 36007 return new Inflate(options); 36008 this.options = utils.assign( 36009 { 36010 chunkSize: 16384, 36011 windowBits: 0, 36012 to: "" 36013 }, 36014 options || {} 36015 ); 36016 var opt = this.options; 36017 if (opt.raw && opt.windowBits >= 0 && opt.windowBits < 16) { 36018 opt.windowBits = -opt.windowBits; 36019 if (opt.windowBits === 0) { 36020 opt.windowBits = -15; 36021 } 36022 } 36023 if (opt.windowBits >= 0 && opt.windowBits < 16 && !(options && options.windowBits)) { 36024 opt.windowBits += 32; 36025 } 36026 if (opt.windowBits > 15 && opt.windowBits < 48) { 36027 if ((opt.windowBits & 15) === 0) { 36028 opt.windowBits |= 15; 36029 } 36030 } 36031 this.err = 0; 36032 this.msg = ""; 36033 this.ended = false; 36034 this.chunks = []; 36035 this.strm = new ZStream(); 36036 this.strm.avail_out = 0; 36037 var status = zlib_inflate.inflateInit2( 36038 this.strm, 36039 opt.windowBits 36040 ); 36041 if (status !== c2.Z_OK) { 36042 throw new Error(msg[status]); 36043 } 36044 this.header = new GZheader(); 36045 zlib_inflate.inflateGetHeader(this.strm, this.header); 36046 if (opt.dictionary) { 36047 if (typeof opt.dictionary === "string") { 36048 opt.dictionary = strings.string2buf( 36049 opt.dictionary 36050 ); 36051 } else if (toString.call(opt.dictionary) === "[object ArrayBuffer]") { 36052 opt.dictionary = new Uint8Array( 36053 opt.dictionary 36054 ); 36055 } 36056 if (opt.raw) { 36057 status = zlib_inflate.inflateSetDictionary( 36058 this.strm, 36059 opt.dictionary 36060 ); 36061 if (status !== c2.Z_OK) { 36062 throw new Error(msg[status]); 36063 } 36064 } 36065 } 36066 } 36067 Inflate.prototype.push = function(data, mode) { 36068 var strm = this.strm; 36069 var chunkSize = this.options.chunkSize; 36070 var dictionary = this.options.dictionary; 36071 var status, _mode; 36072 var next_out_utf8, tail, utf8str; 36073 var allowBufError = false; 36074 if (this.ended) { 36075 return false; 36076 } 36077 _mode = mode === ~~mode ? mode : mode === true ? c2.Z_FINISH : c2.Z_NO_FLUSH; 36078 if (typeof data === "string") { 36079 strm.input = strings.binstring2buf(data); 36080 } else if (toString.call(data) === "[object ArrayBuffer]") { 36081 strm.input = new Uint8Array(data); 36082 } else { 36083 strm.input = data; 36084 } 36085 strm.next_in = 0; 36086 strm.avail_in = strm.input.length; 36087 do { 36088 if (strm.avail_out === 0) { 36089 strm.output = new utils.Buf8(chunkSize); 36090 strm.next_out = 0; 36091 strm.avail_out = chunkSize; 36092 } 36093 status = zlib_inflate.inflate( 36094 strm, 36095 c2.Z_NO_FLUSH 36096 ); 36097 if (status === c2.Z_NEED_DICT && dictionary) { 36098 status = zlib_inflate.inflateSetDictionary( 36099 this.strm, 36100 dictionary 36101 ); 36102 } 36103 if (status === c2.Z_BUF_ERROR && allowBufError === true) { 36104 status = c2.Z_OK; 36105 allowBufError = false; 36106 } 36107 if (status !== c2.Z_STREAM_END && status !== c2.Z_OK) { 36108 this.onEnd(status); 36109 this.ended = true; 36110 return false; 36111 } 36112 if (strm.next_out) { 36113 if (strm.avail_out === 0 || status === c2.Z_STREAM_END || strm.avail_in === 0 && (_mode === c2.Z_FINISH || _mode === c2.Z_SYNC_FLUSH)) { 36114 if (this.options.to === "string") { 36115 next_out_utf8 = strings.utf8border( 36116 strm.output, 36117 strm.next_out 36118 ); 36119 tail = strm.next_out - next_out_utf8; 36120 utf8str = strings.buf2string( 36121 strm.output, 36122 next_out_utf8 36123 ); 36124 strm.next_out = tail; 36125 strm.avail_out = chunkSize - tail; 36126 if (tail) { 36127 utils.arraySet( 36128 strm.output, 36129 strm.output, 36130 next_out_utf8, 36131 tail, 36132 0 36133 ); 36134 } 36135 this.onData(utf8str); 36136 } else { 36137 this.onData( 36138 utils.shrinkBuf( 36139 strm.output, 36140 strm.next_out 36141 ) 36142 ); 36143 } 36144 } 36145 } 36146 if (strm.avail_in === 0 && strm.avail_out === 0) { 36147 allowBufError = true; 36148 } 36149 } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== c2.Z_STREAM_END); 36150 if (status === c2.Z_STREAM_END) { 36151 _mode = c2.Z_FINISH; 36152 } 36153 if (_mode === c2.Z_FINISH) { 36154 status = zlib_inflate.inflateEnd(this.strm); 36155 this.onEnd(status); 36156 this.ended = true; 36157 return status === c2.Z_OK; 36158 } 36159 if (_mode === c2.Z_SYNC_FLUSH) { 36160 this.onEnd(c2.Z_OK); 36161 strm.avail_out = 0; 36162 return true; 36163 } 36164 return true; 36165 }; 36166 Inflate.prototype.onData = function(chunk) { 36167 this.chunks.push(chunk); 36168 }; 36169 Inflate.prototype.onEnd = function(status) { 36170 if (status === c2.Z_OK) { 36171 if (this.options.to === "string") { 36172 this.result = this.chunks.join(""); 36173 } else { 36174 this.result = utils.flattenChunks( 36175 this.chunks 36176 ); 36177 } 36178 } 36179 this.chunks = []; 36180 this.err = status; 36181 this.msg = this.strm.msg; 36182 }; 36183 function inflate(input, options) { 36184 var inflator = new Inflate(options); 36185 inflator.push(input, true); 36186 if (inflator.err) { 36187 throw inflator.msg || msg[inflator.err]; 36188 } 36189 return inflator.result; 36190 } 36191 function inflateRaw(input, options) { 36192 options = options || {}; 36193 options.raw = true; 36194 return inflate(input, options); 36195 } 36196 exports2.Inflate = Inflate; 36197 exports2.inflate = inflate; 36198 exports2.inflateRaw = inflateRaw; 36199 exports2.ungzip = inflate; 36200 }, 36201 { 36202 "./utils/common": 1, 36203 "./utils/strings": 2, 36204 "./zlib/constants": 4, 36205 "./zlib/gzheader": 6, 36206 "./zlib/inflate": 8, 36207 "./zlib/messages": 10, 36208 "./zlib/zstream": 11 36209 } 36210 ] 36211 }, 36212 {}, 36213 [] 36214 )("/lib/inflate.js"); 36215 })(); 36216 36217 // packages/global-styles-ui/build-module/font-library/lib/lib-font.browser.mjs 36218 var fetchFunction = globalThis.fetch; 36219 var Event2 = class { 36220 constructor(type, detail = {}, msg) { 36221 this.type = type; 36222 this.detail = detail; 36223 this.msg = msg; 36224 Object.defineProperty(this, `__mayPropagate`, { 36225 enumerable: false, 36226 writable: true 36227 }); 36228 this.__mayPropagate = true; 36229 } 36230 preventDefault() { 36231 } 36232 stopPropagation() { 36233 this.__mayPropagate = false; 36234 } 36235 valueOf() { 36236 return this; 36237 } 36238 toString() { 36239 return this.msg ? `[$this.type} event]: $this.msg}` : `[$this.type} event]`; 36240 } 36241 }; 36242 var EventManager = class { 36243 constructor() { 36244 this.listeners = {}; 36245 } 36246 addEventListener(type, listener, useCapture) { 36247 let bin = this.listeners[type] || []; 36248 if (useCapture) bin.unshift(listener); 36249 else bin.push(listener); 36250 this.listeners[type] = bin; 36251 } 36252 removeEventListener(type, listener) { 36253 let bin = this.listeners[type] || []; 36254 let pos = bin.findIndex((e) => e === listener); 36255 if (pos > -1) { 36256 bin.splice(pos, 1); 36257 this.listeners[type] = bin; 36258 } 36259 } 36260 dispatch(event) { 36261 let bin = this.listeners[event.type]; 36262 if (bin) { 36263 for (let l2 = 0, e = bin.length; l2 < e; l2++) { 36264 if (!event.__mayPropagate) break; 36265 bin[l2](event); 36266 } 36267 } 36268 } 36269 }; 36270 var startDate = (/* @__PURE__ */ new Date(`1904-01-01T00:00:00+0000`)).getTime(); 36271 function asText(data) { 36272 return Array.from(data).map((v2) => String.fromCharCode(v2)).join(``); 36273 } 36274 var Parser = class { 36275 constructor(dict, dataview, name2) { 36276 this.name = (name2 || dict.tag || ``).trim(); 36277 this.length = dict.length; 36278 this.start = dict.offset; 36279 this.offset = 0; 36280 this.data = dataview; 36281 [ 36282 `getInt8`, 36283 `getUint8`, 36284 `getInt16`, 36285 `getUint16`, 36286 `getInt32`, 36287 `getUint32`, 36288 `getBigInt64`, 36289 `getBigUint64` 36290 ].forEach((name3) => { 36291 let fn = name3.replace(/get(Big)?/, "").toLowerCase(); 36292 let increment = parseInt(name3.replace(/[^\d]/g, "")) / 8; 36293 Object.defineProperty(this, fn, { 36294 get: () => this.getValue(name3, increment) 36295 }); 36296 }); 36297 } 36298 get currentPosition() { 36299 return this.start + this.offset; 36300 } 36301 set currentPosition(position) { 36302 this.start = position; 36303 this.offset = 0; 36304 } 36305 skip(n = 0, bits = 8) { 36306 this.offset += n * bits / 8; 36307 } 36308 getValue(type, increment) { 36309 let pos = this.start + this.offset; 36310 this.offset += increment; 36311 try { 36312 return this.data[type](pos); 36313 } catch (e) { 36314 console.error(`parser`, type, increment, this); 36315 console.error(`parser`, this.start, this.offset); 36316 throw e; 36317 } 36318 } 36319 flags(n) { 36320 if (n === 8 || n === 16 || n === 32 || n === 64) { 36321 return this[`uint$n}`].toString(2).padStart(n, 0).split(``).map((v2) => v2 === "1"); 36322 } 36323 console.error( 36324 `Error parsing flags: flag types can only be 1, 2, 4, or 8 bytes long` 36325 ); 36326 console.trace(); 36327 } 36328 get tag() { 36329 const t = this.uint32; 36330 return asText([ 36331 t >> 24 & 255, 36332 t >> 16 & 255, 36333 t >> 8 & 255, 36334 t & 255 36335 ]); 36336 } 36337 get fixed() { 36338 let major = this.int16; 36339 let minor = Math.round(1e3 * this.uint16 / 65356); 36340 return major + minor / 1e3; 36341 } 36342 get legacyFixed() { 36343 let major = this.uint16; 36344 let minor = this.uint16.toString(16).padStart(4, 0); 36345 return parseFloat(`$major}.$minor}`); 36346 } 36347 get uint24() { 36348 return (this.uint8 << 16) + (this.uint8 << 8) + this.uint8; 36349 } 36350 get uint128() { 36351 let value = 0; 36352 for (let i = 0; i < 5; i++) { 36353 let byte = this.uint8; 36354 value = value * 128 + (byte & 127); 36355 if (byte < 128) break; 36356 } 36357 return value; 36358 } 36359 get longdatetime() { 36360 return new Date(startDate + 1e3 * parseInt(this.int64.toString())); 36361 } 36362 get fword() { 36363 return this.int16; 36364 } 36365 get ufword() { 36366 return this.uint16; 36367 } 36368 get Offset16() { 36369 return this.uint16; 36370 } 36371 get Offset32() { 36372 return this.uint32; 36373 } 36374 get F2DOT14() { 36375 const bits = p.uint16; 36376 const integer = [0, 1, -2, -1][bits >> 14]; 36377 const fraction = bits & 16383; 36378 return integer + fraction / 16384; 36379 } 36380 verifyLength() { 36381 if (this.offset != this.length) { 36382 console.error( 36383 `unexpected parsed table size ($this.offset}) for "$this.name}" (expected $this.length})` 36384 ); 36385 } 36386 } 36387 readBytes(n = 0, position = 0, bits = 8, signed = false) { 36388 n = n || this.length; 36389 if (n === 0) return []; 36390 if (position) this.currentPosition = position; 36391 const fn = `$signed ? `` : `u`}int$bits}`, slice = []; 36392 while (n--) slice.push(this[fn]); 36393 return slice; 36394 } 36395 }; 36396 var ParsedData = class { 36397 constructor(parser) { 36398 const pGetter = { enumerable: false, get: () => parser }; 36399 Object.defineProperty(this, `parser`, pGetter); 36400 const start = parser.currentPosition; 36401 const startGetter = { enumerable: false, get: () => start }; 36402 Object.defineProperty(this, `start`, startGetter); 36403 } 36404 load(struct) { 36405 Object.keys(struct).forEach((p22) => { 36406 let props = Object.getOwnPropertyDescriptor(struct, p22); 36407 if (props.get) { 36408 this[p22] = props.get.bind(this); 36409 } else if (props.value !== void 0) { 36410 this[p22] = props.value; 36411 } 36412 }); 36413 if (this.parser.length) { 36414 this.parser.verifyLength(); 36415 } 36416 } 36417 }; 36418 var SimpleTable = class extends ParsedData { 36419 constructor(dict, dataview, name2) { 36420 const { parser, start } = super( 36421 new Parser(dict, dataview, name2) 36422 ); 36423 const pGetter = { enumerable: false, get: () => parser }; 36424 Object.defineProperty(this, `p`, pGetter); 36425 const startGetter = { enumerable: false, get: () => start }; 36426 Object.defineProperty(this, `tableStart`, startGetter); 36427 } 36428 }; 36429 function lazy$1(object, property, getter) { 36430 let val; 36431 Object.defineProperty(object, property, { 36432 get: () => { 36433 if (val) return val; 36434 val = getter(); 36435 return val; 36436 }, 36437 enumerable: true 36438 }); 36439 } 36440 var SFNT = class extends SimpleTable { 36441 constructor(font2, dataview, createTable2) { 36442 const { p: p22 } = super({ offset: 0, length: 12 }, dataview, `sfnt`); 36443 this.version = p22.uint32; 36444 this.numTables = p22.uint16; 36445 this.searchRange = p22.uint16; 36446 this.entrySelector = p22.uint16; 36447 this.rangeShift = p22.uint16; 36448 p22.verifyLength(); 36449 this.directory = [...new Array(this.numTables)].map( 36450 (_) => new TableRecord(p22) 36451 ); 36452 this.tables = {}; 36453 this.directory.forEach((entry) => { 36454 const getter = () => createTable2( 36455 this.tables, 36456 { 36457 tag: entry.tag, 36458 offset: entry.offset, 36459 length: entry.length 36460 }, 36461 dataview 36462 ); 36463 lazy$1(this.tables, entry.tag.trim(), getter); 36464 }); 36465 } 36466 }; 36467 var TableRecord = class { 36468 constructor(p22) { 36469 this.tag = p22.tag; 36470 this.checksum = p22.uint32; 36471 this.offset = p22.uint32; 36472 this.length = p22.uint32; 36473 } 36474 }; 36475 var gzipDecode = inflate_default.inflate || void 0; 36476 var nativeGzipDecode = void 0; 36477 var WOFF$1 = class extends SimpleTable { 36478 constructor(font2, dataview, createTable2) { 36479 const { p: p22 } = super({ offset: 0, length: 44 }, dataview, `woff`); 36480 this.signature = p22.tag; 36481 this.flavor = p22.uint32; 36482 this.length = p22.uint32; 36483 this.numTables = p22.uint16; 36484 p22.uint16; 36485 this.totalSfntSize = p22.uint32; 36486 this.majorVersion = p22.uint16; 36487 this.minorVersion = p22.uint16; 36488 this.metaOffset = p22.uint32; 36489 this.metaLength = p22.uint32; 36490 this.metaOrigLength = p22.uint32; 36491 this.privOffset = p22.uint32; 36492 this.privLength = p22.uint32; 36493 p22.verifyLength(); 36494 this.directory = [...new Array(this.numTables)].map( 36495 (_) => new WoffTableDirectoryEntry(p22) 36496 ); 36497 buildWoffLazyLookups(this, dataview, createTable2); 36498 } 36499 }; 36500 var WoffTableDirectoryEntry = class { 36501 constructor(p22) { 36502 this.tag = p22.tag; 36503 this.offset = p22.uint32; 36504 this.compLength = p22.uint32; 36505 this.origLength = p22.uint32; 36506 this.origChecksum = p22.uint32; 36507 } 36508 }; 36509 function buildWoffLazyLookups(woff, dataview, createTable2) { 36510 woff.tables = {}; 36511 woff.directory.forEach((entry) => { 36512 lazy$1(woff.tables, entry.tag.trim(), () => { 36513 let offset4 = 0; 36514 let view = dataview; 36515 if (entry.compLength !== entry.origLength) { 36516 const data = dataview.buffer.slice( 36517 entry.offset, 36518 entry.offset + entry.compLength 36519 ); 36520 let unpacked; 36521 if (gzipDecode) { 36522 unpacked = gzipDecode(new Uint8Array(data)); 36523 } else if (nativeGzipDecode) { 36524 unpacked = nativeGzipDecode(new Uint8Array(data)); 36525 } else { 36526 const msg = `no brotli decoder available to decode WOFF2 font`; 36527 if (font.onerror) font.onerror(msg); 36528 throw new Error(msg); 36529 } 36530 view = new DataView(unpacked.buffer); 36531 } else { 36532 offset4 = entry.offset; 36533 } 36534 return createTable2( 36535 woff.tables, 36536 { tag: entry.tag, offset: offset4, length: entry.origLength }, 36537 view 36538 ); 36539 }); 36540 }); 36541 } 36542 var brotliDecode = unbrotli_default; 36543 var nativeBrotliDecode = void 0; 36544 var WOFF2$1 = class extends SimpleTable { 36545 constructor(font2, dataview, createTable2) { 36546 const { p: p22 } = super({ offset: 0, length: 48 }, dataview, `woff2`); 36547 this.signature = p22.tag; 36548 this.flavor = p22.uint32; 36549 this.length = p22.uint32; 36550 this.numTables = p22.uint16; 36551 p22.uint16; 36552 this.totalSfntSize = p22.uint32; 36553 this.totalCompressedSize = p22.uint32; 36554 this.majorVersion = p22.uint16; 36555 this.minorVersion = p22.uint16; 36556 this.metaOffset = p22.uint32; 36557 this.metaLength = p22.uint32; 36558 this.metaOrigLength = p22.uint32; 36559 this.privOffset = p22.uint32; 36560 this.privLength = p22.uint32; 36561 p22.verifyLength(); 36562 this.directory = [...new Array(this.numTables)].map( 36563 (_) => new Woff2TableDirectoryEntry(p22) 36564 ); 36565 let dictOffset = p22.currentPosition; 36566 this.directory[0].offset = 0; 36567 this.directory.forEach((e, i) => { 36568 let next = this.directory[i + 1]; 36569 if (next) { 36570 next.offset = e.offset + (e.transformLength !== void 0 ? e.transformLength : e.origLength); 36571 } 36572 }); 36573 let decoded; 36574 let buffer = dataview.buffer.slice(dictOffset); 36575 if (brotliDecode) { 36576 decoded = brotliDecode(new Uint8Array(buffer)); 36577 } else if (nativeBrotliDecode) { 36578 decoded = new Uint8Array(nativeBrotliDecode(buffer)); 36579 } else { 36580 const msg = `no brotli decoder available to decode WOFF2 font`; 36581 if (font2.onerror) font2.onerror(msg); 36582 throw new Error(msg); 36583 } 36584 buildWoff2LazyLookups(this, decoded, createTable2); 36585 } 36586 }; 36587 var Woff2TableDirectoryEntry = class { 36588 constructor(p22) { 36589 this.flags = p22.uint8; 36590 const tagNumber = this.tagNumber = this.flags & 63; 36591 if (tagNumber === 63) { 36592 this.tag = p22.tag; 36593 } else { 36594 this.tag = getWOFF2Tag(tagNumber); 36595 } 36596 const transformVersion = this.transformVersion = (this.flags & 192) >> 6; 36597 let hasTransforms = transformVersion !== 0; 36598 if (this.tag === `glyf` || this.tag === `loca`) { 36599 hasTransforms = this.transformVersion !== 3; 36600 } 36601 this.origLength = p22.uint128; 36602 if (hasTransforms) { 36603 this.transformLength = p22.uint128; 36604 } 36605 } 36606 }; 36607 function buildWoff2LazyLookups(woff2, decoded, createTable2) { 36608 woff2.tables = {}; 36609 woff2.directory.forEach((entry) => { 36610 lazy$1(woff2.tables, entry.tag.trim(), () => { 36611 const start = entry.offset; 36612 const end = start + (entry.transformLength ? entry.transformLength : entry.origLength); 36613 const data = new DataView(decoded.slice(start, end).buffer); 36614 try { 36615 return createTable2( 36616 woff2.tables, 36617 { tag: entry.tag, offset: 0, length: entry.origLength }, 36618 data 36619 ); 36620 } catch (e) { 36621 console.error(e); 36622 } 36623 }); 36624 }); 36625 } 36626 function getWOFF2Tag(flag) { 36627 return [ 36628 `cmap`, 36629 `head`, 36630 `hhea`, 36631 `hmtx`, 36632 `maxp`, 36633 `name`, 36634 `OS/2`, 36635 `post`, 36636 `cvt `, 36637 `fpgm`, 36638 `glyf`, 36639 `loca`, 36640 `prep`, 36641 `CFF `, 36642 `VORG`, 36643 `EBDT`, 36644 `EBLC`, 36645 `gasp`, 36646 `hdmx`, 36647 `kern`, 36648 `LTSH`, 36649 `PCLT`, 36650 `VDMX`, 36651 `vhea`, 36652 `vmtx`, 36653 `BASE`, 36654 `GDEF`, 36655 `GPOS`, 36656 `GSUB`, 36657 `EBSC`, 36658 `JSTF`, 36659 `MATH`, 36660 `CBDT`, 36661 `CBLC`, 36662 `COLR`, 36663 `CPAL`, 36664 `SVG `, 36665 `sbix`, 36666 `acnt`, 36667 `avar`, 36668 `bdat`, 36669 `bloc`, 36670 `bsln`, 36671 `cvar`, 36672 `fdsc`, 36673 `feat`, 36674 `fmtx`, 36675 `fvar`, 36676 `gvar`, 36677 `hsty`, 36678 `just`, 36679 `lcar`, 36680 `mort`, 36681 `morx`, 36682 `opbd`, 36683 `prop`, 36684 `trak`, 36685 `Zapf`, 36686 `Silf`, 36687 `Glat`, 36688 `Gloc`, 36689 `Feat`, 36690 `Sill` 36691 ][flag & 63]; 36692 } 36693 var tableClasses = {}; 36694 var tableClassesLoaded = false; 36695 Promise.all([ 36696 Promise.resolve().then(function() { 36697 return cmap$1; 36698 }), 36699 Promise.resolve().then(function() { 36700 return head$1; 36701 }), 36702 Promise.resolve().then(function() { 36703 return hhea$1; 36704 }), 36705 Promise.resolve().then(function() { 36706 return hmtx$1; 36707 }), 36708 Promise.resolve().then(function() { 36709 return maxp$1; 36710 }), 36711 Promise.resolve().then(function() { 36712 return name$1; 36713 }), 36714 Promise.resolve().then(function() { 36715 return OS2$1; 36716 }), 36717 Promise.resolve().then(function() { 36718 return post$1; 36719 }), 36720 Promise.resolve().then(function() { 36721 return BASE$1; 36722 }), 36723 Promise.resolve().then(function() { 36724 return GDEF$1; 36725 }), 36726 Promise.resolve().then(function() { 36727 return GSUB$1; 36728 }), 36729 Promise.resolve().then(function() { 36730 return GPOS$1; 36731 }), 36732 Promise.resolve().then(function() { 36733 return SVG$1; 36734 }), 36735 Promise.resolve().then(function() { 36736 return fvar$1; 36737 }), 36738 Promise.resolve().then(function() { 36739 return cvt$1; 36740 }), 36741 Promise.resolve().then(function() { 36742 return fpgm$1; 36743 }), 36744 Promise.resolve().then(function() { 36745 return gasp$1; 36746 }), 36747 Promise.resolve().then(function() { 36748 return glyf$1; 36749 }), 36750 Promise.resolve().then(function() { 36751 return loca$1; 36752 }), 36753 Promise.resolve().then(function() { 36754 return prep$1; 36755 }), 36756 Promise.resolve().then(function() { 36757 return CFF$1; 36758 }), 36759 Promise.resolve().then(function() { 36760 return CFF2$1; 36761 }), 36762 Promise.resolve().then(function() { 36763 return VORG$1; 36764 }), 36765 Promise.resolve().then(function() { 36766 return EBLC$1; 36767 }), 36768 Promise.resolve().then(function() { 36769 return EBDT$1; 36770 }), 36771 Promise.resolve().then(function() { 36772 return EBSC$1; 36773 }), 36774 Promise.resolve().then(function() { 36775 return CBLC$1; 36776 }), 36777 Promise.resolve().then(function() { 36778 return CBDT$1; 36779 }), 36780 Promise.resolve().then(function() { 36781 return sbix$1; 36782 }), 36783 Promise.resolve().then(function() { 36784 return COLR$1; 36785 }), 36786 Promise.resolve().then(function() { 36787 return CPAL$1; 36788 }), 36789 Promise.resolve().then(function() { 36790 return DSIG$1; 36791 }), 36792 Promise.resolve().then(function() { 36793 return hdmx$1; 36794 }), 36795 Promise.resolve().then(function() { 36796 return kern$1; 36797 }), 36798 Promise.resolve().then(function() { 36799 return LTSH$1; 36800 }), 36801 Promise.resolve().then(function() { 36802 return MERG$1; 36803 }), 36804 Promise.resolve().then(function() { 36805 return meta$1; 36806 }), 36807 Promise.resolve().then(function() { 36808 return PCLT$1; 36809 }), 36810 Promise.resolve().then(function() { 36811 return VDMX$1; 36812 }), 36813 Promise.resolve().then(function() { 36814 return vhea$1; 36815 }), 36816 Promise.resolve().then(function() { 36817 return vmtx$1; 36818 }) 36819 ]).then((data) => { 36820 data.forEach((e) => { 36821 let name2 = Object.keys(e)[0]; 36822 tableClasses[name2] = e[name2]; 36823 }); 36824 tableClassesLoaded = true; 36825 }); 36826 function createTable(tables, dict, dataview) { 36827 let name2 = dict.tag.replace(/[^\w\d]/g, ``); 36828 let Type = tableClasses[name2]; 36829 if (Type) return new Type(dict, dataview, tables); 36830 console.warn( 36831 `lib-font has no definition for $name2}. The table was skipped.` 36832 ); 36833 return {}; 36834 } 36835 function loadTableClasses() { 36836 let count = 0; 36837 function checkLoaded(resolve, reject) { 36838 if (!tableClassesLoaded) { 36839 if (count > 10) { 36840 return reject(new Error(`loading took too long`)); 36841 } 36842 count++; 36843 return setTimeout(() => checkLoaded(resolve), 250); 36844 } 36845 resolve(createTable); 36846 } 36847 return new Promise((resolve, reject) => checkLoaded(resolve)); 36848 } 36849 function getFontCSSFormat(path, errorOnStyle) { 36850 let pos = path.lastIndexOf(`.`); 36851 let ext = (path.substring(pos + 1) || ``).toLowerCase(); 36852 let format = { 36853 ttf: `truetype`, 36854 otf: `opentype`, 36855 woff: `woff`, 36856 woff2: `woff2` 36857 }[ext]; 36858 if (format) return format; 36859 let msg = { 36860 eot: `The .eot format is not supported: it died in January 12, 2016, when Microsoft retired all versions of IE that didn't already support WOFF.`, 36861 svg: `The .svg format is not supported: SVG fonts (not to be confused with OpenType with embedded SVG) were so bad we took the entire fonts chapter out of the SVG specification again.`, 36862 fon: `The .fon format is not supported: this is an ancient Windows bitmap font format.`, 36863 ttc: `Based on the current CSS specification, font collections are not (yet?) supported.` 36864 }[ext]; 36865 if (!msg) msg = `$path} is not a known webfont format.`; 36866 if (errorOnStyle) { 36867 throw new Error(msg); 36868 } else { 36869 console.warn(`Could not load font: $msg}`); 36870 } 36871 } 36872 async function setupFontFace(name2, url, options = {}) { 36873 if (!globalThis.document) return; 36874 let format = getFontCSSFormat(url, options.errorOnStyle); 36875 if (!format) return; 36876 let style = document.createElement(`style`); 36877 style.className = `injected-by-Font-js`; 36878 let rules = []; 36879 if (options.styleRules) { 36880 rules = Object.entries(options.styleRules).map( 36881 ([key, value]) => `$key}: $value};` 36882 ); 36883 } 36884 style.textContent = ` 36885 @font-face { 36886 font-family: "$name2}"; 36887 $rules.join( 36888 ` 36889 ` 36890 )} 36891 src: url("$url}") format("$format}"); 36892 }`; 36893 globalThis.document.head.appendChild(style); 36894 return style; 36895 } 36896 var TTF = [0, 1, 0, 0]; 36897 var OTF = [79, 84, 84, 79]; 36898 var WOFF = [119, 79, 70, 70]; 36899 var WOFF2 = [119, 79, 70, 50]; 36900 function match(ar1, ar2) { 36901 if (ar1.length !== ar2.length) return; 36902 for (let i = 0; i < ar1.length; i++) { 36903 if (ar1[i] !== ar2[i]) return; 36904 } 36905 return true; 36906 } 36907 function validFontFormat(dataview) { 36908 const LEAD_BYTES = [ 36909 dataview.getUint8(0), 36910 dataview.getUint8(1), 36911 dataview.getUint8(2), 36912 dataview.getUint8(3) 36913 ]; 36914 if (match(LEAD_BYTES, TTF) || match(LEAD_BYTES, OTF)) return `SFNT`; 36915 if (match(LEAD_BYTES, WOFF)) return `WOFF`; 36916 if (match(LEAD_BYTES, WOFF2)) return `WOFF2`; 36917 } 36918 function checkFetchResponseStatus(response) { 36919 if (!response.ok) { 36920 throw new Error( 36921 `HTTP $response.status} - $response.statusText}` 36922 ); 36923 } 36924 return response; 36925 } 36926 var Font = class extends EventManager { 36927 constructor(name2, options = {}) { 36928 super(); 36929 this.name = name2; 36930 this.options = options; 36931 this.metrics = false; 36932 } 36933 get src() { 36934 return this.__src; 36935 } 36936 set src(src) { 36937 this.__src = src; 36938 (async () => { 36939 if (globalThis.document && !this.options.skipStyleSheet) { 36940 await setupFontFace(this.name, src, this.options); 36941 } 36942 this.loadFont(src); 36943 })(); 36944 } 36945 async loadFont(url, filename) { 36946 fetch(url).then( 36947 (response) => checkFetchResponseStatus(response) && response.arrayBuffer() 36948 ).then( 36949 (buffer) => this.fromDataBuffer(buffer, filename || url) 36950 ).catch((err) => { 36951 const evt = new Event2( 36952 `error`, 36953 err, 36954 `Failed to load font at $filename || url}` 36955 ); 36956 this.dispatch(evt); 36957 if (this.onerror) this.onerror(evt); 36958 }); 36959 } 36960 async fromDataBuffer(buffer, filenameOrUrL) { 36961 this.fontData = new DataView(buffer); 36962 let type = validFontFormat(this.fontData); 36963 if (!type) { 36964 throw new Error( 36965 `$filenameOrUrL} is either an unsupported font format, or not a font at all.` 36966 ); 36967 } 36968 await this.parseBasicData(type); 36969 const evt = new Event2("load", { font: this }); 36970 this.dispatch(evt); 36971 if (this.onload) this.onload(evt); 36972 } 36973 async parseBasicData(type) { 36974 return loadTableClasses().then((createTable2) => { 36975 if (type === `SFNT`) { 36976 this.opentype = new SFNT(this, this.fontData, createTable2); 36977 } 36978 if (type === `WOFF`) { 36979 this.opentype = new WOFF$1(this, this.fontData, createTable2); 36980 } 36981 if (type === `WOFF2`) { 36982 this.opentype = new WOFF2$1(this, this.fontData, createTable2); 36983 } 36984 return this.opentype; 36985 }); 36986 } 36987 getGlyphId(char) { 36988 return this.opentype.tables.cmap.getGlyphId(char); 36989 } 36990 reverse(glyphid) { 36991 return this.opentype.tables.cmap.reverse(glyphid); 36992 } 36993 supports(char) { 36994 return this.getGlyphId(char) !== 0; 36995 } 36996 supportsVariation(variation) { 36997 return this.opentype.tables.cmap.supportsVariation(variation) !== false; 36998 } 36999 measureText(text, size4 = 16) { 37000 if (this.__unloaded) 37001 throw new Error( 37002 "Cannot measure text: font was unloaded. Please reload before calling measureText()" 37003 ); 37004 let d = document.createElement("div"); 37005 d.textContent = text; 37006 d.style.fontFamily = this.name; 37007 d.style.fontSize = `$size4}px`; 37008 d.style.color = `transparent`; 37009 d.style.background = `transparent`; 37010 d.style.top = `0`; 37011 d.style.left = `0`; 37012 d.style.position = `absolute`; 37013 document.body.appendChild(d); 37014 let bbox = d.getBoundingClientRect(); 37015 document.body.removeChild(d); 37016 const OS22 = this.opentype.tables["OS/2"]; 37017 bbox.fontSize = size4; 37018 bbox.ascender = OS22.sTypoAscender; 37019 bbox.descender = OS22.sTypoDescender; 37020 return bbox; 37021 } 37022 unload() { 37023 if (this.styleElement.parentNode) { 37024 this.styleElement.parentNode.removeElement(this.styleElement); 37025 const evt = new Event2("unload", { font: this }); 37026 this.dispatch(evt); 37027 if (this.onunload) this.onunload(evt); 37028 } 37029 this._unloaded = true; 37030 } 37031 load() { 37032 if (this.__unloaded) { 37033 delete this.__unloaded; 37034 document.head.appendChild(this.styleElement); 37035 const evt = new Event2("load", { font: this }); 37036 this.dispatch(evt); 37037 if (this.onload) this.onload(evt); 37038 } 37039 } 37040 }; 37041 globalThis.Font = Font; 37042 var Subtable = class extends ParsedData { 37043 constructor(p22, plaformID, encodingID) { 37044 super(p22); 37045 this.plaformID = plaformID; 37046 this.encodingID = encodingID; 37047 } 37048 }; 37049 var Format0 = class extends Subtable { 37050 constructor(p22, platformID, encodingID) { 37051 super(p22, platformID, encodingID); 37052 this.format = 0; 37053 this.length = p22.uint16; 37054 this.language = p22.uint16; 37055 this.glyphIdArray = [...new Array(256)].map((_) => p22.uint8); 37056 } 37057 supports(charCode) { 37058 if (charCode.charCodeAt) { 37059 charCode = -1; 37060 console.warn( 37061 `supports(character) not implemented for cmap subtable format 0. only supports(id) is implemented.` 37062 ); 37063 } 37064 return 0 <= charCode && charCode <= 255; 37065 } 37066 reverse(glyphID) { 37067 console.warn(`reverse not implemented for cmap subtable format 0`); 37068 return {}; 37069 } 37070 getSupportedCharCodes() { 37071 return [{ start: 1, end: 256 }]; 37072 } 37073 }; 37074 var Format2 = class extends Subtable { 37075 constructor(p22, platformID, encodingID) { 37076 super(p22, platformID, encodingID); 37077 this.format = 2; 37078 this.length = p22.uint16; 37079 this.language = p22.uint16; 37080 this.subHeaderKeys = [...new Array(256)].map((_) => p22.uint16); 37081 const subHeaderCount = Math.max(...this.subHeaderKeys); 37082 const subHeaderOffset = p22.currentPosition; 37083 lazy$1(this, `subHeaders`, () => { 37084 p22.currentPosition = subHeaderOffset; 37085 return [...new Array(subHeaderCount)].map( 37086 (_) => new SubHeader(p22) 37087 ); 37088 }); 37089 const glyphIndexOffset = subHeaderOffset + subHeaderCount * 8; 37090 lazy$1(this, `glyphIndexArray`, () => { 37091 p22.currentPosition = glyphIndexOffset; 37092 return [...new Array(subHeaderCount)].map((_) => p22.uint16); 37093 }); 37094 } 37095 supports(charCode) { 37096 if (charCode.charCodeAt) { 37097 charCode = -1; 37098 console.warn( 37099 `supports(character) not implemented for cmap subtable format 2. only supports(id) is implemented.` 37100 ); 37101 } 37102 const low = charCode && 255; 37103 const high = charCode && 65280; 37104 const subHeaderKey = this.subHeaders[high]; 37105 const subheader = this.subHeaders[subHeaderKey]; 37106 const first = subheader.firstCode; 37107 const last = first + subheader.entryCount; 37108 return first <= low && low <= last; 37109 } 37110 reverse(glyphID) { 37111 console.warn(`reverse not implemented for cmap subtable format 2`); 37112 return {}; 37113 } 37114 getSupportedCharCodes(preservePropNames = false) { 37115 if (preservePropNames) { 37116 return this.subHeaders.map((h) => ({ 37117 firstCode: h.firstCode, 37118 lastCode: h.lastCode 37119 })); 37120 } 37121 return this.subHeaders.map((h) => ({ 37122 start: h.firstCode, 37123 end: h.lastCode 37124 })); 37125 } 37126 }; 37127 var SubHeader = class { 37128 constructor(p22) { 37129 this.firstCode = p22.uint16; 37130 this.entryCount = p22.uint16; 37131 this.lastCode = this.first + this.entryCount; 37132 this.idDelta = p22.int16; 37133 this.idRangeOffset = p22.uint16; 37134 } 37135 }; 37136 var Format4 = class extends Subtable { 37137 constructor(p22, platformID, encodingID) { 37138 super(p22, platformID, encodingID); 37139 this.format = 4; 37140 this.length = p22.uint16; 37141 this.language = p22.uint16; 37142 this.segCountX2 = p22.uint16; 37143 this.segCount = this.segCountX2 / 2; 37144 this.searchRange = p22.uint16; 37145 this.entrySelector = p22.uint16; 37146 this.rangeShift = p22.uint16; 37147 const endCodePosition = p22.currentPosition; 37148 lazy$1( 37149 this, 37150 `endCode`, 37151 () => p22.readBytes(this.segCount, endCodePosition, 16) 37152 ); 37153 const startCodePosition = endCodePosition + 2 + this.segCountX2; 37154 lazy$1( 37155 this, 37156 `startCode`, 37157 () => p22.readBytes(this.segCount, startCodePosition, 16) 37158 ); 37159 const idDeltaPosition = startCodePosition + this.segCountX2; 37160 lazy$1( 37161 this, 37162 `idDelta`, 37163 () => p22.readBytes(this.segCount, idDeltaPosition, 16, true) 37164 ); 37165 const idRangePosition = idDeltaPosition + this.segCountX2; 37166 lazy$1( 37167 this, 37168 `idRangeOffset`, 37169 () => p22.readBytes(this.segCount, idRangePosition, 16) 37170 ); 37171 const glyphIdArrayPosition = idRangePosition + this.segCountX2; 37172 const glyphIdArrayLength = this.length - (glyphIdArrayPosition - this.tableStart); 37173 lazy$1( 37174 this, 37175 `glyphIdArray`, 37176 () => p22.readBytes(glyphIdArrayLength, glyphIdArrayPosition, 16) 37177 ); 37178 lazy$1( 37179 this, 37180 `segments`, 37181 () => this.buildSegments(idRangePosition, glyphIdArrayPosition, p22) 37182 ); 37183 } 37184 buildSegments(idRangePosition, glyphIdArrayPosition, p22) { 37185 const build = (_, i) => { 37186 let startCode = this.startCode[i], endCode = this.endCode[i], idDelta = this.idDelta[i], idRangeOffset = this.idRangeOffset[i], idRangeOffsetPointer = idRangePosition + 2 * i, glyphIDs = []; 37187 if (idRangeOffset === 0) { 37188 for (let i2 = startCode + idDelta, e = endCode + idDelta; i2 <= e; i2++) { 37189 glyphIDs.push(i2); 37190 } 37191 } else { 37192 for (let i2 = 0, e = endCode - startCode; i2 <= e; i2++) { 37193 p22.currentPosition = idRangeOffsetPointer + idRangeOffset + i2 * 2; 37194 glyphIDs.push(p22.uint16); 37195 } 37196 } 37197 return { 37198 startCode, 37199 endCode, 37200 idDelta, 37201 idRangeOffset, 37202 glyphIDs 37203 }; 37204 }; 37205 return [...new Array(this.segCount)].map(build); 37206 } 37207 reverse(glyphID) { 37208 let s = this.segments.find((v2) => v2.glyphIDs.includes(glyphID)); 37209 if (!s) return {}; 37210 const code = s.startCode + s.glyphIDs.indexOf(glyphID); 37211 return { code, unicode: String.fromCodePoint(code) }; 37212 } 37213 getGlyphId(charCode) { 37214 if (charCode.charCodeAt) charCode = charCode.charCodeAt(0); 37215 if (55296 <= charCode && charCode <= 57343) return 0; 37216 if ((charCode & 65534) === 65534 || (charCode & 65535) === 65535) 37217 return 0; 37218 let segment = this.segments.find( 37219 (s) => s.startCode <= charCode && charCode <= s.endCode 37220 ); 37221 if (!segment) return 0; 37222 return segment.glyphIDs[charCode - segment.startCode]; 37223 } 37224 supports(charCode) { 37225 return this.getGlyphId(charCode) !== 0; 37226 } 37227 getSupportedCharCodes(preservePropNames = false) { 37228 if (preservePropNames) return this.segments; 37229 return this.segments.map((v2) => ({ 37230 start: v2.startCode, 37231 end: v2.endCode 37232 })); 37233 } 37234 }; 37235 var Format6 = class extends Subtable { 37236 constructor(p22, platformID, encodingID) { 37237 super(p22, platformID, encodingID); 37238 this.format = 6; 37239 this.length = p22.uint16; 37240 this.language = p22.uint16; 37241 this.firstCode = p22.uint16; 37242 this.entryCount = p22.uint16; 37243 this.lastCode = this.firstCode + this.entryCount - 1; 37244 const getter = () => [...new Array(this.entryCount)].map((_) => p22.uint16); 37245 lazy$1(this, `glyphIdArray`, getter); 37246 } 37247 supports(charCode) { 37248 if (charCode.charCodeAt) { 37249 charCode = -1; 37250 console.warn( 37251 `supports(character) not implemented for cmap subtable format 6. only supports(id) is implemented.` 37252 ); 37253 } 37254 if (charCode < this.firstCode) return {}; 37255 if (charCode > this.firstCode + this.entryCount) return {}; 37256 const code = charCode - this.firstCode; 37257 return { code, unicode: String.fromCodePoint(code) }; 37258 } 37259 reverse(glyphID) { 37260 let pos = this.glyphIdArray.indexOf(glyphID); 37261 if (pos > -1) return this.firstCode + pos; 37262 } 37263 getSupportedCharCodes(preservePropNames = false) { 37264 if (preservePropNames) { 37265 return [{ firstCode: this.firstCode, lastCode: this.lastCode }]; 37266 } 37267 return [{ start: this.firstCode, end: this.lastCode }]; 37268 } 37269 }; 37270 var Format8 = class extends Subtable { 37271 constructor(p22, platformID, encodingID) { 37272 super(p22, platformID, encodingID); 37273 this.format = 8; 37274 p22.uint16; 37275 this.length = p22.uint32; 37276 this.language = p22.uint32; 37277 this.is32 = [...new Array(8192)].map((_) => p22.uint8); 37278 this.numGroups = p22.uint32; 37279 const getter = () => [...new Array(this.numGroups)].map( 37280 (_) => new SequentialMapGroup$1(p22) 37281 ); 37282 lazy$1(this, `groups`, getter); 37283 } 37284 supports(charCode) { 37285 if (charCode.charCodeAt) { 37286 charCode = -1; 37287 console.warn( 37288 `supports(character) not implemented for cmap subtable format 8. only supports(id) is implemented.` 37289 ); 37290 } 37291 return this.groups.findIndex( 37292 (s) => s.startcharCode <= charCode && charCode <= s.endcharCode 37293 ) !== -1; 37294 } 37295 reverse(glyphID) { 37296 console.warn(`reverse not implemented for cmap subtable format 8`); 37297 return {}; 37298 } 37299 getSupportedCharCodes(preservePropNames = false) { 37300 if (preservePropNames) return this.groups; 37301 return this.groups.map((v2) => ({ 37302 start: v2.startcharCode, 37303 end: v2.endcharCode 37304 })); 37305 } 37306 }; 37307 var SequentialMapGroup$1 = class { 37308 constructor(p22) { 37309 this.startcharCode = p22.uint32; 37310 this.endcharCode = p22.uint32; 37311 this.startGlyphID = p22.uint32; 37312 } 37313 }; 37314 var Format10 = class extends Subtable { 37315 constructor(p22, platformID, encodingID) { 37316 super(p22, platformID, encodingID); 37317 this.format = 10; 37318 p22.uint16; 37319 this.length = p22.uint32; 37320 this.language = p22.uint32; 37321 this.startCharCode = p22.uint32; 37322 this.numChars = p22.uint32; 37323 this.endCharCode = this.startCharCode + this.numChars; 37324 const getter = () => [...new Array(this.numChars)].map((_) => p22.uint16); 37325 lazy$1(this, `glyphs`, getter); 37326 } 37327 supports(charCode) { 37328 if (charCode.charCodeAt) { 37329 charCode = -1; 37330 console.warn( 37331 `supports(character) not implemented for cmap subtable format 10. only supports(id) is implemented.` 37332 ); 37333 } 37334 if (charCode < this.startCharCode) return false; 37335 if (charCode > this.startCharCode + this.numChars) return false; 37336 return charCode - this.startCharCode; 37337 } 37338 reverse(glyphID) { 37339 console.warn(`reverse not implemented for cmap subtable format 10`); 37340 return {}; 37341 } 37342 getSupportedCharCodes(preservePropNames = false) { 37343 if (preservePropNames) { 37344 return [ 37345 { 37346 startCharCode: this.startCharCode, 37347 endCharCode: this.endCharCode 37348 } 37349 ]; 37350 } 37351 return [{ start: this.startCharCode, end: this.endCharCode }]; 37352 } 37353 }; 37354 var Format12 = class extends Subtable { 37355 constructor(p22, platformID, encodingID) { 37356 super(p22, platformID, encodingID); 37357 this.format = 12; 37358 p22.uint16; 37359 this.length = p22.uint32; 37360 this.language = p22.uint32; 37361 this.numGroups = p22.uint32; 37362 const getter = () => [...new Array(this.numGroups)].map( 37363 (_) => new SequentialMapGroup(p22) 37364 ); 37365 lazy$1(this, `groups`, getter); 37366 } 37367 supports(charCode) { 37368 if (charCode.charCodeAt) charCode = charCode.charCodeAt(0); 37369 if (55296 <= charCode && charCode <= 57343) return 0; 37370 if ((charCode & 65534) === 65534 || (charCode & 65535) === 65535) 37371 return 0; 37372 return this.groups.findIndex( 37373 (s) => s.startCharCode <= charCode && charCode <= s.endCharCode 37374 ) !== -1; 37375 } 37376 reverse(glyphID) { 37377 for (let group of this.groups) { 37378 let start = group.startGlyphID; 37379 if (start > glyphID) continue; 37380 if (start === glyphID) return group.startCharCode; 37381 let end = start + (group.endCharCode - group.startCharCode); 37382 if (end < glyphID) continue; 37383 const code = group.startCharCode + (glyphID - start); 37384 return { code, unicode: String.fromCodePoint(code) }; 37385 } 37386 return {}; 37387 } 37388 getSupportedCharCodes(preservePropNames = false) { 37389 if (preservePropNames) return this.groups; 37390 return this.groups.map((v2) => ({ 37391 start: v2.startCharCode, 37392 end: v2.endCharCode 37393 })); 37394 } 37395 }; 37396 var SequentialMapGroup = class { 37397 constructor(p22) { 37398 this.startCharCode = p22.uint32; 37399 this.endCharCode = p22.uint32; 37400 this.startGlyphID = p22.uint32; 37401 } 37402 }; 37403 var Format13 = class extends Subtable { 37404 constructor(p22, platformID, encodingID) { 37405 super(p22, platformID, encodingID); 37406 this.format = 13; 37407 p22.uint16; 37408 this.length = p22.uint32; 37409 this.language = p22.uint32; 37410 this.numGroups = p22.uint32; 37411 const getter = [...new Array(this.numGroups)].map( 37412 (_) => new ConstantMapGroup(p22) 37413 ); 37414 lazy$1(this, `groups`, getter); 37415 } 37416 supports(charCode) { 37417 if (charCode.charCodeAt) charCode = charCode.charCodeAt(0); 37418 return this.groups.findIndex( 37419 (s) => s.startCharCode <= charCode && charCode <= s.endCharCode 37420 ) !== -1; 37421 } 37422 reverse(glyphID) { 37423 console.warn(`reverse not implemented for cmap subtable format 13`); 37424 return {}; 37425 } 37426 getSupportedCharCodes(preservePropNames = false) { 37427 if (preservePropNames) return this.groups; 37428 return this.groups.map((v2) => ({ 37429 start: v2.startCharCode, 37430 end: v2.endCharCode 37431 })); 37432 } 37433 }; 37434 var ConstantMapGroup = class { 37435 constructor(p22) { 37436 this.startCharCode = p22.uint32; 37437 this.endCharCode = p22.uint32; 37438 this.glyphID = p22.uint32; 37439 } 37440 }; 37441 var Format14 = class extends Subtable { 37442 constructor(p22, platformID, encodingID) { 37443 super(p22, platformID, encodingID); 37444 this.subTableStart = p22.currentPosition; 37445 this.format = 14; 37446 this.length = p22.uint32; 37447 this.numVarSelectorRecords = p22.uint32; 37448 lazy$1( 37449 this, 37450 `varSelectors`, 37451 () => [...new Array(this.numVarSelectorRecords)].map( 37452 (_) => new VariationSelector(p22) 37453 ) 37454 ); 37455 } 37456 supports() { 37457 console.warn(`supports not implemented for cmap subtable format 14`); 37458 return 0; 37459 } 37460 getSupportedCharCodes() { 37461 console.warn( 37462 `getSupportedCharCodes not implemented for cmap subtable format 14` 37463 ); 37464 return []; 37465 } 37466 reverse(glyphID) { 37467 console.warn(`reverse not implemented for cmap subtable format 14`); 37468 return {}; 37469 } 37470 supportsVariation(variation) { 37471 let v2 = this.varSelector.find( 37472 (uvs) => uvs.varSelector === variation 37473 ); 37474 return v2 ? v2 : false; 37475 } 37476 getSupportedVariations() { 37477 return this.varSelectors.map((v2) => v2.varSelector); 37478 } 37479 }; 37480 var VariationSelector = class { 37481 constructor(p22) { 37482 this.varSelector = p22.uint24; 37483 this.defaultUVSOffset = p22.Offset32; 37484 this.nonDefaultUVSOffset = p22.Offset32; 37485 } 37486 }; 37487 function createSubTable(parser, platformID, encodingID) { 37488 const format = parser.uint16; 37489 if (format === 0) return new Format0(parser, platformID, encodingID); 37490 if (format === 2) return new Format2(parser, platformID, encodingID); 37491 if (format === 4) return new Format4(parser, platformID, encodingID); 37492 if (format === 6) return new Format6(parser, platformID, encodingID); 37493 if (format === 8) return new Format8(parser, platformID, encodingID); 37494 if (format === 10) return new Format10(parser, platformID, encodingID); 37495 if (format === 12) return new Format12(parser, platformID, encodingID); 37496 if (format === 13) return new Format13(parser, platformID, encodingID); 37497 if (format === 14) return new Format14(parser, platformID, encodingID); 37498 return {}; 37499 } 37500 var cmap = class extends SimpleTable { 37501 constructor(dict, dataview) { 37502 const { p: p22 } = super(dict, dataview); 37503 this.version = p22.uint16; 37504 this.numTables = p22.uint16; 37505 this.encodingRecords = [...new Array(this.numTables)].map( 37506 (_) => new EncodingRecord(p22, this.tableStart) 37507 ); 37508 } 37509 getSubTable(tableID) { 37510 return this.encodingRecords[tableID].table; 37511 } 37512 getSupportedEncodings() { 37513 return this.encodingRecords.map((r2) => ({ 37514 platformID: r2.platformID, 37515 encodingId: r2.encodingID 37516 })); 37517 } 37518 getSupportedCharCodes(platformID, encodingID) { 37519 const recordID = this.encodingRecords.findIndex( 37520 (r2) => r2.platformID === platformID && r2.encodingID === encodingID 37521 ); 37522 if (recordID === -1) return false; 37523 const subtable = this.getSubTable(recordID); 37524 return subtable.getSupportedCharCodes(); 37525 } 37526 reverse(glyphid) { 37527 for (let i = 0; i < this.numTables; i++) { 37528 let code = this.getSubTable(i).reverse(glyphid); 37529 if (code) return code; 37530 } 37531 } 37532 getGlyphId(char) { 37533 let last = 0; 37534 this.encodingRecords.some((_, tableID) => { 37535 let t = this.getSubTable(tableID); 37536 if (!t.getGlyphId) return false; 37537 last = t.getGlyphId(char); 37538 return last !== 0; 37539 }); 37540 return last; 37541 } 37542 supports(char) { 37543 return this.encodingRecords.some((_, tableID) => { 37544 const t = this.getSubTable(tableID); 37545 return t.supports && t.supports(char) !== false; 37546 }); 37547 } 37548 supportsVariation(variation) { 37549 return this.encodingRecords.some((_, tableID) => { 37550 const t = this.getSubTable(tableID); 37551 return t.supportsVariation && t.supportsVariation(variation) !== false; 37552 }); 37553 } 37554 }; 37555 var EncodingRecord = class { 37556 constructor(p22, tableStart) { 37557 const platformID = this.platformID = p22.uint16; 37558 const encodingID = this.encodingID = p22.uint16; 37559 const offset4 = this.offset = p22.Offset32; 37560 lazy$1(this, `table`, () => { 37561 p22.currentPosition = tableStart + offset4; 37562 return createSubTable(p22, platformID, encodingID); 37563 }); 37564 } 37565 }; 37566 var cmap$1 = Object.freeze({ __proto__: null, cmap }); 37567 var head = class extends SimpleTable { 37568 constructor(dict, dataview) { 37569 const { p: p22 } = super(dict, dataview); 37570 this.load({ 37571 majorVersion: p22.uint16, 37572 minorVersion: p22.uint16, 37573 fontRevision: p22.fixed, 37574 checkSumAdjustment: p22.uint32, 37575 magicNumber: p22.uint32, 37576 flags: p22.flags(16), 37577 unitsPerEm: p22.uint16, 37578 created: p22.longdatetime, 37579 modified: p22.longdatetime, 37580 xMin: p22.int16, 37581 yMin: p22.int16, 37582 xMax: p22.int16, 37583 yMax: p22.int16, 37584 macStyle: p22.flags(16), 37585 lowestRecPPEM: p22.uint16, 37586 fontDirectionHint: p22.uint16, 37587 indexToLocFormat: p22.uint16, 37588 glyphDataFormat: p22.uint16 37589 }); 37590 } 37591 }; 37592 var head$1 = Object.freeze({ __proto__: null, head }); 37593 var hhea = class extends SimpleTable { 37594 constructor(dict, dataview) { 37595 const { p: p22 } = super(dict, dataview); 37596 this.majorVersion = p22.uint16; 37597 this.minorVersion = p22.uint16; 37598 this.ascender = p22.fword; 37599 this.descender = p22.fword; 37600 this.lineGap = p22.fword; 37601 this.advanceWidthMax = p22.ufword; 37602 this.minLeftSideBearing = p22.fword; 37603 this.minRightSideBearing = p22.fword; 37604 this.xMaxExtent = p22.fword; 37605 this.caretSlopeRise = p22.int16; 37606 this.caretSlopeRun = p22.int16; 37607 this.caretOffset = p22.int16; 37608 p22.int16; 37609 p22.int16; 37610 p22.int16; 37611 p22.int16; 37612 this.metricDataFormat = p22.int16; 37613 this.numberOfHMetrics = p22.uint16; 37614 p22.verifyLength(); 37615 } 37616 }; 37617 var hhea$1 = Object.freeze({ __proto__: null, hhea }); 37618 var hmtx = class extends SimpleTable { 37619 constructor(dict, dataview, tables) { 37620 const { p: p22 } = super(dict, dataview); 37621 const numberOfHMetrics = tables.hhea.numberOfHMetrics; 37622 const numGlyphs = tables.maxp.numGlyphs; 37623 const metricsStart = p22.currentPosition; 37624 lazy$1(this, `hMetrics`, () => { 37625 p22.currentPosition = metricsStart; 37626 return [...new Array(numberOfHMetrics)].map( 37627 (_) => new LongHorMetric(p22.uint16, p22.int16) 37628 ); 37629 }); 37630 if (numberOfHMetrics < numGlyphs) { 37631 const lsbStart = metricsStart + numberOfHMetrics * 4; 37632 lazy$1(this, `leftSideBearings`, () => { 37633 p22.currentPosition = lsbStart; 37634 return [...new Array(numGlyphs - numberOfHMetrics)].map( 37635 (_) => p22.int16 37636 ); 37637 }); 37638 } 37639 } 37640 }; 37641 var LongHorMetric = class { 37642 constructor(w2, b) { 37643 this.advanceWidth = w2; 37644 this.lsb = b; 37645 } 37646 }; 37647 var hmtx$1 = Object.freeze({ __proto__: null, hmtx }); 37648 var maxp = class extends SimpleTable { 37649 constructor(dict, dataview) { 37650 const { p: p22 } = super(dict, dataview); 37651 this.version = p22.legacyFixed; 37652 this.numGlyphs = p22.uint16; 37653 if (this.version === 1) { 37654 this.maxPoints = p22.uint16; 37655 this.maxContours = p22.uint16; 37656 this.maxCompositePoints = p22.uint16; 37657 this.maxCompositeContours = p22.uint16; 37658 this.maxZones = p22.uint16; 37659 this.maxTwilightPoints = p22.uint16; 37660 this.maxStorage = p22.uint16; 37661 this.maxFunctionDefs = p22.uint16; 37662 this.maxInstructionDefs = p22.uint16; 37663 this.maxStackElements = p22.uint16; 37664 this.maxSizeOfInstructions = p22.uint16; 37665 this.maxComponentElements = p22.uint16; 37666 this.maxComponentDepth = p22.uint16; 37667 } 37668 p22.verifyLength(); 37669 } 37670 }; 37671 var maxp$1 = Object.freeze({ __proto__: null, maxp }); 37672 var name = class extends SimpleTable { 37673 constructor(dict, dataview) { 37674 const { p: p22 } = super(dict, dataview); 37675 this.format = p22.uint16; 37676 this.count = p22.uint16; 37677 this.stringOffset = p22.Offset16; 37678 this.nameRecords = [...new Array(this.count)].map( 37679 (_) => new NameRecord(p22, this) 37680 ); 37681 if (this.format === 1) { 37682 this.langTagCount = p22.uint16; 37683 this.langTagRecords = [...new Array(this.langTagCount)].map( 37684 (_) => new LangTagRecord(p22.uint16, p22.Offset16) 37685 ); 37686 } 37687 this.stringStart = this.tableStart + this.stringOffset; 37688 } 37689 get(nameID) { 37690 let record = this.nameRecords.find( 37691 (record2) => record2.nameID === nameID 37692 ); 37693 if (record) return record.string; 37694 } 37695 }; 37696 var LangTagRecord = class { 37697 constructor(length, offset4) { 37698 this.length = length; 37699 this.offset = offset4; 37700 } 37701 }; 37702 var NameRecord = class { 37703 constructor(p22, nameTable) { 37704 this.platformID = p22.uint16; 37705 this.encodingID = p22.uint16; 37706 this.languageID = p22.uint16; 37707 this.nameID = p22.uint16; 37708 this.length = p22.uint16; 37709 this.offset = p22.Offset16; 37710 lazy$1(this, `string`, () => { 37711 p22.currentPosition = nameTable.stringStart + this.offset; 37712 return decodeString(p22, this); 37713 }); 37714 } 37715 }; 37716 function decodeString(p22, record) { 37717 const { platformID, length } = record; 37718 if (length === 0) return ``; 37719 if (platformID === 0 || platformID === 3) { 37720 const str2 = []; 37721 for (let i = 0, e = length / 2; i < e; i++) 37722 str2[i] = String.fromCharCode(p22.uint16); 37723 return str2.join(``); 37724 } 37725 const bytes = p22.readBytes(length); 37726 const str = []; 37727 bytes.forEach(function(b, i) { 37728 str[i] = String.fromCharCode(b); 37729 }); 37730 return str.join(``); 37731 } 37732 var name$1 = Object.freeze({ __proto__: null, name }); 37733 var OS2 = class extends SimpleTable { 37734 constructor(dict, dataview) { 37735 const { p: p22 } = super(dict, dataview); 37736 this.version = p22.uint16; 37737 this.xAvgCharWidth = p22.int16; 37738 this.usWeightClass = p22.uint16; 37739 this.usWidthClass = p22.uint16; 37740 this.fsType = p22.uint16; 37741 this.ySubscriptXSize = p22.int16; 37742 this.ySubscriptYSize = p22.int16; 37743 this.ySubscriptXOffset = p22.int16; 37744 this.ySubscriptYOffset = p22.int16; 37745 this.ySuperscriptXSize = p22.int16; 37746 this.ySuperscriptYSize = p22.int16; 37747 this.ySuperscriptXOffset = p22.int16; 37748 this.ySuperscriptYOffset = p22.int16; 37749 this.yStrikeoutSize = p22.int16; 37750 this.yStrikeoutPosition = p22.int16; 37751 this.sFamilyClass = p22.int16; 37752 this.panose = [...new Array(10)].map((_) => p22.uint8); 37753 this.ulUnicodeRange1 = p22.flags(32); 37754 this.ulUnicodeRange2 = p22.flags(32); 37755 this.ulUnicodeRange3 = p22.flags(32); 37756 this.ulUnicodeRange4 = p22.flags(32); 37757 this.achVendID = p22.tag; 37758 this.fsSelection = p22.uint16; 37759 this.usFirstCharIndex = p22.uint16; 37760 this.usLastCharIndex = p22.uint16; 37761 this.sTypoAscender = p22.int16; 37762 this.sTypoDescender = p22.int16; 37763 this.sTypoLineGap = p22.int16; 37764 this.usWinAscent = p22.uint16; 37765 this.usWinDescent = p22.uint16; 37766 if (this.version === 0) return p22.verifyLength(); 37767 this.ulCodePageRange1 = p22.flags(32); 37768 this.ulCodePageRange2 = p22.flags(32); 37769 if (this.version === 1) return p22.verifyLength(); 37770 this.sxHeight = p22.int16; 37771 this.sCapHeight = p22.int16; 37772 this.usDefaultChar = p22.uint16; 37773 this.usBreakChar = p22.uint16; 37774 this.usMaxContext = p22.uint16; 37775 if (this.version <= 4) return p22.verifyLength(); 37776 this.usLowerOpticalPointSize = p22.uint16; 37777 this.usUpperOpticalPointSize = p22.uint16; 37778 if (this.version === 5) return p22.verifyLength(); 37779 } 37780 }; 37781 var OS2$1 = Object.freeze({ __proto__: null, OS2 }); 37782 var post = class extends SimpleTable { 37783 constructor(dict, dataview) { 37784 const { p: p22 } = super(dict, dataview); 37785 this.version = p22.legacyFixed; 37786 this.italicAngle = p22.fixed; 37787 this.underlinePosition = p22.fword; 37788 this.underlineThickness = p22.fword; 37789 this.isFixedPitch = p22.uint32; 37790 this.minMemType42 = p22.uint32; 37791 this.maxMemType42 = p22.uint32; 37792 this.minMemType1 = p22.uint32; 37793 this.maxMemType1 = p22.uint32; 37794 if (this.version === 1 || this.version === 3) return p22.verifyLength(); 37795 this.numGlyphs = p22.uint16; 37796 if (this.version === 2) { 37797 this.glyphNameIndex = [...new Array(this.numGlyphs)].map( 37798 (_) => p22.uint16 37799 ); 37800 this.namesOffset = p22.currentPosition; 37801 this.glyphNameOffsets = [1]; 37802 for (let i = 0; i < this.numGlyphs; i++) { 37803 let index2 = this.glyphNameIndex[i]; 37804 if (index2 < macStrings.length) { 37805 this.glyphNameOffsets.push(this.glyphNameOffsets[i]); 37806 continue; 37807 } 37808 let bytelength = p22.int8; 37809 p22.skip(bytelength); 37810 this.glyphNameOffsets.push( 37811 this.glyphNameOffsets[i] + bytelength + 1 37812 ); 37813 } 37814 } 37815 if (this.version === 2.5) { 37816 this.offset = [...new Array(this.numGlyphs)].map( 37817 (_) => p22.int8 37818 ); 37819 } 37820 } 37821 getGlyphName(glyphid) { 37822 if (this.version !== 2) { 37823 console.warn( 37824 `post table version $this.version} does not support glyph name lookups` 37825 ); 37826 return ``; 37827 } 37828 let index2 = this.glyphNameIndex[glyphid]; 37829 if (index2 < 258) return macStrings[index2]; 37830 let offset4 = this.glyphNameOffsets[glyphid]; 37831 let next = this.glyphNameOffsets[glyphid + 1]; 37832 let len = next - offset4 - 1; 37833 if (len === 0) return `.notdef.`; 37834 this.parser.currentPosition = this.namesOffset + offset4; 37835 const data = this.parser.readBytes( 37836 len, 37837 this.namesOffset + offset4, 37838 8, 37839 true 37840 ); 37841 return data.map((b) => String.fromCharCode(b)).join(``); 37842 } 37843 }; 37844 var macStrings = [ 37845 `.notdef`, 37846 `.null`, 37847 `nonmarkingreturn`, 37848 `space`, 37849 `exclam`, 37850 `quotedbl`, 37851 `numbersign`, 37852 `dollar`, 37853 `percent`, 37854 `ampersand`, 37855 `quotesingle`, 37856 `parenleft`, 37857 `parenright`, 37858 `asterisk`, 37859 `plus`, 37860 `comma`, 37861 `hyphen`, 37862 `period`, 37863 `slash`, 37864 `zero`, 37865 `one`, 37866 `two`, 37867 `three`, 37868 `four`, 37869 `five`, 37870 `six`, 37871 `seven`, 37872 `eight`, 37873 `nine`, 37874 `colon`, 37875 `semicolon`, 37876 `less`, 37877 `equal`, 37878 `greater`, 37879 `question`, 37880 `at`, 37881 `A`, 37882 `B`, 37883 `C`, 37884 `D`, 37885 `E`, 37886 `F`, 37887 `G`, 37888 `H`, 37889 `I`, 37890 `J`, 37891 `K`, 37892 `L`, 37893 `M`, 37894 `N`, 37895 `O`, 37896 `P`, 37897 `Q`, 37898 `R`, 37899 `S`, 37900 `T`, 37901 `U`, 37902 `V`, 37903 `W`, 37904 `X`, 37905 `Y`, 37906 `Z`, 37907 `bracketleft`, 37908 `backslash`, 37909 `bracketright`, 37910 `asciicircum`, 37911 `underscore`, 37912 `grave`, 37913 `a`, 37914 `b`, 37915 `c`, 37916 `d`, 37917 `e`, 37918 `f`, 37919 `g`, 37920 `h`, 37921 `i`, 37922 `j`, 37923 `k`, 37924 `l`, 37925 `m`, 37926 `n`, 37927 `o`, 37928 `p`, 37929 `q`, 37930 `r`, 37931 `s`, 37932 `t`, 37933 `u`, 37934 `v`, 37935 `w`, 37936 `x`, 37937 `y`, 37938 `z`, 37939 `braceleft`, 37940 `bar`, 37941 `braceright`, 37942 `asciitilde`, 37943 `Adieresis`, 37944 `Aring`, 37945 `Ccedilla`, 37946 `Eacute`, 37947 `Ntilde`, 37948 `Odieresis`, 37949 `Udieresis`, 37950 `aacute`, 37951 `agrave`, 37952 `acircumflex`, 37953 `adieresis`, 37954 `atilde`, 37955 `aring`, 37956 `ccedilla`, 37957 `eacute`, 37958 `egrave`, 37959 `ecircumflex`, 37960 `edieresis`, 37961 `iacute`, 37962 `igrave`, 37963 `icircumflex`, 37964 `idieresis`, 37965 `ntilde`, 37966 `oacute`, 37967 `ograve`, 37968 `ocircumflex`, 37969 `odieresis`, 37970 `otilde`, 37971 `uacute`, 37972 `ugrave`, 37973 `ucircumflex`, 37974 `udieresis`, 37975 `dagger`, 37976 `degree`, 37977 `cent`, 37978 `sterling`, 37979 `section`, 37980 `bullet`, 37981 `paragraph`, 37982 `germandbls`, 37983 `registered`, 37984 `copyright`, 37985 `trademark`, 37986 `acute`, 37987 `dieresis`, 37988 `notequal`, 37989 `AE`, 37990 `Oslash`, 37991 `infinity`, 37992 `plusminus`, 37993 `lessequal`, 37994 `greaterequal`, 37995 `yen`, 37996 `mu`, 37997 `partialdiff`, 37998 `summation`, 37999 `product`, 38000 `pi`, 38001 `integral`, 38002 `ordfeminine`, 38003 `ordmasculine`, 38004 `Omega`, 38005 `ae`, 38006 `oslash`, 38007 `questiondown`, 38008 `exclamdown`, 38009 `logicalnot`, 38010 `radical`, 38011 `florin`, 38012 `approxequal`, 38013 `Delta`, 38014 `guillemotleft`, 38015 `guillemotright`, 38016 `ellipsis`, 38017 `nonbreakingspace`, 38018 `Agrave`, 38019 `Atilde`, 38020 `Otilde`, 38021 `OE`, 38022 `oe`, 38023 `endash`, 38024 `emdash`, 38025 `quotedblleft`, 38026 `quotedblright`, 38027 `quoteleft`, 38028 `quoteright`, 38029 `divide`, 38030 `lozenge`, 38031 `ydieresis`, 38032 `Ydieresis`, 38033 `fraction`, 38034 `currency`, 38035 `guilsinglleft`, 38036 `guilsinglright`, 38037 `fi`, 38038 `fl`, 38039 `daggerdbl`, 38040 `periodcentered`, 38041 `quotesinglbase`, 38042 `quotedblbase`, 38043 `perthousand`, 38044 `Acircumflex`, 38045 `Ecircumflex`, 38046 `Aacute`, 38047 `Edieresis`, 38048 `Egrave`, 38049 `Iacute`, 38050 `Icircumflex`, 38051 `Idieresis`, 38052 `Igrave`, 38053 `Oacute`, 38054 `Ocircumflex`, 38055 `apple`, 38056 `Ograve`, 38057 `Uacute`, 38058 `Ucircumflex`, 38059 `Ugrave`, 38060 `dotlessi`, 38061 `circumflex`, 38062 `tilde`, 38063 `macron`, 38064 `breve`, 38065 `dotaccent`, 38066 `ring`, 38067 `cedilla`, 38068 `hungarumlaut`, 38069 `ogonek`, 38070 `caron`, 38071 `Lslash`, 38072 `lslash`, 38073 `Scaron`, 38074 `scaron`, 38075 `Zcaron`, 38076 `zcaron`, 38077 `brokenbar`, 38078 `Eth`, 38079 `eth`, 38080 `Yacute`, 38081 `yacute`, 38082 `Thorn`, 38083 `thorn`, 38084 `minus`, 38085 `multiply`, 38086 `onesuperior`, 38087 `twosuperior`, 38088 `threesuperior`, 38089 `onehalf`, 38090 `onequarter`, 38091 `threequarters`, 38092 `franc`, 38093 `Gbreve`, 38094 `gbreve`, 38095 `Idotaccent`, 38096 `Scedilla`, 38097 `scedilla`, 38098 `Cacute`, 38099 `cacute`, 38100 `Ccaron`, 38101 `ccaron`, 38102 `dcroat` 38103 ]; 38104 var post$1 = Object.freeze({ __proto__: null, post }); 38105 var BASE = class extends SimpleTable { 38106 constructor(dict, dataview) { 38107 const { p: p22 } = super(dict, dataview); 38108 this.majorVersion = p22.uint16; 38109 this.minorVersion = p22.uint16; 38110 this.horizAxisOffset = p22.Offset16; 38111 this.vertAxisOffset = p22.Offset16; 38112 lazy$1( 38113 this, 38114 `horizAxis`, 38115 () => new AxisTable( 38116 { offset: dict.offset + this.horizAxisOffset }, 38117 dataview 38118 ) 38119 ); 38120 lazy$1( 38121 this, 38122 `vertAxis`, 38123 () => new AxisTable( 38124 { offset: dict.offset + this.vertAxisOffset }, 38125 dataview 38126 ) 38127 ); 38128 if (this.majorVersion === 1 && this.minorVersion === 1) { 38129 this.itemVarStoreOffset = p22.Offset32; 38130 lazy$1( 38131 this, 38132 `itemVarStore`, 38133 () => new AxisTable( 38134 { offset: dict.offset + this.itemVarStoreOffset }, 38135 dataview 38136 ) 38137 ); 38138 } 38139 } 38140 }; 38141 var AxisTable = class extends SimpleTable { 38142 constructor(dict, dataview) { 38143 const { p: p22 } = super(dict, dataview, `AxisTable`); 38144 this.baseTagListOffset = p22.Offset16; 38145 this.baseScriptListOffset = p22.Offset16; 38146 lazy$1( 38147 this, 38148 `baseTagList`, 38149 () => new BaseTagListTable( 38150 { offset: dict.offset + this.baseTagListOffset }, 38151 dataview 38152 ) 38153 ); 38154 lazy$1( 38155 this, 38156 `baseScriptList`, 38157 () => new BaseScriptListTable( 38158 { offset: dict.offset + this.baseScriptListOffset }, 38159 dataview 38160 ) 38161 ); 38162 } 38163 }; 38164 var BaseTagListTable = class extends SimpleTable { 38165 constructor(dict, dataview) { 38166 const { p: p22 } = super(dict, dataview, `BaseTagListTable`); 38167 this.baseTagCount = p22.uint16; 38168 this.baselineTags = [...new Array(this.baseTagCount)].map( 38169 (_) => p22.tag 38170 ); 38171 } 38172 }; 38173 var BaseScriptListTable = class extends SimpleTable { 38174 constructor(dict, dataview) { 38175 const { p: p22 } = super(dict, dataview, `BaseScriptListTable`); 38176 this.baseScriptCount = p22.uint16; 38177 const recordStart = p22.currentPosition; 38178 lazy$1(this, `baseScriptRecords`, () => { 38179 p22.currentPosition = recordStart; 38180 return [...new Array(this.baseScriptCount)].map( 38181 (_) => new BaseScriptRecord(this.start, p22) 38182 ); 38183 }); 38184 } 38185 }; 38186 var BaseScriptRecord = class { 38187 constructor(baseScriptListTableStart, p22) { 38188 this.baseScriptTag = p22.tag; 38189 this.baseScriptOffset = p22.Offset16; 38190 lazy$1(this, `baseScriptTable`, () => { 38191 p22.currentPosition = baseScriptListTableStart + this.baseScriptOffset; 38192 return new BaseScriptTable(p22); 38193 }); 38194 } 38195 }; 38196 var BaseScriptTable = class { 38197 constructor(p22) { 38198 this.start = p22.currentPosition; 38199 this.baseValuesOffset = p22.Offset16; 38200 this.defaultMinMaxOffset = p22.Offset16; 38201 this.baseLangSysCount = p22.uint16; 38202 this.baseLangSysRecords = [...new Array(this.baseLangSysCount)].map( 38203 (_) => new BaseLangSysRecord(this.start, p22) 38204 ); 38205 lazy$1(this, `baseValues`, () => { 38206 p22.currentPosition = this.start + this.baseValuesOffset; 38207 return new BaseValuesTable(p22); 38208 }); 38209 lazy$1(this, `defaultMinMax`, () => { 38210 p22.currentPosition = this.start + this.defaultMinMaxOffset; 38211 return new MinMaxTable(p22); 38212 }); 38213 } 38214 }; 38215 var BaseLangSysRecord = class { 38216 constructor(baseScriptTableStart, p22) { 38217 this.baseLangSysTag = p22.tag; 38218 this.minMaxOffset = p22.Offset16; 38219 lazy$1(this, `minMax`, () => { 38220 p22.currentPosition = baseScriptTableStart + this.minMaxOffset; 38221 return new MinMaxTable(p22); 38222 }); 38223 } 38224 }; 38225 var BaseValuesTable = class { 38226 constructor(p22) { 38227 this.parser = p22; 38228 this.start = p22.currentPosition; 38229 this.defaultBaselineIndex = p22.uint16; 38230 this.baseCoordCount = p22.uint16; 38231 this.baseCoords = [...new Array(this.baseCoordCount)].map( 38232 (_) => p22.Offset16 38233 ); 38234 } 38235 getTable(id) { 38236 this.parser.currentPosition = this.start + this.baseCoords[id]; 38237 return new BaseCoordTable(this.parser); 38238 } 38239 }; 38240 var MinMaxTable = class { 38241 constructor(p22) { 38242 this.minCoord = p22.Offset16; 38243 this.maxCoord = p22.Offset16; 38244 this.featMinMaxCount = p22.uint16; 38245 const recordStart = p22.currentPosition; 38246 lazy$1(this, `featMinMaxRecords`, () => { 38247 p22.currentPosition = recordStart; 38248 return [...new Array(this.featMinMaxCount)].map( 38249 (_) => new FeatMinMaxRecord(p22) 38250 ); 38251 }); 38252 } 38253 }; 38254 var FeatMinMaxRecord = class { 38255 constructor(p22) { 38256 this.featureTableTag = p22.tag; 38257 this.minCoord = p22.Offset16; 38258 this.maxCoord = p22.Offset16; 38259 } 38260 }; 38261 var BaseCoordTable = class { 38262 constructor(p22) { 38263 this.baseCoordFormat = p22.uint16; 38264 this.coordinate = p22.int16; 38265 if (this.baseCoordFormat === 2) { 38266 this.referenceGlyph = p22.uint16; 38267 this.baseCoordPoint = p22.uint16; 38268 } 38269 if (this.baseCoordFormat === 3) { 38270 this.deviceTable = p22.Offset16; 38271 } 38272 } 38273 }; 38274 var BASE$1 = Object.freeze({ __proto__: null, BASE }); 38275 var ClassDefinition = class { 38276 constructor(p22) { 38277 this.classFormat = p22.uint16; 38278 if (this.classFormat === 1) { 38279 this.startGlyphID = p22.uint16; 38280 this.glyphCount = p22.uint16; 38281 this.classValueArray = [...new Array(this.glyphCount)].map( 38282 (_) => p22.uint16 38283 ); 38284 } 38285 if (this.classFormat === 2) { 38286 this.classRangeCount = p22.uint16; 38287 this.classRangeRecords = [ 38288 ...new Array(this.classRangeCount) 38289 ].map((_) => new ClassRangeRecord(p22)); 38290 } 38291 } 38292 }; 38293 var ClassRangeRecord = class { 38294 constructor(p22) { 38295 this.startGlyphID = p22.uint16; 38296 this.endGlyphID = p22.uint16; 38297 this.class = p22.uint16; 38298 } 38299 }; 38300 var CoverageTable = class extends ParsedData { 38301 constructor(p22) { 38302 super(p22); 38303 this.coverageFormat = p22.uint16; 38304 if (this.coverageFormat === 1) { 38305 this.glyphCount = p22.uint16; 38306 this.glyphArray = [...new Array(this.glyphCount)].map( 38307 (_) => p22.uint16 38308 ); 38309 } 38310 if (this.coverageFormat === 2) { 38311 this.rangeCount = p22.uint16; 38312 this.rangeRecords = [...new Array(this.rangeCount)].map( 38313 (_) => new CoverageRangeRecord(p22) 38314 ); 38315 } 38316 } 38317 }; 38318 var CoverageRangeRecord = class { 38319 constructor(p22) { 38320 this.startGlyphID = p22.uint16; 38321 this.endGlyphID = p22.uint16; 38322 this.startCoverageIndex = p22.uint16; 38323 } 38324 }; 38325 var ItemVariationStoreTable = class { 38326 constructor(table, p22) { 38327 this.table = table; 38328 this.parser = p22; 38329 this.start = p22.currentPosition; 38330 this.format = p22.uint16; 38331 this.variationRegionListOffset = p22.Offset32; 38332 this.itemVariationDataCount = p22.uint16; 38333 this.itemVariationDataOffsets = [ 38334 ...new Array(this.itemVariationDataCount) 38335 ].map((_) => p22.Offset32); 38336 } 38337 }; 38338 var GDEF = class extends SimpleTable { 38339 constructor(dict, dataview) { 38340 const { p: p22 } = super(dict, dataview); 38341 this.majorVersion = p22.uint16; 38342 this.minorVersion = p22.uint16; 38343 this.glyphClassDefOffset = p22.Offset16; 38344 lazy$1(this, `glyphClassDefs`, () => { 38345 if (this.glyphClassDefOffset === 0) return void 0; 38346 p22.currentPosition = this.tableStart + this.glyphClassDefOffset; 38347 return new ClassDefinition(p22); 38348 }); 38349 this.attachListOffset = p22.Offset16; 38350 lazy$1(this, `attachList`, () => { 38351 if (this.attachListOffset === 0) return void 0; 38352 p22.currentPosition = this.tableStart + this.attachListOffset; 38353 return new AttachList(p22); 38354 }); 38355 this.ligCaretListOffset = p22.Offset16; 38356 lazy$1(this, `ligCaretList`, () => { 38357 if (this.ligCaretListOffset === 0) return void 0; 38358 p22.currentPosition = this.tableStart + this.ligCaretListOffset; 38359 return new LigCaretList(p22); 38360 }); 38361 this.markAttachClassDefOffset = p22.Offset16; 38362 lazy$1(this, `markAttachClassDef`, () => { 38363 if (this.markAttachClassDefOffset === 0) return void 0; 38364 p22.currentPosition = this.tableStart + this.markAttachClassDefOffset; 38365 return new ClassDefinition(p22); 38366 }); 38367 if (this.minorVersion >= 2) { 38368 this.markGlyphSetsDefOffset = p22.Offset16; 38369 lazy$1(this, `markGlyphSetsDef`, () => { 38370 if (this.markGlyphSetsDefOffset === 0) return void 0; 38371 p22.currentPosition = this.tableStart + this.markGlyphSetsDefOffset; 38372 return new MarkGlyphSetsTable(p22); 38373 }); 38374 } 38375 if (this.minorVersion === 3) { 38376 this.itemVarStoreOffset = p22.Offset32; 38377 lazy$1(this, `itemVarStore`, () => { 38378 if (this.itemVarStoreOffset === 0) return void 0; 38379 p22.currentPosition = this.tableStart + this.itemVarStoreOffset; 38380 return new ItemVariationStoreTable(p22); 38381 }); 38382 } 38383 } 38384 }; 38385 var AttachList = class extends ParsedData { 38386 constructor(p22) { 38387 super(p22); 38388 this.coverageOffset = p22.Offset16; 38389 this.glyphCount = p22.uint16; 38390 this.attachPointOffsets = [...new Array(this.glyphCount)].map( 38391 (_) => p22.Offset16 38392 ); 38393 } 38394 getPoint(pointID) { 38395 this.parser.currentPosition = this.start + this.attachPointOffsets[pointID]; 38396 return new AttachPoint(this.parser); 38397 } 38398 }; 38399 var AttachPoint = class { 38400 constructor(p22) { 38401 this.pointCount = p22.uint16; 38402 this.pointIndices = [...new Array(this.pointCount)].map( 38403 (_) => p22.uint16 38404 ); 38405 } 38406 }; 38407 var LigCaretList = class extends ParsedData { 38408 constructor(p22) { 38409 super(p22); 38410 this.coverageOffset = p22.Offset16; 38411 lazy$1(this, `coverage`, () => { 38412 p22.currentPosition = this.start + this.coverageOffset; 38413 return new CoverageTable(p22); 38414 }); 38415 this.ligGlyphCount = p22.uint16; 38416 this.ligGlyphOffsets = [...new Array(this.ligGlyphCount)].map( 38417 (_) => p22.Offset16 38418 ); 38419 } 38420 getLigGlyph(ligGlyphID) { 38421 this.parser.currentPosition = this.start + this.ligGlyphOffsets[ligGlyphID]; 38422 return new LigGlyph(this.parser); 38423 } 38424 }; 38425 var LigGlyph = class extends ParsedData { 38426 constructor(p22) { 38427 super(p22); 38428 this.caretCount = p22.uint16; 38429 this.caretValueOffsets = [...new Array(this.caretCount)].map( 38430 (_) => p22.Offset16 38431 ); 38432 } 38433 getCaretValue(caretID) { 38434 this.parser.currentPosition = this.start + this.caretValueOffsets[caretID]; 38435 return new CaretValue(this.parser); 38436 } 38437 }; 38438 var CaretValue = class { 38439 constructor(p22) { 38440 this.caretValueFormat = p22.uint16; 38441 if (this.caretValueFormat === 1) { 38442 this.coordinate = p22.int16; 38443 } 38444 if (this.caretValueFormat === 2) { 38445 this.caretValuePointIndex = p22.uint16; 38446 } 38447 if (this.caretValueFormat === 3) { 38448 this.coordinate = p22.int16; 38449 this.deviceOffset = p22.Offset16; 38450 } 38451 } 38452 }; 38453 var MarkGlyphSetsTable = class extends ParsedData { 38454 constructor(p22) { 38455 super(p22); 38456 this.markGlyphSetTableFormat = p22.uint16; 38457 this.markGlyphSetCount = p22.uint16; 38458 this.coverageOffsets = [...new Array(this.markGlyphSetCount)].map( 38459 (_) => p22.Offset32 38460 ); 38461 } 38462 getMarkGlyphSet(markGlyphSetID) { 38463 this.parser.currentPosition = this.start + this.coverageOffsets[markGlyphSetID]; 38464 return new CoverageTable(this.parser); 38465 } 38466 }; 38467 var GDEF$1 = Object.freeze({ __proto__: null, GDEF }); 38468 var ScriptList = class extends ParsedData { 38469 static EMPTY = { scriptCount: 0, scriptRecords: [] }; 38470 constructor(p22) { 38471 super(p22); 38472 this.scriptCount = p22.uint16; 38473 this.scriptRecords = [...new Array(this.scriptCount)].map( 38474 (_) => new ScriptRecord(p22) 38475 ); 38476 } 38477 }; 38478 var ScriptRecord = class { 38479 constructor(p22) { 38480 this.scriptTag = p22.tag; 38481 this.scriptOffset = p22.Offset16; 38482 } 38483 }; 38484 var ScriptTable = class extends ParsedData { 38485 constructor(p22) { 38486 super(p22); 38487 this.defaultLangSys = p22.Offset16; 38488 this.langSysCount = p22.uint16; 38489 this.langSysRecords = [...new Array(this.langSysCount)].map( 38490 (_) => new LangSysRecord(p22) 38491 ); 38492 } 38493 }; 38494 var LangSysRecord = class { 38495 constructor(p22) { 38496 this.langSysTag = p22.tag; 38497 this.langSysOffset = p22.Offset16; 38498 } 38499 }; 38500 var LangSysTable = class { 38501 constructor(p22) { 38502 this.lookupOrder = p22.Offset16; 38503 this.requiredFeatureIndex = p22.uint16; 38504 this.featureIndexCount = p22.uint16; 38505 this.featureIndices = [...new Array(this.featureIndexCount)].map( 38506 (_) => p22.uint16 38507 ); 38508 } 38509 }; 38510 var FeatureList = class extends ParsedData { 38511 static EMPTY = { featureCount: 0, featureRecords: [] }; 38512 constructor(p22) { 38513 super(p22); 38514 this.featureCount = p22.uint16; 38515 this.featureRecords = [...new Array(this.featureCount)].map( 38516 (_) => new FeatureRecord(p22) 38517 ); 38518 } 38519 }; 38520 var FeatureRecord = class { 38521 constructor(p22) { 38522 this.featureTag = p22.tag; 38523 this.featureOffset = p22.Offset16; 38524 } 38525 }; 38526 var FeatureTable = class extends ParsedData { 38527 constructor(p22) { 38528 super(p22); 38529 this.featureParams = p22.Offset16; 38530 this.lookupIndexCount = p22.uint16; 38531 this.lookupListIndices = [...new Array(this.lookupIndexCount)].map( 38532 (_) => p22.uint16 38533 ); 38534 } 38535 getFeatureParams() { 38536 if (this.featureParams > 0) { 38537 const p22 = this.parser; 38538 p22.currentPosition = this.start + this.featureParams; 38539 const tag = this.featureTag; 38540 if (tag === `size`) return new Size(p22); 38541 if (tag.startsWith(`cc`)) return new CharacterVariant(p22); 38542 if (tag.startsWith(`ss`)) return new StylisticSet(p22); 38543 } 38544 } 38545 }; 38546 var CharacterVariant = class { 38547 constructor(p22) { 38548 this.format = p22.uint16; 38549 this.featUiLabelNameId = p22.uint16; 38550 this.featUiTooltipTextNameId = p22.uint16; 38551 this.sampleTextNameId = p22.uint16; 38552 this.numNamedParameters = p22.uint16; 38553 this.firstParamUiLabelNameId = p22.uint16; 38554 this.charCount = p22.uint16; 38555 this.character = [...new Array(this.charCount)].map( 38556 (_) => p22.uint24 38557 ); 38558 } 38559 }; 38560 var Size = class { 38561 constructor(p22) { 38562 this.designSize = p22.uint16; 38563 this.subfamilyIdentifier = p22.uint16; 38564 this.subfamilyNameID = p22.uint16; 38565 this.smallEnd = p22.uint16; 38566 this.largeEnd = p22.uint16; 38567 } 38568 }; 38569 var StylisticSet = class { 38570 constructor(p22) { 38571 this.version = p22.uint16; 38572 this.UINameID = p22.uint16; 38573 } 38574 }; 38575 function undoCoverageOffsetParsing(instance) { 38576 instance.parser.currentPosition -= 2; 38577 delete instance.coverageOffset; 38578 delete instance.getCoverageTable; 38579 } 38580 var LookupType$1 = class extends ParsedData { 38581 constructor(p22) { 38582 super(p22); 38583 this.substFormat = p22.uint16; 38584 this.coverageOffset = p22.Offset16; 38585 } 38586 getCoverageTable() { 38587 let p22 = this.parser; 38588 p22.currentPosition = this.start + this.coverageOffset; 38589 return new CoverageTable(p22); 38590 } 38591 }; 38592 var SubstLookupRecord = class { 38593 constructor(p22) { 38594 this.glyphSequenceIndex = p22.uint16; 38595 this.lookupListIndex = p22.uint16; 38596 } 38597 }; 38598 var LookupType1$1 = class extends LookupType$1 { 38599 constructor(p22) { 38600 super(p22); 38601 this.deltaGlyphID = p22.int16; 38602 } 38603 }; 38604 var LookupType2$1 = class extends LookupType$1 { 38605 constructor(p22) { 38606 super(p22); 38607 this.sequenceCount = p22.uint16; 38608 this.sequenceOffsets = [...new Array(this.sequenceCount)].map( 38609 (_) => p22.Offset16 38610 ); 38611 } 38612 getSequence(index2) { 38613 let p22 = this.parser; 38614 p22.currentPosition = this.start + this.sequenceOffsets[index2]; 38615 return new SequenceTable(p22); 38616 } 38617 }; 38618 var SequenceTable = class { 38619 constructor(p22) { 38620 this.glyphCount = p22.uint16; 38621 this.substituteGlyphIDs = [...new Array(this.glyphCount)].map( 38622 (_) => p22.uint16 38623 ); 38624 } 38625 }; 38626 var LookupType3$1 = class extends LookupType$1 { 38627 constructor(p22) { 38628 super(p22); 38629 this.alternateSetCount = p22.uint16; 38630 this.alternateSetOffsets = [ 38631 ...new Array(this.alternateSetCount) 38632 ].map((_) => p22.Offset16); 38633 } 38634 getAlternateSet(index2) { 38635 let p22 = this.parser; 38636 p22.currentPosition = this.start + this.alternateSetOffsets[index2]; 38637 return new AlternateSetTable(p22); 38638 } 38639 }; 38640 var AlternateSetTable = class { 38641 constructor(p22) { 38642 this.glyphCount = p22.uint16; 38643 this.alternateGlyphIDs = [...new Array(this.glyphCount)].map( 38644 (_) => p22.uint16 38645 ); 38646 } 38647 }; 38648 var LookupType4$1 = class extends LookupType$1 { 38649 constructor(p22) { 38650 super(p22); 38651 this.ligatureSetCount = p22.uint16; 38652 this.ligatureSetOffsets = [...new Array(this.ligatureSetCount)].map( 38653 (_) => p22.Offset16 38654 ); 38655 } 38656 getLigatureSet(index2) { 38657 let p22 = this.parser; 38658 p22.currentPosition = this.start + this.ligatureSetOffsets[index2]; 38659 return new LigatureSetTable(p22); 38660 } 38661 }; 38662 var LigatureSetTable = class extends ParsedData { 38663 constructor(p22) { 38664 super(p22); 38665 this.ligatureCount = p22.uint16; 38666 this.ligatureOffsets = [...new Array(this.ligatureCount)].map( 38667 (_) => p22.Offset16 38668 ); 38669 } 38670 getLigature(index2) { 38671 let p22 = this.parser; 38672 p22.currentPosition = this.start + this.ligatureOffsets[index2]; 38673 return new LigatureTable(p22); 38674 } 38675 }; 38676 var LigatureTable = class { 38677 constructor(p22) { 38678 this.ligatureGlyph = p22.uint16; 38679 this.componentCount = p22.uint16; 38680 this.componentGlyphIDs = [ 38681 ...new Array(this.componentCount - 1) 38682 ].map((_) => p22.uint16); 38683 } 38684 }; 38685 var LookupType5$1 = class extends LookupType$1 { 38686 constructor(p22) { 38687 super(p22); 38688 if (this.substFormat === 1) { 38689 this.subRuleSetCount = p22.uint16; 38690 this.subRuleSetOffsets = [ 38691 ...new Array(this.subRuleSetCount) 38692 ].map((_) => p22.Offset16); 38693 } 38694 if (this.substFormat === 2) { 38695 this.classDefOffset = p22.Offset16; 38696 this.subClassSetCount = p22.uint16; 38697 this.subClassSetOffsets = [ 38698 ...new Array(this.subClassSetCount) 38699 ].map((_) => p22.Offset16); 38700 } 38701 if (this.substFormat === 3) { 38702 undoCoverageOffsetParsing(this); 38703 this.glyphCount = p22.uint16; 38704 this.substitutionCount = p22.uint16; 38705 this.coverageOffsets = [...new Array(this.glyphCount)].map( 38706 (_) => p22.Offset16 38707 ); 38708 this.substLookupRecords = [ 38709 ...new Array(this.substitutionCount) 38710 ].map((_) => new SubstLookupRecord(p22)); 38711 } 38712 } 38713 getSubRuleSet(index2) { 38714 if (this.substFormat !== 1) 38715 throw new Error( 38716 `lookup type 5.$this.substFormat} has no subrule sets.` 38717 ); 38718 let p22 = this.parser; 38719 p22.currentPosition = this.start + this.subRuleSetOffsets[index2]; 38720 return new SubRuleSetTable(p22); 38721 } 38722 getSubClassSet(index2) { 38723 if (this.substFormat !== 2) 38724 throw new Error( 38725 `lookup type 5.$this.substFormat} has no subclass sets.` 38726 ); 38727 let p22 = this.parser; 38728 p22.currentPosition = this.start + this.subClassSetOffsets[index2]; 38729 return new SubClassSetTable(p22); 38730 } 38731 getCoverageTable(index2) { 38732 if (this.substFormat !== 3 && !index2) 38733 return super.getCoverageTable(); 38734 if (!index2) 38735 throw new Error( 38736 `lookup type 5.$this.substFormat} requires an coverage table index.` 38737 ); 38738 let p22 = this.parser; 38739 p22.currentPosition = this.start + this.coverageOffsets[index2]; 38740 return new CoverageTable(p22); 38741 } 38742 }; 38743 var SubRuleSetTable = class extends ParsedData { 38744 constructor(p22) { 38745 super(p22); 38746 this.subRuleCount = p22.uint16; 38747 this.subRuleOffsets = [...new Array(this.subRuleCount)].map( 38748 (_) => p22.Offset16 38749 ); 38750 } 38751 getSubRule(index2) { 38752 let p22 = this.parser; 38753 p22.currentPosition = this.start + this.subRuleOffsets[index2]; 38754 return new SubRuleTable(p22); 38755 } 38756 }; 38757 var SubRuleTable = class { 38758 constructor(p22) { 38759 this.glyphCount = p22.uint16; 38760 this.substitutionCount = p22.uint16; 38761 this.inputSequence = [...new Array(this.glyphCount - 1)].map( 38762 (_) => p22.uint16 38763 ); 38764 this.substLookupRecords = [ 38765 ...new Array(this.substitutionCount) 38766 ].map((_) => new SubstLookupRecord(p22)); 38767 } 38768 }; 38769 var SubClassSetTable = class extends ParsedData { 38770 constructor(p22) { 38771 super(p22); 38772 this.subClassRuleCount = p22.uint16; 38773 this.subClassRuleOffsets = [ 38774 ...new Array(this.subClassRuleCount) 38775 ].map((_) => p22.Offset16); 38776 } 38777 getSubClass(index2) { 38778 let p22 = this.parser; 38779 p22.currentPosition = this.start + this.subClassRuleOffsets[index2]; 38780 return new SubClassRuleTable(p22); 38781 } 38782 }; 38783 var SubClassRuleTable = class extends SubRuleTable { 38784 constructor(p22) { 38785 super(p22); 38786 } 38787 }; 38788 var LookupType6$1 = class extends LookupType$1 { 38789 constructor(p22) { 38790 super(p22); 38791 if (this.substFormat === 1) { 38792 this.chainSubRuleSetCount = p22.uint16; 38793 this.chainSubRuleSetOffsets = [ 38794 ...new Array(this.chainSubRuleSetCount) 38795 ].map((_) => p22.Offset16); 38796 } 38797 if (this.substFormat === 2) { 38798 this.backtrackClassDefOffset = p22.Offset16; 38799 this.inputClassDefOffset = p22.Offset16; 38800 this.lookaheadClassDefOffset = p22.Offset16; 38801 this.chainSubClassSetCount = p22.uint16; 38802 this.chainSubClassSetOffsets = [ 38803 ...new Array(this.chainSubClassSetCount) 38804 ].map((_) => p22.Offset16); 38805 } 38806 if (this.substFormat === 3) { 38807 undoCoverageOffsetParsing(this); 38808 this.backtrackGlyphCount = p22.uint16; 38809 this.backtrackCoverageOffsets = [ 38810 ...new Array(this.backtrackGlyphCount) 38811 ].map((_) => p22.Offset16); 38812 this.inputGlyphCount = p22.uint16; 38813 this.inputCoverageOffsets = [ 38814 ...new Array(this.inputGlyphCount) 38815 ].map((_) => p22.Offset16); 38816 this.lookaheadGlyphCount = p22.uint16; 38817 this.lookaheadCoverageOffsets = [ 38818 ...new Array(this.lookaheadGlyphCount) 38819 ].map((_) => p22.Offset16); 38820 this.seqLookupCount = p22.uint16; 38821 this.seqLookupRecords = [ 38822 ...new Array(this.substitutionCount) 38823 ].map((_) => new SequenceLookupRecord(p22)); 38824 } 38825 } 38826 getChainSubRuleSet(index2) { 38827 if (this.substFormat !== 1) 38828 throw new Error( 38829 `lookup type 6.$this.substFormat} has no chainsubrule sets.` 38830 ); 38831 let p22 = this.parser; 38832 p22.currentPosition = this.start + this.chainSubRuleSetOffsets[index2]; 38833 return new ChainSubRuleSetTable(p22); 38834 } 38835 getChainSubClassSet(index2) { 38836 if (this.substFormat !== 2) 38837 throw new Error( 38838 `lookup type 6.$this.substFormat} has no chainsubclass sets.` 38839 ); 38840 let p22 = this.parser; 38841 p22.currentPosition = this.start + this.chainSubClassSetOffsets[index2]; 38842 return new ChainSubClassSetTable(p22); 38843 } 38844 getCoverageFromOffset(offset4) { 38845 if (this.substFormat !== 3) 38846 throw new Error( 38847 `lookup type 6.$this.substFormat} does not use contextual coverage offsets.` 38848 ); 38849 let p22 = this.parser; 38850 p22.currentPosition = this.start + offset4; 38851 return new CoverageTable(p22); 38852 } 38853 }; 38854 var ChainSubRuleSetTable = class extends ParsedData { 38855 constructor(p22) { 38856 super(p22); 38857 this.chainSubRuleCount = p22.uint16; 38858 this.chainSubRuleOffsets = [ 38859 ...new Array(this.chainSubRuleCount) 38860 ].map((_) => p22.Offset16); 38861 } 38862 getSubRule(index2) { 38863 let p22 = this.parser; 38864 p22.currentPosition = this.start + this.chainSubRuleOffsets[index2]; 38865 return new ChainSubRuleTable(p22); 38866 } 38867 }; 38868 var ChainSubRuleTable = class { 38869 constructor(p22) { 38870 this.backtrackGlyphCount = p22.uint16; 38871 this.backtrackSequence = [ 38872 ...new Array(this.backtrackGlyphCount) 38873 ].map((_) => p22.uint16); 38874 this.inputGlyphCount = p22.uint16; 38875 this.inputSequence = [...new Array(this.inputGlyphCount - 1)].map( 38876 (_) => p22.uint16 38877 ); 38878 this.lookaheadGlyphCount = p22.uint16; 38879 this.lookAheadSequence = [ 38880 ...new Array(this.lookAheadGlyphCount) 38881 ].map((_) => p22.uint16); 38882 this.substitutionCount = p22.uint16; 38883 this.substLookupRecords = [...new Array(this.SubstCount)].map( 38884 (_) => new SubstLookupRecord(p22) 38885 ); 38886 } 38887 }; 38888 var ChainSubClassSetTable = class extends ParsedData { 38889 constructor(p22) { 38890 super(p22); 38891 this.chainSubClassRuleCount = p22.uint16; 38892 this.chainSubClassRuleOffsets = [ 38893 ...new Array(this.chainSubClassRuleCount) 38894 ].map((_) => p22.Offset16); 38895 } 38896 getSubClass(index2) { 38897 let p22 = this.parser; 38898 p22.currentPosition = this.start + this.chainSubRuleOffsets[index2]; 38899 return new ChainSubClassRuleTable(p22); 38900 } 38901 }; 38902 var ChainSubClassRuleTable = class { 38903 constructor(p22) { 38904 this.backtrackGlyphCount = p22.uint16; 38905 this.backtrackSequence = [ 38906 ...new Array(this.backtrackGlyphCount) 38907 ].map((_) => p22.uint16); 38908 this.inputGlyphCount = p22.uint16; 38909 this.inputSequence = [...new Array(this.inputGlyphCount - 1)].map( 38910 (_) => p22.uint16 38911 ); 38912 this.lookaheadGlyphCount = p22.uint16; 38913 this.lookAheadSequence = [ 38914 ...new Array(this.lookAheadGlyphCount) 38915 ].map((_) => p22.uint16); 38916 this.substitutionCount = p22.uint16; 38917 this.substLookupRecords = [ 38918 ...new Array(this.substitutionCount) 38919 ].map((_) => new SequenceLookupRecord(p22)); 38920 } 38921 }; 38922 var SequenceLookupRecord = class extends ParsedData { 38923 constructor(p22) { 38924 super(p22); 38925 this.sequenceIndex = p22.uint16; 38926 this.lookupListIndex = p22.uint16; 38927 } 38928 }; 38929 var LookupType7$1 = class extends ParsedData { 38930 constructor(p22) { 38931 super(p22); 38932 this.substFormat = p22.uint16; 38933 this.extensionLookupType = p22.uint16; 38934 this.extensionOffset = p22.Offset32; 38935 } 38936 }; 38937 var LookupType8$1 = class extends LookupType$1 { 38938 constructor(p22) { 38939 super(p22); 38940 this.backtrackGlyphCount = p22.uint16; 38941 this.backtrackCoverageOffsets = [ 38942 ...new Array(this.backtrackGlyphCount) 38943 ].map((_) => p22.Offset16); 38944 this.lookaheadGlyphCount = p22.uint16; 38945 this.lookaheadCoverageOffsets = [ 38946 new Array(this.lookaheadGlyphCount) 38947 ].map((_) => p22.Offset16); 38948 this.glyphCount = p22.uint16; 38949 this.substituteGlyphIDs = [...new Array(this.glyphCount)].map( 38950 (_) => p22.uint16 38951 ); 38952 } 38953 }; 38954 var GSUBtables = { 38955 buildSubtable: function(type, p22) { 38956 const subtable = new [ 38957 void 0, 38958 LookupType1$1, 38959 LookupType2$1, 38960 LookupType3$1, 38961 LookupType4$1, 38962 LookupType5$1, 38963 LookupType6$1, 38964 LookupType7$1, 38965 LookupType8$1 38966 ][type](p22); 38967 subtable.type = type; 38968 return subtable; 38969 } 38970 }; 38971 var LookupType = class extends ParsedData { 38972 constructor(p22) { 38973 super(p22); 38974 } 38975 }; 38976 var LookupType1 = class extends LookupType { 38977 constructor(p22) { 38978 super(p22); 38979 console.log(`lookup type 1`); 38980 } 38981 }; 38982 var LookupType2 = class extends LookupType { 38983 constructor(p22) { 38984 super(p22); 38985 console.log(`lookup type 2`); 38986 } 38987 }; 38988 var LookupType3 = class extends LookupType { 38989 constructor(p22) { 38990 super(p22); 38991 console.log(`lookup type 3`); 38992 } 38993 }; 38994 var LookupType4 = class extends LookupType { 38995 constructor(p22) { 38996 super(p22); 38997 console.log(`lookup type 4`); 38998 } 38999 }; 39000 var LookupType5 = class extends LookupType { 39001 constructor(p22) { 39002 super(p22); 39003 console.log(`lookup type 5`); 39004 } 39005 }; 39006 var LookupType6 = class extends LookupType { 39007 constructor(p22) { 39008 super(p22); 39009 console.log(`lookup type 6`); 39010 } 39011 }; 39012 var LookupType7 = class extends LookupType { 39013 constructor(p22) { 39014 super(p22); 39015 console.log(`lookup type 7`); 39016 } 39017 }; 39018 var LookupType8 = class extends LookupType { 39019 constructor(p22) { 39020 super(p22); 39021 console.log(`lookup type 8`); 39022 } 39023 }; 39024 var LookupType9 = class extends LookupType { 39025 constructor(p22) { 39026 super(p22); 39027 console.log(`lookup type 9`); 39028 } 39029 }; 39030 var GPOStables = { 39031 buildSubtable: function(type, p22) { 39032 const subtable = new [ 39033 void 0, 39034 LookupType1, 39035 LookupType2, 39036 LookupType3, 39037 LookupType4, 39038 LookupType5, 39039 LookupType6, 39040 LookupType7, 39041 LookupType8, 39042 LookupType9 39043 ][type](p22); 39044 subtable.type = type; 39045 return subtable; 39046 } 39047 }; 39048 var LookupList = class extends ParsedData { 39049 static EMPTY = { lookupCount: 0, lookups: [] }; 39050 constructor(p22) { 39051 super(p22); 39052 this.lookupCount = p22.uint16; 39053 this.lookups = [...new Array(this.lookupCount)].map( 39054 (_) => p22.Offset16 39055 ); 39056 } 39057 }; 39058 var LookupTable = class extends ParsedData { 39059 constructor(p22, type) { 39060 super(p22); 39061 this.ctType = type; 39062 this.lookupType = p22.uint16; 39063 this.lookupFlag = p22.uint16; 39064 this.subTableCount = p22.uint16; 39065 this.subtableOffsets = [...new Array(this.subTableCount)].map( 39066 (_) => p22.Offset16 39067 ); 39068 this.markFilteringSet = p22.uint16; 39069 } 39070 get rightToLeft() { 39071 return this.lookupFlag & true; 39072 } 39073 get ignoreBaseGlyphs() { 39074 return this.lookupFlag & true; 39075 } 39076 get ignoreLigatures() { 39077 return this.lookupFlag & true; 39078 } 39079 get ignoreMarks() { 39080 return this.lookupFlag & true; 39081 } 39082 get useMarkFilteringSet() { 39083 return this.lookupFlag & true; 39084 } 39085 get markAttachmentType() { 39086 return this.lookupFlag & true; 39087 } 39088 getSubTable(index2) { 39089 const builder = this.ctType === `GSUB` ? GSUBtables : GPOStables; 39090 this.parser.currentPosition = this.start + this.subtableOffsets[index2]; 39091 return builder.buildSubtable(this.lookupType, this.parser); 39092 } 39093 }; 39094 var CommonLayoutTable = class extends SimpleTable { 39095 constructor(dict, dataview, name2) { 39096 const { p: p22, tableStart } = super(dict, dataview, name2); 39097 this.majorVersion = p22.uint16; 39098 this.minorVersion = p22.uint16; 39099 this.scriptListOffset = p22.Offset16; 39100 this.featureListOffset = p22.Offset16; 39101 this.lookupListOffset = p22.Offset16; 39102 if (this.majorVersion === 1 && this.minorVersion === 1) { 39103 this.featureVariationsOffset = p22.Offset32; 39104 } 39105 const no_content = !(this.scriptListOffset || this.featureListOffset || this.lookupListOffset); 39106 lazy$1(this, `scriptList`, () => { 39107 if (no_content) return ScriptList.EMPTY; 39108 p22.currentPosition = tableStart + this.scriptListOffset; 39109 return new ScriptList(p22); 39110 }); 39111 lazy$1(this, `featureList`, () => { 39112 if (no_content) return FeatureList.EMPTY; 39113 p22.currentPosition = tableStart + this.featureListOffset; 39114 return new FeatureList(p22); 39115 }); 39116 lazy$1(this, `lookupList`, () => { 39117 if (no_content) return LookupList.EMPTY; 39118 p22.currentPosition = tableStart + this.lookupListOffset; 39119 return new LookupList(p22); 39120 }); 39121 if (this.featureVariationsOffset) { 39122 lazy$1(this, `featureVariations`, () => { 39123 if (no_content) return FeatureVariations.EMPTY; 39124 p22.currentPosition = tableStart + this.featureVariationsOffset; 39125 return new FeatureVariations(p22); 39126 }); 39127 } 39128 } 39129 getSupportedScripts() { 39130 return this.scriptList.scriptRecords.map((r2) => r2.scriptTag); 39131 } 39132 getScriptTable(scriptTag) { 39133 let record = this.scriptList.scriptRecords.find( 39134 (r2) => r2.scriptTag === scriptTag 39135 ); 39136 this.parser.currentPosition = this.scriptList.start + record.scriptOffset; 39137 let table = new ScriptTable(this.parser); 39138 table.scriptTag = scriptTag; 39139 return table; 39140 } 39141 ensureScriptTable(arg) { 39142 if (typeof arg === "string") { 39143 return this.getScriptTable(arg); 39144 } 39145 return arg; 39146 } 39147 getSupportedLangSys(scriptTable) { 39148 scriptTable = this.ensureScriptTable(scriptTable); 39149 const hasDefault = scriptTable.defaultLangSys !== 0; 39150 const supported = scriptTable.langSysRecords.map( 39151 (l2) => l2.langSysTag 39152 ); 39153 if (hasDefault) supported.unshift(`dflt`); 39154 return supported; 39155 } 39156 getDefaultLangSysTable(scriptTable) { 39157 scriptTable = this.ensureScriptTable(scriptTable); 39158 let offset4 = scriptTable.defaultLangSys; 39159 if (offset4 !== 0) { 39160 this.parser.currentPosition = scriptTable.start + offset4; 39161 let table = new LangSysTable(this.parser); 39162 table.langSysTag = ``; 39163 table.defaultForScript = scriptTable.scriptTag; 39164 return table; 39165 } 39166 } 39167 getLangSysTable(scriptTable, langSysTag = `dflt`) { 39168 if (langSysTag === `dflt`) 39169 return this.getDefaultLangSysTable(scriptTable); 39170 scriptTable = this.ensureScriptTable(scriptTable); 39171 let record = scriptTable.langSysRecords.find( 39172 (l2) => l2.langSysTag === langSysTag 39173 ); 39174 this.parser.currentPosition = scriptTable.start + record.langSysOffset; 39175 let table = new LangSysTable(this.parser); 39176 table.langSysTag = langSysTag; 39177 return table; 39178 } 39179 getFeatures(langSysTable) { 39180 return langSysTable.featureIndices.map( 39181 (index2) => this.getFeature(index2) 39182 ); 39183 } 39184 getFeature(indexOrTag) { 39185 let record; 39186 if (parseInt(indexOrTag) == indexOrTag) { 39187 record = this.featureList.featureRecords[indexOrTag]; 39188 } else { 39189 record = this.featureList.featureRecords.find( 39190 (f) => f.featureTag === indexOrTag 39191 ); 39192 } 39193 if (!record) return; 39194 this.parser.currentPosition = this.featureList.start + record.featureOffset; 39195 let table = new FeatureTable(this.parser); 39196 table.featureTag = record.featureTag; 39197 return table; 39198 } 39199 getLookups(featureTable) { 39200 return featureTable.lookupListIndices.map( 39201 (index2) => this.getLookup(index2) 39202 ); 39203 } 39204 getLookup(lookupIndex, type) { 39205 let lookupOffset = this.lookupList.lookups[lookupIndex]; 39206 this.parser.currentPosition = this.lookupList.start + lookupOffset; 39207 return new LookupTable(this.parser, type); 39208 } 39209 }; 39210 var GSUB = class extends CommonLayoutTable { 39211 constructor(dict, dataview) { 39212 super(dict, dataview, `GSUB`); 39213 } 39214 getLookup(lookupIndex) { 39215 return super.getLookup(lookupIndex, `GSUB`); 39216 } 39217 }; 39218 var GSUB$1 = Object.freeze({ __proto__: null, GSUB }); 39219 var GPOS = class extends CommonLayoutTable { 39220 constructor(dict, dataview) { 39221 super(dict, dataview, `GPOS`); 39222 } 39223 getLookup(lookupIndex) { 39224 return super.getLookup(lookupIndex, `GPOS`); 39225 } 39226 }; 39227 var GPOS$1 = Object.freeze({ __proto__: null, GPOS }); 39228 var SVG23 = class extends SimpleTable { 39229 constructor(dict, dataview) { 39230 const { p: p22 } = super(dict, dataview); 39231 this.version = p22.uint16; 39232 this.offsetToSVGDocumentList = p22.Offset32; 39233 p22.currentPosition = this.tableStart + this.offsetToSVGDocumentList; 39234 this.documentList = new SVGDocumentList(p22); 39235 } 39236 }; 39237 var SVGDocumentList = class extends ParsedData { 39238 constructor(p22) { 39239 super(p22); 39240 this.numEntries = p22.uint16; 39241 this.documentRecords = [...new Array(this.numEntries)].map( 39242 (_) => new SVGDocumentRecord(p22) 39243 ); 39244 } 39245 getDocument(documentID) { 39246 let record = this.documentRecords[documentID]; 39247 if (!record) return ""; 39248 let offset4 = this.start + record.svgDocOffset; 39249 this.parser.currentPosition = offset4; 39250 return this.parser.readBytes(record.svgDocLength); 39251 } 39252 getDocumentForGlyph(glyphID) { 39253 let id = this.documentRecords.findIndex( 39254 (d) => d.startGlyphID <= glyphID && glyphID <= d.endGlyphID 39255 ); 39256 if (id === -1) return ""; 39257 return this.getDocument(id); 39258 } 39259 }; 39260 var SVGDocumentRecord = class { 39261 constructor(p22) { 39262 this.startGlyphID = p22.uint16; 39263 this.endGlyphID = p22.uint16; 39264 this.svgDocOffset = p22.Offset32; 39265 this.svgDocLength = p22.uint32; 39266 } 39267 }; 39268 var SVG$1 = Object.freeze({ __proto__: null, SVG: SVG23 }); 39269 var fvar = class extends SimpleTable { 39270 constructor(dict, dataview) { 39271 const { p: p22 } = super(dict, dataview); 39272 this.majorVersion = p22.uint16; 39273 this.minorVersion = p22.uint16; 39274 this.axesArrayOffset = p22.Offset16; 39275 p22.uint16; 39276 this.axisCount = p22.uint16; 39277 this.axisSize = p22.uint16; 39278 this.instanceCount = p22.uint16; 39279 this.instanceSize = p22.uint16; 39280 const axisStart = this.tableStart + this.axesArrayOffset; 39281 lazy$1(this, `axes`, () => { 39282 p22.currentPosition = axisStart; 39283 return [...new Array(this.axisCount)].map( 39284 (_) => new VariationAxisRecord(p22) 39285 ); 39286 }); 39287 const instanceStart = axisStart + this.axisCount * this.axisSize; 39288 lazy$1(this, `instances`, () => { 39289 let instances = []; 39290 for (let i = 0; i < this.instanceCount; i++) { 39291 p22.currentPosition = instanceStart + i * this.instanceSize; 39292 instances.push( 39293 new InstanceRecord(p22, this.axisCount, this.instanceSize) 39294 ); 39295 } 39296 return instances; 39297 }); 39298 } 39299 getSupportedAxes() { 39300 return this.axes.map((a) => a.tag); 39301 } 39302 getAxis(name2) { 39303 return this.axes.find((a) => a.tag === name2); 39304 } 39305 }; 39306 var VariationAxisRecord = class { 39307 constructor(p22) { 39308 this.tag = p22.tag; 39309 this.minValue = p22.fixed; 39310 this.defaultValue = p22.fixed; 39311 this.maxValue = p22.fixed; 39312 this.flags = p22.flags(16); 39313 this.axisNameID = p22.uint16; 39314 } 39315 }; 39316 var InstanceRecord = class { 39317 constructor(p22, axisCount, size4) { 39318 let start = p22.currentPosition; 39319 this.subfamilyNameID = p22.uint16; 39320 p22.uint16; 39321 this.coordinates = [...new Array(axisCount)].map( 39322 (_) => p22.fixed 39323 ); 39324 if (p22.currentPosition - start < size4) { 39325 this.postScriptNameID = p22.uint16; 39326 } 39327 } 39328 }; 39329 var fvar$1 = Object.freeze({ __proto__: null, fvar }); 39330 var cvt = class extends SimpleTable { 39331 constructor(dict, dataview) { 39332 const { p: p22 } = super(dict, dataview); 39333 const n = dict.length / 2; 39334 lazy$1( 39335 this, 39336 `items`, 39337 () => [...new Array(n)].map((_) => p22.fword) 39338 ); 39339 } 39340 }; 39341 var cvt$1 = Object.freeze({ __proto__: null, cvt }); 39342 var fpgm = class extends SimpleTable { 39343 constructor(dict, dataview) { 39344 const { p: p22 } = super(dict, dataview); 39345 lazy$1( 39346 this, 39347 `instructions`, 39348 () => [...new Array(dict.length)].map((_) => p22.uint8) 39349 ); 39350 } 39351 }; 39352 var fpgm$1 = Object.freeze({ __proto__: null, fpgm }); 39353 var gasp = class extends SimpleTable { 39354 constructor(dict, dataview) { 39355 const { p: p22 } = super(dict, dataview); 39356 this.version = p22.uint16; 39357 this.numRanges = p22.uint16; 39358 const getter = () => [...new Array(this.numRanges)].map( 39359 (_) => new GASPRange(p22) 39360 ); 39361 lazy$1(this, `gaspRanges`, getter); 39362 } 39363 }; 39364 var GASPRange = class { 39365 constructor(p22) { 39366 this.rangeMaxPPEM = p22.uint16; 39367 this.rangeGaspBehavior = p22.uint16; 39368 } 39369 }; 39370 var gasp$1 = Object.freeze({ __proto__: null, gasp }); 39371 var glyf = class extends SimpleTable { 39372 constructor(dict, dataview) { 39373 super(dict, dataview); 39374 } 39375 getGlyphData(offset4, length) { 39376 this.parser.currentPosition = this.tableStart + offset4; 39377 return this.parser.readBytes(length); 39378 } 39379 }; 39380 var glyf$1 = Object.freeze({ __proto__: null, glyf }); 39381 var loca = class extends SimpleTable { 39382 constructor(dict, dataview, tables) { 39383 const { p: p22 } = super(dict, dataview); 39384 const n = tables.maxp.numGlyphs + 1; 39385 if (tables.head.indexToLocFormat === 0) { 39386 this.x2 = true; 39387 lazy$1( 39388 this, 39389 `offsets`, 39390 () => [...new Array(n)].map((_) => p22.Offset16) 39391 ); 39392 } else { 39393 lazy$1( 39394 this, 39395 `offsets`, 39396 () => [...new Array(n)].map((_) => p22.Offset32) 39397 ); 39398 } 39399 } 39400 getGlyphDataOffsetAndLength(glyphID) { 39401 let offset4 = this.offsets[glyphID] * this.x2 ? 2 : 1; 39402 let nextOffset = this.offsets[glyphID + 1] * this.x2 ? 2 : 1; 39403 return { offset: offset4, length: nextOffset - offset4 }; 39404 } 39405 }; 39406 var loca$1 = Object.freeze({ __proto__: null, loca }); 39407 var prep = class extends SimpleTable { 39408 constructor(dict, dataview) { 39409 const { p: p22 } = super(dict, dataview); 39410 lazy$1( 39411 this, 39412 `instructions`, 39413 () => [...new Array(dict.length)].map((_) => p22.uint8) 39414 ); 39415 } 39416 }; 39417 var prep$1 = Object.freeze({ __proto__: null, prep }); 39418 var CFF = class extends SimpleTable { 39419 constructor(dict, dataview) { 39420 const { p: p22 } = super(dict, dataview); 39421 lazy$1(this, `data`, () => p22.readBytes()); 39422 } 39423 }; 39424 var CFF$1 = Object.freeze({ __proto__: null, CFF }); 39425 var CFF2 = class extends SimpleTable { 39426 constructor(dict, dataview) { 39427 const { p: p22 } = super(dict, dataview); 39428 lazy$1(this, `data`, () => p22.readBytes()); 39429 } 39430 }; 39431 var CFF2$1 = Object.freeze({ __proto__: null, CFF2 }); 39432 var VORG = class extends SimpleTable { 39433 constructor(dict, dataview) { 39434 const { p: p22 } = super(dict, dataview); 39435 this.majorVersion = p22.uint16; 39436 this.minorVersion = p22.uint16; 39437 this.defaultVertOriginY = p22.int16; 39438 this.numVertOriginYMetrics = p22.uint16; 39439 lazy$1( 39440 this, 39441 `vertORiginYMetrics`, 39442 () => [...new Array(this.numVertOriginYMetrics)].map( 39443 (_) => new VertOriginYMetric(p22) 39444 ) 39445 ); 39446 } 39447 }; 39448 var VertOriginYMetric = class { 39449 constructor(p22) { 39450 this.glyphIndex = p22.uint16; 39451 this.vertOriginY = p22.int16; 39452 } 39453 }; 39454 var VORG$1 = Object.freeze({ __proto__: null, VORG }); 39455 var BitmapSize = class { 39456 constructor(p22) { 39457 this.indexSubTableArrayOffset = p22.Offset32; 39458 this.indexTablesSize = p22.uint32; 39459 this.numberofIndexSubTables = p22.uint32; 39460 this.colorRef = p22.uint32; 39461 this.hori = new SbitLineMetrics(p22); 39462 this.vert = new SbitLineMetrics(p22); 39463 this.startGlyphIndex = p22.uint16; 39464 this.endGlyphIndex = p22.uint16; 39465 this.ppemX = p22.uint8; 39466 this.ppemY = p22.uint8; 39467 this.bitDepth = p22.uint8; 39468 this.flags = p22.int8; 39469 } 39470 }; 39471 var BitmapScale = class { 39472 constructor(p22) { 39473 this.hori = new SbitLineMetrics(p22); 39474 this.vert = new SbitLineMetrics(p22); 39475 this.ppemX = p22.uint8; 39476 this.ppemY = p22.uint8; 39477 this.substitutePpemX = p22.uint8; 39478 this.substitutePpemY = p22.uint8; 39479 } 39480 }; 39481 var SbitLineMetrics = class { 39482 constructor(p22) { 39483 this.ascender = p22.int8; 39484 this.descender = p22.int8; 39485 this.widthMax = p22.uint8; 39486 this.caretSlopeNumerator = p22.int8; 39487 this.caretSlopeDenominator = p22.int8; 39488 this.caretOffset = p22.int8; 39489 this.minOriginSB = p22.int8; 39490 this.minAdvanceSB = p22.int8; 39491 this.maxBeforeBL = p22.int8; 39492 this.minAfterBL = p22.int8; 39493 this.pad1 = p22.int8; 39494 this.pad2 = p22.int8; 39495 } 39496 }; 39497 var EBLC = class extends SimpleTable { 39498 constructor(dict, dataview, name2) { 39499 const { p: p22 } = super(dict, dataview, name2); 39500 this.majorVersion = p22.uint16; 39501 this.minorVersion = p22.uint16; 39502 this.numSizes = p22.uint32; 39503 lazy$1( 39504 this, 39505 `bitMapSizes`, 39506 () => [...new Array(this.numSizes)].map( 39507 (_) => new BitmapSize(p22) 39508 ) 39509 ); 39510 } 39511 }; 39512 var EBLC$1 = Object.freeze({ __proto__: null, EBLC }); 39513 var EBDT = class extends SimpleTable { 39514 constructor(dict, dataview, name2) { 39515 const { p: p22 } = super(dict, dataview, name2); 39516 this.majorVersion = p22.uint16; 39517 this.minorVersion = p22.uint16; 39518 } 39519 }; 39520 var EBDT$1 = Object.freeze({ __proto__: null, EBDT }); 39521 var EBSC = class extends SimpleTable { 39522 constructor(dict, dataview) { 39523 const { p: p22 } = super(dict, dataview); 39524 this.majorVersion = p22.uint16; 39525 this.minorVersion = p22.uint16; 39526 this.numSizes = p22.uint32; 39527 lazy$1( 39528 this, 39529 `bitmapScales`, 39530 () => [...new Array(this.numSizes)].map( 39531 (_) => new BitmapScale(p22) 39532 ) 39533 ); 39534 } 39535 }; 39536 var EBSC$1 = Object.freeze({ __proto__: null, EBSC }); 39537 var CBLC = class extends EBLC { 39538 constructor(dict, dataview) { 39539 super(dict, dataview, `CBLC`); 39540 } 39541 }; 39542 var CBLC$1 = Object.freeze({ __proto__: null, CBLC }); 39543 var CBDT = class extends EBDT { 39544 constructor(dict, dataview) { 39545 super(dict, dataview, `CBDT`); 39546 } 39547 }; 39548 var CBDT$1 = Object.freeze({ __proto__: null, CBDT }); 39549 var sbix = class extends SimpleTable { 39550 constructor(dict, dataview) { 39551 const { p: p22 } = super(dict, dataview); 39552 this.version = p22.uint16; 39553 this.flags = p22.flags(16); 39554 this.numStrikes = p22.uint32; 39555 lazy$1( 39556 this, 39557 `strikeOffsets`, 39558 () => [...new Array(this.numStrikes)].map((_) => p22.Offset32) 39559 ); 39560 } 39561 }; 39562 var sbix$1 = Object.freeze({ __proto__: null, sbix }); 39563 var COLR = class extends SimpleTable { 39564 constructor(dict, dataview) { 39565 const { p: p22 } = super(dict, dataview); 39566 this.version = p22.uint16; 39567 this.numBaseGlyphRecords = p22.uint16; 39568 this.baseGlyphRecordsOffset = p22.Offset32; 39569 this.layerRecordsOffset = p22.Offset32; 39570 this.numLayerRecords = p22.uint16; 39571 } 39572 getBaseGlyphRecord(glyphID) { 39573 let start = this.tableStart + this.baseGlyphRecordsOffset; 39574 this.parser.currentPosition = start; 39575 let first = new BaseGlyphRecord(this.parser); 39576 let firstID = first.gID; 39577 let end = this.tableStart + this.layerRecordsOffset - 6; 39578 this.parser.currentPosition = end; 39579 let last = new BaseGlyphRecord(this.parser); 39580 let lastID = last.gID; 39581 if (firstID === glyphID) return first; 39582 if (lastID === glyphID) return last; 39583 while (true) { 39584 if (start === end) break; 39585 let mid = start + (end - start) / 12; 39586 this.parser.currentPosition = mid; 39587 let middle = new BaseGlyphRecord(this.parser); 39588 let midID = middle.gID; 39589 if (midID === glyphID) return middle; 39590 else if (midID > glyphID) { 39591 end = mid; 39592 } else if (midID < glyphID) { 39593 start = mid; 39594 } 39595 } 39596 return false; 39597 } 39598 getLayers(glyphID) { 39599 let record = this.getBaseGlyphRecord(glyphID); 39600 this.parser.currentPosition = this.tableStart + this.layerRecordsOffset + 4 * record.firstLayerIndex; 39601 return [...new Array(record.numLayers)].map( 39602 (_) => new LayerRecord(p) 39603 ); 39604 } 39605 }; 39606 var BaseGlyphRecord = class { 39607 constructor(p22) { 39608 this.gID = p22.uint16; 39609 this.firstLayerIndex = p22.uint16; 39610 this.numLayers = p22.uint16; 39611 } 39612 }; 39613 var LayerRecord = class { 39614 constructor(p22) { 39615 this.gID = p22.uint16; 39616 this.paletteIndex = p22.uint16; 39617 } 39618 }; 39619 var COLR$1 = Object.freeze({ __proto__: null, COLR }); 39620 var CPAL = class extends SimpleTable { 39621 constructor(dict, dataview) { 39622 const { p: p22 } = super(dict, dataview); 39623 this.version = p22.uint16; 39624 this.numPaletteEntries = p22.uint16; 39625 const numPalettes = this.numPalettes = p22.uint16; 39626 this.numColorRecords = p22.uint16; 39627 this.offsetFirstColorRecord = p22.Offset32; 39628 this.colorRecordIndices = [...new Array(this.numPalettes)].map( 39629 (_) => p22.uint16 39630 ); 39631 lazy$1(this, `colorRecords`, () => { 39632 p22.currentPosition = this.tableStart + this.offsetFirstColorRecord; 39633 return [...new Array(this.numColorRecords)].map( 39634 (_) => new ColorRecord(p22) 39635 ); 39636 }); 39637 if (this.version === 1) { 39638 this.offsetPaletteTypeArray = p22.Offset32; 39639 this.offsetPaletteLabelArray = p22.Offset32; 39640 this.offsetPaletteEntryLabelArray = p22.Offset32; 39641 lazy$1(this, `paletteTypeArray`, () => { 39642 p22.currentPosition = this.tableStart + this.offsetPaletteTypeArray; 39643 return new PaletteTypeArray(p22, numPalettes); 39644 }); 39645 lazy$1(this, `paletteLabelArray`, () => { 39646 p22.currentPosition = this.tableStart + this.offsetPaletteLabelArray; 39647 return new PaletteLabelsArray(p22, numPalettes); 39648 }); 39649 lazy$1(this, `paletteEntryLabelArray`, () => { 39650 p22.currentPosition = this.tableStart + this.offsetPaletteEntryLabelArray; 39651 return new PaletteEntryLabelArray(p22, numPalettes); 39652 }); 39653 } 39654 } 39655 }; 39656 var ColorRecord = class { 39657 constructor(p22) { 39658 this.blue = p22.uint8; 39659 this.green = p22.uint8; 39660 this.red = p22.uint8; 39661 this.alpha = p22.uint8; 39662 } 39663 }; 39664 var PaletteTypeArray = class { 39665 constructor(p22, numPalettes) { 39666 this.paletteTypes = [...new Array(numPalettes)].map( 39667 (_) => p22.uint32 39668 ); 39669 } 39670 }; 39671 var PaletteLabelsArray = class { 39672 constructor(p22, numPalettes) { 39673 this.paletteLabels = [...new Array(numPalettes)].map( 39674 (_) => p22.uint16 39675 ); 39676 } 39677 }; 39678 var PaletteEntryLabelArray = class { 39679 constructor(p22, numPalettes) { 39680 this.paletteEntryLabels = [...new Array(numPalettes)].map( 39681 (_) => p22.uint16 39682 ); 39683 } 39684 }; 39685 var CPAL$1 = Object.freeze({ __proto__: null, CPAL }); 39686 var DSIG = class extends SimpleTable { 39687 constructor(dict, dataview) { 39688 const { p: p22 } = super(dict, dataview); 39689 this.version = p22.uint32; 39690 this.numSignatures = p22.uint16; 39691 this.flags = p22.uint16; 39692 this.signatureRecords = [...new Array(this.numSignatures)].map( 39693 (_) => new SignatureRecord(p22) 39694 ); 39695 } 39696 getData(signatureID) { 39697 const record = this.signatureRecords[signatureID]; 39698 this.parser.currentPosition = this.tableStart + record.offset; 39699 return new SignatureBlockFormat1(this.parser); 39700 } 39701 }; 39702 var SignatureRecord = class { 39703 constructor(p22) { 39704 this.format = p22.uint32; 39705 this.length = p22.uint32; 39706 this.offset = p22.Offset32; 39707 } 39708 }; 39709 var SignatureBlockFormat1 = class { 39710 constructor(p22) { 39711 p22.uint16; 39712 p22.uint16; 39713 this.signatureLength = p22.uint32; 39714 this.signature = p22.readBytes(this.signatureLength); 39715 } 39716 }; 39717 var DSIG$1 = Object.freeze({ __proto__: null, DSIG }); 39718 var hdmx = class extends SimpleTable { 39719 constructor(dict, dataview, tables) { 39720 const { p: p22 } = super(dict, dataview); 39721 const numGlyphs = tables.hmtx.numGlyphs; 39722 this.version = p22.uint16; 39723 this.numRecords = p22.int16; 39724 this.sizeDeviceRecord = p22.int32; 39725 this.records = [...new Array(numRecords)].map( 39726 (_) => new DeviceRecord(p22, numGlyphs) 39727 ); 39728 } 39729 }; 39730 var DeviceRecord = class { 39731 constructor(p22, numGlyphs) { 39732 this.pixelSize = p22.uint8; 39733 this.maxWidth = p22.uint8; 39734 this.widths = p22.readBytes(numGlyphs); 39735 } 39736 }; 39737 var hdmx$1 = Object.freeze({ __proto__: null, hdmx }); 39738 var kern = class extends SimpleTable { 39739 constructor(dict, dataview) { 39740 const { p: p22 } = super(dict, dataview); 39741 this.version = p22.uint16; 39742 this.nTables = p22.uint16; 39743 lazy$1(this, `tables`, () => { 39744 let offset4 = this.tableStart + 4; 39745 const tables = []; 39746 for (let i = 0; i < this.nTables; i++) { 39747 p22.currentPosition = offset4; 39748 let subtable = new KernSubTable(p22); 39749 tables.push(subtable); 39750 offset4 += subtable; 39751 } 39752 return tables; 39753 }); 39754 } 39755 }; 39756 var KernSubTable = class { 39757 constructor(p22) { 39758 this.version = p22.uint16; 39759 this.length = p22.uint16; 39760 this.coverage = p22.flags(8); 39761 this.format = p22.uint8; 39762 if (this.format === 0) { 39763 this.nPairs = p22.uint16; 39764 this.searchRange = p22.uint16; 39765 this.entrySelector = p22.uint16; 39766 this.rangeShift = p22.uint16; 39767 lazy$1( 39768 this, 39769 `pairs`, 39770 () => [...new Array(this.nPairs)].map((_) => new Pair(p22)) 39771 ); 39772 } 39773 if (this.format === 2) { 39774 console.warn( 39775 `Kern subtable format 2 is not supported: this parser currently only parses universal table data.` 39776 ); 39777 } 39778 } 39779 get horizontal() { 39780 return this.coverage[0]; 39781 } 39782 get minimum() { 39783 return this.coverage[1]; 39784 } 39785 get crossstream() { 39786 return this.coverage[2]; 39787 } 39788 get override() { 39789 return this.coverage[3]; 39790 } 39791 }; 39792 var Pair = class { 39793 constructor(p22) { 39794 this.left = p22.uint16; 39795 this.right = p22.uint16; 39796 this.value = p22.fword; 39797 } 39798 }; 39799 var kern$1 = Object.freeze({ __proto__: null, kern }); 39800 var LTSH = class extends SimpleTable { 39801 constructor(dict, dataview) { 39802 const { p: p22 } = super(dict, dataview); 39803 this.version = p22.uint16; 39804 this.numGlyphs = p22.uint16; 39805 this.yPels = p22.readBytes(this.numGlyphs); 39806 } 39807 }; 39808 var LTSH$1 = Object.freeze({ __proto__: null, LTSH }); 39809 var MERG = class extends SimpleTable { 39810 constructor(dict, dataview) { 39811 const { p: p22 } = super(dict, dataview); 39812 this.version = p22.uint16; 39813 this.mergeClassCount = p22.uint16; 39814 this.mergeDataOffset = p22.Offset16; 39815 this.classDefCount = p22.uint16; 39816 this.offsetToClassDefOffsets = p22.Offset16; 39817 lazy$1( 39818 this, 39819 `mergeEntryMatrix`, 39820 () => [...new Array(this.mergeClassCount)].map( 39821 (_) => p22.readBytes(this.mergeClassCount) 39822 ) 39823 ); 39824 console.warn(`Full MERG parsing is currently not supported.`); 39825 console.warn( 39826 `If you need this table parsed, please file an issue, or better yet, a PR.` 39827 ); 39828 } 39829 }; 39830 var MERG$1 = Object.freeze({ __proto__: null, MERG }); 39831 var meta = class extends SimpleTable { 39832 constructor(dict, dataview) { 39833 const { p: p22 } = super(dict, dataview); 39834 this.version = p22.uint32; 39835 this.flags = p22.uint32; 39836 p22.uint32; 39837 this.dataMapsCount = p22.uint32; 39838 this.dataMaps = [...new Array(this.dataMapsCount)].map( 39839 (_) => new DataMap(this.tableStart, p22) 39840 ); 39841 } 39842 }; 39843 var DataMap = class { 39844 constructor(tableStart, p22) { 39845 this.tableStart = tableStart; 39846 this.parser = p22; 39847 this.tag = p22.tag; 39848 this.dataOffset = p22.Offset32; 39849 this.dataLength = p22.uint32; 39850 } 39851 getData() { 39852 this.parser.currentField = this.tableStart + this.dataOffset; 39853 return this.parser.readBytes(this.dataLength); 39854 } 39855 }; 39856 var meta$1 = Object.freeze({ __proto__: null, meta }); 39857 var PCLT = class extends SimpleTable { 39858 constructor(dict, dataview) { 39859 super(dict, dataview); 39860 console.warn( 39861 `This font uses a PCLT table, which is currently not supported by this parser.` 39862 ); 39863 console.warn( 39864 `If you need this table parsed, please file an issue, or better yet, a PR.` 39865 ); 39866 } 39867 }; 39868 var PCLT$1 = Object.freeze({ __proto__: null, PCLT }); 39869 var VDMX = class extends SimpleTable { 39870 constructor(dict, dataview) { 39871 const { p: p22 } = super(dict, dataview); 39872 this.version = p22.uint16; 39873 this.numRecs = p22.uint16; 39874 this.numRatios = p22.uint16; 39875 this.ratRanges = [...new Array(this.numRatios)].map( 39876 (_) => new RatioRange(p22) 39877 ); 39878 this.offsets = [...new Array(this.numRatios)].map( 39879 (_) => p22.Offset16 39880 ); 39881 this.VDMXGroups = [...new Array(this.numRecs)].map( 39882 (_) => new VDMXGroup(p22) 39883 ); 39884 } 39885 }; 39886 var RatioRange = class { 39887 constructor(p22) { 39888 this.bCharSet = p22.uint8; 39889 this.xRatio = p22.uint8; 39890 this.yStartRatio = p22.uint8; 39891 this.yEndRatio = p22.uint8; 39892 } 39893 }; 39894 var VDMXGroup = class { 39895 constructor(p22) { 39896 this.recs = p22.uint16; 39897 this.startsz = p22.uint8; 39898 this.endsz = p22.uint8; 39899 this.records = [...new Array(this.recs)].map( 39900 (_) => new vTable(p22) 39901 ); 39902 } 39903 }; 39904 var vTable = class { 39905 constructor(p22) { 39906 this.yPelHeight = p22.uint16; 39907 this.yMax = p22.int16; 39908 this.yMin = p22.int16; 39909 } 39910 }; 39911 var VDMX$1 = Object.freeze({ __proto__: null, VDMX }); 39912 var vhea = class extends SimpleTable { 39913 constructor(dict, dataview) { 39914 const { p: p22 } = super(dict, dataview); 39915 this.version = p22.fixed; 39916 this.ascent = this.vertTypoAscender = p22.int16; 39917 this.descent = this.vertTypoDescender = p22.int16; 39918 this.lineGap = this.vertTypoLineGap = p22.int16; 39919 this.advanceHeightMax = p22.int16; 39920 this.minTopSideBearing = p22.int16; 39921 this.minBottomSideBearing = p22.int16; 39922 this.yMaxExtent = p22.int16; 39923 this.caretSlopeRise = p22.int16; 39924 this.caretSlopeRun = p22.int16; 39925 this.caretOffset = p22.int16; 39926 this.reserved = p22.int16; 39927 this.reserved = p22.int16; 39928 this.reserved = p22.int16; 39929 this.reserved = p22.int16; 39930 this.metricDataFormat = p22.int16; 39931 this.numOfLongVerMetrics = p22.uint16; 39932 p22.verifyLength(); 39933 } 39934 }; 39935 var vhea$1 = Object.freeze({ __proto__: null, vhea }); 39936 var vmtx = class extends SimpleTable { 39937 constructor(dict, dataview, tables) { 39938 super(dict, dataview); 39939 const numOfLongVerMetrics = tables.vhea.numOfLongVerMetrics; 39940 const numGlyphs = tables.maxp.numGlyphs; 39941 const metricsStart = p.currentPosition; 39942 lazy(this, `vMetrics`, () => { 39943 p.currentPosition = metricsStart; 39944 return [...new Array(numOfLongVerMetrics)].map( 39945 (_) => new LongVertMetric(p.uint16, p.int16) 39946 ); 39947 }); 39948 if (numOfLongVerMetrics < numGlyphs) { 39949 const tsbStart = metricsStart + numOfLongVerMetrics * 4; 39950 lazy(this, `topSideBearings`, () => { 39951 p.currentPosition = tsbStart; 39952 return [...new Array(numGlyphs - numOfLongVerMetrics)].map( 39953 (_) => p.int16 39954 ); 39955 }); 39956 } 39957 } 39958 }; 39959 var LongVertMetric = class { 39960 constructor(h, b) { 39961 this.advanceHeight = h; 39962 this.topSideBearing = b; 39963 } 39964 }; 39965 var vmtx$1 = Object.freeze({ __proto__: null, vmtx }); 39966 39967 // packages/global-styles-ui/build-module/font-library/utils/make-families-from-faces.mjs 39968 function makeFamiliesFromFaces(fontFaces) { 39969 const fontFamiliesObject = fontFaces.reduce( 39970 (acc, item) => { 39971 if (!acc[item.fontFamily]) { 39972 acc[item.fontFamily] = { 39973 name: item.fontFamily, 39974 fontFamily: item.fontFamily, 39975 slug: kebabCase(item.fontFamily.toLowerCase()), 39976 fontFace: [] 39977 }; 39978 } 39979 acc[item.fontFamily].fontFace.push(item); 39980 return acc; 39981 }, 39982 {} 39983 ); 39984 return Object.values(fontFamiliesObject); 39985 } 39986 39987 // packages/global-styles-ui/build-module/font-library/upload-fonts.mjs 39988 var import_jsx_runtime153 = __toESM(require_jsx_runtime(), 1); 39989 function UploadFonts() { 39990 const { installFonts } = (0, import_element83.useContext)(FontLibraryContext); 39991 const [isUploading, setIsUploading] = (0, import_element83.useState)(false); 39992 const [notice, setNotice] = (0, import_element83.useState)(null); 39993 const handleDropZone = (files) => { 39994 handleFilesUpload(files); 39995 }; 39996 const onFilesUpload = (event) => { 39997 handleFilesUpload(event.target.files); 39998 }; 39999 const handleFilesUpload = async (files) => { 40000 if (!files) { 40001 return; 40002 } 40003 setNotice(null); 40004 setIsUploading(true); 40005 const uniqueFilenames = /* @__PURE__ */ new Set(); 40006 const selectedFiles = [...files]; 40007 let hasInvalidFiles = false; 40008 const checkFilesPromises = selectedFiles.map(async (file) => { 40009 const isFont = await isFontFile(file); 40010 if (!isFont) { 40011 hasInvalidFiles = true; 40012 return null; 40013 } 40014 if (uniqueFilenames.has(file.name)) { 40015 return null; 40016 } 40017 const fileExtension = (((file.name ?? "").split(".") ?? []).pop() ?? "").toLowerCase(); 40018 if (ALLOWED_FILE_EXTENSIONS.includes(fileExtension)) { 40019 uniqueFilenames.add(file.name); 40020 return file; 40021 } 40022 return null; 40023 }); 40024 const allowedFiles = (await Promise.all(checkFilesPromises)).filter((file) => null !== file); 40025 if (allowedFiles.length > 0) { 40026 loadFiles(allowedFiles); 40027 } else { 40028 const message = hasInvalidFiles ? (0, import_i18n27.__)("Sorry, you are not allowed to upload this file type.") : (0, import_i18n27.__)("No fonts found to install."); 40029 setNotice({ 40030 type: "error", 40031 message 40032 }); 40033 setIsUploading(false); 40034 } 40035 }; 40036 const loadFiles = async (files) => { 40037 const fontFacesLoaded = await Promise.all( 40038 files.map(async (fontFile) => { 40039 const fontFaceData = await getFontFaceMetadata(fontFile); 40040 await loadFontFaceInBrowser( 40041 fontFaceData, 40042 fontFaceData.file, 40043 "all" 40044 ); 40045 return fontFaceData; 40046 }) 40047 ); 40048 handleInstall(fontFacesLoaded); 40049 }; 40050 async function isFontFile(file) { 40051 const font2 = new Font("Uploaded Font"); 40052 try { 40053 const buffer = await readFileAsArrayBuffer(file); 40054 await font2.fromDataBuffer(buffer, "font"); 40055 return true; 40056 } catch { 40057 return false; 40058 } 40059 } 40060 async function readFileAsArrayBuffer(file) { 40061 return new Promise((resolve, reject) => { 40062 const reader = new window.FileReader(); 40063 reader.readAsArrayBuffer(file); 40064 reader.onload = () => resolve(reader.result); 40065 reader.onerror = reject; 40066 }); 40067 } 40068 const getFontFaceMetadata = async (fontFile) => { 40069 const buffer = await readFileAsArrayBuffer(fontFile); 40070 const fontObj = new Font("Uploaded Font"); 40071 fontObj.fromDataBuffer(buffer, fontFile.name); 40072 const onloadEvent = await new Promise( 40073 (resolve) => fontObj.onload = resolve 40074 ); 40075 const font2 = onloadEvent.detail.font; 40076 const { name: name2 } = font2.opentype.tables; 40077 const fontName = name2.get(16) || name2.get(1); 40078 const isItalic = name2.get(2).toLowerCase().includes("italic"); 40079 const fontWeight = font2.opentype.tables["OS/2"].usWeightClass || "normal"; 40080 const isVariable = !!font2.opentype.tables.fvar; 40081 const weightAxis = isVariable && font2.opentype.tables.fvar.axes.find( 40082 ({ tag }) => tag === "wght" 40083 ); 40084 const weightRange = weightAxis ? `$weightAxis.minValue} $weightAxis.maxValue}` : null; 40085 return { 40086 file: fontFile, 40087 fontFamily: fontName, 40088 fontStyle: isItalic ? "italic" : "normal", 40089 fontWeight: weightRange || fontWeight 40090 }; 40091 }; 40092 const handleInstall = async (fontFaces) => { 40093 const fontFamilies = makeFamiliesFromFaces(fontFaces); 40094 try { 40095 await installFonts(fontFamilies); 40096 setNotice({ 40097 type: "success", 40098 message: (0, import_i18n27.__)("Fonts were installed successfully.") 40099 }); 40100 } catch (error2) { 40101 const typedError = error2; 40102 setNotice({ 40103 type: "error", 40104 message: typedError.message, 40105 errors: typedError?.installationErrors 40106 }); 40107 } 40108 setIsUploading(false); 40109 }; 40110 return /* @__PURE__ */ (0, import_jsx_runtime153.jsxs)("div", { className: "font-library__tabpanel-layout", children: [ 40111 /* @__PURE__ */ (0, import_jsx_runtime153.jsx)(import_components26.DropZone, { onFilesDrop: handleDropZone }), 40112 /* @__PURE__ */ (0, import_jsx_runtime153.jsxs)(import_components26.__experimentalVStack, { className: "font-library__local-fonts", justify: "start", children: [ 40113 notice && /* @__PURE__ */ (0, import_jsx_runtime153.jsxs)( 40114 import_components26.Notice, 40115 { 40116 status: notice.type, 40117 __unstableHTML: true, 40118 onRemove: () => setNotice(null), 40119 children: [ 40120 notice.message, 40121 notice.errors && /* @__PURE__ */ (0, import_jsx_runtime153.jsx)("ul", { children: notice.errors.map((error2, index2) => /* @__PURE__ */ (0, import_jsx_runtime153.jsx)("li", { children: error2 }, index2)) }) 40122 ] 40123 } 40124 ), 40125 isUploading && /* @__PURE__ */ (0, import_jsx_runtime153.jsx)(import_components26.FlexItem, { children: /* @__PURE__ */ (0, import_jsx_runtime153.jsx)("div", { className: "font-library__upload-area", children: /* @__PURE__ */ (0, import_jsx_runtime153.jsx)( 40126 progress_exports.Root, 40127 { 40128 value: null, 40129 "aria-label": (0, import_i18n27.__)("Uploading fonts"), 40130 children: /* @__PURE__ */ (0, import_jsx_runtime153.jsx)(progress_exports.Track, { children: /* @__PURE__ */ (0, import_jsx_runtime153.jsx)(progress_exports.Indicator, {}) }) 40131 } 40132 ) }) }), 40133 !isUploading && /* @__PURE__ */ (0, import_jsx_runtime153.jsx)( 40134 import_components26.FormFileUpload, 40135 { 40136 accept: ALLOWED_FILE_EXTENSIONS.map( 40137 (ext) => `.$ext}` 40138 ).join(","), 40139 multiple: true, 40140 onChange: onFilesUpload, 40141 render: ({ openFileDialog }) => /* @__PURE__ */ (0, import_jsx_runtime153.jsx)( 40142 import_components26.Button, 40143 { 40144 __next40pxDefaultSize: true, 40145 className: "font-library__upload-area", 40146 onClick: openFileDialog, 40147 children: (0, import_i18n27.__)("Upload font") 40148 } 40149 ) 40150 } 40151 ), 40152 /* @__PURE__ */ (0, import_jsx_runtime153.jsx)(import_components26.__experimentalText, { className: "font-library__upload-area__text", children: (0, import_i18n27.__)( 40153 "Uploaded fonts appear in your library and can be used in your theme. Supported formats: .ttf, .otf, .woff, and .woff2." 40154 ) }) 40155 ] }) 40156 ] }); 40157 } 40158 var upload_fonts_default = UploadFonts; 40159 40160 // packages/global-styles-ui/build-module/font-library/modal.mjs 40161 var import_jsx_runtime154 = __toESM(require_jsx_runtime(), 1); 40162 var { Tabs } = unlock3(import_components27.privateApis); 40163 var DEFAULT_TAB = { 40164 id: "installed-fonts", 40165 title: (0, import_i18n28._x)("Library", "Font library") 40166 }; 40167 var UPLOAD_TAB = { 40168 id: "upload-fonts", 40169 title: (0, import_i18n28._x)("Upload", "noun") 40170 }; 40171 40172 // packages/global-styles-ui/build-module/font-family-item.mjs 40173 var import_i18n29 = __toESM(require_i18n(), 1); 40174 var import_components28 = __toESM(require_components(), 1); 40175 var import_element84 = __toESM(require_element(), 1); 40176 var import_jsx_runtime155 = __toESM(require_jsx_runtime(), 1); 40177 40178 // packages/global-styles-ui/build-module/font-families.mjs 40179 var import_jsx_runtime156 = __toESM(require_jsx_runtime(), 1); 40180 40181 // packages/global-styles-ui/build-module/font-sizes/font-sizes-count.mjs 40182 var import_i18n31 = __toESM(require_i18n(), 1); 40183 var import_components30 = __toESM(require_components(), 1); 40184 var import_jsx_runtime157 = __toESM(require_jsx_runtime(), 1); 40185 40186 // packages/global-styles-ui/build-module/text-shadows.mjs 40187 var import_i18n32 = __toESM(require_i18n(), 1); 40188 var import_components31 = __toESM(require_components(), 1); 40189 var import_jsx_runtime158 = __toESM(require_jsx_runtime(), 1); 40190 40191 // packages/global-styles-ui/build-module/screen-typography.mjs 40192 var import_jsx_runtime159 = __toESM(require_jsx_runtime(), 1); 40193 40194 // packages/global-styles-ui/build-module/screen-colors.mjs 40195 var import_i18n35 = __toESM(require_i18n(), 1); 40196 var import_components33 = __toESM(require_components(), 1); 40197 40198 // packages/global-styles-ui/build-module/palette.mjs 40199 var import_components32 = __toESM(require_components(), 1); 40200 var import_i18n34 = __toESM(require_i18n(), 1); 40201 var import_element87 = __toESM(require_element(), 1); 40202 40203 // packages/global-styles-ui/build-module/color-indicator-wrapper.mjs 40204 var import_jsx_runtime160 = __toESM(require_jsx_runtime(), 1); 40205 40206 // packages/global-styles-ui/build-module/palette.mjs 40207 var import_jsx_runtime161 = __toESM(require_jsx_runtime(), 1); 40208 40209 // packages/global-styles-ui/build-module/screen-colors.mjs 40210 var import_jsx_runtime162 = __toESM(require_jsx_runtime(), 1); 40211 40212 // packages/global-styles-ui/build-module/screen-color-palette.mjs 40213 var import_i18n39 = __toESM(require_i18n(), 1); 40214 40215 // packages/global-styles-ui/build-module/color-palette-panel.mjs 40216 var import_compose6 = __toESM(require_compose(), 1); 40217 var import_components36 = __toESM(require_components(), 1); 40218 var import_i18n36 = __toESM(require_i18n(), 1); 40219 40220 // packages/global-styles-ui/build-module/variations/variations-color.mjs 40221 var import_components35 = __toESM(require_components(), 1); 40222 40223 // packages/global-styles-ui/build-module/preview-colors.mjs 40224 var import_components34 = __toESM(require_components(), 1); 40225 40226 // packages/global-styles-ui/build-module/preset-colors.mjs 40227 var import_jsx_runtime163 = __toESM(require_jsx_runtime(), 1); 40228 function PresetColors() { 40229 const { paletteColors } = useStylesPreviewColors(); 40230 return paletteColors.slice(0, 4).map(({ slug, color }, index2) => /* @__PURE__ */ (0, import_jsx_runtime163.jsx)( 40231 "div", 40232 { 40233 style: { 40234 flexGrow: 1, 40235 height: "100%", 40236 background: color 40237 } 40238 }, 40239 `$slug}-$index2}` 40240 )); 40241 } 40242 40243 // packages/global-styles-ui/build-module/preview-colors.mjs 40244 var import_jsx_runtime164 = __toESM(require_jsx_runtime(), 1); 40245 var firstFrameVariants2 = { 40246 start: { 40247 scale: 1, 40248 opacity: 1 40249 }, 40250 hover: { 40251 scale: 0, 40252 opacity: 0 40253 } 40254 }; 40255 var StylesPreviewColors = ({ 40256 label, 40257 isFocused, 40258 withHoverView 40259 }) => { 40260 return /* @__PURE__ */ (0, import_jsx_runtime164.jsx)( 40261 preview_wrapper_default, 40262 { 40263 label, 40264 isFocused, 40265 withHoverView, 40266 children: ({ key }) => /* @__PURE__ */ (0, import_jsx_runtime164.jsx)( 40267 import_components34.__unstableMotion.div, 40268 { 40269 variants: firstFrameVariants2, 40270 style: { 40271 height: "100%", 40272 overflow: "hidden" 40273 }, 40274 children: /* @__PURE__ */ (0, import_jsx_runtime164.jsx)( 40275 import_components34.__experimentalHStack, 40276 { 40277 spacing: 0, 40278 justify: "center", 40279 style: { 40280 height: "100%", 40281 overflow: "hidden" 40282 }, 40283 children: /* @__PURE__ */ (0, import_jsx_runtime164.jsx)(PresetColors, {}) 40284 } 40285 ) 40286 }, 40287 key 40288 ) 40289 } 40290 ); 40291 }; 40292 var preview_colors_default = StylesPreviewColors; 40293 40294 // packages/global-styles-ui/build-module/variations/variations-color.mjs 40295 var import_jsx_runtime165 = __toESM(require_jsx_runtime(), 1); 40296 var propertiesToFilter2 = ["color"]; 40297 function ColorVariations({ 40298 title, 40299 gap = 2 40300 }) { 40301 const colorVariations = useCurrentMergeThemeStyleVariationsWithUserConfig(propertiesToFilter2); 40302 if (colorVariations?.length <= 1) { 40303 return null; 40304 } 40305 return /* @__PURE__ */ (0, import_jsx_runtime165.jsxs)(import_components35.__experimentalVStack, { spacing: 3, children: [ 40306 title && /* @__PURE__ */ (0, import_jsx_runtime165.jsx)(Subtitle, { level: 3, children: title }), 40307 /* @__PURE__ */ (0, import_jsx_runtime165.jsx)(import_components35.__experimentalGrid, { gap, children: colorVariations.map((variation, index2) => /* @__PURE__ */ (0, import_jsx_runtime165.jsx)( 40308 Variation, 40309 { 40310 variation, 40311 isPill: true, 40312 properties: propertiesToFilter2, 40313 showTooltip: true, 40314 children: () => /* @__PURE__ */ (0, import_jsx_runtime165.jsx)(preview_colors_default, {}) 40315 }, 40316 index2 40317 )) }) 40318 ] }); 40319 } 40320 40321 // packages/global-styles-ui/build-module/color-palette-panel.mjs 40322 var import_jsx_runtime166 = __toESM(require_jsx_runtime(), 1); 40323 40324 // packages/global-styles-ui/build-module/gradients-palette-panel.mjs 40325 var import_compose7 = __toESM(require_compose(), 1); 40326 var import_components37 = __toESM(require_components(), 1); 40327 var import_i18n37 = __toESM(require_i18n(), 1); 40328 var import_jsx_runtime167 = __toESM(require_jsx_runtime(), 1); 40329 40330 // packages/global-styles-ui/build-module/duotone-palette-panel.mjs 40331 var import_compose8 = __toESM(require_compose(), 1); 40332 var import_element88 = __toESM(require_element(), 1); 40333 var import_components38 = __toESM(require_components(), 1); 40334 var import_i18n38 = __toESM(require_i18n(), 1); 40335 var import_jsx_runtime168 = __toESM(require_jsx_runtime(), 1); 40336 40337 // packages/global-styles-ui/build-module/screen-color-palette.mjs 40338 var import_jsx_runtime169 = __toESM(require_jsx_runtime(), 1); 40339 40340 // packages/global-styles-ui/build-module/screen-background.mjs 40341 var import_i18n40 = __toESM(require_i18n(), 1); 40342 var import_block_editor9 = __toESM(require_block_editor(), 1); 40343 var import_components39 = __toESM(require_components(), 1); 40344 40345 // packages/global-styles-ui/build-module/background-panel.mjs 40346 var import_block_editor8 = __toESM(require_block_editor(), 1); 40347 var import_jsx_runtime170 = __toESM(require_jsx_runtime(), 1); 40348 var { BackgroundPanel: StylesBackgroundPanel3 } = unlock3( 40349 import_block_editor8.privateApis 40350 ); 40351 40352 // packages/global-styles-ui/build-module/screen-background.mjs 40353 var import_jsx_runtime171 = __toESM(require_jsx_runtime(), 1); 40354 var { useHasBackgroundPanel: useHasBackgroundPanel5 } = unlock3(import_block_editor9.privateApis); 40355 40356 // packages/global-styles-ui/build-module/shadows-panel.mjs 40357 var import_i18n43 = __toESM(require_i18n(), 1); 40358 40359 // packages/global-styles-ui/build-module/presets/preset-group.mjs 40360 var import_components41 = __toESM(require_components(), 1); 40361 var import_i18n42 = __toESM(require_i18n(), 1); 40362 var import_element89 = __toESM(require_element(), 1); 40363 40364 // packages/global-styles-ui/build-module/presets/dialogs/confirm-reset-dialog.mjs 40365 var import_components40 = __toESM(require_components(), 1); 40366 var import_i18n41 = __toESM(require_i18n(), 1); 40367 var import_jsx_runtime172 = __toESM(require_jsx_runtime(), 1); 40368 40369 // packages/global-styles-ui/build-module/presets/preset-group.mjs 40370 var import_jsx_runtime173 = __toESM(require_jsx_runtime(), 1); 40371 40372 // packages/global-styles-ui/build-module/shadows-panel.mjs 40373 var import_jsx_runtime174 = __toESM(require_jsx_runtime(), 1); 40374 40375 // packages/global-styles-ui/build-module/shadows-edit-panel.mjs 40376 var import_components45 = __toESM(require_components(), 1); 40377 var import_i18n46 = __toESM(require_i18n(), 1); 40378 var import_element91 = __toESM(require_element(), 1); 40379 40380 // packages/global-styles-ui/build-module/presets/preset-edit-header.mjs 40381 var import_components42 = __toESM(require_components(), 1); 40382 var import_jsx_runtime175 = __toESM(require_jsx_runtime(), 1); 40383 40384 // packages/global-styles-ui/build-module/presets/dialogs/confirm-delete-dialog.mjs 40385 var import_components43 = __toESM(require_components(), 1); 40386 var import_i18n44 = __toESM(require_i18n(), 1); 40387 var import_jsx_runtime176 = __toESM(require_jsx_runtime(), 1); 40388 40389 // packages/global-styles-ui/build-module/presets/dialogs/rename-dialog.mjs 40390 var import_components44 = __toESM(require_components(), 1); 40391 var import_i18n45 = __toESM(require_i18n(), 1); 40392 var import_element90 = __toESM(require_element(), 1); 40393 var import_jsx_runtime177 = __toESM(require_jsx_runtime(), 1); 40394 40395 // packages/global-styles-ui/build-module/shadows-edit-panel.mjs 40396 var import_jsx_runtime178 = __toESM(require_jsx_runtime(), 1); 40397 40398 // packages/global-styles-ui/build-module/screen-shadows.mjs 40399 var import_jsx_runtime179 = __toESM(require_jsx_runtime(), 1); 40400 40401 // packages/global-styles-ui/build-module/screen-text-shadows.mjs 40402 var import_i18n47 = __toESM(require_i18n(), 1); 40403 var import_jsx_runtime180 = __toESM(require_jsx_runtime(), 1); 40404 40405 // packages/global-styles-ui/build-module/screen-text-shadows-edit.mjs 40406 var import_components46 = __toESM(require_components(), 1); 40407 var import_i18n48 = __toESM(require_i18n(), 1); 40408 var import_element92 = __toESM(require_element(), 1); 40409 var import_jsx_runtime181 = __toESM(require_jsx_runtime(), 1); 40410 40411 // packages/global-styles-ui/build-module/screen-layout.mjs 40412 var import_i18n49 = __toESM(require_i18n(), 1); 40413 var import_block_editor11 = __toESM(require_block_editor(), 1); 40414 40415 // packages/global-styles-ui/build-module/dimensions-panel.mjs 40416 var import_block_editor10 = __toESM(require_block_editor(), 1); 40417 var import_element93 = __toESM(require_element(), 1); 40418 var import_jsx_runtime182 = __toESM(require_jsx_runtime(), 1); 40419 var { useSettingsForBlockElement: useSettingsForBlockElement5, DimensionsPanel: StylesDimensionsPanel3 } = unlock3(import_block_editor10.privateApis); 40420 40421 // packages/global-styles-ui/build-module/screen-layout.mjs 40422 var import_jsx_runtime183 = __toESM(require_jsx_runtime(), 1); 40423 var { useHasDimensionsPanel: useHasDimensionsPanel5, useSettingsForBlockElement: useSettingsForBlockElement6 } = unlock3( 40424 import_block_editor11.privateApis 40425 ); 40426 40427 // packages/global-styles-ui/build-module/screen-style-variations.mjs 40428 var import_components49 = __toESM(require_components(), 1); 40429 var import_i18n52 = __toESM(require_i18n(), 1); 40430 40431 // packages/global-styles-ui/build-module/style-variations-content.mjs 40432 var import_i18n51 = __toESM(require_i18n(), 1); 40433 var import_components48 = __toESM(require_components(), 1); 40434 40435 // packages/global-styles-ui/build-module/style-variations-container.mjs 40436 var import_core_data8 = __toESM(require_core_data(), 1); 40437 var import_data9 = __toESM(require_data(), 1); 40438 var import_element94 = __toESM(require_element(), 1); 40439 var import_components47 = __toESM(require_components(), 1); 40440 var import_i18n50 = __toESM(require_i18n(), 1); 40441 var import_jsx_runtime184 = __toESM(require_jsx_runtime(), 1); 40442 function StyleVariationsContainer({ 40443 gap = 2 40444 }) { 40445 const { user } = (0, import_element94.useContext)(GlobalStylesContext); 40446 const userStyles = user?.styles; 40447 const variations = (0, import_data9.useSelect)((select) => { 40448 const result = select( 40449 import_core_data8.store 40450 ).__experimentalGetCurrentThemeGlobalStylesVariations(); 40451 return Array.isArray(result) ? result : void 0; 40452 }, []); 40453 const fullStyleVariations = variations?.filter( 40454 (variation) => { 40455 return !isVariationWithProperties(variation, ["color"]) && !isVariationWithProperties(variation, [ 40456 "typography", 40457 "spacing" 40458 ]); 40459 } 40460 ); 40461 const themeVariations = (0, import_element94.useMemo)(() => { 40462 const withEmptyVariation = [ 40463 { 40464 title: (0, import_i18n50.__)("Default"), 40465 settings: {}, 40466 styles: {} 40467 }, 40468 ...fullStyleVariations ?? [] 40469 ]; 40470 return [ 40471 ...withEmptyVariation.map((variation) => { 40472 const blockStyles = variation?.styles?.blocks ? { ...variation.styles.blocks } : {}; 40473 if (userStyles?.blocks) { 40474 Object.keys(userStyles.blocks).forEach((blockName) => { 40475 if (userStyles.blocks?.[blockName]?.css) { 40476 const variationBlockStyles = blockStyles[blockName] || {}; 40477 const customCSS = { 40478 css: `$blockStyles[blockName]?.css || ""} $userStyles.blocks?.[blockName]?.css?.trim() || ""}` 40479 }; 40480 blockStyles[blockName] = { 40481 ...variationBlockStyles, 40482 ...customCSS 40483 }; 40484 } 40485 }); 40486 } 40487 const css = userStyles?.css || variation.styles?.css ? { 40488 css: `$variation.styles?.css || ""} $userStyles?.css || ""}` 40489 } : {}; 40490 const blocks = Object.keys(blockStyles).length > 0 ? { blocks: blockStyles } : {}; 40491 const styles = { 40492 ...variation.styles, 40493 ...css, 40494 ...blocks 40495 }; 40496 return { 40497 ...variation, 40498 settings: variation.settings ?? {}, 40499 styles 40500 }; 40501 }) 40502 ]; 40503 }, [fullStyleVariations, userStyles?.blocks, userStyles?.css]); 40504 if (!fullStyleVariations || fullStyleVariations.length < 1) { 40505 return null; 40506 } 40507 return /* @__PURE__ */ (0, import_jsx_runtime184.jsx)( 40508 import_components47.__experimentalGrid, 40509 { 40510 columns: 2, 40511 className: "global-styles-ui-style-variations-container", 40512 gap, 40513 children: themeVariations.map( 40514 (variation, index2) => /* @__PURE__ */ (0, import_jsx_runtime184.jsx)(Variation, { variation, children: (isFocused) => /* @__PURE__ */ (0, import_jsx_runtime184.jsx)( 40515 preview_styles_default, 40516 { 40517 label: variation?.title, 40518 withHoverView: true, 40519 isFocused, 40520 variation 40521 } 40522 ) }, index2) 40523 ) 40524 } 40525 ); 40526 } 40527 var style_variations_container_default = StyleVariationsContainer; 40528 40529 // packages/global-styles-ui/build-module/style-variations-content.mjs 40530 var import_jsx_runtime185 = __toESM(require_jsx_runtime(), 1); 40531 40532 // packages/global-styles-ui/build-module/screen-style-variations.mjs 40533 var import_jsx_runtime186 = __toESM(require_jsx_runtime(), 1); 40534 40535 // packages/global-styles-ui/build-module/screen-css.mjs 40536 var import_i18n53 = __toESM(require_i18n(), 1); 40537 var import_components50 = __toESM(require_components(), 1); 40538 var import_block_editor12 = __toESM(require_block_editor(), 1); 40539 var import_jsx_runtime187 = __toESM(require_jsx_runtime(), 1); 40540 var { AdvancedPanel: StylesAdvancedPanel3 } = unlock3(import_block_editor12.privateApis); 40541 40542 // packages/global-styles-ui/build-module/screen-revisions/index.mjs 40543 var import_i18n55 = __toESM(require_i18n(), 1); 40544 var import_components51 = __toESM(require_components(), 1); 40545 var import_element97 = __toESM(require_element(), 1); 40546 40547 // packages/global-styles-ui/build-module/screen-revisions/use-global-styles-revisions.mjs 40548 var import_data10 = __toESM(require_data(), 1); 40549 var import_core_data9 = __toESM(require_core_data(), 1); 40550 var import_element95 = __toESM(require_element(), 1); 40551 40552 // packages/global-styles-ui/build-module/screen-revisions/revisions-list.mjs 40553 var import_i18n54 = __toESM(require_i18n(), 1); 40554 var import_date = __toESM(require_date(), 1); 40555 var import_core_data10 = __toESM(require_core_data(), 1); 40556 var import_data11 = __toESM(require_data(), 1); 40557 var import_element96 = __toESM(require_element(), 1); 40558 var import_jsx_runtime188 = __toESM(require_jsx_runtime(), 1); 40559 var DAY_IN_MILLISECONDS = 60 * 60 * 1e3 * 24; 40560 40561 // packages/global-styles-ui/build-module/screen-revisions/index.mjs 40562 var import_jsx_runtime189 = __toESM(require_jsx_runtime(), 1); 40563 40564 // packages/global-styles-ui/build-module/font-sizes/font-sizes.mjs 40565 var import_i18n56 = __toESM(require_i18n(), 1); 40566 var import_components52 = __toESM(require_components(), 1); 40567 var import_jsx_runtime190 = __toESM(require_jsx_runtime(), 1); 40568 40569 // packages/global-styles-ui/build-module/font-sizes/font-size.mjs 40570 var import_i18n58 = __toESM(require_i18n(), 1); 40571 var import_components54 = __toESM(require_components(), 1); 40572 var import_element98 = __toESM(require_element(), 1); 40573 40574 // packages/global-styles-ui/build-module/font-sizes/font-size-preview.mjs 40575 var import_block_editor13 = __toESM(require_block_editor(), 1); 40576 var import_i18n57 = __toESM(require_i18n(), 1); 40577 var import_jsx_runtime191 = __toESM(require_jsx_runtime(), 1); 40578 40579 // packages/global-styles-ui/build-module/size-control/index.mjs 40580 var import_components53 = __toESM(require_components(), 1); 40581 var import_jsx_runtime192 = __toESM(require_jsx_runtime(), 1); 40582 40583 // packages/global-styles-ui/build-module/font-sizes/font-size.mjs 40584 var import_jsx_runtime193 = __toESM(require_jsx_runtime(), 1); 40585 40586 // packages/global-styles-ui/build-module/global-styles-ui.mjs 40587 var import_jsx_runtime194 = __toESM(require_jsx_runtime(), 1); 40588 40589 // packages/global-styles-ui/build-module/with-global-styles-provider.mjs 40590 var import_jsx_runtime195 = __toESM(require_jsx_runtime(), 1); 40591 function withGlobalStylesProvider(Component) { 40592 return function WrappedComponent({ 40593 value, 40594 baseValue, 40595 onChange, 40596 ...props 40597 }) { 40598 return /* @__PURE__ */ (0, import_jsx_runtime195.jsx)( 40599 GlobalStylesProvider, 40600 { 40601 value, 40602 baseValue, 40603 onChange, 40604 children: /* @__PURE__ */ (0, import_jsx_runtime195.jsx)(Component, { ...props }) 40605 } 40606 ); 40607 }; 40608 } 40609 40610 // packages/global-styles-ui/build-module/style-variations.mjs 40611 var StyleVariations = withGlobalStylesProvider(style_variations_container_default); 40612 40613 // packages/global-styles-ui/build-module/color-variations.mjs 40614 var ColorVariations2 = withGlobalStylesProvider(ColorVariations); 40615 40616 // packages/global-styles-ui/build-module/typography-variations.mjs 40617 var TypographyVariations2 = withGlobalStylesProvider(TypographyVariations); 40618 40619 // packages/global-styles-ui/build-module/font-library/font-library.mjs 40620 var import_jsx_runtime196 = __toESM(require_jsx_runtime(), 1); 40621 function FontLibrary({ 40622 value, 40623 baseValue, 40624 onChange, 40625 activeTab = "installed-fonts" 40626 }) { 40627 let content; 40628 switch (activeTab) { 40629 case "upload-fonts": 40630 content = /* @__PURE__ */ (0, import_jsx_runtime196.jsx)(upload_fonts_default, {}); 40631 break; 40632 case "installed-fonts": 40633 content = /* @__PURE__ */ (0, import_jsx_runtime196.jsx)(installed_fonts_default, {}); 40634 break; 40635 default: 40636 content = /* @__PURE__ */ (0, import_jsx_runtime196.jsx)(font_collection_default, { slug: activeTab }); 40637 } 40638 return /* @__PURE__ */ (0, import_jsx_runtime196.jsx)( 40639 GlobalStylesProvider, 40640 { 40641 value, 40642 baseValue, 40643 onChange, 40644 children: /* @__PURE__ */ (0, import_jsx_runtime196.jsx)(context_default, { children: content }) 40645 } 40646 ); 40647 } 40648 40649 // routes/font-list/lock-unlock.ts 40650 var import_private_apis5 = __toESM(require_private_apis()); 40651 var { unlock: unlock4 } = (0, import_private_apis5.__dangerousOptInToUnstableAPIsOnlyForCoreModules)( 40652 "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.", 40653 "@wordpress/font-list-route" 40654 ); 40655 40656 // routes/font-list/style.scss 40657 if (typeof document !== "undefined" && (typeof process === "undefined" || true) && !document.head.querySelector("style[data-wp-hash='cdd5f8ebb6']")) { 40658 const style = document.createElement("style"); 40659 style.setAttribute("data-wp-hash", "cdd5f8ebb6"); 40660 style.appendChild(document.createTextNode("@media (min-width:782px){.font-library-modal.font-library-modal{width:65vw}}.font-library-modal .components-modal__header{border-bottom:none}.font-library-modal .components-modal__content{margin-bottom:90px;padding:0}.font-library-modal .font-library__subtitle{font-size:11px;font-weight:var(--wpds-typography-font-weight-emphasis,600);text-transform:uppercase}.font-library-modal__tab-panel{height:calc(100% - 50px)}.font-library__tabpanel-layout{display:flex;flex-direction:column;height:100%}.font-library__tabpanel-layout>div{flex-grow:1}.font-library__tabpanel-layout .font-library__loading{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;left:0;padding-top:124px;position:absolute;top:0;width:100%}.font-library__footer,.font-library__tabpanel-layout .components-navigator-screen{padding:24px;width:100%}.font-library__footer{background-color:#fff;border-top:1px solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);bottom:0;box-sizing:border-box;flex-grow:0!important;flex-shrink:0;height:90px;position:absolute}.font-library__page-selection{font-size:11px;font-weight:var(--wpds-typography-font-weight-emphasis,600);text-transform:uppercase}.font-library__page-selection-trigger{font-size:inherit}.font-library__page-selection-trigger button{font-weight:inherit}.font-library__search{width:240px}.font-library__fonts-title{font-size:11px;font-weight:var(--wpds-typography-font-weight-emphasis,600);margin-bottom:0;margin-top:0;text-transform:uppercase}.font-library__fonts-list{list-style:none;margin-bottom:0;margin-top:0;padding:0}.font-library__fonts-list-item{margin-bottom:0}.font-library__font-demo{position:relative}.font-library__font-card{border:1px solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);box-sizing:border-box;height:auto!important;margin-top:-1px;padding:16px;width:100%}.font-library__font-card:hover{background-color:#f0f0f0}.font-library__font-card:focus{position:relative}.font-library__font-card .font-library__font-card__name{font-weight:700}.font-library__font-card .font-library__font-card__count{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}.font-library__font-card .font-library__font-variant_demo-image{display:block;height:24px;width:auto}@media not (prefers-reduced-motion){.font-library__font-card .font-library__font-variant_demo-image{transition:opacity var(--wpds-motion-duration-lg,.3s) var(--wpds-motion-easing-subtle,cubic-bezier(.15,0,.15,1))}}.font-library__font-card .font-library__font-variant_demo-image.is-loading{left:0;opacity:0;position:absolute;top:0}.font-library__font-card .font-library__font-variant-demo-skeleton{border-radius:var(--wpds-border-radius-sm,2px);height:24px}.font-library__font-card .font-library__font-variant_demo-text{flex-shrink:0;white-space:nowrap}@media not (prefers-reduced-motion){.font-library__font-card .font-library__font-variant_demo-text{transition:opacity .3s ease-in-out}}.font-library-modal__tablist-container{background:#fff;border-bottom:1px solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);position:sticky;top:0;z-index:1}.font-library__upload-area{align-items:center;display:flex;height:256px!important;justify-content:center;width:100%}button.font-library__upload-area{background-color:#f0f0f0}.font-library__local-fonts{margin:24px auto;width:80%}.font-library__local-fonts .font-library__upload-area__text{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}.font-library__google-fonts-confirm{align-items:center;display:flex;justify-content:center;margin-top:64px}.font-library__google-fonts-confirm p{line-height:1.4}.font-library__google-fonts-confirm h2{font-size:1.2rem;font-weight:400}.font-library__google-fonts-confirm .components-card{padding:16px;width:400px}.font-library__google-fonts-confirm .components-button{justify-content:center;width:100%}.font-library__select-all{padding:16px 16px 16px 17px}.font-library__select-all .components-checkbox-control__label{padding-left:16px}.global-styles-ui-screen-revisions{display:flex;flex-direction:column;flex-grow:1;min-height:0}.global-styles-ui-screen-revisions__actions{margin-inline-start:auto}.global-styles-ui-screen-revisions__date{font-size:12px;font-weight:var(--wpds-typography-font-weight-emphasis,600);text-transform:uppercase}.global-styles-ui-screen-revisions__description{align-items:flex-start;display:flex;flex-direction:column;gap:8px}.global-styles-ui-screen-revisions__changes,.global-styles-ui-screen-revisions__meta{color:#2f2f2f;font-size:12px}.global-styles-ui-screen-revisions__meta{align-items:center;display:flex;justify-content:start;text-align:left;width:100%}.global-styles-ui-screen-revisions__meta img{border-radius:100%;height:16px;margin-right:8px;width:16px}.global-styles-ui-screen-revisions__changes{line-height:1.4;list-style:disc;margin:0 0 0 12px;text-align:left}.global-styles-ui-screen-revisions__changes li{margin-bottom:4px}.global-styles-ui-variations_item{box-sizing:border-box;cursor:var(--wpds-cursor-control,pointer)}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{border-radius:2px;outline:1px solid rgba(0,0,0,.1);outline-offset:-1px;overflow:hidden;position:relative}@media not (prefers-reduced-motion){.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{transition:outline .1s linear}}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill{height:32px}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill .block-editor-iframe__scale-container{overflow:hidden}.global-styles-ui-variations_item:not(.is-active):hover .global-styles-ui-variations_item-preview{outline-color:rgba(0,0,0,.3)}.global-styles-ui-variations_item.is-active .global-styles-ui-variations_item-preview,.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:#1e1e1e;outline-offset:1px;outline-width:var(--wp-admin-border-width-focus)}.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:var(--wp-admin-theme-color)}.global-styles-ui-preview__wrapper{display:block;max-width:100%;width:100%}.global-styles-ui-preview__wrapper.is-hoverable{cursor:var(--wpds-cursor-control,pointer)}.global-styles-ui-typography-preview{align-items:center;background:#f0f0f0;border-radius:2px;display:flex;justify-content:center;margin-bottom:20px;min-height:100px;overflow:hidden}.global-styles-ui-element-preview{background:#f0f0f0;border-radius:2px;flex-shrink:0;height:120px;margin:0 16px 20px;overflow:hidden}.global-styles-ui-element-preview iframe{border:0;display:block;height:100%;width:100%}.global-styles-ui-font-size__item{line-break:anywhere;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.global-styles-ui-font-size__item-value{color:#757575}.global-styles-ui-screen-typography__indicator{align-items:center;border-radius:2px;display:flex!important;font-size:14px;height:24px;justify-content:center;width:24px}.global-styles-ui-block-types-filter{margin-bottom:16px;padding:0 16px}.global-styles-ui-block-types-search{flex-grow:1}.global-styles-ui-block-types-item-list{margin-inline:4px}.global-styles-ui-block-types-item-list .global-styles-ui-block-types-item__icon{min-width:24px}.global-styles-ui-block-types-item-list__no-results{padding-top:16px}.global-styles-ui-block-types-group+.global-styles-ui-block-types-group{margin-top:12px}.global-styles-ui-block-types-group:last-child{padding-bottom:12px}.global-styles-ui-block-types-group__title{margin-bottom:12px;padding:0 16px}.global-styles-ui-screen-typography__font-variants-count{color:#757575}.global-styles-ui-font-families__manage-fonts{justify-content:center}.global-styles-ui-screen .color-block-support-panel{border-top:none;padding-left:0;padding-right:0;padding-top:0;row-gap:12px}.global-styles-ui-header{line-height:1.9!important;margin-bottom:0!important}.global-styles-ui-subtitle{font-size:11px!important;font-weight:var(--wpds-typography-font-weight-emphasis,600)!important;margin-bottom:0!important;text-transform:uppercase}.global-styles-ui-section-title{color:#2f2f2f;font-weight:var(--wpds-typography-font-weight-emphasis,600);line-height:1.2;margin:0;padding:16px 16px 0}.global-styles-ui-icon-with-current-color{fill:currentColor}.global-styles-ui__color-indicator-wrapper{align-items:center;display:flex;flex-shrink:0;height:24px}.global-styles-ui__palette-preview{display:inline-flex}.global-styles-ui__palette-preview>*+*{margin-inline-start:-8px}.global-styles-ui__shadows-panel__options-container,.global-styles-ui__typography-panel__options-container{height:24px}.global-styles-ui__block-preview-panel{border:1px solid #ddd;border-radius:2px;overflow:hidden;position:relative;width:100%}.global-styles-ui__shadow-preview-panel,.global-styles-ui__text-shadow-preview-panel{background-image:repeating-linear-gradient(45deg,#e0e0e0 25%,transparent 0,transparent 75%,#e0e0e0 0,#e0e0e0),repeating-linear-gradient(45deg,#e0e0e0 25%,transparent 0,transparent 75%,#e0e0e0 0,#e0e0e0);background-position:0 0,8px 8px;background-size:16px 16px;border:1px solid #ddd;border-radius:2px;height:144px;overflow:auto}.global-styles-ui__shadow-preview-block{background-color:#fff;border:1px solid #ddd;border-radius:2px;height:60px;width:60%}.global-styles-ui__text-shadow-preview-panel{margin-block:-8px 16px}.global-styles-ui__text-shadow-preview-text{font-size:24px}.global-styles-ui__text-shadow-editor__header{margin-block-end:8px}.global-styles-ui__text-shadow-editor__inputs{display:grid;gap:16px;grid-template-columns:repeat(2,1fr)}.global-styles-ui__shadow-editor__dropdown-content,.global-styles-ui__text-shadow-editor__dropdown-content{width:280px}.global-styles-ui__shadow-editor-panel,.global-styles-ui__text-shadow-editor-panel{margin-bottom:4px}.global-styles-ui__shadow-editor__dropdown,.global-styles-ui__text-shadow-editor__dropdown{position:relative;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle,.global-styles-ui__text-shadow-editor__dropdown-toggle{border-radius:inherit;height:auto;padding-bottom:8px;padding-top:8px;text-align:left;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle.is-open,.global-styles-ui__text-shadow-editor__dropdown-toggle.is-open{background:#f0f0f0;color:var(--wp-admin-theme-color)}.global-styles-ui__shadow-editor__remove-button,.global-styles-ui__text-shadow-editor__remove-button{opacity:0;position:absolute;right:8px;top:8px}.global-styles-ui__shadow-editor__dropdown-toggle:hover+.global-styles-ui__shadow-editor__remove-button,.global-styles-ui__shadow-editor__dropdown-toggle:hover+.global-styles-ui__text-shadow-editor__remove-button,.global-styles-ui__shadow-editor__remove-button:focus,.global-styles-ui__shadow-editor__remove-button:hover,.global-styles-ui__text-shadow-editor__dropdown-toggle:hover+.global-styles-ui__shadow-editor__remove-button,.global-styles-ui__text-shadow-editor__dropdown-toggle:hover+.global-styles-ui__text-shadow-editor__remove-button,.global-styles-ui__text-shadow-editor__remove-button:focus,.global-styles-ui__text-shadow-editor__remove-button:hover{opacity:1}@media (hover:none){.global-styles-ui__shadow-editor__remove-button,.global-styles-ui__text-shadow-editor__remove-button{opacity:1}}.global-styles-ui-screen-css{display:flex;flex:1 1 auto;flex-direction:column;margin:16px}.global-styles-ui-screen-css .block-editor-global-styles-advanced-panel{flex:1 1 auto}.global-styles-ui-screen-css .block-editor-global-styles-advanced-panel__custom-css-input,.global-styles-ui-screen-css .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field{display:flex;flex:1 1 auto;flex-direction:column}.global-styles-ui-screen-css .block-editor-global-styles-advanced-panel__custom-css-input textarea{flex:1 1 auto}.global-styles-ui-screen-css-help-link{display:inline-block;margin-top:8px}.global-styles-ui-screen-variations{border-top:1px solid #ddd;margin-top:16px}.global-styles-ui-screen-variations>*{margin:24px 16px}.global-styles-ui-sidebar__navigator-provider{height:100%}.global-styles-ui-sidebar__navigator-screen{display:flex;flex-direction:column;height:100%}.global-styles-ui-color-palette__tablist-container{border-bottom:1px solid #ddd}.global-styles-ui-color-palette__tablist{margin-bottom:-1px}.global-styles-ui-sidebar__navigator-screen .single-column{grid-column:span 1}.global-styles-ui-screen-root.global-styles-ui-screen-root,.global-styles-ui-screen-style-variations.global-styles-ui-screen-style-variations{background:unset;color:inherit}.global-styles-ui-sidebar__panel .block-editor-block-icon svg{fill:currentColor}.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile,.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile .global-styles-ui-screen-root__active-style-tile-preview{border-radius:2px}.global-styles-ui-screen-root__active-style-tile-preview{clip-path:border-box}.global-styles-ui-color-palette-panel,.global-styles-ui-duotone-palette-panel,.global-styles-ui-gradient-palette-panel{padding:16px}.font-library-page__content{display:flex;flex-direction:column;flex-grow:1;min-height:0}.font-library-page:has(.font-library__footer) .font-library-page__content{padding-bottom:90px}.font-library-page__tablist{border-bottom:1px solid #f0f0f0;flex-shrink:0;padding:0 24px}.font-library-page__tab-panel{flex-grow:1;min-height:0;overflow:auto}")); 40661 document.head.appendChild(style); 40662 } 40663 40664 // routes/font-list/stage.tsx 40665 var import_jsx_runtime197 = __toESM(require_jsx_runtime()); 40666 var { Tabs: Tabs2 } = unlock4(import_components56.privateApis); 40667 var { useGlobalStyles } = unlock4(import_editor.privateApis); 40668 function FontLibraryPage() { 40669 const { records: collections = [] } = (0, import_core_data11.useEntityRecords)("root", "fontCollection", { 40670 _fields: "slug,name,description" 40671 }); 40672 const [activeTab, setActiveTab] = (0, import_element100.useState)("installed-fonts"); 40673 const { base, user, setUser, isReady } = useGlobalStyles(); 40674 const canUserCreate = (0, import_data13.useSelect)((select) => { 40675 return select(import_core_data11.store).canUser("create", { 40676 kind: "postType", 40677 name: "wp_font_family" 40678 }); 40679 }, []); 40680 if (!isReady) { 40681 return null; 40682 } 40683 const tabs = [ 40684 { 40685 id: "installed-fonts", 40686 title: (0, import_i18n59._x)("Library", "Font library") 40687 } 40688 ]; 40689 if (canUserCreate) { 40690 tabs.push({ 40691 id: "upload-fonts", 40692 title: (0, import_i18n59._x)("Upload", "noun") 40693 }); 40694 tabs.push( 40695 ...(collections || []).map(({ slug, name: name2 }) => ({ 40696 id: slug, 40697 title: collections && collections.length === 1 && slug === "google-fonts" ? (0, import_i18n59.__)("Install Fonts") : name2 40698 })) 40699 ); 40700 } 40701 return /* @__PURE__ */ (0, import_jsx_runtime197.jsx)(page_default, { title: (0, import_i18n59.__)("Fonts"), className: "font-library-page", children: /* @__PURE__ */ (0, import_jsx_runtime197.jsx)("div", { className: "font-library-page__content", children: /* @__PURE__ */ (0, import_jsx_runtime197.jsxs)( 40702 Tabs2, 40703 { 40704 selectedTabId: activeTab, 40705 onSelect: (tabId) => setActiveTab(tabId), 40706 children: [ 40707 /* @__PURE__ */ (0, import_jsx_runtime197.jsx)("div", { className: "font-library-page__tablist", children: /* @__PURE__ */ (0, import_jsx_runtime197.jsx)(Tabs2.TabList, { children: tabs.map(({ id, title }) => /* @__PURE__ */ (0, import_jsx_runtime197.jsx)(Tabs2.Tab, { tabId: id, children: title }, id)) }) }), 40708 tabs.map(({ id }) => /* @__PURE__ */ (0, import_jsx_runtime197.jsx)( 40709 Tabs2.TabPanel, 40710 { 40711 tabId: id, 40712 focusable: false, 40713 className: "font-library-page__tab-panel", 40714 children: /* @__PURE__ */ (0, import_jsx_runtime197.jsx)( 40715 FontLibrary, 40716 { 40717 value: user, 40718 baseValue: base, 40719 onChange: setUser, 40720 activeTab: id 40721 } 40722 ) 40723 }, 40724 id 40725 )) 40726 ] 40727 } 40728 ) }) }); 40729 } 40730 function Stage() { 40731 return /* @__PURE__ */ (0, import_jsx_runtime197.jsx)(FontLibraryPage, {}); 40732 } 40733 var stage = Stage; 40734 export { 40735 stage 40736 }; 40737 /*! Bundled license information: 40738 40739 use-sync-external-store/cjs/use-sync-external-store-shim.development.js: 40740 (** 40741 * @license React 40742 * use-sync-external-store-shim.development.js 40743 * 40744 * Copyright (c) Meta Platforms, Inc. and affiliates. 40745 * 40746 * This source code is licensed under the MIT license found in the 40747 * LICENSE file in the root directory of this source tree. 40748 *) 40749 40750 use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js: 40751 (** 40752 * @license React 40753 * use-sync-external-store-shim/with-selector.development.js 40754 * 40755 * Copyright (c) Meta Platforms, Inc. and affiliates. 40756 * 40757 * This source code is licensed under the MIT license found in the 40758 * LICENSE file in the root directory of this source tree. 40759 *) 40760 40761 is-plain-object/dist/is-plain-object.mjs: 40762 (*! 40763 * is-plain-object <https://github.com/jonschlinkert/is-plain-object> 40764 * 40765 * Copyright (c) 2014-2017, Jon Schlinkert. 40766 * Released under the MIT License. 40767 *) 40768 */
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated : Tue Nov 3 08:20:36 2026 | Cross-referenced by PHPXref |