| [ Index ] |
PHP Cross Reference of WordPress Trunk (Updated Daily) |
[Summary view] [Print] [Text view]
1 (function() { 2 var wp; 3 (wp ||= {}).widgets = (() => { 4 var __create = Object.create; 5 var __defProp = Object.defineProperty; 6 var __getOwnPropDesc = Object.getOwnPropertyDescriptor; 7 var __getOwnPropNames = Object.getOwnPropertyNames; 8 var __getProtoOf = Object.getPrototypeOf; 9 var __hasOwnProp = Object.prototype.hasOwnProperty; 10 var __commonJS = (cb, mod) => function __require() { 11 return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; 12 }; 13 var __export = (target, all) => { 14 for (var name3 in all) 15 __defProp(target, name3, { get: all[name3], enumerable: true }); 16 }; 17 var __copyProps = (to, from, except, desc) => { 18 if (from && typeof from === "object" || typeof from === "function") { 19 for (let key of __getOwnPropNames(from)) 20 if (!__hasOwnProp.call(to, key) && key !== except) 21 __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); 22 } 23 return to; 24 }; 25 var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( 26 // If the importer is in node compatibility mode or this is not an ESM 27 // file that has been converted to a CommonJS file using a Babel- 28 // compatible transform (i.e. "__esModule" has not been set), then set 29 // "default" to the CommonJS "module.exports" for node compatibility. 30 isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, 31 mod 32 )); 33 var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); 34 35 // package-external:@wordpress/blocks 36 var require_blocks = __commonJS({ 37 "package-external:@wordpress/blocks"(exports, module) { 38 module.exports = window.wp.blocks; 39 } 40 }); 41 42 // package-external:@wordpress/element 43 var require_element = __commonJS({ 44 "package-external:@wordpress/element"(exports, module) { 45 module.exports = window.wp.element; 46 } 47 }); 48 49 // package-external:@wordpress/primitives 50 var require_primitives = __commonJS({ 51 "package-external:@wordpress/primitives"(exports, module) { 52 module.exports = window.wp.primitives; 53 } 54 }); 55 56 // vendor-external:react/jsx-runtime 57 var require_jsx_runtime = __commonJS({ 58 "vendor-external:react/jsx-runtime"(exports, module) { 59 module.exports = window.ReactJSXRuntime; 60 } 61 }); 62 63 // package-external:@wordpress/block-editor 64 var require_block_editor = __commonJS({ 65 "package-external:@wordpress/block-editor"(exports, module) { 66 module.exports = window.wp.blockEditor; 67 } 68 }); 69 70 // package-external:@wordpress/components 71 var require_components = __commonJS({ 72 "package-external:@wordpress/components"(exports, module) { 73 module.exports = window.wp.components; 74 } 75 }); 76 77 // package-external:@wordpress/i18n 78 var require_i18n = __commonJS({ 79 "package-external:@wordpress/i18n"(exports, module) { 80 module.exports = window.wp.i18n; 81 } 82 }); 83 84 // package-external:@wordpress/core-data 85 var require_core_data = __commonJS({ 86 "package-external:@wordpress/core-data"(exports, module) { 87 module.exports = window.wp.coreData; 88 } 89 }); 90 91 // vendor-external:react 92 var require_react = __commonJS({ 93 "vendor-external:react"(exports, module) { 94 module.exports = window.React; 95 } 96 }); 97 98 // vendor-external:react-dom 99 var require_react_dom = __commonJS({ 100 "vendor-external:react-dom"(exports, module) { 101 module.exports = window.ReactDOM; 102 } 103 }); 104 105 // 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 106 var require_use_sync_external_store_shim_development = __commonJS({ 107 "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) { 108 "use strict"; 109 (function() { 110 function is(x, y) { 111 return x === y && (0 !== x || 1 / x === 1 / y) || x !== x && y !== y; 112 } 113 function useSyncExternalStore$2(subscribe2, getSnapshot) { 114 didWarnOld18Alpha || void 0 === React88.startTransition || (didWarnOld18Alpha = true, console.error( 115 "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." 116 )); 117 var value = getSnapshot(); 118 if (!didWarnUncachedGetSnapshot) { 119 var cachedValue = getSnapshot(); 120 objectIs(value, cachedValue) || (console.error( 121 "The result of getSnapshot should be cached to avoid an infinite loop" 122 ), didWarnUncachedGetSnapshot = true); 123 } 124 cachedValue = useState22({ 125 inst: { value, getSnapshot } 126 }); 127 var inst = cachedValue[0].inst, forceUpdate = cachedValue[1]; 128 useLayoutEffect3( 129 function() { 130 inst.value = value; 131 inst.getSnapshot = getSnapshot; 132 checkIfSnapshotChanged(inst) && forceUpdate({ inst }); 133 }, 134 [subscribe2, value, getSnapshot] 135 ); 136 useEffect15( 137 function() { 138 checkIfSnapshotChanged(inst) && forceUpdate({ inst }); 139 return subscribe2(function() { 140 checkIfSnapshotChanged(inst) && forceUpdate({ inst }); 141 }); 142 }, 143 [subscribe2] 144 ); 145 useDebugValue2(value); 146 return value; 147 } 148 function checkIfSnapshotChanged(inst) { 149 var latestGetSnapshot = inst.getSnapshot; 150 inst = inst.value; 151 try { 152 var nextValue = latestGetSnapshot(); 153 return !objectIs(inst, nextValue); 154 } catch (error2) { 155 return true; 156 } 157 } 158 function useSyncExternalStore$1(subscribe2, getSnapshot) { 159 return getSnapshot(); 160 } 161 "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error()); 162 var React88 = require_react(), objectIs = "function" === typeof Object.is ? Object.is : is, useState22 = React88.useState, useEffect15 = React88.useEffect, useLayoutEffect3 = React88.useLayoutEffect, useDebugValue2 = React88.useDebugValue, didWarnOld18Alpha = false, didWarnUncachedGetSnapshot = false, shim = "undefined" === typeof window || "undefined" === typeof window.document || "undefined" === typeof window.document.createElement ? useSyncExternalStore$1 : useSyncExternalStore$2; 163 exports.useSyncExternalStore = void 0 !== React88.useSyncExternalStore ? React88.useSyncExternalStore : shim; 164 "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error()); 165 })(); 166 } 167 }); 168 169 // node_modules/.store/use-sync-external-store@1.7.0-jHNF5n8408rkWhZ5NHKclA/node_modules/use-sync-external-store/shim/index.js 170 var require_shim = __commonJS({ 171 "node_modules/.store/use-sync-external-store@1.7.0-jHNF5n8408rkWhZ5NHKclA/node_modules/use-sync-external-store/shim/index.js"(exports, module) { 172 "use strict"; 173 if (false) { 174 module.exports = null; 175 } else { 176 module.exports = require_use_sync_external_store_shim_development(); 177 } 178 } 179 }); 180 181 // 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 182 var require_with_selector_development = __commonJS({ 183 "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) { 184 "use strict"; 185 (function() { 186 function is(x, y) { 187 return x === y && (0 !== x || 1 / x === 1 / y) || x !== x && y !== y; 188 } 189 "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error()); 190 var React88 = require_react(), shim = require_shim(), objectIs = "function" === typeof Object.is ? Object.is : is, useSyncExternalStore2 = shim.useSyncExternalStore, useRef36 = React88.useRef, useEffect15 = React88.useEffect, useMemo23 = React88.useMemo, useDebugValue2 = React88.useDebugValue; 191 exports.useSyncExternalStoreWithSelector = function(subscribe2, getSnapshot, getServerSnapshot, selector, isEqual) { 192 var instRef = useRef36(null); 193 if (null === instRef.current) { 194 var inst = { hasValue: false, value: null }; 195 instRef.current = inst; 196 } else inst = instRef.current; 197 instRef = useMemo23( 198 function() { 199 function memoizedSelector(nextSnapshot) { 200 if (!hasMemo) { 201 hasMemo = true; 202 memoizedSnapshot = nextSnapshot; 203 nextSnapshot = selector(nextSnapshot); 204 if (void 0 !== isEqual && inst.hasValue) { 205 var currentSelection = inst.value; 206 if (isEqual(currentSelection, nextSnapshot)) 207 return memoizedSelection = currentSelection; 208 } 209 return memoizedSelection = nextSnapshot; 210 } 211 currentSelection = memoizedSelection; 212 if (objectIs(memoizedSnapshot, nextSnapshot)) 213 return currentSelection; 214 var nextSelection = selector(nextSnapshot); 215 if (void 0 !== isEqual && isEqual(currentSelection, nextSelection)) 216 return memoizedSnapshot = nextSnapshot, currentSelection; 217 memoizedSnapshot = nextSnapshot; 218 return memoizedSelection = nextSelection; 219 } 220 var hasMemo = false, memoizedSnapshot, memoizedSelection, maybeGetServerSnapshot = void 0 === getServerSnapshot ? null : getServerSnapshot; 221 return [ 222 function() { 223 return memoizedSelector(getSnapshot()); 224 }, 225 null === maybeGetServerSnapshot ? void 0 : function() { 226 return memoizedSelector(maybeGetServerSnapshot()); 227 } 228 ]; 229 }, 230 [getSnapshot, getServerSnapshot, selector, isEqual] 231 ); 232 var value = useSyncExternalStore2(subscribe2, instRef[0], instRef[1]); 233 useEffect15( 234 function() { 235 inst.hasValue = true; 236 inst.value = value; 237 }, 238 [value] 239 ); 240 useDebugValue2(value); 241 return value; 242 }; 243 "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error()); 244 })(); 245 } 246 }); 247 248 // node_modules/.store/use-sync-external-store@1.7.0-jHNF5n8408rkWhZ5NHKclA/node_modules/use-sync-external-store/shim/with-selector.js 249 var require_with_selector = __commonJS({ 250 "node_modules/.store/use-sync-external-store@1.7.0-jHNF5n8408rkWhZ5NHKclA/node_modules/use-sync-external-store/shim/with-selector.js"(exports, module) { 251 "use strict"; 252 if (false) { 253 module.exports = null; 254 } else { 255 module.exports = require_with_selector_development(); 256 } 257 } 258 }); 259 260 // package-external:@wordpress/compose 261 var require_compose = __commonJS({ 262 "package-external:@wordpress/compose"(exports, module) { 263 module.exports = window.wp.compose; 264 } 265 }); 266 267 // package-external:@wordpress/data 268 var require_data = __commonJS({ 269 "package-external:@wordpress/data"(exports, module) { 270 module.exports = window.wp.data; 271 } 272 }); 273 274 // package-external:@wordpress/notices 275 var require_notices = __commonJS({ 276 "package-external:@wordpress/notices"(exports, module) { 277 module.exports = window.wp.notices; 278 } 279 }); 280 281 // package-external:@wordpress/api-fetch 282 var require_api_fetch = __commonJS({ 283 "package-external:@wordpress/api-fetch"(exports, module) { 284 module.exports = window.wp.apiFetch; 285 } 286 }); 287 288 // packages/widgets/build-module/index.mjs 289 var index_exports = {}; 290 __export(index_exports, { 291 MoveToWidgetArea: () => MoveToWidgetArea, 292 addWidgetIdToBlock: () => addWidgetIdToBlock, 293 getWidgetIdFromBlock: () => getWidgetIdFromBlock, 294 registerLegacyWidgetBlock: () => registerLegacyWidgetBlock, 295 registerLegacyWidgetVariations: () => registerLegacyWidgetVariations, 296 registerWidgetGroupBlock: () => registerWidgetGroupBlock 297 }); 298 var import_blocks5 = __toESM(require_blocks(), 1); 299 300 // packages/widgets/build-module/blocks/legacy-widget/index.mjs 301 var legacy_widget_exports = {}; 302 __export(legacy_widget_exports, { 303 metadata: () => block_default, 304 name: () => name, 305 settings: () => settings 306 }); 307 308 // packages/icons/build-module/library/brush.mjs 309 var import_primitives = __toESM(require_primitives(), 1); 310 var import_jsx_runtime = __toESM(require_jsx_runtime(), 1); 311 var brush_default = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_primitives.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_runtime.jsx)(import_primitives.Path, { d: "M17 15.25L17.5858 14.6642C18.3668 13.8832 18.3668 12.6168 17.5858 11.8358L16.7071 10.9571C16.3166 10.5666 16.3166 9.93342 16.7071 9.54289L20 6.25C20.5523 5.69772 20.5523 4.80228 20 4.25C19.4477 3.69772 18.5523 3.69771 18 4.25L14.7071 7.54289C14.3166 7.93342 13.6834 7.93342 13.2929 7.54289L12.4142 6.66421C11.6332 5.88316 10.3668 5.88316 9.58579 6.66421L9 7.25M17 15.25L14.1213 18.1287C12.9497 19.3003 11.0503 19.3003 9.87868 18.1287L8 16.25M17 15.25L9 7.25M9 7.25L4 12.25L6 14.25M6 14.25L8 12.25M6 14.25L8 16.25M8 16.25L10 14.25" }) }); 312 313 // packages/icons/build-module/library/check.mjs 314 var import_primitives2 = __toESM(require_primitives(), 1); 315 var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1); 316 var check_default = /* @__PURE__ */ (0, import_jsx_runtime2.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_runtime2.jsx)(import_primitives2.Path, { d: "M7 12L10 15L17 8" }) }); 317 318 // packages/icons/build-module/library/chevron-down.mjs 319 var import_primitives3 = __toESM(require_primitives(), 1); 320 var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1); 321 var chevron_down_default = /* @__PURE__ */ (0, import_jsx_runtime3.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_runtime3.jsx)(import_primitives3.Path, { d: "M7 11L12 15L17 11" }) }); 322 323 // packages/icons/build-module/library/group.mjs 324 var import_primitives4 = __toESM(require_primitives(), 1); 325 var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1); 326 var group_default = /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_primitives4.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [ 327 /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives4.Path, { d: "M4.75 11C4.75 10.3096 5.30964 9.75 6 9.75H13C13.6904 9.75 14.25 10.3096 14.25 11V18C14.25 18.6904 13.6904 19.25 13 19.25H6C5.30964 19.25 4.75 18.6904 4.75 18V11Z" }), 328 /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives4.Path, { d: "M9.75 6C9.75 5.30964 10.3096 4.75 11 4.75H18C18.6904 4.75 19.25 5.30964 19.25 6V13C19.25 13.6904 18.6904 14.25 18 14.25H11C10.3096 14.25 9.75 13.6904 9.75 13V6Z" }) 329 ] }); 330 331 // packages/icons/build-module/library/move-to.mjs 332 var import_primitives5 = __toESM(require_primitives(), 1); 333 var import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1); 334 var move_to_default = /* @__PURE__ */ (0, import_jsx_runtime5.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_runtime5.jsx)(import_primitives5.Path, { d: "M11 4H15C16.933 4 18.5 5.567 18.5 7.5C18.5 9.433 16.933 11 15 11H8.5C6.567 11 5 12.567 5 14.5C5 16.433 6.567 18 8.5 18H11H17M14 21L17 18L14 15" }) }); 335 336 // packages/icons/build-module/library/widget.mjs 337 var import_primitives6 = __toESM(require_primitives(), 1); 338 var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1); 339 var widget_default = /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_primitives6.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [ 340 /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives6.Path, { d: "M19.25 8.25V7C19.25 6.30964 18.6904 5.75 18 5.75H17M7 5.75H6C5.30964 5.75 4.75 6.30964 4.75 7V8.25L4.75 19C4.75 19.6904 5.30964 20.25 6 20.25H18C18.6904 20.25 19.25 19.6904 19.25 19V8.25M19.25 8.25H4.75M7.25 11.75H9.25M11 11.75H13M14.75 11.75H16.75M7 5.75V3M7 5.75H17M17 5.75V3" }), 341 /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives6.Path, { d: "M18 5.75H6C5.30964 5.75 4.75 6.30964 4.75 7V8.25H19.25V7C19.25 6.30964 18.6904 5.75 18 5.75Z", fill: "currentColor" }) 342 ] }); 343 344 // packages/widgets/build-module/blocks/legacy-widget/block.json 345 var block_default = { 346 $schema: "https://schemas.wp.org/trunk/block.json", 347 apiVersion: 3, 348 name: "core/legacy-widget", 349 title: "Legacy Widget", 350 category: "widgets", 351 description: "Display a legacy widget.", 352 textdomain: "default", 353 attributes: { 354 id: { 355 type: "string", 356 default: null 357 }, 358 idBase: { 359 type: "string", 360 default: null 361 }, 362 instance: { 363 type: "object", 364 default: null 365 } 366 }, 367 supports: { 368 html: false, 369 customClassName: false, 370 reusable: false 371 }, 372 editorStyle: "wp-block-legacy-widget-editor" 373 }; 374 375 // node_modules/.store/clsx@2.1.1-XOLP1vUL9vEGfpiXm37fAw/node_modules/clsx/dist/clsx.mjs 376 function r(e) { 377 var t, f, n = ""; 378 if ("string" == typeof e || "number" == typeof e) n += e; 379 else if ("object" == typeof e) if (Array.isArray(e)) { 380 var o = e.length; 381 for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f); 382 } else for (f in e) e[f] && (n && (n += " "), n += f); 383 return n; 384 } 385 function clsx() { 386 for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t); 387 return n; 388 } 389 var clsx_default = clsx; 390 391 // packages/widgets/build-module/blocks/legacy-widget/edit/index.mjs 392 var import_block_editor3 = __toESM(require_block_editor(), 1); 393 var import_components5 = __toESM(require_components(), 1); 394 var import_i18n10 = __toESM(require_i18n(), 1); 395 var import_element37 = __toESM(require_element(), 1); 396 var import_core_data2 = __toESM(require_core_data(), 1); 397 398 // packages/widgets/build-module/blocks/legacy-widget/edit/widget-type-selector.mjs 399 var import_components = __toESM(require_components(), 1); 400 401 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useRenderElement.mjs 402 var React4 = __toESM(require_react(), 1); 403 404 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useRefWithInit.mjs 405 var React = __toESM(require_react(), 1); 406 var UNINITIALIZED = {}; 407 function useRefWithInit(init, initArg) { 408 const ref = React.useRef(UNINITIALIZED); 409 if (ref.current === UNINITIALIZED) { 410 ref.current = init(initArg); 411 } 412 return ref; 413 } 414 415 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useMergedRefs.mjs 416 function useMergedRefs(a, b, c, d) { 417 const forkRef = useRefWithInit(createForkRef).current; 418 if (didChange(forkRef, a, b, c, d)) { 419 update(forkRef, [a, b, c, d]); 420 } 421 return forkRef.callback; 422 } 423 function useMergedRefsN(refs) { 424 const forkRef = useRefWithInit(createForkRef).current; 425 if (didChangeN(forkRef, refs)) { 426 update(forkRef, refs); 427 } 428 return forkRef.callback; 429 } 430 function createForkRef() { 431 return { 432 callback: null, 433 cleanup: null, 434 refs: [] 435 }; 436 } 437 function didChange(forkRef, a, b, c, d) { 438 return forkRef.refs[0] !== a || forkRef.refs[1] !== b || forkRef.refs[2] !== c || forkRef.refs[3] !== d; 439 } 440 function didChangeN(forkRef, newRefs) { 441 return forkRef.refs.length !== newRefs.length || forkRef.refs.some((ref, index2) => ref !== newRefs[index2]); 442 } 443 function update(forkRef, refs) { 444 forkRef.refs = refs; 445 if (refs.every((ref) => ref == null)) { 446 forkRef.callback = null; 447 return; 448 } 449 forkRef.callback = (instance) => { 450 if (forkRef.cleanup) { 451 forkRef.cleanup(); 452 forkRef.cleanup = null; 453 } 454 if (instance != null) { 455 const cleanupCallbacks = Array(refs.length).fill(null); 456 for (let i = 0; i < refs.length; i += 1) { 457 const ref = refs[i]; 458 if (ref == null) { 459 continue; 460 } 461 switch (typeof ref) { 462 case "function": { 463 const refCleanup = ref(instance); 464 if (typeof refCleanup === "function") { 465 cleanupCallbacks[i] = refCleanup; 466 } 467 break; 468 } 469 case "object": { 470 ref.current = instance; 471 break; 472 } 473 default: 474 } 475 } 476 forkRef.cleanup = () => { 477 for (let i = 0; i < refs.length; i += 1) { 478 const ref = refs[i]; 479 if (ref == null) { 480 continue; 481 } 482 switch (typeof ref) { 483 case "function": { 484 const cleanupCallback = cleanupCallbacks[i]; 485 if (typeof cleanupCallback === "function") { 486 cleanupCallback(); 487 } else { 488 void ref(null); 489 } 490 break; 491 } 492 case "object": { 493 ref.current = null; 494 break; 495 } 496 default: 497 } 498 } 499 }; 500 } 501 }; 502 } 503 504 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/getReactElementRef.mjs 505 var React3 = __toESM(require_react(), 1); 506 507 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/reactVersion.mjs 508 var React2 = __toESM(require_react(), 1); 509 var majorVersion = parseInt(React2.version, 10); 510 function isReactVersionAtLeast(reactVersionToCheck) { 511 return majorVersion >= reactVersionToCheck; 512 } 513 514 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/getReactElementRef.mjs 515 function getReactElementRef(element) { 516 if (!/* @__PURE__ */ React3.isValidElement(element)) { 517 return null; 518 } 519 const reactElement = element; 520 const propsWithRef = reactElement.props; 521 return (isReactVersionAtLeast(19) ? propsWithRef?.ref : reactElement.ref) ?? null; 522 } 523 524 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/mergeObjects.mjs 525 function mergeObjects(a, b) { 526 if (a && !b) { 527 return a; 528 } 529 if (!a && b) { 530 return b; 531 } 532 if (a || b) { 533 return { 534 ...a, 535 ...b 536 }; 537 } 538 return void 0; 539 } 540 541 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/createLogOnce.mjs 542 var loggedMessages; 543 if (true) { 544 loggedMessages = /* @__PURE__ */ new Set(); 545 } 546 function createLogOnce(severity, prefix) { 547 return function logOnce(...messages) { 548 if (true) { 549 const message = messages.join(" "); 550 const output = prefix ? `$prefix}: $message}` : message; 551 const key = `$severity}:$output}`; 552 if (!loggedMessages.has(key)) { 553 loggedMessages.add(key); 554 if (severity === "warn") { 555 console.warn(output); 556 } else { 557 console.error(output); 558 } 559 } 560 } 561 }; 562 } 563 564 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/warn.mjs 565 var warn = createLogOnce("warn", "Base UI"); 566 567 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/empty.mjs 568 function NOOP() { 569 } 570 var EMPTY_ARRAY = Object.freeze([]); 571 var EMPTY_OBJECT = Object.freeze({}); 572 573 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/getStateAttributesProps.mjs 574 function getStateAttributesProps(state, customMapping) { 575 const props = {}; 576 for (const key in state) { 577 const value = state[key]; 578 if (customMapping?.hasOwnProperty(key)) { 579 const customProps = customMapping[key](value); 580 if (customProps != null) { 581 Object.assign(props, customProps); 582 } 583 continue; 584 } 585 if (value === true) { 586 props[`data-$key.toLowerCase()}`] = ""; 587 } else if (value) { 588 props[`data-$key.toLowerCase()}`] = value.toString(); 589 } 590 } 591 return props; 592 } 593 594 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/resolveClassName.mjs 595 function resolveClassName(className, state) { 596 return typeof className === "function" ? className(state) : className; 597 } 598 599 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/resolveStyle.mjs 600 function resolveStyle(style, state) { 601 return typeof style === "function" ? style(state) : style; 602 } 603 604 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/merge-props/mergeProps.mjs 605 var EMPTY_PROPS = {}; 606 function mergeProps(a, b, c, d, e) { 607 if (!c && !d && !e && !a) { 608 return createInitialMergedProps(b); 609 } 610 let merged = createInitialMergedProps(a); 611 if (b) { 612 merged = mergeInto(merged, b); 613 } 614 if (c) { 615 merged = mergeInto(merged, c); 616 } 617 if (d) { 618 merged = mergeInto(merged, d); 619 } 620 if (e) { 621 merged = mergeInto(merged, e); 622 } 623 return merged; 624 } 625 function mergePropsN(props) { 626 if (props.length === 0) { 627 return EMPTY_PROPS; 628 } 629 if (props.length === 1) { 630 return createInitialMergedProps(props[0]); 631 } 632 let merged = createInitialMergedProps(props[0]); 633 for (let i = 1; i < props.length; i += 1) { 634 merged = mergeInto(merged, props[i]); 635 } 636 return merged; 637 } 638 function createInitialMergedProps(inputProps) { 639 if (isPropsGetter(inputProps)) { 640 return { 641 ...inputProps(EMPTY_PROPS) 642 }; 643 } 644 return copyInitialProps(inputProps); 645 } 646 function mergeInto(merged, inputProps) { 647 if (isPropsGetter(inputProps)) { 648 return inputProps(merged); 649 } 650 return mutablyMergeInto(merged, inputProps); 651 } 652 function copyInitialProps(inputProps) { 653 const copiedProps = { 654 ...inputProps 655 }; 656 for (const propName in copiedProps) { 657 const propValue = copiedProps[propName]; 658 if (isEventHandler(propName, propValue)) { 659 copiedProps[propName] = wrapEventHandler(propValue); 660 } 661 } 662 return copiedProps; 663 } 664 function mutablyMergeInto(mergedProps, externalProps) { 665 if (!externalProps) { 666 return mergedProps; 667 } 668 for (const propName in externalProps) { 669 const externalPropValue = externalProps[propName]; 670 switch (propName) { 671 case "style": { 672 mergedProps[propName] = mergeObjects(mergedProps.style, externalPropValue); 673 break; 674 } 675 case "className": { 676 mergedProps[propName] = mergeClassNames(mergedProps.className, externalPropValue); 677 break; 678 } 679 default: { 680 if (isEventHandler(propName, externalPropValue)) { 681 mergedProps[propName] = mergeEventHandlers(mergedProps[propName], externalPropValue); 682 } else { 683 mergedProps[propName] = externalPropValue; 684 } 685 } 686 } 687 } 688 return mergedProps; 689 } 690 function isEventHandler(key, value) { 691 const code0 = key.charCodeAt(0); 692 const code1 = key.charCodeAt(1); 693 const code2 = key.charCodeAt(2); 694 return code0 === 111 && code1 === 110 && code2 >= 65 && code2 <= 90 && (typeof value === "function" || typeof value === "undefined"); 695 } 696 function isPropsGetter(inputProps) { 697 return typeof inputProps === "function"; 698 } 699 function mergeEventHandlers(ourHandler, theirHandler) { 700 if (!theirHandler) { 701 return ourHandler; 702 } 703 if (!ourHandler) { 704 return wrapEventHandler(theirHandler); 705 } 706 return (...args) => { 707 const event = args[0]; 708 if (isSyntheticEvent(event)) { 709 const baseUIEvent = event; 710 makeEventPreventable(baseUIEvent); 711 const result2 = theirHandler(...args); 712 if (!baseUIEvent.baseUIHandlerPrevented) { 713 ourHandler?.(...args); 714 } 715 return result2; 716 } 717 const result = theirHandler(...args); 718 ourHandler?.(...args); 719 return result; 720 }; 721 } 722 function wrapEventHandler(handler) { 723 if (!handler) { 724 return handler; 725 } 726 return (...args) => { 727 const event = args[0]; 728 if (isSyntheticEvent(event)) { 729 makeEventPreventable(event); 730 } 731 return handler(...args); 732 }; 733 } 734 function makeEventPreventable(event) { 735 event.preventBaseUIHandler = () => { 736 event.baseUIHandlerPrevented = true; 737 }; 738 return event; 739 } 740 function mergeClassNames(ourClassName, theirClassName) { 741 if (theirClassName) { 742 if (ourClassName) { 743 return theirClassName + " " + ourClassName; 744 } 745 return theirClassName; 746 } 747 return ourClassName; 748 } 749 function isSyntheticEvent(event) { 750 return event != null && typeof event === "object" && "nativeEvent" in event; 751 } 752 753 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useRenderElement.mjs 754 var import_react = __toESM(require_react(), 1); 755 function useRenderElement(element, componentProps, params = {}) { 756 let renderProp = componentProps.render; 757 if (params.enabled !== false) { 758 renderProp = unwrapLazyRenderProp(renderProp); 759 } 760 const outProps = useRenderElementProps(componentProps, params, renderProp); 761 if (params.enabled === false) { 762 return null; 763 } 764 const state = params.state ?? EMPTY_OBJECT; 765 return evaluateRenderProp(element, renderProp, outProps, state); 766 } 767 function useRenderElementProps(componentProps, params, renderProp) { 768 const { 769 className: classNameProp, 770 style: styleProp 771 } = componentProps; 772 const { 773 state = EMPTY_OBJECT, 774 ref, 775 props, 776 stateAttributesMapping: stateAttributesMapping6, 777 enabled = true 778 } = params; 779 const className = enabled ? resolveClassName(classNameProp, state) : void 0; 780 const style = enabled ? resolveStyle(styleProp, state) : void 0; 781 const stateProps = enabled ? getStateAttributesProps(state, stateAttributesMapping6) : EMPTY_OBJECT; 782 const resolvedProps = enabled && props ? resolveRenderFunctionProps(props) : void 0; 783 const outProps = enabled ? mergeObjects(stateProps, resolvedProps) ?? {} : EMPTY_OBJECT; 784 if (typeof document !== "undefined") { 785 if (!enabled) { 786 void useMergedRefs(null, null); 787 } else if (Array.isArray(ref)) { 788 outProps.ref = useMergedRefsN([outProps.ref, getReactElementRef(renderProp), ...ref]); 789 } else { 790 outProps.ref = useMergedRefs(outProps.ref, getReactElementRef(renderProp), ref); 791 } 792 } 793 if (!enabled) { 794 return EMPTY_OBJECT; 795 } 796 if (className !== void 0) { 797 outProps.className = mergeClassNames(outProps.className, className); 798 } 799 if (style !== void 0) { 800 outProps.style = mergeObjects(outProps.style, style); 801 } 802 return outProps; 803 } 804 function resolveRenderFunctionProps(props) { 805 if (Array.isArray(props)) { 806 return mergePropsN(props); 807 } 808 return mergeProps(void 0, props); 809 } 810 var REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for("react.lazy"); 811 var COMPONENT_IDENTIFIER_PATTERN = /^[A-Z][A-Za-z0-9$]*$/; 812 var LOWERCASE_CHARACTER_PATTERN = /[a-z]/; 813 function unwrapLazyRenderProp(render) { 814 if (render?.$$typeof !== REACT_LAZY_TYPE) { 815 return render; 816 } 817 const unwrapped = React4.Children.toArray(render)[0]; 818 return /* @__PURE__ */ React4.isValidElement(unwrapped) ? unwrapped : render; 819 } 820 function evaluateRenderProp(element, render, props, state) { 821 if (render) { 822 if (typeof render === "function") { 823 if (true) { 824 warnIfRenderPropLooksLikeComponent(render); 825 } 826 return render(props, state); 827 } 828 const mergedProps = mergeProps(props, render.props); 829 mergedProps.ref = props.ref; 830 if (true) { 831 if (!/* @__PURE__ */ React4.isValidElement(render)) { 832 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")); 833 } 834 } 835 return /* @__PURE__ */ React4.cloneElement(render, mergedProps); 836 } 837 return renderTag(element, props); 838 } 839 function warnIfRenderPropLooksLikeComponent(renderFn) { 840 const functionName = renderFn.name; 841 if (functionName.length === 0) { 842 return; 843 } 844 if (!COMPONENT_IDENTIFIER_PATTERN.test(functionName)) { 845 return; 846 } 847 if (!LOWERCASE_CHARACTER_PATTERN.test(functionName)) { 848 return; 849 } 850 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"); 851 } 852 function renderTag(Tag, props) { 853 if (Tag === "button") { 854 return /* @__PURE__ */ (0, import_react.createElement)("button", { 855 type: "button", 856 ...props, 857 key: props.key 858 }); 859 } 860 if (Tag === "img") { 861 return /* @__PURE__ */ (0, import_react.createElement)("img", { 862 alt: "", 863 ...props, 864 key: props.key 865 }); 866 } 867 return /* @__PURE__ */ React4.createElement(Tag, props); 868 } 869 870 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/safeReact.mjs 871 var React5 = __toESM(require_react(), 1); 872 var SafeReact = { 873 ...React5 874 }; 875 876 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useStableCallback.mjs 877 var useInsertionEffect = SafeReact.useInsertionEffect; 878 var useSafeInsertionEffect = ( 879 // React 17 doesn't have useInsertionEffect. 880 useInsertionEffect && // Preact replaces useInsertionEffect with useLayoutEffect and fires too late. 881 useInsertionEffect !== SafeReact.useLayoutEffect ? useInsertionEffect : (fn) => fn() 882 ); 883 function useStableCallback(callback) { 884 const stable = useRefWithInit(createStableCallback).current; 885 stable.next = callback; 886 useSafeInsertionEffect(stable.effect); 887 return stable.trampoline; 888 } 889 function createStableCallback() { 890 const stable = { 891 next: void 0, 892 callback: assertNotCalled, 893 trampoline: (...args) => stable.callback?.(...args), 894 effect: () => { 895 stable.callback = stable.next; 896 } 897 }; 898 return stable; 899 } 900 function assertNotCalled() { 901 if (true) { 902 throw ( 903 /* minify-error-disabled */ 904 new Error("Base UI: Cannot call an event handler while rendering.") 905 ); 906 } 907 } 908 909 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useIsoLayoutEffect.mjs 910 var React6 = __toESM(require_react(), 1); 911 var noop = () => { 912 }; 913 var useIsoLayoutEffect = typeof document !== "undefined" ? React6.useLayoutEffect : noop; 914 915 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useOpenChangeComplete.mjs 916 var React8 = __toESM(require_react(), 1); 917 918 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useAnimationsFinished.mjs 919 var ReactDOM = __toESM(require_react_dom(), 1); 920 921 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useOnMount.mjs 922 var React7 = __toESM(require_react(), 1); 923 function useOnMount(fn) { 924 React7.useEffect(fn, EMPTY_ARRAY); 925 } 926 927 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useAnimationFrame.mjs 928 var EMPTY = null; 929 var LAST_RAF = globalThis.requestAnimationFrame; 930 var Scheduler = class { 931 /* This implementation uses an array as a backing data-structure for frame callbacks. 932 * It allows `O(1)` callback cancelling by inserting a `null` in the array, though it 933 * never calls the native `cancelAnimationFrame` if there are no frames left. This can 934 * be much more efficient if there is a call pattern that alterns as 935 * "request-cancel-request-cancel-…". 936 * But in the case of "request-request-…-cancel-cancel-…", it leaves the final animation 937 * frame to run anyway. We turn that frame into a `O(1)` no-op via `callbacksCount`. */ 938 callbacks = []; 939 callbacksCount = 0; 940 nextId = 1; 941 startId = 1; 942 isScheduled = false; 943 tick = (timestamp) => { 944 this.isScheduled = false; 945 const currentCallbacks = this.callbacks; 946 const currentCallbacksCount = this.callbacksCount; 947 this.callbacks = []; 948 this.callbacksCount = 0; 949 this.startId = this.nextId; 950 if (currentCallbacksCount > 0) { 951 for (let i = 0; i < currentCallbacks.length; i += 1) { 952 currentCallbacks[i]?.(timestamp); 953 } 954 } 955 }; 956 request(fn) { 957 const id = this.nextId; 958 this.nextId += 1; 959 this.callbacks.push(fn); 960 this.callbacksCount += 1; 961 const didRAFChange = LAST_RAF !== requestAnimationFrame && (LAST_RAF = requestAnimationFrame, true); 962 if (!this.isScheduled || didRAFChange) { 963 requestAnimationFrame(this.tick); 964 this.isScheduled = true; 965 } 966 return id; 967 } 968 cancel(id) { 969 const index2 = id - this.startId; 970 if (index2 < 0 || index2 >= this.callbacks.length) { 971 return; 972 } 973 if (this.callbacks[index2] === null) { 974 return; 975 } 976 this.callbacks[index2] = null; 977 this.callbacksCount -= 1; 978 } 979 }; 980 var scheduler = new Scheduler(); 981 var AnimationFrame = class _AnimationFrame { 982 static create() { 983 return new _AnimationFrame(); 984 } 985 static request(fn) { 986 return scheduler.request(fn); 987 } 988 static cancel(id) { 989 return scheduler.cancel(id); 990 } 991 currentId = EMPTY; 992 /** 993 * Executes `fn` after `delay`, clearing any previously scheduled call. 994 */ 995 request(fn) { 996 this.cancel(); 997 this.currentId = scheduler.request(() => { 998 this.currentId = EMPTY; 999 fn(); 1000 }); 1001 } 1002 cancel = () => { 1003 if (this.currentId !== EMPTY) { 1004 scheduler.cancel(this.currentId); 1005 this.currentId = EMPTY; 1006 } 1007 }; 1008 disposeEffect = () => { 1009 return this.cancel; 1010 }; 1011 }; 1012 function useAnimationFrame() { 1013 const timeout = useRefWithInit(AnimationFrame.create).current; 1014 useOnMount(timeout.disposeEffect); 1015 return timeout; 1016 } 1017 1018 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/resolveRef.mjs 1019 function resolveRef(maybeRef) { 1020 if (maybeRef == null) { 1021 return maybeRef; 1022 } 1023 return "current" in maybeRef ? maybeRef.current : maybeRef; 1024 } 1025 1026 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/getFiniteAnimations.mjs 1027 function getFiniteAnimations(element, options) { 1028 return element.getAnimations(options).filter((animation) => { 1029 const timing = animation.effect?.getTiming(); 1030 return timing?.duration !== Infinity && timing?.iterations !== Infinity; 1031 }); 1032 } 1033 1034 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/TransitionStatusDataAttributes.mjs 1035 var startingStyle = "data-starting-style"; 1036 var endingStyle = "data-ending-style"; 1037 1038 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useAnimationsFinished.mjs 1039 var pendingCallbacks = null; 1040 function flushBeforePaint(fn) { 1041 if (!pendingCallbacks) { 1042 const callbacks = []; 1043 pendingCallbacks = callbacks; 1044 queueMicrotask(() => { 1045 pendingCallbacks = null; 1046 ReactDOM.flushSync(() => { 1047 for (const callback of callbacks) { 1048 callback(); 1049 } 1050 }); 1051 }); 1052 } 1053 pendingCallbacks.push(fn); 1054 } 1055 function useAnimationsFinished(elementOrRef, waitForStartingStyleRemoved = false, batch = false) { 1056 const frame = useAnimationFrame(); 1057 return useStableCallback((fnToExecute, signal = null) => { 1058 frame.cancel(); 1059 const element = resolveRef(elementOrRef); 1060 if (element == null) { 1061 return; 1062 } 1063 const resolvedElement = element; 1064 const done = () => { 1065 if (!batch) { 1066 ReactDOM.flushSync(fnToExecute); 1067 return; 1068 } 1069 flushBeforePaint(() => { 1070 if (!signal?.aborted) { 1071 fnToExecute(); 1072 } 1073 }); 1074 }; 1075 if (typeof resolvedElement.getAnimations !== "function" || globalThis.BASE_UI_ANIMATIONS_DISABLED) { 1076 fnToExecute(); 1077 return; 1078 } 1079 function exec() { 1080 Promise.all(getFiniteAnimations(resolvedElement).map((animation) => animation.finished.then(NOOP))).then(() => { 1081 if (!signal?.aborted) { 1082 done(); 1083 } 1084 }, () => { 1085 if (signal?.aborted) { 1086 return; 1087 } 1088 const currentAnimations = getFiniteAnimations(resolvedElement); 1089 if (currentAnimations.some((animation) => animation.pending || animation.playState !== "finished")) { 1090 exec(); 1091 return; 1092 } 1093 done(); 1094 }); 1095 } 1096 if (waitForStartingStyleRemoved) { 1097 const startingStyleAttribute = startingStyle; 1098 if (!resolvedElement.hasAttribute(startingStyleAttribute)) { 1099 frame.request(exec); 1100 return; 1101 } 1102 const attributeObserver = new MutationObserver(() => { 1103 if (!resolvedElement.hasAttribute(startingStyleAttribute)) { 1104 attributeObserver.disconnect(); 1105 exec(); 1106 } 1107 }); 1108 attributeObserver.observe(resolvedElement, { 1109 attributes: true, 1110 attributeFilter: [startingStyleAttribute] 1111 }); 1112 signal?.addEventListener("abort", () => attributeObserver.disconnect(), { 1113 once: true 1114 }); 1115 return; 1116 } 1117 frame.request(exec); 1118 }); 1119 } 1120 1121 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useOpenChangeComplete.mjs 1122 function useOpenChangeComplete(parameters) { 1123 const { 1124 enabled = true, 1125 open: open2, 1126 ref, 1127 batch = false, 1128 onComplete: onCompleteParam 1129 } = parameters; 1130 const onComplete = useStableCallback(onCompleteParam); 1131 const runOnceAnimationsFinish = useAnimationsFinished(ref, open2, batch); 1132 React8.useEffect(() => { 1133 if (!enabled) { 1134 return void 0; 1135 } 1136 const abortController = new AbortController(); 1137 runOnceAnimationsFinish(onComplete, abortController.signal); 1138 return () => { 1139 abortController.abort(); 1140 }; 1141 }, [enabled, open2, onComplete, runOnceAnimationsFinish]); 1142 } 1143 1144 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/stateAttributesMapping.mjs 1145 var STARTING_HOOK = { 1146 [startingStyle]: "" 1147 }; 1148 var ENDING_HOOK = { 1149 [endingStyle]: "" 1150 }; 1151 var transitionStatusMapping = { 1152 transitionStatus(value) { 1153 if (value === "starting") { 1154 return STARTING_HOOK; 1155 } 1156 if (value === "ending") { 1157 return ENDING_HOOK; 1158 } 1159 return null; 1160 } 1161 }; 1162 1163 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useTransitionStatus.mjs 1164 var React9 = __toESM(require_react(), 1); 1165 function useTransitionStatus(open2, enableIdleState = false, deferEndingState = false, animateInitialOpen = false) { 1166 const [transitionStatus, setTransitionStatus] = React9.useState(open2 && enableIdleState ? "idle" : void 0); 1167 const [mounted, setMounted] = React9.useState(open2 && !animateInitialOpen); 1168 if (open2 && !mounted) { 1169 setMounted(true); 1170 setTransitionStatus("starting"); 1171 } 1172 if (!open2 && mounted && transitionStatus !== "ending" && !deferEndingState) { 1173 setTransitionStatus("ending"); 1174 } 1175 if (!open2 && !mounted && transitionStatus === "ending") { 1176 setTransitionStatus(void 0); 1177 } 1178 useIsoLayoutEffect(() => { 1179 if (!open2 && mounted && transitionStatus !== "ending" && deferEndingState) { 1180 const frame = AnimationFrame.request(() => { 1181 setTransitionStatus("ending"); 1182 }); 1183 return () => { 1184 AnimationFrame.cancel(frame); 1185 }; 1186 } 1187 return void 0; 1188 }, [open2, mounted, transitionStatus, deferEndingState]); 1189 useIsoLayoutEffect(() => { 1190 if (!open2 || enableIdleState || transitionStatus === void 0) { 1191 return void 0; 1192 } 1193 const frame = AnimationFrame.request(() => { 1194 setTransitionStatus(void 0); 1195 }); 1196 return () => { 1197 AnimationFrame.cancel(frame); 1198 }; 1199 }, [enableIdleState, open2, transitionStatus]); 1200 useIsoLayoutEffect(() => { 1201 if (!open2 || !enableIdleState) { 1202 return void 0; 1203 } 1204 if (open2 && mounted && transitionStatus !== "idle") { 1205 setTransitionStatus("starting"); 1206 } 1207 const frame = AnimationFrame.request(() => { 1208 setTransitionStatus("idle"); 1209 }); 1210 return () => { 1211 AnimationFrame.cancel(frame); 1212 }; 1213 }, [enableIdleState, open2, mounted, transitionStatus]); 1214 return { 1215 mounted, 1216 setMounted, 1217 transitionStatus 1218 }; 1219 } 1220 1221 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useTimeout.mjs 1222 var EMPTY2 = 0; 1223 var Timeout = class _Timeout { 1224 static create() { 1225 return new _Timeout(); 1226 } 1227 currentId = EMPTY2; 1228 /** 1229 * Executes `fn` after `delay`, clearing any previously scheduled call. 1230 */ 1231 start(delay, fn) { 1232 this.clear(); 1233 this.currentId = setTimeout(() => { 1234 this.currentId = EMPTY2; 1235 fn(); 1236 }, delay); 1237 } 1238 isStarted() { 1239 return this.currentId !== EMPTY2; 1240 } 1241 clear = () => { 1242 if (this.currentId !== EMPTY2) { 1243 clearTimeout(this.currentId); 1244 this.currentId = EMPTY2; 1245 } 1246 }; 1247 disposeEffect = () => { 1248 return this.clear; 1249 }; 1250 }; 1251 function useTimeout() { 1252 const timeout = useRefWithInit(Timeout.create).current; 1253 useOnMount(timeout.disposeEffect); 1254 return timeout; 1255 } 1256 1257 // packages/ui/build-module/icon/icon.mjs 1258 var import_element = __toESM(require_element(), 1); 1259 var import_primitives7 = __toESM(require_primitives(), 1); 1260 var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1); 1261 var Icon = (0, import_element.forwardRef)( 1262 function UnforwardedIcon({ icon, size: size4 = 24, style, ...restProps }, ref) { 1263 const mergedStyle = icon.props.style || style ? { ...icon.props.style, ...style } : void 0; 1264 return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( 1265 import_primitives7.SVG, 1266 { 1267 ref, 1268 ...icon.props, 1269 ...restProps, 1270 ...mergedStyle ? { style: mergedStyle } : {}, 1271 width: size4, 1272 height: size4 1273 } 1274 ); 1275 } 1276 ); 1277 1278 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useControlled.mjs 1279 var React10 = __toESM(require_react(), 1); 1280 1281 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/error.mjs 1282 var error = createLogOnce("error", "Base UI"); 1283 1284 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useControlled.mjs 1285 function useControlled({ 1286 controlled, 1287 default: defaultProp, 1288 name: name3, 1289 state = "value" 1290 }) { 1291 const { 1292 current: isControlled 1293 } = React10.useRef(controlled !== void 0); 1294 const [valueState, setValue] = React10.useState(() => defaultProp); 1295 const value = isControlled && controlled !== void 0 ? controlled : valueState; 1296 if (true) { 1297 React10.useEffect(() => { 1298 if (isControlled !== (controlled !== void 0)) { 1299 error([`A component is changing the $isControlled ? "" : "un"}controlled $state} state of $name3} to be $isControlled ? "un" : ""}controlled.`, "Elements should not switch from uncontrolled to controlled (or vice versa).", `Decide between using a controlled or uncontrolled $name3} 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")); 1300 } 1301 }, [state, name3, controlled]); 1302 const { 1303 current: defaultValue 1304 } = React10.useRef(defaultProp); 1305 React10.useEffect(() => { 1306 if (!isControlled && serializeToDevModeString(defaultValue) !== serializeToDevModeString(defaultProp)) { 1307 error([`A component is changing the default $state} state of an uncontrolled $name3} after being initialized. To suppress this warning opt to use a controlled $name3}.`].join("\n")); 1308 } 1309 }, [defaultProp]); 1310 } 1311 const setValueIfUncontrolled = React10.useCallback((newValue) => { 1312 if (!isControlled) { 1313 setValue(newValue); 1314 } 1315 }, []); 1316 return [value, setValueIfUncontrolled]; 1317 } 1318 function serializeToDevModeString(input) { 1319 let nextId = 0; 1320 const seen = /* @__PURE__ */ new WeakMap(); 1321 try { 1322 const result = JSON.stringify(input, function replacer(key, value) { 1323 if (key === "_owner" && this != null && typeof this === "object" && "$$typeof" in this) { 1324 return void 0; 1325 } 1326 if (typeof value === "bigint") { 1327 return `__bigint__:$value}`; 1328 } 1329 if (value !== null && typeof value === "object") { 1330 const id = seen.get(value); 1331 if (id !== void 0) { 1332 return `__object__:$id}`; 1333 } 1334 seen.set(value, nextId); 1335 nextId += 1; 1336 } 1337 return value; 1338 }); 1339 return result ?? `__top__:$typeof input}`; 1340 } catch { 1341 return "__unserializable__"; 1342 } 1343 } 1344 1345 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/list/CompositeList.mjs 1346 var React12 = __toESM(require_react(), 1); 1347 1348 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/list/CompositeListContext.mjs 1349 var React11 = __toESM(require_react(), 1); 1350 var CompositeListContext = /* @__PURE__ */ React11.createContext({ 1351 register: () => { 1352 }, 1353 unregister: () => { 1354 }, 1355 subscribeMapChange: () => () => { 1356 }, 1357 nextIndexRef: { 1358 current: 0 1359 } 1360 }); 1361 if (true) CompositeListContext.displayName = "CompositeListContext"; 1362 function useCompositeListContext() { 1363 return React11.useContext(CompositeListContext); 1364 } 1365 1366 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/list/CompositeList.mjs 1367 var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1); 1368 function CompositeList(props) { 1369 const { 1370 children, 1371 elementsRef, 1372 labelsRef, 1373 onMapChange: onMapChangeProp 1374 } = props; 1375 const onMapChange = useStableCallback(onMapChangeProp); 1376 const [, setMapTick] = React12.useState(0); 1377 const listeners = useRefWithInit(createListeners).current; 1378 const map = useRefWithInit(createMap).current; 1379 const nextIndexRef = React12.useRef(0); 1380 const isDirtyRef = React12.useRef(true); 1381 const itemsRef = React12.useRef(null); 1382 const mutationObserverRef = React12.useRef(null); 1383 const scheduleMapUpdate = useStableCallback(() => { 1384 if (isDirtyRef.current) { 1385 return; 1386 } 1387 isDirtyRef.current = true; 1388 setMapTick((tick) => tick + 1); 1389 }); 1390 const register2 = useStableCallback((node, registration) => { 1391 map.set(node, registration); 1392 scheduleMapUpdate(); 1393 }); 1394 const unregister = useStableCallback((node) => { 1395 map.delete(node); 1396 scheduleMapUpdate(); 1397 }); 1398 const syncRefs = useStableCallback((items) => { 1399 const nextMap = /* @__PURE__ */ new Map(); 1400 elementsRef.current.length = 0; 1401 if (labelsRef) { 1402 labelsRef.current.length = 0; 1403 } 1404 items.forEach((item) => { 1405 nextMap.set(item.element, { 1406 ...item.registration.metadata ?? {}, 1407 index: item.index 1408 }); 1409 elementsRef.current[item.index] = item.element; 1410 if (labelsRef) { 1411 labelsRef.current[item.index] = item.registration.label !== void 0 ? item.registration.label : item.registration.textRef?.current?.textContent ?? item.element.textContent; 1412 } 1413 }); 1414 nextIndexRef.current = elementsRef.current.length; 1415 return nextMap; 1416 }); 1417 function observe(sortedNodes) { 1418 mutationObserverRef.current?.disconnect(); 1419 mutationObserverRef.current = null; 1420 if (typeof MutationObserver !== "function" || sortedNodes.length < 2) { 1421 return; 1422 } 1423 const mutationObserver = new MutationObserver((entries) => { 1424 if (!hasMovedNode(entries)) { 1425 return; 1426 } 1427 let previousConnectedNode = null; 1428 for (const node of sortedNodes) { 1429 if (!node.isConnected) { 1430 continue; 1431 } 1432 if (previousConnectedNode && sortByDocumentPosition(previousConnectedNode, node) > 0) { 1433 mutationObserver.disconnect(); 1434 scheduleMapUpdate(); 1435 return; 1436 } 1437 previousConnectedNode = node; 1438 } 1439 }); 1440 mutationObserverRef.current = mutationObserver; 1441 const roots = /* @__PURE__ */ new Set(); 1442 for (let i = 1; i < sortedNodes.length; i += 1) { 1443 const root = getCommonAncestor(sortedNodes[i - 1], sortedNodes[i]); 1444 if (root) { 1445 roots.add(root); 1446 } 1447 } 1448 roots.forEach((root) => mutationObserver.observe(root, { 1449 childList: true 1450 })); 1451 } 1452 const flush = useStableCallback(() => { 1453 const [items, automaticNodes] = getCompositeListSnapshot(map); 1454 const nextMap = syncRefs(items); 1455 const previousItems = itemsRef.current; 1456 const changed = !previousItems || previousItems.length !== items.length || items.some((item, index2) => { 1457 const previousItem = previousItems[index2]; 1458 return item.index !== previousItem.index || item.element !== previousItem.element || item.registration.index !== previousItem.registration.index || item.registration.metadata !== previousItem.registration.metadata; 1459 }); 1460 observe(automaticNodes); 1461 itemsRef.current = items; 1462 isDirtyRef.current = false; 1463 if (!changed) { 1464 return; 1465 } 1466 listeners.forEach((listener) => listener(nextMap)); 1467 onMapChange(nextMap); 1468 }); 1469 useIsoLayoutEffect(() => { 1470 if (!isDirtyRef.current && itemsRef.current) { 1471 syncRefs(itemsRef.current); 1472 } 1473 return () => { 1474 elementsRef.current = []; 1475 if (labelsRef) { 1476 labelsRef.current = []; 1477 } 1478 }; 1479 }, [elementsRef, labelsRef, syncRefs]); 1480 useIsoLayoutEffect(() => { 1481 if (isDirtyRef.current) { 1482 flush(); 1483 } 1484 }); 1485 useIsoLayoutEffect(() => { 1486 return () => { 1487 mutationObserverRef.current?.disconnect(); 1488 isDirtyRef.current = true; 1489 }; 1490 }, []); 1491 const subscribeMapChange = useStableCallback((fn) => { 1492 listeners.add(fn); 1493 return () => { 1494 listeners.delete(fn); 1495 }; 1496 }); 1497 const contextValue = React12.useMemo(() => ({ 1498 register: register2, 1499 unregister, 1500 subscribeMapChange, 1501 nextIndexRef 1502 }), [register2, unregister, subscribeMapChange, nextIndexRef]); 1503 return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(CompositeListContext.Provider, { 1504 value: contextValue, 1505 children 1506 }); 1507 } 1508 function createMap() { 1509 return /* @__PURE__ */ new Map(); 1510 } 1511 function createListeners() { 1512 return /* @__PURE__ */ new Set(); 1513 } 1514 function getCompositeListSnapshot(map) { 1515 const reservedIndices = /* @__PURE__ */ new Set(); 1516 const items = []; 1517 const automaticItems = []; 1518 map.forEach((registration, node) => { 1519 if (!node.isConnected) { 1520 return; 1521 } 1522 const index2 = registration.index; 1523 const item = { 1524 index: index2 ?? -1, 1525 element: node, 1526 registration 1527 }; 1528 if (index2 === null) { 1529 automaticItems.push(item); 1530 } else if (index2 >= 0) { 1531 reservedIndices.add(index2); 1532 items.push(item); 1533 } 1534 }); 1535 let nextAutomaticIndex = 0; 1536 automaticItems.sort((a, b) => sortByDocumentPosition(a.element, b.element)); 1537 automaticItems.forEach((item) => { 1538 while (reservedIndices.has(nextAutomaticIndex)) { 1539 nextAutomaticIndex += 1; 1540 } 1541 item.index = nextAutomaticIndex; 1542 items.push(item); 1543 nextAutomaticIndex += 1; 1544 }); 1545 if (reservedIndices.size > 0) { 1546 items.sort((a, b) => a.index - b.index); 1547 } 1548 return [items, automaticItems.map((item) => item.element)]; 1549 } 1550 function getCommonAncestor(firstNode, lastNode) { 1551 let ancestor = firstNode.parentElement; 1552 while (ancestor && !ancestor.contains(lastNode)) { 1553 ancestor = ancestor.parentElement; 1554 } 1555 return ancestor; 1556 } 1557 function hasMovedNode(entries) { 1558 for (const entry of entries) { 1559 for (let i = 0; i < entry.removedNodes.length; i += 1) { 1560 if (entry.removedNodes[i].isConnected) { 1561 return true; 1562 } 1563 } 1564 } 1565 return false; 1566 } 1567 function sortByDocumentPosition(a, b) { 1568 if (a.nextElementSibling === b) { 1569 return -1; 1570 } 1571 if (b.nextElementSibling === a) { 1572 return 1; 1573 } 1574 return a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1; 1575 } 1576 1577 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useId.mjs 1578 var React14 = __toESM(require_react(), 1); 1579 1580 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useForcedRerendering.mjs 1581 var React13 = __toESM(require_react(), 1); 1582 function useForcedRerendering() { 1583 const [, setState] = React13.useState({}); 1584 return React13.useCallback(() => { 1585 setState({}); 1586 }, []); 1587 } 1588 1589 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useId.mjs 1590 var globalId = 0; 1591 function useGlobalId(idOverride, prefix = "mui") { 1592 const defaultId = React14.useRef(void 0); 1593 const forceRerender = useForcedRerendering(); 1594 const id = idOverride ?? defaultId.current; 1595 React14.useEffect(() => { 1596 if (defaultId.current == null) { 1597 globalId += 1; 1598 defaultId.current = `$prefix}-$globalId}`; 1599 if (idOverride == null) { 1600 forceRerender(); 1601 } 1602 } 1603 }, [idOverride, prefix, forceRerender]); 1604 return id; 1605 } 1606 var maybeReactUseId = SafeReact.useId; 1607 function useId(idOverride, prefix) { 1608 if (maybeReactUseId !== void 0) { 1609 const reactId = maybeReactUseId(); 1610 return idOverride ?? (prefix ? `$prefix}-$reactId}` : reactId); 1611 } 1612 return useGlobalId(idOverride, prefix); 1613 } 1614 1615 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useBaseUiId.mjs 1616 function useBaseUiId(idOverride) { 1617 return useId(idOverride, "base-ui"); 1618 } 1619 1620 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/createBaseUIEventDetails.mjs 1621 function createChangeEventDetails(reason, event, trigger, customProperties) { 1622 let canceled = false; 1623 let allowPropagation = false; 1624 const custom = customProperties ?? EMPTY_OBJECT; 1625 const details = { 1626 reason, 1627 event: event ?? new Event("base-ui"), 1628 cancel() { 1629 canceled = true; 1630 }, 1631 allowPropagation() { 1632 allowPropagation = true; 1633 }, 1634 get isCanceled() { 1635 return canceled; 1636 }, 1637 get isPropagationAllowed() { 1638 return allowPropagation; 1639 }, 1640 trigger, 1641 ...custom 1642 }; 1643 return details; 1644 } 1645 1646 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/reason-parts.mjs 1647 var reason_parts_exports = {}; 1648 __export(reason_parts_exports, { 1649 cancelOpen: () => cancelOpen, 1650 chipRemovePress: () => chipRemovePress, 1651 clearPress: () => clearPress, 1652 closePress: () => closePress, 1653 closeWatcher: () => closeWatcher, 1654 decrementPress: () => decrementPress, 1655 disabled: () => disabled, 1656 drag: () => drag, 1657 escapeKey: () => escapeKey, 1658 focusOut: () => focusOut, 1659 imperativeAction: () => imperativeAction, 1660 incrementPress: () => incrementPress, 1661 initial: () => initial, 1662 inputBlur: () => inputBlur, 1663 inputChange: () => inputChange, 1664 inputClear: () => inputClear, 1665 inputPaste: () => inputPaste, 1666 inputPress: () => inputPress, 1667 itemPress: () => itemPress, 1668 keyboard: () => keyboard, 1669 linkPress: () => linkPress, 1670 listNavigation: () => listNavigation, 1671 missing: () => missing, 1672 none: () => none, 1673 outsidePress: () => outsidePress, 1674 pointer: () => pointer, 1675 popupClose: () => popupClose, 1676 scrub: () => scrub, 1677 siblingOpen: () => siblingOpen, 1678 swipe: () => swipe, 1679 trackPress: () => trackPress, 1680 triggerFocus: () => triggerFocus, 1681 triggerHover: () => triggerHover, 1682 triggerPress: () => triggerPress, 1683 wheel: () => wheel, 1684 windowResize: () => windowResize 1685 }); 1686 var none = "none"; 1687 var triggerPress = "trigger-press"; 1688 var triggerHover = "trigger-hover"; 1689 var triggerFocus = "trigger-focus"; 1690 var outsidePress = "outside-press"; 1691 var itemPress = "item-press"; 1692 var closePress = "close-press"; 1693 var linkPress = "link-press"; 1694 var clearPress = "clear-press"; 1695 var chipRemovePress = "chip-remove-press"; 1696 var trackPress = "track-press"; 1697 var incrementPress = "increment-press"; 1698 var decrementPress = "decrement-press"; 1699 var inputChange = "input-change"; 1700 var inputClear = "input-clear"; 1701 var inputBlur = "input-blur"; 1702 var inputPaste = "input-paste"; 1703 var inputPress = "input-press"; 1704 var focusOut = "focus-out"; 1705 var escapeKey = "escape-key"; 1706 var closeWatcher = "close-watcher"; 1707 var listNavigation = "list-navigation"; 1708 var keyboard = "keyboard"; 1709 var pointer = "pointer"; 1710 var drag = "drag"; 1711 var wheel = "wheel"; 1712 var scrub = "scrub"; 1713 var popupClose = "popup-close"; 1714 var cancelOpen = "cancel-open"; 1715 var siblingOpen = "sibling-open"; 1716 var disabled = "disabled"; 1717 var missing = "missing"; 1718 var initial = "initial"; 1719 var imperativeAction = "imperative-action"; 1720 var swipe = "swipe"; 1721 var windowResize = "window-resize"; 1722 1723 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/list/useCompositeListItem.mjs 1724 var React15 = __toESM(require_react(), 1); 1725 function useCompositeListItem(params = {}) { 1726 const { 1727 guess, 1728 label, 1729 metadata, 1730 textRef, 1731 index: externalIndex 1732 } = params; 1733 const { 1734 register: register2, 1735 unregister, 1736 subscribeMapChange, 1737 nextIndexRef 1738 } = useCompositeListContext(); 1739 const indexRef = React15.useRef(-1); 1740 const [internalIndex, setInternalIndex] = React15.useState(externalIndex == null && guess ? () => { 1741 if (indexRef.current === -1) { 1742 const newIndex = nextIndexRef.current; 1743 nextIndexRef.current += 1; 1744 indexRef.current = newIndex; 1745 } 1746 return indexRef.current; 1747 } : -1); 1748 const index2 = externalIndex ?? internalIndex; 1749 const componentRef = React15.useRef(null); 1750 const ref = React15.useCallback((node) => { 1751 const previousNode = componentRef.current; 1752 if (previousNode) { 1753 unregister(previousNode); 1754 } 1755 componentRef.current = node; 1756 if (node) { 1757 register2(node, { 1758 metadata: metadata ?? null, 1759 index: externalIndex ?? null, 1760 label, 1761 textRef 1762 }); 1763 } 1764 }, [externalIndex, register2, unregister, metadata, label, textRef]); 1765 useIsoLayoutEffect(() => { 1766 if (externalIndex != null) { 1767 return void 0; 1768 } 1769 return subscribeMapChange((map) => { 1770 const i = componentRef.current ? map.get(componentRef.current)?.index : null; 1771 if (i != null) { 1772 setInternalIndex(i); 1773 } 1774 }); 1775 }, [externalIndex, subscribeMapChange]); 1776 return { 1777 ref, 1778 index: index2 1779 }; 1780 } 1781 1782 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/use-button/useButton.mjs 1783 var React18 = __toESM(require_react(), 1); 1784 1785 // node_modules/.store/@floating-ui/utils@0.2.12-gOxTzMf36nCrbeHpEew-rw/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs 1786 function hasWindow() { 1787 return typeof window !== "undefined"; 1788 } 1789 function getNodeName(node) { 1790 if (isNode(node)) { 1791 return (node.nodeName || "").toLowerCase(); 1792 } 1793 return "#document"; 1794 } 1795 function getWindow(node) { 1796 var _node$ownerDocument; 1797 return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window; 1798 } 1799 function getDocumentElement(node) { 1800 var _ref; 1801 return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement; 1802 } 1803 function isNode(value) { 1804 if (!hasWindow()) { 1805 return false; 1806 } 1807 return value instanceof Node || value instanceof getWindow(value).Node; 1808 } 1809 function isElement(value) { 1810 if (!hasWindow()) { 1811 return false; 1812 } 1813 return value instanceof Element || value instanceof getWindow(value).Element; 1814 } 1815 function isHTMLElement(value) { 1816 if (!hasWindow()) { 1817 return false; 1818 } 1819 return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement; 1820 } 1821 function isShadowRoot(value) { 1822 if (!hasWindow() || typeof ShadowRoot === "undefined") { 1823 return false; 1824 } 1825 return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot; 1826 } 1827 function isOverflowElement(element) { 1828 const { 1829 overflow, 1830 overflowX, 1831 overflowY, 1832 display 1833 } = getComputedStyle2(element); 1834 return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== "inline" && display !== "contents"; 1835 } 1836 function isTableElement(element) { 1837 return /^(table|td|th)$/.test(getNodeName(element)); 1838 } 1839 function isTopLayer(element) { 1840 try { 1841 if (element.matches(":popover-open")) { 1842 return true; 1843 } 1844 } catch (_e) { 1845 } 1846 try { 1847 return element.matches(":modal"); 1848 } catch (_e) { 1849 return false; 1850 } 1851 } 1852 var willChangeRe = /transform|translate|scale|rotate|perspective|filter/; 1853 var containRe = /paint|layout|strict|content/; 1854 var isNotNone = (value) => !!value && value !== "none"; 1855 var isWebKitValue; 1856 function isContainingBlock(elementOrCss) { 1857 const css = isElement(elementOrCss) ? getComputedStyle2(elementOrCss) : elementOrCss; 1858 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 || ""); 1859 } 1860 function getContainingBlock(element) { 1861 let currentNode = getParentNode(element); 1862 while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) { 1863 if (isContainingBlock(currentNode)) { 1864 return currentNode; 1865 } else if (isTopLayer(currentNode)) { 1866 return null; 1867 } 1868 currentNode = getParentNode(currentNode); 1869 } 1870 return null; 1871 } 1872 function isWebKit() { 1873 if (isWebKitValue == null) { 1874 isWebKitValue = typeof CSS !== "undefined" && CSS.supports && CSS.supports("-webkit-backdrop-filter", "none"); 1875 } 1876 return isWebKitValue; 1877 } 1878 function isLastTraversableNode(node) { 1879 return /^(html|body|#document)$/.test(getNodeName(node)); 1880 } 1881 function getComputedStyle2(element) { 1882 return getWindow(element).getComputedStyle(element); 1883 } 1884 function getNodeScroll(element) { 1885 if (isElement(element)) { 1886 return { 1887 scrollLeft: element.scrollLeft, 1888 scrollTop: element.scrollTop 1889 }; 1890 } 1891 return { 1892 scrollLeft: element.scrollX, 1893 scrollTop: element.scrollY 1894 }; 1895 } 1896 function getParentNode(node) { 1897 if (getNodeName(node) === "html") { 1898 return node; 1899 } 1900 const result = ( 1901 // Step into the shadow DOM of the parent of a slotted node. 1902 node.assignedSlot || // DOM Element detected. 1903 node.parentNode || // ShadowRoot detected. 1904 isShadowRoot(node) && node.host || // Fallback. 1905 getDocumentElement(node) 1906 ); 1907 return isShadowRoot(result) ? result.host : result; 1908 } 1909 function getNearestOverflowAncestor(node) { 1910 const parentNode = getParentNode(node); 1911 if (isLastTraversableNode(parentNode)) { 1912 return (node.ownerDocument || node).body; 1913 } 1914 if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) { 1915 return parentNode; 1916 } 1917 return getNearestOverflowAncestor(parentNode); 1918 } 1919 function getOverflowAncestors(node, list, traverseIframes) { 1920 var _node$ownerDocument2; 1921 if (list === void 0) { 1922 list = []; 1923 } 1924 if (traverseIframes === void 0) { 1925 traverseIframes = true; 1926 } 1927 const scrollableAncestor = getNearestOverflowAncestor(node); 1928 const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body); 1929 const win = getWindow(scrollableAncestor); 1930 if (isBody) { 1931 const frameElement = getFrameElement(win); 1932 return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []); 1933 } else { 1934 return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes)); 1935 } 1936 } 1937 function getFrameElement(win) { 1938 return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null; 1939 } 1940 1941 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/root/CompositeRootContext.mjs 1942 var React16 = __toESM(require_react(), 1); 1943 var CompositeRootContext = /* @__PURE__ */ React16.createContext(void 0); 1944 if (true) CompositeRootContext.displayName = "CompositeRootContext"; 1945 function useCompositeRootContext(optional = false) { 1946 const context = React16.useContext(CompositeRootContext); 1947 if (context === void 0 && !optional) { 1948 throw new Error(true ? "Base UI: CompositeRootContext is missing. Composite parts must be placed within <Composite.Root>." : formatErrorMessage_default(16)); 1949 } 1950 return context; 1951 } 1952 1953 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/useFocusableWhenDisabled.mjs 1954 var React17 = __toESM(require_react(), 1); 1955 function useFocusableWhenDisabled(parameters) { 1956 const { 1957 focusableWhenDisabled, 1958 disabled: disabled2, 1959 composite = false, 1960 tabIndex: tabIndexProp = 0, 1961 isNativeButton 1962 } = parameters; 1963 const isFocusableComposite = composite && focusableWhenDisabled !== false; 1964 const isNonFocusableComposite = composite && focusableWhenDisabled === false; 1965 const props = React17.useMemo(() => { 1966 const additionalProps = { 1967 // allow Tabbing away from focusableWhenDisabled elements 1968 onKeyDown(event) { 1969 if (disabled2 && focusableWhenDisabled && event.key !== "Tab") { 1970 event.preventDefault(); 1971 } 1972 } 1973 }; 1974 if (!composite) { 1975 additionalProps.tabIndex = tabIndexProp; 1976 if (!isNativeButton && disabled2) { 1977 additionalProps.tabIndex = focusableWhenDisabled ? tabIndexProp : -1; 1978 } 1979 } 1980 if (isNativeButton && (focusableWhenDisabled || isFocusableComposite) || !isNativeButton && disabled2) { 1981 additionalProps["aria-disabled"] = disabled2; 1982 } 1983 if (isNativeButton && (!focusableWhenDisabled || isNonFocusableComposite)) { 1984 additionalProps.disabled = disabled2; 1985 } 1986 return additionalProps; 1987 }, [composite, disabled2, focusableWhenDisabled, isFocusableComposite, isNonFocusableComposite, isNativeButton, tabIndexProp]); 1988 return { 1989 props 1990 }; 1991 } 1992 1993 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/owner.mjs 1994 function ownerDocument(node) { 1995 return node?.ownerDocument || document; 1996 } 1997 1998 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/dispatchClickWithModifiers.mjs 1999 function dispatchClickWithModifiers(target, sourceEvent, { 2000 detail = 0, 2001 pointerType = "" 2002 } = {}) { 2003 target.dispatchEvent(new (getWindow(target)).PointerEvent("click", { 2004 bubbles: true, 2005 cancelable: true, 2006 composed: true, 2007 detail, 2008 pointerType, 2009 shiftKey: sourceEvent.shiftKey, 2010 ctrlKey: sourceEvent.ctrlKey, 2011 altKey: sourceEvent.altKey, 2012 metaKey: sourceEvent.metaKey 2013 })); 2014 } 2015 2016 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/use-button/useButton.mjs 2017 function useButton(parameters = {}) { 2018 const { 2019 disabled: disabled2 = false, 2020 focusableWhenDisabled, 2021 tabIndex = 0, 2022 native: isNativeButton = true, 2023 composite: compositeProp 2024 } = parameters; 2025 const elementRef = React18.useRef(null); 2026 const compositeRootContext = useCompositeRootContext(true); 2027 const isCompositeItem = compositeProp ?? compositeRootContext !== void 0; 2028 const { 2029 props: focusableWhenDisabledProps 2030 } = useFocusableWhenDisabled({ 2031 focusableWhenDisabled, 2032 disabled: disabled2, 2033 composite: isCompositeItem, 2034 tabIndex, 2035 isNativeButton 2036 }); 2037 if (true) { 2038 React18.useEffect(() => { 2039 if (!elementRef.current) { 2040 return; 2041 } 2042 const isButtonTag = isButtonElement(elementRef.current); 2043 if (isNativeButton) { 2044 if (!isButtonTag) { 2045 const ownerStackMessage = SafeReact.captureOwnerStack?.() || ""; 2046 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`."; 2047 error(`$message}$ownerStackMessage}`); 2048 } 2049 } else if (isButtonTag) { 2050 const ownerStackMessage = SafeReact.captureOwnerStack?.() || ""; 2051 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`."; 2052 error(`$message}$ownerStackMessage}`); 2053 } 2054 }, [isNativeButton]); 2055 } 2056 const updateDisabled = React18.useCallback(() => { 2057 const element = elementRef.current; 2058 if (!isButtonElement(element)) { 2059 return; 2060 } 2061 if (isCompositeItem && disabled2 && focusableWhenDisabledProps.disabled === void 0 && element.disabled) { 2062 element.disabled = false; 2063 } 2064 }, [disabled2, focusableWhenDisabledProps.disabled, isCompositeItem]); 2065 useIsoLayoutEffect(updateDisabled, [updateDisabled]); 2066 const getButtonProps = React18.useCallback((externalProps = {}) => { 2067 const { 2068 onClick: externalOnClick, 2069 onMouseDown: externalOnMouseDown, 2070 onKeyUp: externalOnKeyUp, 2071 onKeyDown: externalOnKeyDown, 2072 onPointerDown: externalOnPointerDown, 2073 ...otherExternalProps 2074 } = externalProps; 2075 return mergeProps({ 2076 onClick(event) { 2077 if (disabled2) { 2078 event.preventDefault(); 2079 return; 2080 } 2081 externalOnClick?.(event); 2082 }, 2083 onMouseDown(event) { 2084 if (!disabled2) { 2085 externalOnMouseDown?.(event); 2086 } 2087 }, 2088 onKeyDown(event) { 2089 if (disabled2) { 2090 return; 2091 } 2092 makeEventPreventable(event); 2093 externalOnKeyDown?.(event); 2094 if (event.baseUIHandlerPrevented) { 2095 return; 2096 } 2097 const isCurrentTarget = event.target === event.currentTarget; 2098 const currentTarget = event.currentTarget; 2099 const isButton = isButtonElement(currentTarget); 2100 const isLink = !isNativeButton && isValidLinkElement(currentTarget); 2101 const shouldClick = isCurrentTarget && (isNativeButton ? isButton : !isLink); 2102 const isEnterKey = event.key === "Enter"; 2103 const isSpaceKey = event.key === " "; 2104 const role = currentTarget.getAttribute("role"); 2105 const isTextNavigationRole = role?.startsWith("menuitem") || role === "option" || role === "gridcell"; 2106 if (isCurrentTarget && isCompositeItem && isSpaceKey) { 2107 if (event.defaultPrevented && isTextNavigationRole) { 2108 return; 2109 } 2110 event.preventDefault(); 2111 if (!isNativeButton || isButton) { 2112 event.preventBaseUIHandler(); 2113 dispatchClickWithModifiers(currentTarget, event); 2114 } 2115 return; 2116 } 2117 if (!shouldClick || isNativeButton || !isSpaceKey && !isEnterKey) { 2118 if (isCurrentTarget && isLink && isSpaceKey) { 2119 event.preventDefault(); 2120 } 2121 return; 2122 } 2123 if (event.defaultPrevented) { 2124 return; 2125 } 2126 event.preventDefault(); 2127 if (isEnterKey) { 2128 event.preventBaseUIHandler(); 2129 dispatchClickWithModifiers(currentTarget, event); 2130 } 2131 }, 2132 onKeyUp(event) { 2133 if (disabled2) { 2134 return; 2135 } 2136 makeEventPreventable(event); 2137 externalOnKeyUp?.(event); 2138 if (event.target === event.currentTarget && isNativeButton && isCompositeItem && isButtonElement(event.currentTarget) && event.key === " ") { 2139 event.preventDefault(); 2140 return; 2141 } 2142 if (event.baseUIHandlerPrevented) { 2143 return; 2144 } 2145 if (event.target === event.currentTarget && !isNativeButton && !isCompositeItem && !event.defaultPrevented && event.key === " ") { 2146 event.preventBaseUIHandler(); 2147 dispatchClickWithModifiers(event.currentTarget, event); 2148 } 2149 }, 2150 onPointerDown(event) { 2151 if (disabled2) { 2152 event.preventDefault(); 2153 return; 2154 } 2155 externalOnPointerDown?.(event); 2156 } 2157 }, isNativeButton ? { 2158 type: "button" 2159 } : { 2160 role: "button" 2161 }, focusableWhenDisabledProps, otherExternalProps); 2162 }, [disabled2, focusableWhenDisabledProps, isCompositeItem, isNativeButton]); 2163 const buttonRef = useStableCallback((element) => { 2164 elementRef.current = element; 2165 updateDisabled(); 2166 }); 2167 return { 2168 getButtonProps, 2169 buttonRef 2170 }; 2171 } 2172 function isButtonElement(elem) { 2173 return isHTMLElement(elem) && elem.tagName === "BUTTON"; 2174 } 2175 function isValidLinkElement(elem) { 2176 return isHTMLElement(elem) && elem.tagName === "A" && Boolean(elem.href); 2177 } 2178 2179 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/addEventListener.mjs 2180 function addEventListener(target, type, listener, options) { 2181 target.addEventListener(type, listener, options); 2182 return () => { 2183 target.removeEventListener(type, listener, options); 2184 }; 2185 } 2186 2187 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useValueAsRef.mjs 2188 function useValueAsRef(value) { 2189 const latest = useRefWithInit(createLatestRef, value).current; 2190 latest.next = value; 2191 useIsoLayoutEffect(latest.effect); 2192 return latest; 2193 } 2194 function createLatestRef(value) { 2195 const latest = { 2196 current: value, 2197 next: value, 2198 effect: () => { 2199 latest.current = latest.next; 2200 } 2201 }; 2202 return latest; 2203 } 2204 2205 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/parts.mjs 2206 var parts_exports = {}; 2207 __export(parts_exports, { 2208 engine: () => engine_exports, 2209 env: () => env_exports, 2210 mediaQuery: () => media_query_exports, 2211 os: () => os_exports, 2212 screenReader: () => screen_reader_exports 2213 }); 2214 2215 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/os.mjs 2216 var os_exports = {}; 2217 __export(os_exports, { 2218 android: () => android, 2219 apple: () => apple, 2220 ios: () => ios, 2221 linux: () => linux, 2222 mac: () => mac, 2223 windows: () => windows 2224 }); 2225 2226 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/shared.mjs 2227 function readRawData() { 2228 if (typeof navigator === "undefined") { 2229 return { 2230 userAgent: "", 2231 platform: "", 2232 maxTouchPoints: 0 2233 }; 2234 } 2235 if (true) { 2236 const uaData = navigator.userAgentData; 2237 if (uaData && Array.isArray(uaData.brands)) { 2238 return { 2239 userAgent: uaData.brands.map(({ 2240 brand, 2241 version: version2 2242 }) => `$brand}/$version2}`).join(" "), 2243 platform: uaData.platform ?? navigator.platform ?? "", 2244 maxTouchPoints: navigator.maxTouchPoints ?? 0 2245 }; 2246 } 2247 } 2248 return { 2249 userAgent: navigator.userAgent, 2250 platform: navigator.platform ?? "", 2251 maxTouchPoints: navigator.maxTouchPoints ?? 0 2252 }; 2253 } 2254 var { 2255 userAgent, 2256 platform, 2257 maxTouchPoints 2258 } = readRawData(); 2259 var lowerUserAgent = userAgent.toLowerCase(); 2260 var lowerPlatform = platform.toLowerCase(); 2261 2262 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/os.mjs 2263 var ios = /^i(os$|p)/.test(lowerPlatform) || lowerPlatform === "macintel" && maxTouchPoints > 1; 2264 var ANDROID_STRING = "android"; 2265 var android = lowerPlatform === ANDROID_STRING || lowerUserAgent.includes(ANDROID_STRING); 2266 var mac = !ios && lowerPlatform.startsWith("mac"); 2267 var windows = lowerPlatform.startsWith("win"); 2268 var linux = !android && /^(linux|chrome os)/.test(lowerPlatform); 2269 var apple = mac || ios; 2270 2271 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/engine.mjs 2272 var engine_exports = {}; 2273 __export(engine_exports, { 2274 blink: () => blink, 2275 gecko: () => gecko, 2276 webkit: () => webkit 2277 }); 2278 var webkit = typeof CSS !== "undefined" && !!CSS.supports?.("-webkit-backdrop-filter:none"); 2279 var gecko = !webkit && lowerUserAgent.includes("firefox"); 2280 var blink = !webkit && lowerUserAgent.includes("chrom"); 2281 2282 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/screen-reader.mjs 2283 var screen_reader_exports = {}; 2284 __export(screen_reader_exports, { 2285 voiceOver: () => voiceOver 2286 }); 2287 var voiceOver = apple; 2288 2289 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/env.mjs 2290 var env_exports = {}; 2291 __export(env_exports, { 2292 jsdom: () => jsdom 2293 }); 2294 var jsdom = /jsdom|happydom/.test(lowerUserAgent); 2295 2296 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/media-query.mjs 2297 var media_query_exports = {}; 2298 __export(media_query_exports, { 2299 iOS: () => iOS 2300 }); 2301 var iOS = "@supports (-webkit-touch-callout: none)"; 2302 2303 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useScrollLock.mjs 2304 var originalHtmlStyles = {}; 2305 var originalBodyStyles = {}; 2306 var originalHtmlScrollBehavior = ""; 2307 function getViewportScroller(html, body) { 2308 return isOverflowElement(html) ? html : body; 2309 } 2310 function isPageScrollLocked(win, html, body) { 2311 return /hidden|clip/.test(win.getComputedStyle(getViewportScroller(html, body)).overflowY); 2312 } 2313 function hasInsetScrollbars(referenceElement) { 2314 if (typeof document === "undefined") { 2315 return false; 2316 } 2317 const doc = ownerDocument(referenceElement); 2318 const win = getWindow(doc); 2319 return win.innerWidth - doc.documentElement.clientWidth > 0; 2320 } 2321 function supportsStableScrollbarGutter(referenceElement) { 2322 const supported = typeof CSS !== "undefined" && CSS.supports && CSS.supports("scrollbar-gutter", "stable"); 2323 if (!supported || typeof document === "undefined") { 2324 return false; 2325 } 2326 const doc = ownerDocument(referenceElement); 2327 const html = doc.documentElement; 2328 const body = doc.body; 2329 const scrollContainer = getViewportScroller(html, body); 2330 const originalScrollContainerOverflowY = scrollContainer.style.overflowY; 2331 const originalHtmlStyleGutter = html.style.scrollbarGutter; 2332 html.style.scrollbarGutter = "stable"; 2333 scrollContainer.style.overflowY = "scroll"; 2334 const before = scrollContainer.offsetWidth; 2335 scrollContainer.style.overflowY = "hidden"; 2336 const after = scrollContainer.offsetWidth; 2337 scrollContainer.style.overflowY = originalScrollContainerOverflowY; 2338 html.style.scrollbarGutter = originalHtmlStyleGutter; 2339 return before === after; 2340 } 2341 function preventScrollOverlayScrollbars(referenceElement) { 2342 const doc = ownerDocument(referenceElement); 2343 const html = doc.documentElement; 2344 const body = doc.body; 2345 const elementToLock = getViewportScroller(html, body); 2346 const originalElementToLockStyles = { 2347 overflowY: elementToLock.style.overflowY, 2348 overflowX: elementToLock.style.overflowX 2349 }; 2350 Object.assign(elementToLock.style, { 2351 overflowY: "hidden", 2352 overflowX: "hidden" 2353 }); 2354 return () => { 2355 Object.assign(elementToLock.style, originalElementToLockStyles); 2356 }; 2357 } 2358 function preventScrollInsetScrollbars(referenceElement) { 2359 const doc = ownerDocument(referenceElement); 2360 const html = doc.documentElement; 2361 const body = doc.body; 2362 const win = getWindow(html); 2363 let scrollTop = 0; 2364 let scrollLeft = 0; 2365 let updateGutterOnly = false; 2366 const resizeFrame = AnimationFrame.create(); 2367 if (parts_exports.engine.webkit && (win.visualViewport?.scale ?? 1) !== 1) { 2368 return () => { 2369 }; 2370 } 2371 function lockScroll() { 2372 const htmlStyles = win.getComputedStyle(html); 2373 const bodyStyles = win.getComputedStyle(body); 2374 const htmlScrollbarGutterValue = htmlStyles.scrollbarGutter || ""; 2375 const hasBothEdges = htmlScrollbarGutterValue.includes("both-edges"); 2376 const scrollbarGutterValue = hasBothEdges ? "stable both-edges" : "stable"; 2377 scrollTop = html.scrollTop; 2378 scrollLeft = html.scrollLeft; 2379 originalHtmlStyles = { 2380 scrollbarGutter: html.style.scrollbarGutter, 2381 overflowY: html.style.overflowY, 2382 overflowX: html.style.overflowX 2383 }; 2384 originalHtmlScrollBehavior = html.style.scrollBehavior; 2385 originalBodyStyles = { 2386 position: body.style.position, 2387 height: body.style.height, 2388 width: body.style.width, 2389 boxSizing: body.style.boxSizing, 2390 overflowY: body.style.overflowY, 2391 overflowX: body.style.overflowX, 2392 scrollBehavior: body.style.scrollBehavior 2393 }; 2394 const isScrollableY = html.scrollHeight > html.clientHeight; 2395 const isScrollableX = html.scrollWidth > html.clientWidth; 2396 const hasConstantOverflowY = htmlStyles.overflowY === "scroll" || bodyStyles.overflowY === "scroll"; 2397 const hasConstantOverflowX = htmlStyles.overflowX === "scroll" || bodyStyles.overflowX === "scroll"; 2398 const scrollbarWidth = Math.max(0, win.innerWidth - body.clientWidth); 2399 const scrollbarHeight = Math.max(0, win.innerHeight - body.clientHeight); 2400 const marginY = parseFloat(bodyStyles.marginTop) + parseFloat(bodyStyles.marginBottom); 2401 const marginX = parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight); 2402 const elementToLock = getViewportScroller(html, body); 2403 updateGutterOnly = supportsStableScrollbarGutter(referenceElement); 2404 if (updateGutterOnly) { 2405 html.style.scrollbarGutter = scrollbarGutterValue; 2406 elementToLock.style.overflowY = "hidden"; 2407 elementToLock.style.overflowX = "hidden"; 2408 return; 2409 } 2410 Object.assign(html.style, { 2411 scrollbarGutter: scrollbarGutterValue, 2412 overflowY: "hidden", 2413 overflowX: "hidden" 2414 }); 2415 if (isScrollableY || hasConstantOverflowY) { 2416 html.style.overflowY = "scroll"; 2417 } 2418 if (isScrollableX || hasConstantOverflowX) { 2419 html.style.overflowX = "scroll"; 2420 } 2421 Object.assign(body.style, { 2422 position: "relative", 2423 height: marginY || scrollbarHeight ? `calc(100dvh - $marginY + scrollbarHeight}px)` : "100dvh", 2424 width: marginX || scrollbarWidth ? `calc(100vw - $marginX + scrollbarWidth}px)` : "100vw", 2425 boxSizing: "border-box", 2426 // Assign the longhands that `cleanup` restores, so nothing is left behind. 2427 overflowY: "hidden", 2428 overflowX: "hidden", 2429 scrollBehavior: "unset" 2430 }); 2431 body.scrollTop = scrollTop; 2432 body.scrollLeft = scrollLeft; 2433 html.setAttribute("data-base-ui-scroll-locked", ""); 2434 html.style.scrollBehavior = "unset"; 2435 } 2436 function cleanup() { 2437 Object.assign(html.style, originalHtmlStyles); 2438 Object.assign(body.style, originalBodyStyles); 2439 if (!updateGutterOnly) { 2440 html.scrollTop = scrollTop; 2441 html.scrollLeft = scrollLeft; 2442 html.removeAttribute("data-base-ui-scroll-locked"); 2443 html.style.scrollBehavior = originalHtmlScrollBehavior; 2444 } 2445 } 2446 function handleResize() { 2447 cleanup(); 2448 resizeFrame.request(lockScroll); 2449 } 2450 lockScroll(); 2451 const unsubscribeResize = addEventListener(win, "resize", handleResize); 2452 return () => { 2453 resizeFrame.cancel(); 2454 cleanup(); 2455 if (typeof win.removeEventListener === "function") { 2456 unsubscribeResize(); 2457 } 2458 }; 2459 } 2460 var ScrollLocker = class { 2461 lockCount = 0; 2462 restore = null; 2463 timeoutLock = Timeout.create(); 2464 timeoutUnlock = Timeout.create(); 2465 acquire(referenceElement) { 2466 this.lockCount += 1; 2467 if (this.lockCount === 1 && this.restore === null) { 2468 this.timeoutLock.start(0, () => this.lock(referenceElement)); 2469 } 2470 return this.release; 2471 } 2472 release = () => { 2473 this.lockCount -= 1; 2474 if (this.lockCount === 0 && this.restore) { 2475 this.timeoutUnlock.start(0, this.unlock); 2476 } 2477 }; 2478 unlock = () => { 2479 if (this.lockCount === 0 && this.restore) { 2480 this.restore?.(); 2481 this.restore = null; 2482 } 2483 }; 2484 lock(referenceElement) { 2485 if (this.lockCount === 0 || this.restore !== null) { 2486 return; 2487 } 2488 const doc = ownerDocument(referenceElement); 2489 const html = doc.documentElement; 2490 const body = doc.body; 2491 const win = getWindow(html); 2492 if (isPageScrollLocked(win, html, body)) { 2493 const observer = new win.MutationObserver(() => { 2494 if (isPageScrollLocked(win, html, body)) { 2495 return; 2496 } 2497 observer.disconnect(); 2498 this.restore = null; 2499 this.lock(referenceElement); 2500 }); 2501 const options = { 2502 attributes: true 2503 }; 2504 observer.observe(html, options); 2505 observer.observe(body, options); 2506 this.restore = () => observer.disconnect(); 2507 return; 2508 } 2509 const hasOverlayScrollbars = parts_exports.os.ios || !hasInsetScrollbars(referenceElement); 2510 this.restore = hasOverlayScrollbars ? preventScrollOverlayScrollbars(referenceElement) : preventScrollInsetScrollbars(referenceElement); 2511 } 2512 }; 2513 var SCROLL_LOCKER = new ScrollLocker(); 2514 function useScrollLock(enabled = true, referenceElement = null) { 2515 useIsoLayoutEffect(() => { 2516 if (!enabled) { 2517 return void 0; 2518 } 2519 return SCROLL_LOCKER.acquire(referenceElement); 2520 }, [enabled, referenceElement]); 2521 } 2522 2523 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/event.mjs 2524 function stopEvent(event) { 2525 event.preventDefault(); 2526 event.stopPropagation(); 2527 } 2528 function isReactEvent(event) { 2529 return "nativeEvent" in event; 2530 } 2531 function isVirtualClick(event) { 2532 if (event.pointerType === "" && event.isTrusted) { 2533 return true; 2534 } 2535 if (parts_exports.os.android && event.pointerType) { 2536 return event.type === "click" && event.buttons === 1; 2537 } 2538 return event.detail === 0 && !event.pointerType; 2539 } 2540 function isVirtualPointerEvent(event) { 2541 if (parts_exports.env.jsdom) { 2542 return false; 2543 } 2544 return !parts_exports.os.android && event.width === 0 && event.height === 0 || // Chrome synthesizes a screen reader press (TalkBack, VoiceOver, NVDA) as a 1x1 mouse 2545 // `pointerdown` with no pressure. TalkBack can report a pressed button, while desktop 2546 // mouse presses can report no pressure, so only require no pressed button off Android. 2547 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. 2548 event.width < 1 && event.height < 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === "touch"; 2549 } 2550 function isMouseLikePointerType(pointerType, strict) { 2551 const values = ["mouse", "pen"]; 2552 if (!strict) { 2553 values.push("", void 0); 2554 } 2555 return values.includes(pointerType); 2556 } 2557 function isClickLikeEvent(event) { 2558 const type = event.type; 2559 return type === "click" || type === "mousedown" || type === "keydown" || type === "keyup"; 2560 } 2561 2562 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/shadowDom.mjs 2563 function activeElement(doc) { 2564 let element = doc.activeElement; 2565 while (element?.shadowRoot?.activeElement != null) { 2566 element = element.shadowRoot.activeElement; 2567 } 2568 return element; 2569 } 2570 function contains(parent, child) { 2571 if (!parent || !child) { 2572 return false; 2573 } 2574 const rootNode = child.getRootNode?.(); 2575 if (parent.contains(child)) { 2576 return true; 2577 } 2578 if (rootNode && isShadowRoot(rootNode)) { 2579 let next = child; 2580 while (next) { 2581 if (parent === next) { 2582 return true; 2583 } 2584 next = next.parentNode || next.host; 2585 } 2586 } 2587 return false; 2588 } 2589 function closest(node, selector) { 2590 let current = node; 2591 while (current) { 2592 if (isElement(current) && current.matches(selector)) { 2593 return current; 2594 } 2595 current = current.assignedSlot ?? current.parentNode ?? (isShadowRoot(current) ? current.host : null); 2596 } 2597 return null; 2598 } 2599 function getTarget(event) { 2600 if ("composedPath" in event) { 2601 return event.composedPath()[0] ?? event.target; 2602 } 2603 return event.target; 2604 } 2605 2606 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/constants.mjs 2607 var FOCUSABLE_ATTRIBUTE = "data-base-ui-focusable"; 2608 var TYPEABLE_SELECTOR = "input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])"; 2609 var ARROW_LEFT = "ArrowLeft"; 2610 var ARROW_RIGHT = "ArrowRight"; 2611 var ARROW_UP = "ArrowUp"; 2612 var ARROW_DOWN = "ArrowDown"; 2613 2614 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/CommonPopupDataAttributes.mjs 2615 var open = "data-open"; 2616 var closed = "data-closed"; 2617 var anchorHidden = "data-anchor-hidden"; 2618 2619 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/CommonTriggerDataAttributes.mjs 2620 var CommonTriggerDataAttributes_exports = {}; 2621 __export(CommonTriggerDataAttributes_exports, { 2622 popupOpen: () => popupOpen, 2623 pressed: () => pressed 2624 }); 2625 var popupOpen = "data-popup-open"; 2626 var pressed = "data-pressed"; 2627 2628 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popupStateMapping.mjs 2629 var TRIGGER_HOOK = { 2630 [popupOpen]: "" 2631 }; 2632 var PRESSABLE_TRIGGER_HOOK = { 2633 [popupOpen]: "", 2634 [pressed]: "" 2635 }; 2636 var POPUP_OPEN_HOOK = { 2637 [open]: "" 2638 }; 2639 var POPUP_CLOSED_HOOK = { 2640 [closed]: "" 2641 }; 2642 var ANCHOR_HIDDEN_HOOK = { 2643 [anchorHidden]: "" 2644 }; 2645 var triggerOpenStateMapping = { 2646 open(value) { 2647 if (value) { 2648 return TRIGGER_HOOK; 2649 } 2650 return null; 2651 } 2652 }; 2653 var pressableTriggerOpenStateMapping = { 2654 open(value) { 2655 if (value) { 2656 return PRESSABLE_TRIGGER_HOOK; 2657 } 2658 return null; 2659 } 2660 }; 2661 var popupStateMapping = { 2662 open(value) { 2663 if (value) { 2664 return POPUP_OPEN_HOOK; 2665 } 2666 return POPUP_CLOSED_HOOK; 2667 }, 2668 anchorHidden(value) { 2669 if (value) { 2670 return ANCHOR_HIDDEN_HOOK; 2671 } 2672 return null; 2673 } 2674 }; 2675 var popupTransitionStateMapping = { 2676 ...popupStateMapping, 2677 ...transitionStatusMapping 2678 }; 2679 2680 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/element.mjs 2681 function isEventTargetWithin(event, node) { 2682 if (node == null) { 2683 return false; 2684 } 2685 if ("composedPath" in event) { 2686 return event.composedPath().includes(node); 2687 } 2688 const eventAgain = event; 2689 return eventAgain.target != null && node.contains(eventAgain.target); 2690 } 2691 function isRootElement(element) { 2692 return element.matches("html,body"); 2693 } 2694 function isTypeableElement(element) { 2695 return isHTMLElement(element) && element.matches(TYPEABLE_SELECTOR); 2696 } 2697 function isTypeableCombobox(element) { 2698 if (!element) { 2699 return false; 2700 } 2701 return element.getAttribute("role") === "combobox" && isTypeableElement(element); 2702 } 2703 function getFloatingFocusElement(floatingElement) { 2704 if (!floatingElement) { 2705 return null; 2706 } 2707 return floatingElement.hasAttribute(FOCUSABLE_ATTRIBUTE) ? floatingElement : floatingElement.querySelector(`[$FOCUSABLE_ATTRIBUTE}]`) || floatingElement; 2708 } 2709 2710 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingFocusManager.mjs 2711 var React22 = __toESM(require_react(), 1); 2712 2713 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/mergeCleanups.mjs 2714 function mergeCleanups(...cleanups) { 2715 return () => { 2716 for (let i = 0; i < cleanups.length; i += 1) { 2717 const cleanup = cleanups[i]; 2718 if (cleanup) { 2719 cleanup(); 2720 } 2721 } 2722 }; 2723 } 2724 2725 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/FocusGuard.mjs 2726 var React19 = __toESM(require_react(), 1); 2727 2728 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/visuallyHidden.mjs 2729 var visuallyHiddenBase = { 2730 clipPath: "inset(50%)", 2731 overflow: "hidden", 2732 whiteSpace: "nowrap", 2733 border: 0, 2734 padding: 0, 2735 width: 1, 2736 height: 1, 2737 margin: -1 2738 }; 2739 var visuallyHidden = { 2740 ...visuallyHiddenBase, 2741 position: "fixed", 2742 margin: 0, 2743 top: 0, 2744 left: 0 2745 }; 2746 var visuallyHiddenInput = { 2747 ...visuallyHiddenBase, 2748 position: "absolute" 2749 }; 2750 2751 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/FocusGuard.mjs 2752 var import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1); 2753 var FocusGuard = /* @__PURE__ */ React19.forwardRef(function FocusGuard2(props, ref) { 2754 const [role, setRole] = React19.useState(); 2755 useIsoLayoutEffect(() => { 2756 if (parts_exports.screenReader.voiceOver && parts_exports.engine.webkit) { 2757 setRole("button"); 2758 } 2759 }, []); 2760 const restProps = { 2761 tabIndex: 0, 2762 // Role is only for VoiceOver 2763 role 2764 }; 2765 return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { 2766 ...props, 2767 ref, 2768 style: visuallyHidden, 2769 "aria-hidden": role ? void 0 : true, 2770 ...restProps, 2771 "data-base-ui-focus-guard": "" 2772 }); 2773 }); 2774 if (true) FocusGuard.displayName = "FocusGuard"; 2775 2776 // node_modules/.store/@floating-ui/utils@0.2.12-gOxTzMf36nCrbeHpEew-rw/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs 2777 var min = Math.min; 2778 var max = Math.max; 2779 var round = Math.round; 2780 var floor = Math.floor; 2781 var createCoords = (v) => ({ 2782 x: v, 2783 y: v 2784 }); 2785 var oppositeSideMap = { 2786 left: "right", 2787 right: "left", 2788 bottom: "top", 2789 top: "bottom" 2790 }; 2791 function clamp(start, value, end) { 2792 return max(start, min(value, end)); 2793 } 2794 function evaluate(value, param) { 2795 return typeof value === "function" ? value(param) : value; 2796 } 2797 function getSide(placement) { 2798 return placement.split("-")[0]; 2799 } 2800 function getAlignment(placement) { 2801 return placement.split("-")[1]; 2802 } 2803 function getOppositeAxis(axis) { 2804 return axis === "x" ? "y" : "x"; 2805 } 2806 function getAxisLength(axis) { 2807 return axis === "y" ? "height" : "width"; 2808 } 2809 function getSideAxis(placement) { 2810 const firstChar = placement[0]; 2811 return firstChar === "t" || firstChar === "b" ? "y" : "x"; 2812 } 2813 function getAlignmentAxis(placement) { 2814 return getOppositeAxis(getSideAxis(placement)); 2815 } 2816 function getAlignmentSides(placement, rects, rtl) { 2817 if (rtl === void 0) { 2818 rtl = false; 2819 } 2820 const alignment = getAlignment(placement); 2821 const alignmentAxis = getAlignmentAxis(placement); 2822 const length = getAxisLength(alignmentAxis); 2823 let mainAlignmentSide = alignmentAxis === "x" ? alignment === (rtl ? "end" : "start") ? "right" : "left" : alignment === "start" ? "bottom" : "top"; 2824 if (rects.reference[length] > rects.floating[length]) { 2825 mainAlignmentSide = getOppositePlacement(mainAlignmentSide); 2826 } 2827 return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)]; 2828 } 2829 function getExpandedPlacements(placement) { 2830 const oppositePlacement = getOppositePlacement(placement); 2831 return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)]; 2832 } 2833 function getOppositeAlignmentPlacement(placement) { 2834 return placement.includes("start") ? placement.replace("start", "end") : placement.replace("end", "start"); 2835 } 2836 var lrPlacement = ["left", "right"]; 2837 var rlPlacement = ["right", "left"]; 2838 var tbPlacement = ["top", "bottom"]; 2839 var btPlacement = ["bottom", "top"]; 2840 function getSideList(side, isStart, rtl) { 2841 switch (side) { 2842 case "top": 2843 case "bottom": 2844 if (rtl) return isStart ? rlPlacement : lrPlacement; 2845 return isStart ? lrPlacement : rlPlacement; 2846 case "left": 2847 case "right": 2848 return isStart ? tbPlacement : btPlacement; 2849 default: 2850 return []; 2851 } 2852 } 2853 function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) { 2854 const alignment = getAlignment(placement); 2855 let list = getSideList(getSide(placement), direction === "start", rtl); 2856 if (alignment) { 2857 list = list.map((side) => side + "-" + alignment); 2858 if (flipAlignment) { 2859 list = list.concat(list.map(getOppositeAlignmentPlacement)); 2860 } 2861 } 2862 return list; 2863 } 2864 function getOppositePlacement(placement) { 2865 const side = getSide(placement); 2866 return oppositeSideMap[side] + placement.slice(side.length); 2867 } 2868 function expandPaddingObject(padding) { 2869 var _padding$top, _padding$right, _padding$bottom, _padding$left; 2870 return { 2871 top: (_padding$top = padding.top) != null ? _padding$top : 0, 2872 right: (_padding$right = padding.right) != null ? _padding$right : 0, 2873 bottom: (_padding$bottom = padding.bottom) != null ? _padding$bottom : 0, 2874 left: (_padding$left = padding.left) != null ? _padding$left : 0 2875 }; 2876 } 2877 function getPaddingObject(padding) { 2878 return typeof padding !== "number" ? expandPaddingObject(padding) : { 2879 top: padding, 2880 right: padding, 2881 bottom: padding, 2882 left: padding 2883 }; 2884 } 2885 function rectToClientRect(rect) { 2886 const { 2887 x, 2888 y, 2889 width, 2890 height 2891 } = rect; 2892 return { 2893 width, 2894 height, 2895 top: y, 2896 left: x, 2897 right: x + width, 2898 bottom: y + height, 2899 x, 2900 y 2901 }; 2902 } 2903 2904 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/composite.mjs 2905 function isIndexOutOfListBounds(list, index2) { 2906 return index2 < 0 || index2 >= list.length; 2907 } 2908 function getMinListIndex(listRef, disabledIndices) { 2909 return findNonDisabledListIndex(listRef.current, { 2910 disabledIndices 2911 }); 2912 } 2913 function getMaxListIndex(listRef, disabledIndices) { 2914 return findNonDisabledListIndex(listRef.current, { 2915 decrement: true, 2916 startingIndex: listRef.current.length, 2917 disabledIndices 2918 }); 2919 } 2920 function getNextListIndex(list, currentIndex, options) { 2921 const { 2922 decrement, 2923 loopFocus, 2924 allowEscape, 2925 disabledIndices, 2926 minIndex, 2927 maxIndex 2928 } = options; 2929 const step = () => findNonDisabledListIndex(list, { 2930 startingIndex: currentIndex, 2931 decrement, 2932 disabledIndices 2933 }); 2934 let index2; 2935 let wrapped = false; 2936 if (!loopFocus) { 2937 index2 = decrement ? Math.max(minIndex, step()) : Math.min(maxIndex, step()); 2938 } else if (decrement ? currentIndex <= minIndex : currentIndex >= maxIndex) { 2939 const outside = decrement ? -1 : list.length; 2940 if (allowEscape && currentIndex !== outside) { 2941 index2 = -1; 2942 } else { 2943 index2 = decrement ? maxIndex : minIndex; 2944 wrapped = true; 2945 } 2946 } else { 2947 index2 = step(); 2948 } 2949 return { 2950 index: isIndexOutOfListBounds(list, index2) ? -1 : index2, 2951 wrapped 2952 }; 2953 } 2954 function findNonDisabledListIndex(list, { 2955 startingIndex = -1, 2956 decrement = false, 2957 disabledIndices, 2958 amount = 1 2959 } = {}) { 2960 let index2 = startingIndex; 2961 do { 2962 index2 += decrement ? -amount : amount; 2963 } while (index2 >= 0 && index2 <= list.length - 1 && isListIndexDisabled(list, index2, disabledIndices)); 2964 return index2; 2965 } 2966 function isListIndexDisabled(list, index2, disabledIndices) { 2967 const isExplicitlyDisabled = typeof disabledIndices === "function" ? disabledIndices(index2) : disabledIndices?.includes(index2) ?? false; 2968 if (isExplicitlyDisabled) { 2969 return true; 2970 } 2971 const element = list[index2]; 2972 if (!element) { 2973 return false; 2974 } 2975 if (!isElementVisible(element)) { 2976 return true; 2977 } 2978 if (element.matches(":disabled")) { 2979 return true; 2980 } 2981 return !disabledIndices && (element.hasAttribute("disabled") || element.getAttribute("aria-disabled") === "true"); 2982 } 2983 function isHiddenByStyles(styles) { 2984 return styles.visibility === "hidden" || styles.visibility === "collapse"; 2985 } 2986 function isElementVisible(element, styles = element ? getComputedStyle2(element) : null) { 2987 if (!element || !element.isConnected || !styles || isHiddenByStyles(styles)) { 2988 return false; 2989 } 2990 if (typeof element.checkVisibility === "function") { 2991 return element.checkVisibility(); 2992 } 2993 return styles.display !== "none" && styles.display !== "contents"; 2994 } 2995 2996 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/tabbable.mjs 2997 var CANDIDATE_SELECTOR = 'a[href],button,input,select,textarea,summary,details,iframe,object,embed,[tabindex],[contenteditable]:not([contenteditable="false"]),audio[controls],video[controls]'; 2998 function getParentElement(element) { 2999 const assignedSlot = element.assignedSlot; 3000 if (assignedSlot) { 3001 return assignedSlot; 3002 } 3003 if (element.parentElement) { 3004 return element.parentElement; 3005 } 3006 const rootNode = element.getRootNode(); 3007 return isShadowRoot(rootNode) ? rootNode.host : null; 3008 } 3009 function getDetailsSummary(details) { 3010 for (const child of Array.from(details.children)) { 3011 if (getNodeName(child) === "summary") { 3012 return child; 3013 } 3014 } 3015 return null; 3016 } 3017 function isWithinOpenDetailsSummary(element, details) { 3018 const summary = getDetailsSummary(details); 3019 return !!summary && (element === summary || contains(summary, element)); 3020 } 3021 function isFocusableCandidate(element) { 3022 const nodeName = element ? getNodeName(element) : ""; 3023 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"); 3024 } 3025 function isFocusableElement(element) { 3026 if (!isFocusableCandidate(element) || !element.isConnected || element.matches(":disabled")) { 3027 return false; 3028 } 3029 for (let current = element; current; current = getParentElement(current)) { 3030 const isAncestor = current !== element; 3031 const isSlot = getNodeName(current) === "slot"; 3032 if (current.hasAttribute("inert")) { 3033 return false; 3034 } 3035 if (isAncestor && getNodeName(current) === "details" && !current.open && !isWithinOpenDetailsSummary(element, current) || current.hasAttribute("hidden") || !isSlot && !isVisibleInTabbableTree(current, isAncestor)) { 3036 return false; 3037 } 3038 } 3039 return true; 3040 } 3041 function isVisibleInTabbableTree(element, isAncestor) { 3042 const styles = getComputedStyle2(element); 3043 if (!isAncestor) { 3044 return isElementVisible(element, styles); 3045 } 3046 return styles.display !== "none"; 3047 } 3048 function getTabIndex(element) { 3049 const tabIndex = element.tabIndex; 3050 if (tabIndex < 0) { 3051 const nodeName = getNodeName(element); 3052 if (nodeName === "details" || nodeName === "audio" || nodeName === "video" || isHTMLElement(element) && element.isContentEditable) { 3053 return 0; 3054 } 3055 } 3056 return tabIndex; 3057 } 3058 function getNamedRadioInput(element) { 3059 if (getNodeName(element) !== "input") { 3060 return null; 3061 } 3062 const input = element; 3063 return input.type === "radio" && input.name !== "" ? input : null; 3064 } 3065 function isTabbableRadio(element, candidates) { 3066 const input = getNamedRadioInput(element); 3067 if (!input) { 3068 return true; 3069 } 3070 const checkedRadio = candidates.find((candidate) => { 3071 const radio = getNamedRadioInput(candidate); 3072 return radio?.name === input.name && radio.form === input.form && radio.checked; 3073 }); 3074 if (checkedRadio) { 3075 return checkedRadio === input; 3076 } 3077 return candidates.find((candidate) => { 3078 const radio = getNamedRadioInput(candidate); 3079 return radio?.name === input.name && radio.form === input.form; 3080 }) === input; 3081 } 3082 function getComposedChildren(container) { 3083 if (isHTMLElement(container) && getNodeName(container) === "slot") { 3084 const assignedElements = container.assignedElements({ 3085 flatten: true 3086 }); 3087 if (assignedElements.length > 0) { 3088 return assignedElements; 3089 } 3090 } 3091 if (isHTMLElement(container) && container.shadowRoot) { 3092 return Array.from(container.shadowRoot.children); 3093 } 3094 return Array.from(container.children); 3095 } 3096 function appendCandidates(container, list) { 3097 getComposedChildren(container).forEach((child) => { 3098 if (isFocusableCandidate(child)) { 3099 list.push(child); 3100 } 3101 appendCandidates(child, list); 3102 }); 3103 } 3104 function appendMatchingElements(container, selector, list) { 3105 getComposedChildren(container).forEach((child) => { 3106 if (isHTMLElement(child) && child.matches(selector)) { 3107 list.push(child); 3108 } 3109 appendMatchingElements(child, selector, list); 3110 }); 3111 } 3112 function isTabbable(element) { 3113 return isFocusableElement(element) && getTabIndex(element) >= 0; 3114 } 3115 function focusable(container) { 3116 const candidates = []; 3117 appendCandidates(container, candidates); 3118 return candidates.filter(isFocusableElement); 3119 } 3120 function tabbable(container) { 3121 const candidates = focusable(container); 3122 return candidates.filter((element) => getTabIndex(element) >= 0 && isTabbableRadio(element, candidates)); 3123 } 3124 function getTabbableIn(container, dir) { 3125 const list = tabbable(container); 3126 const len = list.length; 3127 if (len === 0) { 3128 return void 0; 3129 } 3130 const active = activeElement(ownerDocument(container)); 3131 const index2 = list.indexOf(active); 3132 const nextIndex = index2 === -1 ? dir === 1 ? 0 : len - 1 : index2 + dir; 3133 return list[nextIndex]; 3134 } 3135 function getNextTabbable(referenceElement) { 3136 return getTabbableIn(ownerDocument(referenceElement).body, 1) || referenceElement; 3137 } 3138 function getPreviousTabbable(referenceElement) { 3139 return getTabbableIn(ownerDocument(referenceElement).body, -1) || referenceElement; 3140 } 3141 function isOutsideEvent(event, container) { 3142 const containerElement = container || event.currentTarget; 3143 const relatedTarget = event.relatedTarget; 3144 return !relatedTarget || !contains(containerElement, relatedTarget); 3145 } 3146 function disableFocusInside(container) { 3147 const tabbableElements = tabbable(container); 3148 tabbableElements.forEach((element) => { 3149 element.dataset.tabindex = element.getAttribute("tabindex") || ""; 3150 element.setAttribute("tabindex", "-1"); 3151 }); 3152 } 3153 function enableFocusInside(container) { 3154 const elements = []; 3155 appendMatchingElements(container, "[data-tabindex]", elements); 3156 elements.forEach((element) => { 3157 const tabindex = element.dataset.tabindex; 3158 delete element.dataset.tabindex; 3159 if (tabindex) { 3160 element.setAttribute("tabindex", tabindex); 3161 } else { 3162 element.removeAttribute("tabindex"); 3163 } 3164 }); 3165 } 3166 3167 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/nodes.mjs 3168 function getNodeChildren(nodes, id, onlyOpenChildren = true) { 3169 const directChildren = nodes.filter((node) => node.parentId === id); 3170 return directChildren.flatMap((child) => [...!onlyOpenChildren || child.context?.open ? [child] : [], ...getNodeChildren(nodes, child.id, onlyOpenChildren)]); 3171 } 3172 function getNodeAncestors(nodes, id) { 3173 let allAncestors = []; 3174 let currentParentId = nodes.find((node) => node.id === id)?.parentId; 3175 while (currentParentId) { 3176 const currentNode = nodes.find((node) => node.id === currentParentId); 3177 currentParentId = currentNode?.parentId; 3178 if (currentNode) { 3179 allAncestors = allAncestors.concat(currentNode); 3180 } 3181 } 3182 return allAncestors; 3183 } 3184 3185 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/createAttribute.mjs 3186 function createAttribute(name3) { 3187 return `data-base-ui-$name3}`; 3188 } 3189 3190 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/enqueueFocus.mjs 3191 var rafId = 0; 3192 function enqueueFocus(el2, options = {}) { 3193 const { 3194 preventScroll = false, 3195 sync = false, 3196 shouldFocus 3197 } = options; 3198 cancelAnimationFrame(rafId); 3199 function exec() { 3200 if (shouldFocus && !shouldFocus()) { 3201 return; 3202 } 3203 el2?.focus({ 3204 preventScroll 3205 }); 3206 } 3207 if (sync) { 3208 exec(); 3209 return NOOP; 3210 } 3211 const currentRafId = requestAnimationFrame(exec); 3212 rafId = currentRafId; 3213 return () => { 3214 if (rafId === currentRafId) { 3215 cancelAnimationFrame(currentRafId); 3216 rafId = 0; 3217 } 3218 }; 3219 } 3220 3221 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/markOthers.mjs 3222 var markerName = "data-base-ui-inert"; 3223 var ariaHiddenCounterMap = /* @__PURE__ */ new WeakMap(); 3224 var uncontrolledElementsSet = /* @__PURE__ */ new WeakSet(); 3225 var markerCounterMap = /* @__PURE__ */ new WeakMap(); 3226 var lockCount = 0; 3227 function unwrapHost(node) { 3228 if (!node) { 3229 return null; 3230 } 3231 return isShadowRoot(node) ? node.host : unwrapHost(node.parentNode); 3232 } 3233 var correctElements = (parent, targets) => targets.map((target) => { 3234 if (parent.contains(target)) { 3235 return target; 3236 } 3237 const correctedTarget = unwrapHost(target); 3238 if (parent.contains(correctedTarget)) { 3239 return correctedTarget; 3240 } 3241 return null; 3242 }).filter((x) => x != null); 3243 var buildKeepSet = (targets) => { 3244 const keep = /* @__PURE__ */ new Set(); 3245 targets.forEach((target) => { 3246 let node = target; 3247 while (node && !keep.has(node)) { 3248 keep.add(node); 3249 node = node.parentNode; 3250 } 3251 }); 3252 return keep; 3253 }; 3254 var collectOutsideElements = (root, keepElements, stopElements) => { 3255 const outside = []; 3256 const walk = (parent) => { 3257 if (!parent || stopElements.has(parent)) { 3258 return; 3259 } 3260 Array.from(parent.children).forEach((node) => { 3261 if (getNodeName(node) === "script") { 3262 return; 3263 } 3264 if (keepElements.has(node)) { 3265 walk(node); 3266 } else { 3267 outside.push(node); 3268 } 3269 }); 3270 }; 3271 walk(root); 3272 return outside; 3273 }; 3274 function applyAttributeToOthers(uncorrectedAvoidElements, body, ariaHidden, { 3275 mark = true 3276 }) { 3277 const avoidElements = correctElements(body, uncorrectedAvoidElements); 3278 const markerTargets = mark ? collectOutsideElements(body, buildKeepSet(avoidElements), new Set(avoidElements)) : []; 3279 const hiddenElements = []; 3280 const markedElements = []; 3281 if (ariaHidden) { 3282 const ariaLiveElements = correctElements(body, Array.from(body.querySelectorAll("[aria-live]"))); 3283 const controlElements = avoidElements.concat(ariaLiveElements); 3284 const controlTargets = collectOutsideElements(body, buildKeepSet(controlElements), new Set(controlElements)); 3285 controlTargets.forEach((node) => { 3286 const attr2 = node.getAttribute("aria-hidden"); 3287 const alreadyHidden = attr2 !== null && attr2 !== "false"; 3288 const counterValue = (ariaHiddenCounterMap.get(node) || 0) + 1; 3289 ariaHiddenCounterMap.set(node, counterValue); 3290 hiddenElements.push(node); 3291 if (counterValue === 1 && alreadyHidden) { 3292 uncontrolledElementsSet.add(node); 3293 } 3294 if (!alreadyHidden) { 3295 node.setAttribute("aria-hidden", "true"); 3296 } 3297 }); 3298 } 3299 if (mark) { 3300 markerTargets.forEach((node) => { 3301 const markerValue = (markerCounterMap.get(node) || 0) + 1; 3302 markerCounterMap.set(node, markerValue); 3303 markedElements.push(node); 3304 if (markerValue === 1) { 3305 node.setAttribute(markerName, ""); 3306 } 3307 }); 3308 } 3309 lockCount += 1; 3310 return () => { 3311 hiddenElements.forEach((element) => { 3312 const counterValue = (ariaHiddenCounterMap.get(element) || 0) - 1; 3313 ariaHiddenCounterMap.set(element, counterValue); 3314 if (!counterValue) { 3315 if (!uncontrolledElementsSet.has(element)) { 3316 element.removeAttribute("aria-hidden"); 3317 } 3318 uncontrolledElementsSet.delete(element); 3319 } 3320 }); 3321 if (mark) { 3322 markedElements.forEach((element) => { 3323 const markerValue = (markerCounterMap.get(element) || 0) - 1; 3324 markerCounterMap.set(element, markerValue); 3325 if (!markerValue) { 3326 element.removeAttribute(markerName); 3327 } 3328 }); 3329 } 3330 lockCount -= 1; 3331 if (!lockCount) { 3332 ariaHiddenCounterMap = /* @__PURE__ */ new WeakMap(); 3333 uncontrolledElementsSet = /* @__PURE__ */ new WeakSet(); 3334 markerCounterMap = /* @__PURE__ */ new WeakMap(); 3335 } 3336 }; 3337 } 3338 function markOthers(avoidElements, options = {}) { 3339 const { 3340 ariaHidden = false, 3341 mark = true 3342 } = options; 3343 const body = ownerDocument(avoidElements[0]).body; 3344 return applyAttributeToOthers(avoidElements, body, ariaHidden, { 3345 mark 3346 }); 3347 } 3348 3349 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingPortal.mjs 3350 var React20 = __toESM(require_react(), 1); 3351 var ReactDOM2 = __toESM(require_react_dom(), 1); 3352 3353 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/constants.mjs 3354 var DISABLED_TRANSITIONS_STYLE = { 3355 style: { 3356 transition: "none" 3357 } 3358 }; 3359 var CLICK_TRIGGER_IDENTIFIER = "data-base-ui-click-trigger"; 3360 var BASE_UI_SWIPE_IGNORE_ATTRIBUTE = "data-base-ui-swipe-ignore"; 3361 var LEGACY_SWIPE_IGNORE_ATTRIBUTE = "data-swipe-ignore"; 3362 var BASE_UI_SWIPE_IGNORE_SELECTOR = `[$BASE_UI_SWIPE_IGNORE_ATTRIBUTE}]`; 3363 var LEGACY_SWIPE_IGNORE_SELECTOR = `[$LEGACY_SWIPE_IGNORE_ATTRIBUTE}]`; 3364 var DROPDOWN_COLLISION_AVOIDANCE = { 3365 fallbackAxisSide: "none" 3366 }; 3367 var ownerVisuallyHidden = { 3368 clipPath: "inset(50%)", 3369 position: "fixed", 3370 top: 0, 3371 left: 0 3372 }; 3373 3374 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingPortal.mjs 3375 var import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1); 3376 var PortalContext = /* @__PURE__ */ React20.createContext(null); 3377 if (true) PortalContext.displayName = "PortalContext"; 3378 var usePortalContext = () => React20.useContext(PortalContext); 3379 var attr = createAttribute("portal"); 3380 function useFloatingPortalNode(props = {}) { 3381 const { 3382 ref, 3383 container: containerProp, 3384 componentProps = EMPTY_OBJECT, 3385 elementProps 3386 } = props; 3387 const uniqueId = useId(); 3388 const portalContext = usePortalContext(); 3389 const parentPortalNode = portalContext?.portalNode; 3390 const [containerElement, setContainerElement] = React20.useState(null); 3391 const [portalNode, setPortalNode] = React20.useState(null); 3392 const setPortalNodeRef = useStableCallback((node) => { 3393 if (node !== null) { 3394 setPortalNode(node); 3395 } 3396 }); 3397 const containerRef = React20.useRef(null); 3398 useIsoLayoutEffect(() => { 3399 if (containerProp === null) { 3400 if (containerRef.current) { 3401 containerRef.current = null; 3402 setPortalNode(null); 3403 setContainerElement(null); 3404 } 3405 return; 3406 } 3407 const resolvedContainer = (containerProp && (isNode(containerProp) ? containerProp : containerProp.current)) ?? parentPortalNode ?? document.body; 3408 if (resolvedContainer == null) { 3409 if (containerRef.current) { 3410 containerRef.current = null; 3411 setPortalNode(null); 3412 setContainerElement(null); 3413 } 3414 return; 3415 } 3416 if (containerRef.current !== resolvedContainer) { 3417 containerRef.current = resolvedContainer; 3418 setPortalNode(null); 3419 setContainerElement(resolvedContainer); 3420 } 3421 }, [containerProp, parentPortalNode]); 3422 const portalElement = useRenderElement("div", componentProps, { 3423 ref: [ref, setPortalNodeRef], 3424 props: [{ 3425 id: uniqueId, 3426 [attr]: "" 3427 }, elementProps] 3428 }); 3429 const portalSubtree = containerElement && portalElement ? /* @__PURE__ */ ReactDOM2.createPortal(portalElement, containerElement) : null; 3430 return { 3431 node: portalNode, 3432 // `id` and `render` props can override or remove the generated ID. Use the exact 3433 // rendered value so `aria-owns` never points at an ID absent from the DOM. 3434 nodeId: /* @__PURE__ */ React20.isValidElement(portalElement) ? portalElement.props.id : void 0, 3435 subtree: portalSubtree 3436 }; 3437 } 3438 var FloatingPortal = /* @__PURE__ */ React20.forwardRef(function FloatingPortal2(componentProps, forwardedRef) { 3439 const { 3440 render, 3441 className, 3442 style, 3443 children, 3444 container, 3445 portalOwnerRole, 3446 ...elementProps 3447 } = componentProps; 3448 const { 3449 node: portalNode, 3450 nodeId: portalNodeId, 3451 subtree: portalSubtree 3452 } = useFloatingPortalNode({ 3453 container, 3454 ref: forwardedRef, 3455 componentProps, 3456 elementProps 3457 }); 3458 const beforeOutsideRef = React20.useRef(null); 3459 const afterOutsideRef = React20.useRef(null); 3460 const beforeInsideRef = React20.useRef(null); 3461 const afterInsideRef = React20.useRef(null); 3462 const [focusManagerState, setFocusManagerState] = React20.useState(null); 3463 const focusInsideDisabledRef = React20.useRef(false); 3464 const modal = focusManagerState?.modal; 3465 const open2 = focusManagerState?.open; 3466 const shouldRenderGuards = !!focusManagerState && !focusManagerState.modal && focusManagerState.open && !!portalNode; 3467 React20.useEffect(() => { 3468 if (!portalNode || modal) { 3469 return void 0; 3470 } 3471 function onFocus(event) { 3472 if (portalNode && event.relatedTarget && isOutsideEvent(event)) { 3473 if (event.type === "focusin") { 3474 if (focusInsideDisabledRef.current) { 3475 enableFocusInside(portalNode); 3476 focusInsideDisabledRef.current = false; 3477 } 3478 } else { 3479 disableFocusInside(portalNode); 3480 focusInsideDisabledRef.current = true; 3481 } 3482 } 3483 } 3484 return mergeCleanups(addEventListener(portalNode, "focusin", onFocus, true), addEventListener(portalNode, "focusout", onFocus, true)); 3485 }, [portalNode, modal]); 3486 useIsoLayoutEffect(() => { 3487 if (!portalNode || open2 !== true || !focusInsideDisabledRef.current) { 3488 return; 3489 } 3490 enableFocusInside(portalNode); 3491 focusInsideDisabledRef.current = false; 3492 }, [open2, portalNode]); 3493 const portalContextValue = React20.useMemo(() => ({ 3494 beforeOutsideRef, 3495 afterOutsideRef, 3496 beforeInsideRef, 3497 afterInsideRef, 3498 portalNode, 3499 setFocusManagerState 3500 }), [portalNode]); 3501 return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(React20.Fragment, { 3502 children: [portalSubtree, /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(PortalContext.Provider, { 3503 value: portalContextValue, 3504 children: [shouldRenderGuards && portalNode && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(FocusGuard, { 3505 "data-type": "outside", 3506 ref: beforeOutsideRef, 3507 onFocus: (event) => { 3508 if (isOutsideEvent(event, portalNode)) { 3509 beforeInsideRef.current?.focus(); 3510 } else { 3511 const domReference = focusManagerState ? focusManagerState.domReference : null; 3512 const prevTabbable = getPreviousTabbable(domReference); 3513 prevTabbable?.focus(); 3514 } 3515 } 3516 }), shouldRenderGuards && portalNode && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { 3517 role: portalOwnerRole, 3518 "aria-owns": portalNodeId, 3519 style: ownerVisuallyHidden 3520 }), portalNode && /* @__PURE__ */ ReactDOM2.createPortal(children, portalNode), shouldRenderGuards && portalNode && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(FocusGuard, { 3521 "data-type": "outside", 3522 ref: afterOutsideRef, 3523 onFocus: (event) => { 3524 if (isOutsideEvent(event, portalNode)) { 3525 afterInsideRef.current?.focus(); 3526 } else { 3527 const domReference = focusManagerState ? focusManagerState.domReference : null; 3528 const nextTabbable = getNextTabbable(domReference); 3529 nextTabbable?.focus(); 3530 if (focusManagerState?.closeOnFocusOut) { 3531 focusManagerState?.onOpenChange(false, createChangeEventDetails(reason_parts_exports.focusOut, event.nativeEvent)); 3532 } 3533 } 3534 } 3535 })] 3536 })] 3537 }); 3538 }); 3539 if (true) FloatingPortal.displayName = "FloatingPortal"; 3540 3541 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingTree.mjs 3542 var React21 = __toESM(require_react(), 1); 3543 3544 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/createEventEmitter.mjs 3545 function createEventEmitter() { 3546 const map = /* @__PURE__ */ new Map(); 3547 return { 3548 emit(event, data) { 3549 map.get(event)?.forEach((listener) => listener(data)); 3550 }, 3551 on(event, listener) { 3552 if (!map.has(event)) { 3553 map.set(event, /* @__PURE__ */ new Set()); 3554 } 3555 map.get(event).add(listener); 3556 }, 3557 off(event, listener) { 3558 map.get(event)?.delete(listener); 3559 } 3560 }; 3561 } 3562 3563 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingTree.mjs 3564 var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1); 3565 var FloatingNodeContext = /* @__PURE__ */ React21.createContext(null); 3566 if (true) FloatingNodeContext.displayName = "FloatingNodeContext"; 3567 var FloatingTreeContext = /* @__PURE__ */ React21.createContext(null); 3568 if (true) FloatingTreeContext.displayName = "FloatingTreeContext"; 3569 var useFloatingParentNodeId = () => React21.useContext(FloatingNodeContext)?.id || null; 3570 var useFloatingTree = (externalTree) => { 3571 const contextTree = React21.useContext(FloatingTreeContext); 3572 return externalTree ?? contextTree; 3573 }; 3574 3575 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingFocusManager.mjs 3576 var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1); 3577 function getEventType(event, lastInteractionType) { 3578 const win = getWindow(getTarget(event)); 3579 if (event instanceof win.KeyboardEvent) { 3580 return "keyboard"; 3581 } 3582 if (event instanceof win.FocusEvent) { 3583 return lastInteractionType || "keyboard"; 3584 } 3585 if ("pointerType" in event) { 3586 return event.pointerType || (isVirtualClick(event) ? "keyboard" : lastInteractionType || "mouse"); 3587 } 3588 if ("touches" in event) { 3589 return "touch"; 3590 } 3591 if (event instanceof win.MouseEvent) { 3592 return lastInteractionType || (event.detail === 0 ? "keyboard" : "mouse"); 3593 } 3594 return ""; 3595 } 3596 var LIST_LIMIT = 20; 3597 var previouslyFocusedElements = []; 3598 function clearDisconnectedPreviouslyFocusedElements() { 3599 previouslyFocusedElements = previouslyFocusedElements.filter((entry) => { 3600 return entry.deref()?.isConnected; 3601 }); 3602 } 3603 function addPreviouslyFocusedElement(element) { 3604 clearDisconnectedPreviouslyFocusedElements(); 3605 if (element && getNodeName(element) !== "body") { 3606 previouslyFocusedElements.push(new WeakRef(element)); 3607 if (previouslyFocusedElements.length > LIST_LIMIT) { 3608 previouslyFocusedElements = previouslyFocusedElements.slice(-LIST_LIMIT); 3609 } 3610 } 3611 } 3612 function getPreviouslyFocusedElement() { 3613 clearDisconnectedPreviouslyFocusedElements(); 3614 return previouslyFocusedElements[previouslyFocusedElements.length - 1]?.deref(); 3615 } 3616 function getFirstTabbableElement(container) { 3617 if (!container) { 3618 return null; 3619 } 3620 if (isTabbable(container)) { 3621 return container; 3622 } 3623 return tabbable(container)[0] || container; 3624 } 3625 function handleTabIndex(floatingFocusElement) { 3626 if (floatingFocusElement.hasAttribute("tabindex") && !floatingFocusElement.hasAttribute("data-tabindex")) { 3627 return; 3628 } 3629 if (!floatingFocusElement.getAttribute("role")?.includes("dialog")) { 3630 return; 3631 } 3632 const focusableElements = focusable(floatingFocusElement); 3633 const tabbableContent = focusableElements.filter((element) => { 3634 const dataTabIndex = element.getAttribute("data-tabindex") || ""; 3635 return isTabbable(element) || element.hasAttribute("data-tabindex") && !dataTabIndex.startsWith("-"); 3636 }); 3637 const tabIndex = floatingFocusElement.getAttribute("tabindex"); 3638 if (tabbableContent.length === 0) { 3639 if (tabIndex !== "0") { 3640 floatingFocusElement.setAttribute("tabindex", "0"); 3641 floatingFocusElement.setAttribute("data-tabindex", "0"); 3642 } 3643 } else if (tabIndex !== "-1" || floatingFocusElement.hasAttribute("data-tabindex") && floatingFocusElement.getAttribute("data-tabindex") !== "-1") { 3644 floatingFocusElement.setAttribute("tabindex", "-1"); 3645 floatingFocusElement.setAttribute("data-tabindex", "-1"); 3646 } 3647 } 3648 function FloatingFocusManager(props) { 3649 const { 3650 context: store, 3651 children, 3652 disabled: disabled2 = false, 3653 initialFocus = true, 3654 returnFocus = true, 3655 explicitReturnFocus, 3656 restoreFocus = false, 3657 modal = true, 3658 closeOnFocusOut = true, 3659 openInteractionType = "", 3660 nextFocusableElement, 3661 previousFocusableElement, 3662 beforeContentFocusGuardRef, 3663 externalTree, 3664 getInsideElements 3665 } = props; 3666 const open2 = store.useState("open"); 3667 const domReference = store.useState("domReferenceElement"); 3668 const floating = store.useState("floatingElement"); 3669 const { 3670 events, 3671 dataRef 3672 } = store.context; 3673 const getNodeId = useStableCallback(() => dataRef.current.floatingContext?.nodeId); 3674 const ignoreInitialFocus = initialFocus === false; 3675 const isUntrappedTypeableCombobox = isTypeableCombobox(domReference) && ignoreInitialFocus; 3676 const initialFocusRef = useValueAsRef(initialFocus); 3677 const returnFocusRef = useValueAsRef(returnFocus); 3678 const explicitReturnFocusRef = useValueAsRef(explicitReturnFocus); 3679 const openInteractionTypeRef = useValueAsRef(openInteractionType); 3680 const openRef = useValueAsRef(open2); 3681 const tree = useFloatingTree(externalTree); 3682 const portalContext = usePortalContext(); 3683 const preventReturnFocusRef = React22.useRef(false); 3684 const isPointerDownRef = React22.useRef(false); 3685 const pointerDownOutsideRef = React22.useRef(false); 3686 const lastFocusedTabbableRef = React22.useRef(null); 3687 const closeTypeRef = React22.useRef(""); 3688 const lastInteractionTypeRef = React22.useRef(""); 3689 const beforeGuardRef = React22.useRef(null); 3690 const afterGuardRef = React22.useRef(null); 3691 const mergedBeforeGuardRef = useMergedRefs(beforeGuardRef, beforeContentFocusGuardRef, portalContext?.beforeInsideRef); 3692 const mergedAfterGuardRef = useMergedRefs(afterGuardRef, portalContext?.afterInsideRef); 3693 const blurTimeout = useTimeout(); 3694 const pointerDownTimeout = useTimeout(); 3695 const restoreFocusFrame = useAnimationFrame(); 3696 const isInsidePortal = portalContext != null; 3697 const floatingFocusElement = getFloatingFocusElement(floating); 3698 const getTabbableContent = useStableCallback((container = floatingFocusElement) => { 3699 return container ? tabbable(container) : []; 3700 }); 3701 const getResolvedInsideElements = useStableCallback(() => getInsideElements?.().filter((element) => element != null) ?? []); 3702 React22.useEffect(() => { 3703 if (disabled2 || !modal) { 3704 return void 0; 3705 } 3706 function onKeyDown(event) { 3707 if (event.key === "Tab") { 3708 if (contains(floatingFocusElement, activeElement(ownerDocument(floatingFocusElement))) && getTabbableContent().length === 0 && !isUntrappedTypeableCombobox) { 3709 stopEvent(event); 3710 } 3711 } 3712 } 3713 const doc = ownerDocument(floatingFocusElement); 3714 return addEventListener(doc, "keydown", onKeyDown); 3715 }, [disabled2, floatingFocusElement, modal, isUntrappedTypeableCombobox, getTabbableContent]); 3716 React22.useEffect(() => { 3717 if (disabled2 || !open2) { 3718 return void 0; 3719 } 3720 const doc = ownerDocument(floatingFocusElement); 3721 function clearPointerDownOutside() { 3722 pointerDownOutsideRef.current = false; 3723 } 3724 function onPointerDown(event) { 3725 const target = getTarget(event); 3726 const insideElements = getResolvedInsideElements(); 3727 const pointerTargetInside = contains(floating, target) || contains(domReference, target) || contains(portalContext?.portalNode, target) || insideElements.some((element) => element === target || contains(element, target)); 3728 pointerDownOutsideRef.current = !pointerTargetInside; 3729 lastInteractionTypeRef.current = event.pointerType || "keyboard"; 3730 if (closest(target, `[$CLICK_TRIGGER_IDENTIFIER}]`)) { 3731 isPointerDownRef.current = true; 3732 pointerDownTimeout.start(0, () => { 3733 isPointerDownRef.current = false; 3734 }); 3735 } 3736 } 3737 function onKeyDown() { 3738 lastInteractionTypeRef.current = "keyboard"; 3739 } 3740 return mergeCleanups( 3741 addEventListener(doc, "pointerdown", onPointerDown, true), 3742 addEventListener(doc, "pointerup", clearPointerDownOutside, true), 3743 addEventListener(doc, "pointercancel", clearPointerDownOutside, true), 3744 addEventListener(doc, "keydown", onKeyDown, true), 3745 // Avoid a stale `true` leaking into the next open (e.g. keep-mounted popups) 3746 // if the popup dismissed between pointerdown and pointerup. 3747 clearPointerDownOutside 3748 ); 3749 }, [disabled2, floating, domReference, floatingFocusElement, open2, portalContext, pointerDownTimeout, getResolvedInsideElements]); 3750 React22.useEffect(() => { 3751 if (disabled2 || !closeOnFocusOut) { 3752 return void 0; 3753 } 3754 const doc = ownerDocument(floatingFocusElement); 3755 function handlePointerDown() { 3756 isPointerDownRef.current = true; 3757 pointerDownTimeout.start(0, () => { 3758 isPointerDownRef.current = false; 3759 }); 3760 } 3761 function handleFocusIn(event) { 3762 const target = getTarget(event); 3763 if (isTabbable(target)) { 3764 lastFocusedTabbableRef.current = target; 3765 } 3766 } 3767 function handleFocusOutside(event) { 3768 const relatedTarget = event.relatedTarget; 3769 const currentTarget = event.currentTarget; 3770 const target = getTarget(event); 3771 if (modal && relatedTarget == null && target != null && contains(floating, target)) { 3772 addPreviouslyFocusedElement(target); 3773 } 3774 queueMicrotask(() => { 3775 const nodeId = getNodeId(); 3776 const triggers = store.context.triggerElements; 3777 const insideElements = getResolvedInsideElements(); 3778 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); 3779 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))); 3780 if (currentTarget === domReference && floatingFocusElement) { 3781 handleTabIndex(floatingFocusElement); 3782 } 3783 if (restoreFocus && currentTarget !== domReference && !isElementVisible(target) && activeElement(doc) === doc.body) { 3784 if (isHTMLElement(floatingFocusElement)) { 3785 floatingFocusElement.focus(); 3786 if (restoreFocus === "popup") { 3787 restoreFocusFrame.request(() => { 3788 floatingFocusElement.focus(); 3789 }); 3790 return; 3791 } 3792 } 3793 const tabbableContent = getTabbableContent(); 3794 const prevTabbable = lastFocusedTabbableRef.current; 3795 const nodeToFocus = (prevTabbable && tabbableContent.includes(prevTabbable) ? prevTabbable : null) || tabbableContent[tabbableContent.length - 1] || floatingFocusElement; 3796 if (isHTMLElement(nodeToFocus)) { 3797 nodeToFocus.focus(); 3798 } 3799 } 3800 if (dataRef.current.insideReactTree) { 3801 dataRef.current.insideReactTree = false; 3802 return; 3803 } 3804 if ((isUntrappedTypeableCombobox ? true : !modal) && relatedTarget && movedToUnrelatedNode && !isPointerDownRef.current && // Fix React 18 Strict Mode returnFocus due to double rendering. 3805 // For an "untrapped" typeable combobox (input role=combobox with 3806 // initialFocus=false), re-opening the popup and tabbing out should still close it even 3807 // when the previously focused element (e.g. the next tabbable outside the popup) is 3808 // focused again. Otherwise, the popup remains open on the second Tab sequence: 3809 // click input -> Tab (closes) -> click input -> Tab. 3810 // Allow closing when `isUntrappedTypeableCombobox` regardless of the previously focused element. 3811 (isUntrappedTypeableCombobox || relatedTarget !== getPreviouslyFocusedElement())) { 3812 preventReturnFocusRef.current = true; 3813 store.setOpen(false, createChangeEventDetails(reason_parts_exports.focusOut, event)); 3814 } 3815 }); 3816 } 3817 function markInsideReactTree() { 3818 if (pointerDownOutsideRef.current) { 3819 return; 3820 } 3821 dataRef.current.insideReactTree = true; 3822 blurTimeout.start(0, () => { 3823 dataRef.current.insideReactTree = false; 3824 }); 3825 } 3826 const domReferenceElement = isHTMLElement(domReference) ? domReference : null; 3827 if (!floating && !domReferenceElement) { 3828 return void 0; 3829 } 3830 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)); 3831 }, [disabled2, domReference, floating, floatingFocusElement, modal, tree, portalContext, store, closeOnFocusOut, restoreFocus, getTabbableContent, isUntrappedTypeableCombobox, getNodeId, dataRef, blurTimeout, pointerDownTimeout, restoreFocusFrame, nextFocusableElement, previousFocusableElement, getResolvedInsideElements]); 3832 React22.useEffect(() => { 3833 if (disabled2 || !floating || !open2) { 3834 return void 0; 3835 } 3836 const portalNodes = Array.from(portalContext?.portalNode?.querySelectorAll(`[$createAttribute("portal")}]`) || []); 3837 const ancestors = tree ? getNodeAncestors(tree.nodesRef.current, getNodeId()) : []; 3838 const rootAncestorComboboxDomReference = ancestors.find((node) => isTypeableCombobox(node.context?.elements.domReference || null))?.context?.elements.domReference; 3839 const controlInsideElements = [floating, ...portalNodes, beforeGuardRef.current, afterGuardRef.current, portalContext?.beforeOutsideRef.current, portalContext?.afterOutsideRef.current, ...getResolvedInsideElements()]; 3840 const insideElements = [...controlInsideElements, rootAncestorComboboxDomReference, resolveRef(previousFocusableElement), resolveRef(nextFocusableElement), isUntrappedTypeableCombobox ? domReference : null].filter((x) => x != null); 3841 const ariaHiddenCleanup = markOthers(insideElements, { 3842 ariaHidden: modal || isUntrappedTypeableCombobox, 3843 mark: false 3844 }); 3845 const markerInsideElements = [floating, ...portalNodes].filter((x) => x != null); 3846 const markerCleanup = markOthers(markerInsideElements); 3847 return () => { 3848 markerCleanup(); 3849 ariaHiddenCleanup(); 3850 }; 3851 }, [open2, disabled2, domReference, floating, modal, portalContext, isUntrappedTypeableCombobox, tree, getNodeId, nextFocusableElement, previousFocusableElement, getResolvedInsideElements]); 3852 useIsoLayoutEffect(() => { 3853 if (!open2 || disabled2 || !isHTMLElement(floatingFocusElement)) { 3854 return; 3855 } 3856 closeTypeRef.current = ""; 3857 lastInteractionTypeRef.current = ""; 3858 const doc = ownerDocument(floatingFocusElement); 3859 const previouslyFocusedElement = activeElement(doc); 3860 queueMicrotask(() => { 3861 const initialFocusValueOrFn = initialFocusRef.current; 3862 const resolvedInitialFocus = typeof initialFocusValueOrFn === "function" ? initialFocusValueOrFn(openInteractionTypeRef.current || "") : initialFocusValueOrFn; 3863 if (resolvedInitialFocus === void 0 || resolvedInitialFocus === false) { 3864 return; 3865 } 3866 const focusAlreadyInsideFloatingEl = contains(floatingFocusElement, previouslyFocusedElement); 3867 if (focusAlreadyInsideFloatingEl) { 3868 return; 3869 } 3870 let focusableElements = null; 3871 const getDefaultFocusElement = () => { 3872 if (focusableElements == null) { 3873 focusableElements = getTabbableContent(floatingFocusElement); 3874 } 3875 return focusableElements[0] || floatingFocusElement; 3876 }; 3877 let elToFocus; 3878 if (resolvedInitialFocus === true || resolvedInitialFocus === null) { 3879 elToFocus = getDefaultFocusElement(); 3880 } else { 3881 elToFocus = resolveRef(resolvedInitialFocus); 3882 } 3883 elToFocus = elToFocus || getDefaultFocusElement(); 3884 const hadFocusInside = contains(floatingFocusElement, activeElement(doc)); 3885 const openEvent = dataRef.current.openEvent; 3886 const openedByVirtualPress = openEvent?.type === "mousedown" && isVirtualClick(openEvent); 3887 void enqueueFocus(elToFocus, { 3888 sync: openedByVirtualPress, 3889 preventScroll: elToFocus === floatingFocusElement, 3890 shouldFocus() { 3891 if (!openRef.current) { 3892 return false; 3893 } 3894 if (hadFocusInside) { 3895 return true; 3896 } 3897 const currentActiveElement = activeElement(doc); 3898 const focusMovedInside = currentActiveElement !== elToFocus && contains(floatingFocusElement, currentActiveElement); 3899 return !focusMovedInside; 3900 } 3901 }); 3902 }); 3903 }, [disabled2, open2, floatingFocusElement, getTabbableContent, initialFocusRef, openInteractionTypeRef, openRef, dataRef]); 3904 const pendingReturnFocusRef = React22.useRef(null); 3905 useIsoLayoutEffect(() => { 3906 if (disabled2 || !floatingFocusElement) { 3907 pendingReturnFocusRef.current = null; 3908 return void 0; 3909 } 3910 if (pendingReturnFocusRef.current) { 3911 pendingReturnFocusRef.current.cancelled = true; 3912 pendingReturnFocusRef.current = null; 3913 } 3914 const doc = ownerDocument(floatingFocusElement); 3915 const elementFocusedBeforeOpen = activeElement(doc); 3916 const preferPreviousFocus = openInteractionTypeRef.current == null; 3917 addPreviouslyFocusedElement(elementFocusedBeforeOpen); 3918 function onOpenChangeLocal(details) { 3919 if (!details.open) { 3920 closeTypeRef.current = getEventType(details.nativeEvent, lastInteractionTypeRef.current); 3921 } 3922 if (details.reason === reason_parts_exports.focusOut && details.triggerElement?.hasAttribute(createAttribute("focus-guard")) || details.reason === reason_parts_exports.triggerHover && details.nativeEvent.type === "mouseleave") { 3923 preventReturnFocusRef.current = true; 3924 } 3925 if (details.reason !== reason_parts_exports.outsidePress) { 3926 return; 3927 } 3928 if (details.nested) { 3929 preventReturnFocusRef.current = false; 3930 } else if (isVirtualClick(details.nativeEvent) || isVirtualPointerEvent(details.nativeEvent)) { 3931 preventReturnFocusRef.current = false; 3932 } else { 3933 let isPreventScrollSupported = false; 3934 ownerDocument(floatingFocusElement).createElement("div").focus({ 3935 get preventScroll() { 3936 isPreventScrollSupported = true; 3937 return false; 3938 } 3939 }); 3940 if (isPreventScrollSupported) { 3941 preventReturnFocusRef.current = false; 3942 } else { 3943 preventReturnFocusRef.current = true; 3944 } 3945 } 3946 } 3947 events.on("openchange", onOpenChangeLocal); 3948 function getReturnElement(closeType) { 3949 const returnFocusValueOrFn = returnFocusRef.current; 3950 let resolvedReturnFocusValue = typeof returnFocusValueOrFn === "function" ? returnFocusValueOrFn(closeType) : returnFocusValueOrFn; 3951 if (resolvedReturnFocusValue === void 0 || resolvedReturnFocusValue === false) { 3952 return null; 3953 } 3954 if (resolvedReturnFocusValue === null) { 3955 resolvedReturnFocusValue = true; 3956 } 3957 const referenceReturnElement = domReference?.isConnected ? domReference : null; 3958 const previousReturnElement = elementFocusedBeforeOpen?.isConnected && getNodeName(elementFocusedBeforeOpen) !== "body" ? elementFocusedBeforeOpen : null; 3959 let defaultReturnElement = preferPreviousFocus ? previousReturnElement || referenceReturnElement : referenceReturnElement || previousReturnElement; 3960 if (!defaultReturnElement) { 3961 defaultReturnElement = getPreviouslyFocusedElement() || null; 3962 } 3963 if (typeof resolvedReturnFocusValue === "boolean") { 3964 return defaultReturnElement; 3965 } 3966 return resolveRef(resolvedReturnFocusValue) || defaultReturnElement || null; 3967 } 3968 return () => { 3969 events.off("openchange", onOpenChangeLocal); 3970 const activeEl = activeElement(doc); 3971 const insideElements = getResolvedInsideElements(); 3972 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)); 3973 const returnFocusValueOrFn = returnFocusRef.current; 3974 const closeType = closeTypeRef.current; 3975 const returnElement = getReturnElement(closeType); 3976 const job = { 3977 cancelled: false 3978 }; 3979 pendingReturnFocusRef.current = job; 3980 queueMicrotask(() => { 3981 if (pendingReturnFocusRef.current === job) { 3982 pendingReturnFocusRef.current = null; 3983 } 3984 const tabbableReturnElement = getFirstTabbableElement(returnElement); 3985 const hasExplicitReturnFocus = ( 3986 // eslint-disable-next-line react-hooks/exhaustive-deps 3987 explicitReturnFocusRef.current ?? typeof returnFocusValueOrFn !== "boolean" 3988 ); 3989 if (!job.cancelled && returnFocusValueOrFn && !preventReturnFocusRef.current && isHTMLElement(tabbableReturnElement) && // If the focus moved somewhere else after mount, avoid returning focus 3990 // since it likely entered a different element which should be 3991 // respected: https://github.com/floating-ui/floating-ui/issues/2607 3992 (!hasExplicitReturnFocus && tabbableReturnElement !== activeEl && activeEl !== doc.body ? isFocusInsideFloatingTree : true)) { 3993 const focusOptions = { 3994 preventScroll: true 3995 }; 3996 if (closeType === "keyboard") { 3997 focusOptions.focusVisible = true; 3998 } 3999 tabbableReturnElement.focus(focusOptions); 4000 } 4001 preventReturnFocusRef.current = false; 4002 }); 4003 }; 4004 }, [disabled2, floating, floatingFocusElement, returnFocusRef, explicitReturnFocusRef, openInteractionTypeRef, events, tree, domReference, getNodeId, getResolvedInsideElements]); 4005 useIsoLayoutEffect(() => { 4006 if (!parts_exports.engine.webkit || open2 || !floating) { 4007 return; 4008 } 4009 const activeEl = activeElement(ownerDocument(floating)); 4010 if (!isHTMLElement(activeEl) || !isTypeableElement(activeEl)) { 4011 return; 4012 } 4013 if (contains(floating, activeEl)) { 4014 activeEl.blur(); 4015 } 4016 }, [open2, floating]); 4017 useIsoLayoutEffect(() => { 4018 if (disabled2 || !portalContext) { 4019 return void 0; 4020 } 4021 portalContext.setFocusManagerState({ 4022 modal, 4023 closeOnFocusOut, 4024 open: open2, 4025 onOpenChange: store.setOpen, 4026 domReference 4027 }); 4028 return () => { 4029 portalContext.setFocusManagerState(null); 4030 }; 4031 }, [disabled2, portalContext, modal, open2, store, closeOnFocusOut, domReference]); 4032 useIsoLayoutEffect(() => { 4033 if (disabled2 || !floatingFocusElement) { 4034 return void 0; 4035 } 4036 handleTabIndex(floatingFocusElement); 4037 return () => { 4038 queueMicrotask(clearDisconnectedPreviouslyFocusedElements); 4039 }; 4040 }, [disabled2, floatingFocusElement]); 4041 const shouldRenderGuards = !disabled2 && (modal ? !isUntrappedTypeableCombobox : true) && (isInsidePortal || modal); 4042 return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(React22.Fragment, { 4043 children: [shouldRenderGuards && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(FocusGuard, { 4044 "data-type": "inside", 4045 ref: mergedBeforeGuardRef, 4046 onFocus: (event) => { 4047 if (modal) { 4048 const els = getTabbableContent(); 4049 void enqueueFocus(els[els.length - 1]); 4050 } else if (portalContext?.portalNode) { 4051 preventReturnFocusRef.current = false; 4052 if (isOutsideEvent(event, portalContext.portalNode)) { 4053 const nextTabbable = getNextTabbable(domReference); 4054 nextTabbable?.focus(); 4055 } else { 4056 resolveRef(previousFocusableElement ?? portalContext.beforeOutsideRef)?.focus(); 4057 } 4058 } 4059 } 4060 }), children, shouldRenderGuards && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(FocusGuard, { 4061 "data-type": "inside", 4062 ref: mergedAfterGuardRef, 4063 onFocus: (event) => { 4064 if (modal) { 4065 void enqueueFocus(getTabbableContent()[0]); 4066 } else if (portalContext?.portalNode) { 4067 if (closeOnFocusOut) { 4068 preventReturnFocusRef.current = true; 4069 } 4070 if (isOutsideEvent(event, portalContext.portalNode)) { 4071 const prevTabbable = getPreviousTabbable(domReference); 4072 prevTabbable?.focus(); 4073 } else { 4074 resolveRef(nextFocusableElement ?? portalContext.afterOutsideRef)?.focus(); 4075 } 4076 } 4077 } 4078 })] 4079 }); 4080 } 4081 4082 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useClick.mjs 4083 var React23 = __toESM(require_react(), 1); 4084 function useClick(store, props = {}) { 4085 const { 4086 enabled = true, 4087 event: eventOption = "click", 4088 toggle = true, 4089 ignoreMouse = false, 4090 stickIfOpen = true, 4091 touchOpenDelay = 0, 4092 reason = reason_parts_exports.triggerPress 4093 } = props; 4094 const dataRef = store.context.dataRef; 4095 const pointerTypeRef = React23.useRef(void 0); 4096 const frame = useAnimationFrame(); 4097 const touchOpenTimeout = useTimeout(); 4098 const reference = React23.useMemo(() => { 4099 function setOpenWithTouchDelay(nextOpen, nativeEvent, target, pointerType) { 4100 const details = createChangeEventDetails(reason, nativeEvent, target); 4101 if (nextOpen && pointerType === "touch" && touchOpenDelay > 0) { 4102 touchOpenTimeout.start(touchOpenDelay, () => { 4103 store.setOpen(true, details); 4104 }); 4105 } else { 4106 store.setOpen(nextOpen, details); 4107 } 4108 } 4109 function getNextOpen(open2, currentTarget, isClickLikeOpenEvent) { 4110 const openEvent = dataRef.current.openEvent; 4111 const hasClickedOnInactiveTrigger = store.select("domReferenceElement") !== currentTarget; 4112 if (open2 && hasClickedOnInactiveTrigger) { 4113 return true; 4114 } 4115 if (!open2) { 4116 return true; 4117 } 4118 if (!toggle) { 4119 return true; 4120 } 4121 if (openEvent && (typeof stickIfOpen === "function" ? stickIfOpen() : stickIfOpen)) { 4122 return !isClickLikeOpenEvent(openEvent.type); 4123 } 4124 return false; 4125 } 4126 return { 4127 onPointerDown(event) { 4128 pointerTypeRef.current = isMouseLikePointerType(event.pointerType, true) && isVirtualPointerEvent(event.nativeEvent) ? "virtual" : event.pointerType; 4129 }, 4130 onMouseDown(event) { 4131 const pointerType = pointerTypeRef.current; 4132 const nativeEvent = event.nativeEvent; 4133 const open2 = store.select("open"); 4134 if (event.button !== 0 || eventOption === "click" || isMouseLikePointerType(pointerType, true) && ignoreMouse) { 4135 return; 4136 } 4137 const nextOpen = getNextOpen(open2, event.currentTarget, (openEventType) => openEventType === "click" || openEventType === "mousedown"); 4138 const target = getTarget(nativeEvent); 4139 const isTypeable = isTypeableElement(target); 4140 if (isTypeable || pointerType === "virtual") { 4141 setOpenWithTouchDelay(nextOpen, nativeEvent, isTypeable ? target : event.currentTarget, pointerType); 4142 return; 4143 } 4144 const eventCurrentTarget = event.currentTarget; 4145 frame.request(() => { 4146 setOpenWithTouchDelay(nextOpen, nativeEvent, eventCurrentTarget, pointerType); 4147 }); 4148 }, 4149 onClick(event) { 4150 if (eventOption === "mousedown-only") { 4151 return; 4152 } 4153 const pointerType = pointerTypeRef.current; 4154 if (eventOption === "mousedown" && pointerType) { 4155 pointerTypeRef.current = void 0; 4156 return; 4157 } 4158 if (isMouseLikePointerType(pointerType, true) && ignoreMouse) { 4159 return; 4160 } 4161 const open2 = store.select("open"); 4162 const nextOpen = getNextOpen(open2, event.currentTarget, (openEventType) => openEventType === "click" || openEventType === "mousedown" || openEventType === "keydown" || openEventType === "keyup"); 4163 setOpenWithTouchDelay(nextOpen, event.nativeEvent, event.currentTarget, pointerType); 4164 }, 4165 onKeyDown() { 4166 pointerTypeRef.current = void 0; 4167 } 4168 }; 4169 }, [dataRef, eventOption, ignoreMouse, reason, store, stickIfOpen, toggle, frame, touchOpenTimeout, touchOpenDelay]); 4170 return React23.useMemo(() => enabled ? { 4171 reference 4172 } : EMPTY_OBJECT, [enabled, reference]); 4173 } 4174 4175 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useDismiss.mjs 4176 var React24 = __toESM(require_react(), 1); 4177 function alwaysFalse() { 4178 return false; 4179 } 4180 function normalizeProp(normalizable) { 4181 return { 4182 escapeKey: typeof normalizable === "boolean" ? normalizable : normalizable?.escapeKey ?? false, 4183 outsidePress: typeof normalizable === "boolean" ? normalizable : normalizable?.outsidePress ?? true 4184 }; 4185 } 4186 function useDismiss(store, props = {}) { 4187 const { 4188 enabled = true, 4189 escapeKey: escapeKey2 = true, 4190 outsidePress: outsidePressProp = true, 4191 outsidePressEvent = "sloppy", 4192 referencePress = alwaysFalse, 4193 bubbles, 4194 externalTree 4195 } = props; 4196 const open2 = store.useState("open"); 4197 const floatingElement = store.useState("floatingElement"); 4198 const { 4199 dataRef, 4200 events 4201 } = store.context; 4202 const tree = useFloatingTree(externalTree); 4203 const outsidePressFn = useStableCallback(typeof outsidePressProp === "function" ? outsidePressProp : () => false); 4204 const outsidePress2 = typeof outsidePressProp === "function" ? outsidePressFn : outsidePressProp; 4205 const outsidePressEnabled = outsidePress2 !== false; 4206 const getOutsidePressEventProp = useStableCallback(() => outsidePressEvent); 4207 const { 4208 escapeKey: escapeKeyBubbles, 4209 outsidePress: outsidePressBubbles 4210 } = normalizeProp(bubbles); 4211 const pressStartedInsideRef = React24.useRef(false); 4212 const pressStartPreventedRef = React24.useRef(false); 4213 const suppressNextOutsideClickRef = React24.useRef(false); 4214 const sawPressWhileOpenRef = React24.useRef(false); 4215 const isComposingRef = React24.useRef(false); 4216 const currentPointerTypeRef = React24.useRef(""); 4217 const touchStateRef = React24.useRef(null); 4218 const cancelDismissOnEndTimeout = useTimeout(); 4219 const clearInsideReactTreeTimeout = useTimeout(); 4220 const compositionTimeout = useTimeout(); 4221 const clearInsideReactTree = useStableCallback(() => { 4222 clearInsideReactTreeTimeout.clear(); 4223 dataRef.current.insideReactTree = false; 4224 }); 4225 const hasBlockingChild = useStableCallback((bubbleKey) => { 4226 const nodeId = dataRef.current.floatingContext?.nodeId; 4227 const children = tree ? getNodeChildren(tree.nodesRef.current, nodeId) : []; 4228 return children.some((child) => child.context?.open && !child.context.dataRef.current[bubbleKey]); 4229 }); 4230 const isEventWithinOwnElements = useStableCallback((event) => { 4231 return isEventTargetWithin(event, store.select("floatingElement")) || isEventTargetWithin(event, store.select("domReferenceElement")); 4232 }); 4233 const closeOnReferencePress = useStableCallback((event) => { 4234 if (!referencePress()) { 4235 return; 4236 } 4237 store.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerPress, event.nativeEvent)); 4238 }); 4239 const closeOnEscapeKeyDown = useStableCallback((event) => { 4240 if (!open2 || !enabled || !escapeKey2 || event.key !== "Escape") { 4241 return; 4242 } 4243 const native = isReactEvent(event) ? event.nativeEvent : event; 4244 if (isComposingRef.current || native.isComposing) { 4245 return; 4246 } 4247 if (!escapeKeyBubbles && hasBlockingChild("__escapeKeyBubbles")) { 4248 return; 4249 } 4250 const eventDetails = createChangeEventDetails(reason_parts_exports.escapeKey, native); 4251 store.setOpen(false, eventDetails); 4252 if (!eventDetails.isCanceled) { 4253 event.preventDefault(); 4254 } 4255 if (!escapeKeyBubbles && !eventDetails.isPropagationAllowed) { 4256 event.stopPropagation(); 4257 } 4258 }); 4259 const markInsideReactTree = useStableCallback(() => { 4260 dataRef.current.insideReactTree = true; 4261 clearInsideReactTreeTimeout.start(0, clearInsideReactTree); 4262 }); 4263 const markPressStartedInsideReactTree = useStableCallback((event) => { 4264 if (!open2 || !enabled || event.button !== 0) { 4265 return; 4266 } 4267 const target = getTarget(event.nativeEvent); 4268 if (!contains(store.select("floatingElement"), target)) { 4269 return; 4270 } 4271 if (!pressStartedInsideRef.current) { 4272 pressStartedInsideRef.current = true; 4273 pressStartPreventedRef.current = false; 4274 } 4275 }); 4276 const markInsidePressStartPrevented = useStableCallback((event) => { 4277 if (!open2 || !enabled) { 4278 return; 4279 } 4280 if (!(event.defaultPrevented || event.nativeEvent.defaultPrevented)) { 4281 return; 4282 } 4283 if (pressStartedInsideRef.current) { 4284 pressStartPreventedRef.current = true; 4285 } 4286 }); 4287 React24.useEffect(() => { 4288 function handleOpenChange(details) { 4289 if (!details.open) { 4290 sawPressWhileOpenRef.current = false; 4291 } 4292 } 4293 events.on("openchange", handleOpenChange); 4294 return () => { 4295 events.off("openchange", handleOpenChange); 4296 }; 4297 }, [events]); 4298 React24.useEffect(() => clearInsideReactTree, [clearInsideReactTree]); 4299 React24.useEffect(() => { 4300 if (!open2 || !enabled) { 4301 if (!open2) { 4302 sawPressWhileOpenRef.current = false; 4303 isComposingRef.current = false; 4304 currentPointerTypeRef.current = ""; 4305 touchStateRef.current = null; 4306 } 4307 return clearInsideReactTree; 4308 } 4309 dataRef.current.__escapeKeyBubbles = escapeKeyBubbles; 4310 dataRef.current.__outsidePressBubbles = outsidePressBubbles; 4311 const preventedPressSuppressionTimeout = new Timeout(); 4312 const doc = ownerDocument(floatingElement); 4313 function handleCompositionStart() { 4314 compositionTimeout.clear(); 4315 isComposingRef.current = true; 4316 } 4317 function handleCompositionEnd() { 4318 isComposingRef.current = true; 4319 compositionTimeout.start( 4320 // 0ms or 1ms don't work in Safari. 5ms appears to consistently work. 4321 // Only apply to WebKit for the test to remain 0ms. 4322 parts_exports.engine.webkit ? 5 : 0, 4323 () => { 4324 isComposingRef.current = false; 4325 } 4326 ); 4327 } 4328 function suppressImmediateOutsideClickAfterPreventedStart() { 4329 suppressNextOutsideClickRef.current = true; 4330 preventedPressSuppressionTimeout.start(0, () => { 4331 suppressNextOutsideClickRef.current = false; 4332 }); 4333 } 4334 function resetPressStartState() { 4335 pressStartedInsideRef.current = false; 4336 pressStartPreventedRef.current = false; 4337 } 4338 function getOutsidePressEvent() { 4339 const type = currentPointerTypeRef.current; 4340 const computedType = type === "pen" || !type ? "mouse" : type; 4341 const outsidePressEventValue = getOutsidePressEventProp(); 4342 const resolved = typeof outsidePressEventValue === "function" ? outsidePressEventValue() : outsidePressEventValue; 4343 if (typeof resolved === "string") { 4344 return resolved; 4345 } 4346 return resolved[computedType]; 4347 } 4348 function shouldIgnoreEvent(event) { 4349 const computedOutsidePressEvent = getOutsidePressEvent(); 4350 return computedOutsidePressEvent === "intentional" && event.type !== "click" || computedOutsidePressEvent === "sloppy" && event.type === "click"; 4351 } 4352 function isEventWithinFloatingTree(event) { 4353 const nodeId = dataRef.current.floatingContext?.nodeId; 4354 const targetIsInsideChildren = tree && getNodeChildren(tree.nodesRef.current, nodeId).some((node) => isEventTargetWithin(event, node.context?.elements.floating)); 4355 return isEventWithinOwnElements(event) || targetIsInsideChildren; 4356 } 4357 function closeOnPressOutside(event) { 4358 if (shouldIgnoreEvent(event)) { 4359 if (event.type !== "click" && !isEventWithinOwnElements(event)) { 4360 preventedPressSuppressionTimeout.clear(); 4361 suppressNextOutsideClickRef.current = false; 4362 } 4363 clearInsideReactTree(); 4364 return; 4365 } 4366 if (dataRef.current.insideReactTree) { 4367 clearInsideReactTree(); 4368 return; 4369 } 4370 const target = getTarget(event); 4371 const inertSelector = `[$createAttribute("inert")}]`; 4372 const targetRoot = isElement(target) ? target.getRootNode() : null; 4373 const markers = Array.from((isShadowRoot(targetRoot) ? targetRoot : ownerDocument(store.select("floatingElement"))).querySelectorAll(inertSelector)); 4374 const triggers = store.context.triggerElements; 4375 if (target && (triggers.hasElement(target) || triggers.hasMatchingElement((trigger) => contains(trigger, target)))) { 4376 return; 4377 } 4378 let targetRootAncestor = isElement(target) ? target : null; 4379 while (targetRootAncestor && !isLastTraversableNode(targetRootAncestor)) { 4380 const nextParent = getParentNode(targetRootAncestor); 4381 if (isLastTraversableNode(nextParent) || !isElement(nextParent)) { 4382 break; 4383 } 4384 targetRootAncestor = nextParent; 4385 } 4386 if (markers.length && isElement(target) && !isRootElement(target) && // Clicked on a direct ancestor (e.g. FloatingOverlay). 4387 !contains(target, store.select("floatingElement")) && // If the target root element contains none of the markers, then the 4388 // element was injected after the floating element rendered. 4389 markers.every((marker) => !contains(targetRootAncestor, marker))) { 4390 return; 4391 } 4392 if (isHTMLElement(target) && !("touches" in event)) { 4393 const lastTraversableNode = isLastTraversableNode(target); 4394 const style = getComputedStyle2(target); 4395 const scrollRe = /auto|scroll/; 4396 const isScrollableX = lastTraversableNode || scrollRe.test(style.overflowX); 4397 const isScrollableY = lastTraversableNode || scrollRe.test(style.overflowY); 4398 const canScrollX = isScrollableX && target.clientWidth > 0 && target.scrollWidth > target.clientWidth; 4399 const canScrollY = isScrollableY && target.clientHeight > 0 && target.scrollHeight > target.clientHeight; 4400 const isRTL3 = style.direction === "rtl"; 4401 const pressedVerticalScrollbar = canScrollY && (isRTL3 ? event.offsetX <= target.offsetWidth - target.clientWidth : event.offsetX > target.clientWidth); 4402 const pressedHorizontalScrollbar = canScrollX && event.offsetY > target.clientHeight; 4403 if (pressedVerticalScrollbar || pressedHorizontalScrollbar) { 4404 return; 4405 } 4406 } 4407 if (isEventWithinFloatingTree(event)) { 4408 return; 4409 } 4410 if (getOutsidePressEvent() === "intentional") { 4411 if (event.detail !== 0 && !isVirtualClick(event) && !sawPressWhileOpenRef.current) { 4412 return; 4413 } 4414 if (suppressNextOutsideClickRef.current) { 4415 preventedPressSuppressionTimeout.clear(); 4416 suppressNextOutsideClickRef.current = false; 4417 return; 4418 } 4419 } 4420 if (typeof outsidePress2 === "function" && !outsidePress2(event)) { 4421 return; 4422 } 4423 if (hasBlockingChild("__outsidePressBubbles")) { 4424 return; 4425 } 4426 store.setOpen(false, createChangeEventDetails(reason_parts_exports.outsidePress, event)); 4427 clearInsideReactTree(); 4428 } 4429 function handlePointerDown(event) { 4430 if (getOutsidePressEvent() !== "sloppy" || event.pointerType === "touch" || !store.select("open") || !enabled || isEventWithinOwnElements(event)) { 4431 return; 4432 } 4433 closeOnPressOutside(event); 4434 } 4435 function handleTouchStart(event) { 4436 if (getOutsidePressEvent() !== "sloppy" || !store.select("open") || !enabled || isEventWithinOwnElements(event)) { 4437 return; 4438 } 4439 const touch = event.touches[0]; 4440 if (touch) { 4441 touchStateRef.current = { 4442 startTime: Date.now(), 4443 startX: touch.clientX, 4444 startY: touch.clientY, 4445 dismissOnTouchEnd: false, 4446 dismissOnMouseDown: true 4447 }; 4448 cancelDismissOnEndTimeout.start(1e3, () => { 4449 if (touchStateRef.current) { 4450 touchStateRef.current.dismissOnTouchEnd = false; 4451 touchStateRef.current.dismissOnMouseDown = false; 4452 } 4453 }); 4454 } 4455 } 4456 function addTargetEventListenerOnce(event, listener) { 4457 const target = getTarget(event); 4458 if (!target) { 4459 return; 4460 } 4461 const unsubscribe2 = addEventListener(target, event.type, () => { 4462 listener(event); 4463 unsubscribe2(); 4464 }); 4465 } 4466 function handleTouchStartCapture(event) { 4467 currentPointerTypeRef.current = "touch"; 4468 addTargetEventListenerOnce(event, handleTouchStart); 4469 } 4470 function closeOnPressOutsideCapture(event) { 4471 cancelDismissOnEndTimeout.clear(); 4472 if (event.type === "pointerdown") { 4473 if (event.button === 0) { 4474 sawPressWhileOpenRef.current = true; 4475 } 4476 currentPointerTypeRef.current = event.pointerType; 4477 } 4478 if (event.type === "mousedown" && touchStateRef.current && !touchStateRef.current.dismissOnMouseDown) { 4479 return; 4480 } 4481 addTargetEventListenerOnce(event, (targetEvent) => { 4482 if (targetEvent.type === "pointerdown") { 4483 handlePointerDown(targetEvent); 4484 } else { 4485 closeOnPressOutside(targetEvent); 4486 } 4487 }); 4488 } 4489 function handlePressEndCapture(event) { 4490 if (event.type === "pointercancel") { 4491 sawPressWhileOpenRef.current = false; 4492 } 4493 if (!pressStartedInsideRef.current) { 4494 return; 4495 } 4496 const pressStartedInsideDefaultPrevented = pressStartPreventedRef.current; 4497 resetPressStartState(); 4498 if (getOutsidePressEvent() !== "intentional") { 4499 return; 4500 } 4501 if (event.type === "pointercancel") { 4502 if (pressStartedInsideDefaultPrevented) { 4503 suppressImmediateOutsideClickAfterPreventedStart(); 4504 } 4505 return; 4506 } 4507 if (isEventWithinFloatingTree(event)) { 4508 return; 4509 } 4510 if (pressStartedInsideDefaultPrevented) { 4511 suppressImmediateOutsideClickAfterPreventedStart(); 4512 return; 4513 } 4514 if (typeof outsidePress2 === "function" && !outsidePress2(event)) { 4515 return; 4516 } 4517 preventedPressSuppressionTimeout.clear(); 4518 suppressNextOutsideClickRef.current = true; 4519 clearInsideReactTree(); 4520 } 4521 function handleTouchMove(event) { 4522 if (getOutsidePressEvent() !== "sloppy" || !touchStateRef.current || isEventWithinOwnElements(event)) { 4523 return; 4524 } 4525 const touch = event.touches[0]; 4526 if (!touch) { 4527 return; 4528 } 4529 const deltaX = Math.abs(touch.clientX - touchStateRef.current.startX); 4530 const deltaY = Math.abs(touch.clientY - touchStateRef.current.startY); 4531 const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY); 4532 if (distance > 5) { 4533 touchStateRef.current.dismissOnTouchEnd = true; 4534 } 4535 if (distance > 10) { 4536 closeOnPressOutside(event); 4537 cancelDismissOnEndTimeout.clear(); 4538 touchStateRef.current = null; 4539 } 4540 } 4541 function handleTouchMoveCapture(event) { 4542 addTargetEventListenerOnce(event, handleTouchMove); 4543 } 4544 function handleTouchEnd(event) { 4545 if (getOutsidePressEvent() !== "sloppy" || !touchStateRef.current || isEventWithinOwnElements(event)) { 4546 return; 4547 } 4548 if (touchStateRef.current.dismissOnTouchEnd) { 4549 closeOnPressOutside(event); 4550 } 4551 cancelDismissOnEndTimeout.clear(); 4552 touchStateRef.current = null; 4553 } 4554 function handleTouchEndCapture(event) { 4555 addTargetEventListenerOnce(event, handleTouchEnd); 4556 } 4557 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, { 4558 capture: true, 4559 passive: true 4560 }), addEventListener(doc, "touchmove", handleTouchMoveCapture, { 4561 capture: true, 4562 passive: true 4563 }), addEventListener(doc, "touchend", handleTouchEndCapture, { 4564 capture: true, 4565 passive: true 4566 }))); 4567 return () => { 4568 unsubscribe(); 4569 preventedPressSuppressionTimeout.clear(); 4570 resetPressStartState(); 4571 suppressNextOutsideClickRef.current = false; 4572 }; 4573 }, [dataRef, floatingElement, escapeKey2, outsidePressEnabled, outsidePress2, open2, enabled, escapeKeyBubbles, outsidePressBubbles, closeOnEscapeKeyDown, clearInsideReactTree, getOutsidePressEventProp, hasBlockingChild, isEventWithinOwnElements, tree, store, cancelDismissOnEndTimeout, compositionTimeout]); 4574 const reference = React24.useMemo(() => ({ 4575 onKeyDown: closeOnEscapeKeyDown, 4576 onPointerDown: closeOnReferencePress, 4577 onClick: closeOnReferencePress 4578 }), [closeOnEscapeKeyDown, closeOnReferencePress]); 4579 const floating = React24.useMemo(() => ({ 4580 onKeyDown: closeOnEscapeKeyDown, 4581 // `onMouseDown` may be blocked if `event.preventDefault()` is called in 4582 // `onPointerDown`, such as with <NumberField.ScrubArea>. 4583 // See https://github.com/mui/base-ui/pull/3379 4584 onPointerDown: markInsidePressStartPrevented, 4585 onMouseDown: markInsidePressStartPrevented, 4586 onClickCapture: markInsideReactTree, 4587 onMouseDownCapture(event) { 4588 markInsideReactTree(); 4589 markPressStartedInsideReactTree(event); 4590 }, 4591 onPointerDownCapture(event) { 4592 markInsideReactTree(); 4593 markPressStartedInsideReactTree(event); 4594 }, 4595 onMouseUpCapture: markInsideReactTree, 4596 onTouchEndCapture: markInsideReactTree, 4597 onTouchMoveCapture: markInsideReactTree 4598 }), [closeOnEscapeKeyDown, markInsideReactTree, markPressStartedInsideReactTree, markInsidePressStartPrevented]); 4599 return React24.useMemo(() => enabled ? { 4600 reference, 4601 floating, 4602 trigger: reference 4603 } : {}, [enabled, reference, floating]); 4604 } 4605 4606 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popups/popupStoreUtils.mjs 4607 var React26 = __toESM(require_react(), 1); 4608 var ReactDOM3 = __toESM(require_react_dom(), 1); 4609 4610 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useUnmountAfterClose.mjs 4611 var React25 = __toESM(require_react(), 1); 4612 function useUnmountAfterClose(parameters) { 4613 const { 4614 open: open2, 4615 ref, 4616 preventUnmountOnClose, 4617 setPreventUnmountOnClose: setPreventUnmountOnCloseParam, 4618 onUnmount, 4619 animateInitialOpen 4620 } = parameters; 4621 const setPreventUnmountOnClose = useStableCallback(setPreventUnmountOnCloseParam); 4622 const { 4623 mounted, 4624 setMounted, 4625 transitionStatus 4626 } = useTransitionStatus(open2, false, false, animateInitialOpen); 4627 const preventUnmountingOnClose = open2 ? false : preventUnmountOnClose; 4628 useIsoLayoutEffect(() => { 4629 if (open2) { 4630 setPreventUnmountOnClose(false); 4631 } 4632 }, [open2, setPreventUnmountOnClose]); 4633 const mountedRef = React25.useRef(mounted); 4634 const pendingUnmountRef = React25.useRef(false); 4635 const rerender = useForcedRerendering(); 4636 const unmount = () => { 4637 mountedRef.current = false; 4638 setMounted(false); 4639 onUnmount(); 4640 }; 4641 useIsoLayoutEffect(() => { 4642 mountedRef.current = mounted; 4643 if (pendingUnmountRef.current) { 4644 pendingUnmountRef.current = false; 4645 if (!open2 && mounted) { 4646 unmount(); 4647 } 4648 } 4649 }); 4650 const forceUnmount = useStableCallback(() => { 4651 if (!mountedRef.current) { 4652 return; 4653 } 4654 if (open2) { 4655 pendingUnmountRef.current = true; 4656 rerender(); 4657 return; 4658 } 4659 unmount(); 4660 }); 4661 useOpenChangeComplete({ 4662 enabled: mounted && !open2 && !preventUnmountingOnClose, 4663 open: open2, 4664 ref, 4665 onComplete() { 4666 if (!open2) { 4667 forceUnmount(); 4668 } 4669 } 4670 }); 4671 return { 4672 mounted, 4673 transitionStatus, 4674 preventUnmountingOnClose, 4675 forceUnmount 4676 }; 4677 } 4678 4679 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popups/popupStoreUtils.mjs 4680 var FOCUSABLE_POPUP_PROPS = { 4681 tabIndex: -1, 4682 [FOCUSABLE_ATTRIBUTE]: "" 4683 }; 4684 function attachPreventUnmountOnClose(eventDetails) { 4685 let preventUnmountOnClose = false; 4686 eventDetails.preventUnmountOnClose = () => { 4687 preventUnmountOnClose = true; 4688 }; 4689 return () => preventUnmountOnClose; 4690 } 4691 4692 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popups/popupTriggerMap.mjs 4693 var devElementIdsByMap; 4694 function getDevElementIds(map) { 4695 devElementIdsByMap ??= /* @__PURE__ */ new WeakMap(); 4696 let elementIds = devElementIdsByMap.get(map); 4697 if (!elementIds) { 4698 elementIds = /* @__PURE__ */ new WeakMap(); 4699 devElementIdsByMap.set(map, elementIds); 4700 } 4701 return elementIds; 4702 } 4703 var PopupTriggerMap = class { 4704 idMap = /* @__PURE__ */ new Map(); 4705 /** 4706 * Adds a trigger element with the given ID. 4707 * 4708 * Note: The provided element is assumed to not be registered under multiple IDs. 4709 */ 4710 add(id, element) { 4711 if (true) { 4712 const elementIds = getDevElementIds(this); 4713 const existingId = elementIds.get(element); 4714 if (existingId !== void 0 && existingId !== id) { 4715 throw new Error("Base UI: A trigger element cannot be registered under multiple IDs in PopupTriggerMap."); 4716 } 4717 const previousElement = this.idMap.get(id); 4718 if (previousElement !== void 0 && previousElement !== element) { 4719 elementIds.delete(previousElement); 4720 } 4721 elementIds.set(element, id); 4722 } 4723 this.idMap.set(id, element); 4724 } 4725 /** 4726 * Removes the trigger element with the given ID. 4727 */ 4728 delete(id) { 4729 if (true) { 4730 const element = this.idMap.get(id); 4731 if (element !== void 0) { 4732 devElementIdsByMap?.get(this)?.delete(element); 4733 } 4734 } 4735 this.idMap.delete(id); 4736 } 4737 /** 4738 * Whether the given element is registered as a trigger. 4739 */ 4740 hasElement(element) { 4741 for (const registered of this.idMap.values()) { 4742 if (registered === element) { 4743 return true; 4744 } 4745 } 4746 return false; 4747 } 4748 /** 4749 * Whether there is a registered trigger element matching the given predicate. 4750 */ 4751 hasMatchingElement(predicate) { 4752 for (const element of this.idMap.values()) { 4753 if (predicate(element)) { 4754 return true; 4755 } 4756 } 4757 return false; 4758 } 4759 /** 4760 * Returns the trigger element associated with the given ID, or undefined if no such element exists. 4761 */ 4762 getById(id) { 4763 return this.idMap.get(id); 4764 } 4765 /** 4766 * Returns an iterable of all registered trigger entries, where each entry is a tuple of [id, element]. 4767 */ 4768 entries() { 4769 return this.idMap.entries(); 4770 } 4771 /** 4772 * Returns an iterable of all registered trigger elements. 4773 */ 4774 elements() { 4775 return this.idMap.values(); 4776 } 4777 /** 4778 * Returns the number of registered trigger elements. 4779 */ 4780 get size() { 4781 return this.idMap.size; 4782 } 4783 }; 4784 4785 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/store/useStore.mjs 4786 var React28 = __toESM(require_react(), 1); 4787 var import_shim = __toESM(require_shim(), 1); 4788 var import_with_selector = __toESM(require_with_selector(), 1); 4789 4790 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/fastHooks.mjs 4791 var React27 = __toESM(require_react(), 1); 4792 var hooks = []; 4793 var currentInstance = void 0; 4794 function getInstance() { 4795 return currentInstance; 4796 } 4797 function register(hook) { 4798 hooks.push(hook); 4799 } 4800 4801 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/store/useStore.mjs 4802 var canUseRawUseSyncExternalStore = isReactVersionAtLeast(19); 4803 var useStoreImplementation = canUseRawUseSyncExternalStore ? useStoreFast : useStoreLegacy; 4804 function useStore(store, selector, a1, a2, a3) { 4805 return useStoreImplementation(store, selector, a1, a2, a3); 4806 } 4807 function useStoreR19(store, selector, a1, a2, a3) { 4808 const getSelection = React28.useCallback(() => selector(store.getSnapshot(), a1, a2, a3), [store, selector, a1, a2, a3]); 4809 return (0, import_shim.useSyncExternalStore)(store.subscribe, getSelection, getSelection); 4810 } 4811 register({ 4812 before(instance) { 4813 instance.syncIndex = 0; 4814 if (!instance.didInitialize) { 4815 instance.syncTick = 1; 4816 instance.syncHooks = []; 4817 instance.didChangeStore = true; 4818 instance.getSnapshot = () => { 4819 let didChange2 = false; 4820 for (let i = 0; i < instance.syncHooks.length; i += 1) { 4821 const hook = instance.syncHooks[i]; 4822 const value = hook.selector(hook.store.state, hook.a1, hook.a2, hook.a3); 4823 if (!Object.is(hook.value, value)) { 4824 didChange2 = true; 4825 hook.value = value; 4826 } 4827 } 4828 if (didChange2) { 4829 instance.syncTick += 1; 4830 } 4831 return instance.syncTick; 4832 }; 4833 } 4834 }, 4835 after(instance) { 4836 if (instance.syncHooks.length > 0) { 4837 if (instance.didChangeStore) { 4838 instance.didChangeStore = false; 4839 instance.subscribe = (onStoreChange) => { 4840 const stores = /* @__PURE__ */ new Set(); 4841 for (const hook of instance.syncHooks) { 4842 stores.add(hook.store); 4843 } 4844 const unsubscribes = []; 4845 for (const store of stores) { 4846 unsubscribes.push(store.subscribe(onStoreChange)); 4847 } 4848 return () => { 4849 for (const unsubscribe of unsubscribes) { 4850 unsubscribe(); 4851 } 4852 }; 4853 }; 4854 } 4855 (0, import_shim.useSyncExternalStore)(instance.subscribe, instance.getSnapshot, instance.getSnapshot); 4856 } 4857 } 4858 }); 4859 function useStoreFast(store, selector, a1, a2, a3) { 4860 const instance = getInstance(); 4861 if (!instance) { 4862 return useStoreR19(store, selector, a1, a2, a3); 4863 } 4864 const index2 = instance.syncIndex; 4865 instance.syncIndex += 1; 4866 let hook; 4867 if (!instance.didInitialize) { 4868 hook = { 4869 store, 4870 selector, 4871 a1, 4872 a2, 4873 a3, 4874 value: selector(store.getSnapshot(), a1, a2, a3) 4875 }; 4876 instance.syncHooks.push(hook); 4877 } else { 4878 hook = instance.syncHooks[index2]; 4879 if (hook.store !== store || hook.selector !== selector || !Object.is(hook.a1, a1) || !Object.is(hook.a2, a2) || !Object.is(hook.a3, a3)) { 4880 if (hook.store !== store) { 4881 instance.didChangeStore = true; 4882 } 4883 hook.store = store; 4884 hook.selector = selector; 4885 hook.a1 = a1; 4886 hook.a2 = a2; 4887 hook.a3 = a3; 4888 hook.value = selector(store.getSnapshot(), a1, a2, a3); 4889 } 4890 } 4891 return hook.value; 4892 } 4893 function useStoreLegacy(store, selector, a1, a2, a3) { 4894 return (0, import_with_selector.useSyncExternalStoreWithSelector)(store.subscribe, store.getSnapshot, store.getSnapshot, (state) => selector(state, a1, a2, a3)); 4895 } 4896 4897 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/store/Store.mjs 4898 var Store = class { 4899 /** 4900 * Creates a store with the given initial state, constructing the class it is called on. 4901 * Calling it on a generic base class (e.g. `ReactStore.create(...)`) constructs that 4902 * class but degrades the inferred instance type to `Store`; use `new` there instead. 4903 */ 4904 static create(state) { 4905 return new this(state); 4906 } 4907 /** 4908 * The current state of the store. 4909 * This property is updated immediately when the state changes as a result of calling {@link setState}, {@link update}, or {@link set}. 4910 * 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). 4911 * The values can be used directly (to avoid subscribing to the store) in effects or event handlers. 4912 * 4913 * Do not modify properties in state directly. Instead, use the provided methods to ensure proper state management and listener notification. 4914 */ 4915 // Internal state to handle recursive `setState()` calls 4916 constructor(state) { 4917 this.state = state; 4918 this.listeners = /* @__PURE__ */ new Set(); 4919 this.updateTick = 0; 4920 } 4921 /** 4922 * Registers a listener that will be called whenever the store's state changes. 4923 * 4924 * @param fn The listener function to be called on state changes. 4925 * @returns A function to unsubscribe the listener. 4926 */ 4927 subscribe = (fn) => { 4928 this.listeners.add(fn); 4929 return () => { 4930 this.listeners.delete(fn); 4931 }; 4932 }; 4933 /** 4934 * Returns the current state of the store. 4935 */ 4936 getSnapshot = () => { 4937 return this.state; 4938 }; 4939 /** 4940 * Updates the entire store's state and notifies all registered listeners. 4941 * 4942 * @param newState The new state to set for the store. 4943 */ 4944 setState(newState) { 4945 if (this.state === newState) { 4946 return; 4947 } 4948 this.state = newState; 4949 this.updateTick += 1; 4950 const currentTick = this.updateTick; 4951 for (const listener of this.listeners) { 4952 if (currentTick !== this.updateTick) { 4953 return; 4954 } 4955 listener(newState); 4956 } 4957 } 4958 /** 4959 * Merges the provided changes into the current state and notifies listeners if there are changes. 4960 * Each value must match its state key. Pass an exact known subset rather than a broad 4961 * `Partial<State>`, which may contain `undefined` for required state fields. 4962 * 4963 * @param changes An object containing the changes to apply to the current state. 4964 */ 4965 update(changes) { 4966 for (const key in changes) { 4967 if (!Object.is(this.state[key], changes[key])) { 4968 this.setState({ 4969 ...this.state, 4970 ...changes 4971 }); 4972 return; 4973 } 4974 } 4975 } 4976 /** 4977 * Sets a specific key in the store's state to a new value and notifies listeners if the value has changed. 4978 * 4979 * @param key The key in the store's state to update. 4980 * @param value The new value to set for the specified key. 4981 */ 4982 set(key, value) { 4983 if (!Object.is(this.state[key], value)) { 4984 this.setState({ 4985 ...this.state, 4986 [key]: value 4987 }); 4988 } 4989 } 4990 /** 4991 * Gives the state a new reference and updates all registered listeners. 4992 */ 4993 notifyAll() { 4994 const newState = { 4995 ...this.state 4996 }; 4997 this.setState(newState); 4998 } 4999 use(selector, a1, a2, a3) { 5000 return useStore(this, selector, a1, a2, a3); 5001 } 5002 }; 5003 5004 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/store/ReactStore.mjs 5005 var React29 = __toESM(require_react(), 1); 5006 var ReactStore = class extends Store { 5007 /** 5008 * Creates a new ReactStore instance. 5009 * 5010 * @param state Initial state of the store. 5011 * @param context Non-reactive context values. 5012 * @param selectors Optional selectors for use with `useState`. 5013 */ 5014 constructor(state, context = {}, selectors3) { 5015 super(state); 5016 this.context = context; 5017 this.selectors = selectors3; 5018 } 5019 /** 5020 * Non-reactive values such as refs, callbacks, etc. 5021 */ 5022 /** 5023 * Synchronizes a single external value into the store. 5024 * 5025 * Note that the while the value in `state` is updated immediately, the value returned 5026 * by `useState` is updated before the next render (similarly to React's `useState`). 5027 */ 5028 useSyncedValue(key, value) { 5029 React29.useDebugValue(key); 5030 const store = this; 5031 useIsoLayoutEffect(() => { 5032 if (store.state[key] !== value) { 5033 store.set(key, value); 5034 } 5035 }, [store, key, value]); 5036 } 5037 /** 5038 * Synchronizes a single external value into the store and 5039 * cleans it up (sets to `undefined`) on unmount. 5040 * 5041 * Note that the while the value in `state` is updated immediately, the value returned 5042 * by `useState` is updated before the next render (similarly to React's `useState`). 5043 */ 5044 useSyncedValueWithCleanup(key, value) { 5045 const store = this; 5046 useIsoLayoutEffect(() => { 5047 if (store.state[key] !== value) { 5048 store.set(key, value); 5049 } 5050 return () => { 5051 store.set(key, void 0); 5052 }; 5053 }, [store, key, value]); 5054 } 5055 /** 5056 * Synchronizes multiple external values into the store. 5057 * Each value must match its state key. Pass an exact known subset rather than a broad 5058 * `Partial<State>`, which may contain `undefined` for required state fields. 5059 * 5060 * Note that the while the values in `state` are updated immediately, the values returned 5061 * by `useState` are updated before the next render (similarly to React's `useState`). 5062 * 5063 * @param statePart An exact subset of state fields to synchronize. Unknown keys are not accepted. 5064 */ 5065 useSyncedValues(statePart) { 5066 const store = this; 5067 if (true) { 5068 React29.useDebugValue(statePart, (p) => Object.keys(p)); 5069 const keys = React29.useRef(Object.keys(statePart)).current; 5070 const nextKeys = Object.keys(statePart); 5071 if (keys.length !== nextKeys.length || keys.some((key, index2) => key !== nextKeys[index2])) { 5072 console.error("ReactStore.useSyncedValues expects the same prop keys on every render. Keys should be stable."); 5073 } 5074 } 5075 const dependencies = Object.values(statePart); 5076 useIsoLayoutEffect(() => { 5077 store.update(statePart); 5078 }, [store, ...dependencies]); 5079 } 5080 /** 5081 * Registers a controllable prop pair (`controlled`, `defaultValue`) for a specific key. If `controlled` 5082 * is non-undefined, the store's state at `key` is updated to match `controlled`. 5083 */ 5084 useControlledProp(key, controlled) { 5085 React29.useDebugValue(key); 5086 const store = this; 5087 const isControlled = controlled !== void 0; 5088 useIsoLayoutEffect(() => { 5089 if (isControlled && !Object.is(store.state[key], controlled)) { 5090 store.setState({ 5091 ...store.state, 5092 [key]: controlled 5093 }); 5094 } 5095 }, [store, key, controlled, isControlled]); 5096 if (true) { 5097 const cache = this.controlledValues ??= /* @__PURE__ */ new Map(); 5098 if (!cache.has(key)) { 5099 cache.set(key, isControlled); 5100 } 5101 const previouslyControlled = cache.get(key); 5102 if (previouslyControlled !== void 0 && previouslyControlled !== isControlled) { 5103 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).`); 5104 } 5105 } 5106 } 5107 /** Gets the current value from the store using a selector with the provided key. 5108 * 5109 * @param key Key of the selector to use. 5110 */ 5111 select(key, a1, a2, a3) { 5112 const selector = this.selectors[key]; 5113 return selector(this.state, a1, a2, a3); 5114 } 5115 /** 5116 * Returns a value from the store's state using a selector function. 5117 * Used to subscribe to specific parts of the state. 5118 * This methods causes a rerender whenever the selected state changes. 5119 * 5120 * @param key Key of the selector to use. 5121 */ 5122 useState(key, a1, a2, a3) { 5123 React29.useDebugValue(key); 5124 return useStore(this, this.selectors[key], a1, a2, a3); 5125 } 5126 /** 5127 * Wraps a function with `useStableCallback` to ensure it has a stable reference 5128 * and assigns it to the context. 5129 * 5130 * @param key Key of the event callback. Must be a function in the context. 5131 * @param fn Function to assign. 5132 */ 5133 useContextCallback(key, fn) { 5134 React29.useDebugValue(key); 5135 const stableFunction = useStableCallback(fn ?? NOOP); 5136 this.context[key] = stableFunction; 5137 } 5138 /** 5139 * Returns a stable setter function for a specific key in the store's state. 5140 * It's commonly used to pass as a ref callback to React elements. 5141 * 5142 * @param key Key of the state to set. 5143 */ 5144 useStateSetter(key) { 5145 const ref = React29.useRef(void 0); 5146 if (ref.current === void 0) { 5147 ref.current = (value) => { 5148 this.set(key, value); 5149 }; 5150 } 5151 return ref.current; 5152 } 5153 /** 5154 * Observes changes derived from the store's selectors and calls the listener when the selected value changes. 5155 * 5156 * @param key Key of the selector to observe. 5157 * @param listener Listener function called when the selector result changes. 5158 */ 5159 observe(selector, listener) { 5160 let selectFn; 5161 if (typeof selector === "function") { 5162 selectFn = selector; 5163 } else { 5164 selectFn = this.selectors[selector]; 5165 } 5166 let prevValue = selectFn(this.state); 5167 listener(prevValue, prevValue, this); 5168 return this.subscribe((nextState) => { 5169 const nextValue = selectFn(nextState); 5170 if (!Object.is(prevValue, nextValue)) { 5171 const oldValue = prevValue; 5172 prevValue = nextValue; 5173 listener(nextValue, oldValue, this); 5174 } 5175 }); 5176 } 5177 }; 5178 5179 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingRootStore.mjs 5180 var selectors = { 5181 open: (state) => state.open, 5182 transitionStatus: (state) => state.transitionStatus, 5183 domReferenceElement: (state) => state.domReferenceElement, 5184 referenceElement: (state) => state.positionReference ?? state.referenceElement, 5185 floatingElement: (state) => state.floatingElement, 5186 floatingId: (state) => state.floatingId 5187 }; 5188 var FloatingRootStore = class extends ReactStore { 5189 constructor(options) { 5190 const { 5191 syncOnly, 5192 nested, 5193 onOpenChange, 5194 triggerElements, 5195 ...initialState 5196 } = options; 5197 super({ 5198 ...initialState, 5199 positionReference: initialState.referenceElement, 5200 domReferenceElement: initialState.referenceElement 5201 }, { 5202 onOpenChange, 5203 dataRef: { 5204 current: {} 5205 }, 5206 events: createEventEmitter(), 5207 nested, 5208 triggerElements 5209 }, selectors); 5210 this.syncOnly = syncOnly; 5211 } 5212 /** 5213 * Syncs the event used by hover logic to distinguish hover-open from click-like interaction. 5214 */ 5215 syncOpenEvent = (newOpen, event) => { 5216 if (!newOpen || !this.state.open || // Prevent a pending hover-open from overwriting a click-open event, while allowing 5217 // click events to upgrade a hover-open. 5218 event != null && isClickLikeEvent(event)) { 5219 this.context.dataRef.current.openEvent = newOpen ? event : void 0; 5220 } 5221 }; 5222 /** 5223 * Runs the root-owned side effects for an open state change. 5224 */ 5225 dispatchOpenChange = (newOpen, eventDetails) => { 5226 this.syncOpenEvent(newOpen, eventDetails.event); 5227 const details = { 5228 open: newOpen, 5229 reason: eventDetails.reason, 5230 nativeEvent: eventDetails.event, 5231 nested: this.context.nested, 5232 triggerElement: eventDetails.trigger 5233 }; 5234 this.context.events.emit("openchange", details); 5235 }; 5236 /** 5237 * Emits the `openchange` event through the internal event emitter and calls the `onOpenChange` handler with the provided arguments. 5238 * 5239 * @param newOpen The new open state. 5240 * @param eventDetails Details about the event that triggered the open state change. 5241 */ 5242 setOpen = (newOpen, eventDetails) => { 5243 if (this.syncOnly) { 5244 this.context.onOpenChange?.(newOpen, eventDetails); 5245 return; 5246 } 5247 this.dispatchOpenChange(newOpen, eventDetails); 5248 this.context.onOpenChange?.(newOpen, eventDetails); 5249 }; 5250 }; 5251 5252 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useFloatingRootContext.mjs 5253 function useFloatingRootContext(options) { 5254 const { 5255 open: open2 = false, 5256 onOpenChange, 5257 elements = {} 5258 } = options; 5259 const floatingId = useId(); 5260 const nested = useFloatingParentNodeId() != null; 5261 if (true) { 5262 const optionDomReference = elements.reference; 5263 if (optionDomReference && !isElement(optionDomReference)) { 5264 console.error("Cannot pass a virtual element to the `elements.reference` option,", "as it must be a real DOM element. Use `context.setPositionReference()`", "instead."); 5265 } 5266 } 5267 const store = useRefWithInit(() => new FloatingRootStore({ 5268 open: open2, 5269 transitionStatus: void 0, 5270 onOpenChange, 5271 referenceElement: elements.reference ?? null, 5272 floatingElement: elements.floating ?? null, 5273 triggerElements: new PopupTriggerMap(), 5274 floatingId, 5275 syncOnly: false, 5276 nested 5277 })).current; 5278 useIsoLayoutEffect(() => { 5279 const valuesToSync = { 5280 open: open2, 5281 floatingId 5282 }; 5283 if (elements.reference !== void 0) { 5284 valuesToSync.referenceElement = elements.reference; 5285 valuesToSync.domReferenceElement = isElement(elements.reference) ? elements.reference : null; 5286 } 5287 if (elements.floating !== void 0) { 5288 valuesToSync.floatingElement = elements.floating; 5289 } 5290 store.update(valuesToSync); 5291 }, [open2, floatingId, elements.reference, elements.floating, store]); 5292 store.context.onOpenChange = onOpenChange; 5293 store.context.nested = nested; 5294 return store; 5295 } 5296 5297 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useListNavigation.mjs 5298 var React30 = __toESM(require_react(), 1); 5299 function isStationaryWebKitPointer(event) { 5300 return parts_exports.engine.webkit && event.movementX === 0 && event.movementY === 0; 5301 } 5302 function doSwitch(orientation, vertical, horizontal) { 5303 switch (orientation) { 5304 case "vertical": 5305 return vertical; 5306 case "horizontal": 5307 return horizontal; 5308 default: 5309 return vertical || horizontal; 5310 } 5311 } 5312 function isMainOrientationKey(key, orientation) { 5313 const vertical = key === ARROW_UP || key === ARROW_DOWN; 5314 const horizontal = key === ARROW_LEFT || key === ARROW_RIGHT; 5315 return doSwitch(orientation, vertical, horizontal); 5316 } 5317 function isMainOrientationToEndKey(key, orientation, rtl) { 5318 const vertical = key === ARROW_DOWN; 5319 const horizontal = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT; 5320 return doSwitch(orientation, vertical, horizontal) || key === "Enter" || key === " " || key === ""; 5321 } 5322 function isCrossOrientationOpenKey(key, orientation, rtl) { 5323 const vertical = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT; 5324 const horizontal = key === ARROW_DOWN; 5325 return doSwitch(orientation, vertical, horizontal); 5326 } 5327 function isCrossOrientationCloseKey(key, orientation, rtl, grid) { 5328 const vertical = rtl ? key === ARROW_RIGHT : key === ARROW_LEFT; 5329 const horizontal = key === ARROW_UP; 5330 if (orientation === "both" || orientation === "horizontal" && grid) { 5331 return key === "Escape"; 5332 } 5333 return doSwitch(orientation, vertical, horizontal); 5334 } 5335 function useListNavigation(store, props) { 5336 const { 5337 listRef, 5338 activeIndex, 5339 onNavigate: onNavigateProp = () => { 5340 }, 5341 enabled = true, 5342 selectedIndex = null, 5343 allowEscape = false, 5344 loopFocus = false, 5345 nested = false, 5346 rtl = false, 5347 virtual = false, 5348 focusItemOnOpen = "auto", 5349 focusItemOnHover = true, 5350 openOnArrowKeyDown = true, 5351 disabledIndices = void 0, 5352 orientation = "vertical", 5353 triggerOrientation = orientation, 5354 parentOrientation, 5355 id, 5356 resetOnPointerLeave = true, 5357 externalTree, 5358 nestedReturnFocusRef, 5359 grid: navigateGrid 5360 } = props; 5361 const isGrid = navigateGrid != null; 5362 if (true) { 5363 if (allowEscape) { 5364 if (!loopFocus) { 5365 console.warn("`useListNavigation` looping must be enabled to allow escaping."); 5366 } 5367 if (!virtual) { 5368 console.warn("`useListNavigation` must be virtual to allow escaping."); 5369 } 5370 } 5371 if (orientation === "vertical" && isGrid) { 5372 console.warn("In grid list navigation mode, the `orientation` should", 'be either "horizontal" or "both".'); 5373 } 5374 } 5375 const open2 = store.useState("open"); 5376 const floatingElement = store.useState("floatingElement"); 5377 const domReferenceElement = store.useState("domReferenceElement"); 5378 const dataRef = store.context.dataRef; 5379 const floatingFocusElement = getFloatingFocusElement(floatingElement); 5380 const typeableComboboxReference = isTypeableCombobox(domReferenceElement); 5381 const floatingFocusElementRef = useValueAsRef(floatingFocusElement); 5382 const parentId = useFloatingParentNodeId(); 5383 const tree = useFloatingTree(externalTree); 5384 const focusItemOnOpenRef = React30.useRef(focusItemOnOpen); 5385 const indexRef = React30.useRef(selectedIndex ?? -1); 5386 const keyRef = React30.useRef(null); 5387 const isPointerModalityRef = React30.useRef(true); 5388 const onNavigate = useStableCallback((event) => { 5389 onNavigateProp(indexRef.current === -1 ? null : indexRef.current, event); 5390 }); 5391 const previousMountedRef = React30.useRef(!!floatingElement); 5392 const previousOpenRef = React30.useRef(open2); 5393 const forceSyncFocusRef = React30.useRef(false); 5394 const forceScrollIntoViewRef = React30.useRef(false); 5395 const cancelQueuedFocusRef = React30.useRef(null); 5396 const disabledIndicesRef = useValueAsRef(disabledIndices); 5397 const latestOpenRef = useValueAsRef(open2); 5398 const selectedIndexRef = useValueAsRef(selectedIndex); 5399 const resetOnPointerLeaveRef = useValueAsRef(resetOnPointerLeave); 5400 const focusFrame = useAnimationFrame(); 5401 const waitForListPopulatedFrame = useAnimationFrame(); 5402 const focusItem = useStableCallback(() => { 5403 focusFrame.cancel(); 5404 function runFocus(item2) { 5405 if (!virtual) { 5406 cancelQueuedFocusRef.current = enqueueFocus(item2, { 5407 sync: forceSyncFocusRef.current, 5408 preventScroll: true 5409 }); 5410 } 5411 } 5412 const initialItem = listRef.current[indexRef.current]; 5413 const forceScrollIntoView = forceScrollIntoViewRef.current; 5414 if (initialItem) { 5415 runFocus(initialItem); 5416 } 5417 const scheduler2 = forceSyncFocusRef.current ? (callback) => callback() : (callback) => focusFrame.request(callback); 5418 scheduler2(() => { 5419 const waitedItem = listRef.current[indexRef.current] || initialItem; 5420 if (!waitedItem) { 5421 return; 5422 } 5423 if (!initialItem) { 5424 runFocus(waitedItem); 5425 } 5426 const shouldScrollIntoView = ( 5427 // eslint-disable-next-line @typescript-eslint/no-use-before-define 5428 item && (forceScrollIntoView || !isPointerModalityRef.current) 5429 ); 5430 if (shouldScrollIntoView) { 5431 waitedItem.scrollIntoView?.({ 5432 block: "nearest", 5433 inline: "nearest" 5434 }); 5435 } 5436 }); 5437 }); 5438 useIsoLayoutEffect(() => { 5439 dataRef.current.orientation = orientation; 5440 }, [dataRef, orientation]); 5441 useIsoLayoutEffect(() => { 5442 if (!open2) { 5443 keyRef.current = null; 5444 } 5445 if (!open2 || focusItemOnOpen !== "auto") { 5446 focusItemOnOpenRef.current = focusItemOnOpen; 5447 } 5448 }, [open2, focusItemOnOpen]); 5449 useIsoLayoutEffect(() => { 5450 if (!enabled) { 5451 return; 5452 } 5453 if (open2 && floatingElement) { 5454 indexRef.current = selectedIndex ?? -1; 5455 if (focusItemOnOpenRef.current && selectedIndex != null) { 5456 forceScrollIntoViewRef.current = true; 5457 onNavigate(); 5458 } 5459 } else if (previousMountedRef.current) { 5460 indexRef.current = -1; 5461 onNavigate(); 5462 } 5463 }, [enabled, open2, floatingElement, selectedIndex, onNavigate]); 5464 useIsoLayoutEffect(() => { 5465 if (!enabled) { 5466 return; 5467 } 5468 if (!open2) { 5469 forceSyncFocusRef.current = false; 5470 return; 5471 } 5472 if (!floatingElement) { 5473 return; 5474 } 5475 if (activeIndex == null) { 5476 forceSyncFocusRef.current = false; 5477 if (selectedIndexRef.current != null) { 5478 return; 5479 } 5480 if (previousMountedRef.current) { 5481 indexRef.current = -1; 5482 focusItem(); 5483 } 5484 if ((!previousOpenRef.current || !previousMountedRef.current) && focusItemOnOpenRef.current && (keyRef.current != null || focusItemOnOpenRef.current === true && keyRef.current == null)) { 5485 let runs = 0; 5486 const waitForListPopulated = () => { 5487 if (listRef.current[0] == null) { 5488 if (runs < 2) { 5489 const scheduler2 = runs ? (callback) => waitForListPopulatedFrame.request(callback) : queueMicrotask; 5490 scheduler2(waitForListPopulated); 5491 } 5492 runs += 1; 5493 } else { 5494 indexRef.current = keyRef.current == null || isMainOrientationToEndKey(keyRef.current, triggerOrientation, rtl) || nested ? getMinListIndex(listRef) : getMaxListIndex(listRef); 5495 keyRef.current = null; 5496 onNavigate(); 5497 } 5498 }; 5499 waitForListPopulated(); 5500 } 5501 } else if (!isIndexOutOfListBounds(listRef.current, activeIndex)) { 5502 indexRef.current = activeIndex; 5503 focusItem(); 5504 forceScrollIntoViewRef.current = false; 5505 } 5506 }, [enabled, open2, floatingElement, activeIndex, selectedIndexRef, nested, listRef, triggerOrientation, rtl, onNavigate, focusItem, waitForListPopulatedFrame]); 5507 useIsoLayoutEffect(() => { 5508 if (!enabled || floatingElement || !tree || virtual || !previousMountedRef.current) { 5509 return; 5510 } 5511 const nodes = tree.nodesRef.current; 5512 const parent = nodes.find((node) => node.id === parentId)?.context?.elements.floating; 5513 const activeEl = activeElement(ownerDocument(domReferenceElement ?? parent ?? null)); 5514 const treeContainsActiveEl = nodes.some((node) => node.context && contains(node.context.elements.floating, activeEl)); 5515 if (parent && !treeContainsActiveEl && isPointerModalityRef.current) { 5516 parent.focus({ 5517 preventScroll: true 5518 }); 5519 } 5520 }, [enabled, floatingElement, domReferenceElement, tree, parentId, virtual]); 5521 useIsoLayoutEffect(() => { 5522 previousOpenRef.current = open2; 5523 previousMountedRef.current = !!floatingElement; 5524 }); 5525 const hasActiveIndex = activeIndex != null; 5526 const syncCurrentTarget = useStableCallback((event) => { 5527 if (!latestOpenRef.current) { 5528 return; 5529 } 5530 const index2 = listRef.current.indexOf(event.currentTarget); 5531 if (index2 !== -1 && (indexRef.current !== index2 || activeIndex !== index2)) { 5532 indexRef.current = index2; 5533 onNavigate(event); 5534 } 5535 }); 5536 const getParentOrientation = useStableCallback(() => { 5537 return parentOrientation ?? tree?.nodesRef.current.find((node) => node.id === parentId)?.context?.dataRef?.current.orientation; 5538 }); 5539 const getMinEnabledIndex = useStableCallback(() => { 5540 return getMinListIndex(listRef, disabledIndicesRef.current); 5541 }); 5542 const commonOnKeyDown = useStableCallback((event) => { 5543 isPointerModalityRef.current = false; 5544 forceSyncFocusRef.current = true; 5545 if (event.which === 229) { 5546 return; 5547 } 5548 if (!latestOpenRef.current && event.currentTarget === floatingFocusElementRef.current) { 5549 return; 5550 } 5551 if (nested && isCrossOrientationCloseKey(event.key, orientation, rtl, isGrid)) { 5552 if (!isMainOrientationKey(event.key, getParentOrientation())) { 5553 stopEvent(event); 5554 } 5555 store.setOpen(false, createChangeEventDetails(reason_parts_exports.listNavigation, event.nativeEvent)); 5556 const returnElement = nestedReturnFocusRef?.current ?? domReferenceElement; 5557 if (isHTMLElement(returnElement)) { 5558 returnElement.focus(); 5559 } 5560 return; 5561 } 5562 if (activeIndex != null && activeIndex !== indexRef.current && !isIndexOutOfListBounds(listRef.current, activeIndex)) { 5563 indexRef.current = activeIndex; 5564 } 5565 const currentIndex = indexRef.current; 5566 const minIndex = getMinListIndex(listRef, disabledIndices); 5567 const maxIndex = getMaxListIndex(listRef, disabledIndices); 5568 if (!typeableComboboxReference) { 5569 if (event.key === "Home") { 5570 stopEvent(event); 5571 indexRef.current = minIndex; 5572 onNavigate(event); 5573 } 5574 if (event.key === "End") { 5575 stopEvent(event); 5576 indexRef.current = maxIndex; 5577 onNavigate(event); 5578 } 5579 } 5580 if (navigateGrid != null) { 5581 const index2 = navigateGrid(event, indexRef.current, listRef, orientation, loopFocus, rtl, disabledIndices, minIndex, maxIndex); 5582 if (index2 != null && index2 !== indexRef.current) { 5583 indexRef.current = index2; 5584 onNavigate(event); 5585 } 5586 if (orientation === "both") { 5587 return; 5588 } 5589 } 5590 if (isMainOrientationKey(event.key, orientation)) { 5591 stopEvent(event); 5592 const focusedElement = activeElement(event.currentTarget.ownerDocument); 5593 if (open2 && !virtual && contains(event.currentTarget, focusedElement) && !listRef.current.some((item2) => item2 != null && contains(item2, focusedElement))) { 5594 indexRef.current = isMainOrientationToEndKey(event.key, orientation, rtl) ? minIndex : maxIndex; 5595 onNavigate(event); 5596 if (activeIndex === indexRef.current) { 5597 focusItem(); 5598 } 5599 return; 5600 } 5601 const { 5602 index: index2, 5603 wrapped 5604 } = getNextListIndex(listRef.current, currentIndex, { 5605 decrement: !isMainOrientationToEndKey(event.key, orientation, rtl), 5606 loopFocus, 5607 allowEscape, 5608 disabledIndices, 5609 minIndex, 5610 maxIndex 5611 }); 5612 if (wrapped) { 5613 forceSyncFocusRef.current = false; 5614 } 5615 indexRef.current = index2; 5616 onNavigate(event); 5617 } 5618 }); 5619 const item = React30.useMemo(() => { 5620 const itemProps = { 5621 onFocus(event) { 5622 forceSyncFocusRef.current = true; 5623 syncCurrentTarget(event); 5624 }, 5625 onClick({ 5626 currentTarget 5627 }) { 5628 if (!virtual) { 5629 currentTarget.focus({ 5630 preventScroll: true 5631 }); 5632 } 5633 }, 5634 onMouseMove(event) { 5635 if (isStationaryWebKitPointer(event)) { 5636 return; 5637 } 5638 forceSyncFocusRef.current = true; 5639 forceScrollIntoViewRef.current = false; 5640 if (focusItemOnHover) { 5641 syncCurrentTarget(event); 5642 } 5643 }, 5644 onPointerLeave(event) { 5645 if (!latestOpenRef.current || !isPointerModalityRef.current || event.pointerType === "touch") { 5646 return; 5647 } 5648 forceSyncFocusRef.current = true; 5649 const relatedTarget = event.relatedTarget; 5650 if (!focusItemOnHover || listRef.current.includes(relatedTarget)) { 5651 return; 5652 } 5653 if (!resetOnPointerLeaveRef.current) { 5654 return; 5655 } 5656 cancelQueuedFocusRef.current?.(); 5657 cancelQueuedFocusRef.current = null; 5658 indexRef.current = -1; 5659 onNavigate(event); 5660 if (!virtual) { 5661 const floatingFocusEl = floatingFocusElementRef.current; 5662 const activeEl = activeElement(ownerDocument(floatingFocusEl)); 5663 if (floatingFocusEl && contains(floatingFocusEl, activeEl)) { 5664 floatingFocusEl.focus({ 5665 preventScroll: true 5666 }); 5667 } 5668 } 5669 } 5670 }; 5671 return itemProps; 5672 }, [syncCurrentTarget, latestOpenRef, floatingFocusElementRef, focusItemOnHover, listRef, onNavigate, resetOnPointerLeaveRef, virtual]); 5673 const ariaActiveDescendantProp = React30.useMemo(() => { 5674 return virtual && open2 && hasActiveIndex && { 5675 "aria-activedescendant": `$id}-$activeIndex}` 5676 }; 5677 }, [virtual, open2, hasActiveIndex, id, activeIndex]); 5678 const floating = React30.useMemo(() => { 5679 return { 5680 ...!typeableComboboxReference ? ariaActiveDescendantProp : {}, 5681 onKeyDown(event) { 5682 if (event.key === "Tab" && event.shiftKey && open2 && !virtual) { 5683 const target = getTarget(event.nativeEvent); 5684 if (target && !contains(floatingFocusElementRef.current, target)) { 5685 return; 5686 } 5687 stopEvent(event); 5688 const details = createChangeEventDetails(reason_parts_exports.focusOut, event.nativeEvent); 5689 store.setOpen(false, details); 5690 const returnElement = nestedReturnFocusRef?.current ?? domReferenceElement; 5691 if (!details.isCanceled && isHTMLElement(returnElement)) { 5692 returnElement.focus(); 5693 } 5694 return; 5695 } 5696 commonOnKeyDown(event); 5697 }, 5698 onPointerMove(event) { 5699 if (isStationaryWebKitPointer(event)) { 5700 return; 5701 } 5702 isPointerModalityRef.current = true; 5703 } 5704 }; 5705 }, [ariaActiveDescendantProp, commonOnKeyDown, floatingFocusElementRef, typeableComboboxReference, store, open2, virtual, domReferenceElement, nestedReturnFocusRef]); 5706 const trigger = React30.useMemo(() => { 5707 function openOnNavigationKeyDown(event) { 5708 store.setOpen(true, createChangeEventDetails(reason_parts_exports.listNavigation, event.nativeEvent, event.currentTarget)); 5709 } 5710 function checkVirtualMouse(event) { 5711 if (focusItemOnOpen === "auto" && isVirtualClick(event.nativeEvent)) { 5712 focusItemOnOpenRef.current = !virtual; 5713 } 5714 } 5715 function checkVirtualPointer(event) { 5716 focusItemOnOpenRef.current = focusItemOnOpen; 5717 if (focusItemOnOpen === "auto" && isVirtualPointerEvent(event.nativeEvent)) { 5718 focusItemOnOpenRef.current = true; 5719 } 5720 } 5721 return { 5722 onKeyDown(event) { 5723 const currentOpen = store.select("open"); 5724 isPointerModalityRef.current = false; 5725 const isArrowKey = event.key.startsWith("Arrow"); 5726 const isParentCrossOpenKey = isCrossOrientationOpenKey(event.key, getParentOrientation(), rtl); 5727 const isMainKey = isMainOrientationKey(event.key, currentOpen ? orientation : triggerOrientation); 5728 const isNavigationKey = (nested ? isParentCrossOpenKey : isMainKey) || event.key === "Enter" || event.key.trim() === ""; 5729 if (virtual && currentOpen && (!nested || isTypeableElement(event.currentTarget))) { 5730 return commonOnKeyDown(event); 5731 } 5732 if (!currentOpen && !openOnArrowKeyDown && isArrowKey) { 5733 return void 0; 5734 } 5735 if (isNavigationKey) { 5736 const isParentMainKey = isMainOrientationKey(event.key, getParentOrientation()); 5737 keyRef.current = nested && isParentMainKey ? null : event.key; 5738 } 5739 if (nested) { 5740 if (isParentCrossOpenKey) { 5741 stopEvent(event); 5742 if (currentOpen) { 5743 indexRef.current = getMinEnabledIndex(); 5744 onNavigate(event); 5745 if (virtual) { 5746 floatingFocusElementRef.current?.focus(); 5747 } 5748 } else { 5749 openOnNavigationKeyDown(event); 5750 } 5751 } 5752 return void 0; 5753 } 5754 if (isMainKey) { 5755 if (selectedIndexRef.current != null) { 5756 indexRef.current = selectedIndexRef.current; 5757 } 5758 stopEvent(event); 5759 if (!currentOpen && openOnArrowKeyDown) { 5760 openOnNavigationKeyDown(event); 5761 } else { 5762 commonOnKeyDown(event); 5763 } 5764 if (currentOpen) { 5765 onNavigate(event); 5766 } 5767 } 5768 return void 0; 5769 }, 5770 onFocus(event) { 5771 if (event.target !== event.currentTarget) { 5772 return; 5773 } 5774 if (store.select("open") && !virtual) { 5775 indexRef.current = -1; 5776 onNavigate(event); 5777 } 5778 }, 5779 onPointerDown: checkVirtualPointer, 5780 onPointerEnter: checkVirtualPointer, 5781 onMouseDown: checkVirtualMouse, 5782 onClick: checkVirtualMouse 5783 }; 5784 }, [commonOnKeyDown, focusItemOnOpen, getMinEnabledIndex, nested, onNavigate, store, openOnArrowKeyDown, orientation, triggerOrientation, getParentOrientation, rtl, selectedIndexRef, virtual, floatingFocusElementRef]); 5785 const reference = React30.useMemo(() => { 5786 return { 5787 ...ariaActiveDescendantProp, 5788 ...trigger 5789 }; 5790 }, [ariaActiveDescendantProp, trigger]); 5791 return React30.useMemo(() => enabled ? { 5792 reference, 5793 floating, 5794 item, 5795 trigger 5796 } : {}, [enabled, reference, floating, trigger, item]); 5797 } 5798 5799 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useTypeahead.mjs 5800 var React31 = __toESM(require_react(), 1); 5801 function useTypeahead(store, props) { 5802 const { 5803 listRef, 5804 elementsRef, 5805 activeIndex, 5806 onMatch: onMatchProp, 5807 disabledIndices, 5808 onTyping: onTypingProp, 5809 enabled = true, 5810 resetMs = 750, 5811 selectedIndex = null 5812 } = props; 5813 const onTyping = useStableCallback(onTypingProp); 5814 const open2 = store.useState("open"); 5815 const timeout = useTimeout(); 5816 const stringRef = React31.useRef(""); 5817 const prevIndexRef = React31.useRef(selectedIndex ?? activeIndex ?? -1); 5818 const matchIndexRef = React31.useRef(null); 5819 const onKeyDown = useStableCallback((event) => { 5820 function getElement(index3) { 5821 return elementsRef?.current[index3]; 5822 } 5823 function isItemAvailable(index3) { 5824 const element = getElement(index3); 5825 if (element && !isElementVisible(element) || element?.matches(":disabled")) { 5826 return false; 5827 } 5828 return disabledIndices == null || !isListIndexDisabled(EMPTY_ARRAY, index3, disabledIndices); 5829 } 5830 function getMatchingIndex(list, string, startIndex2 = 0) { 5831 if (list.length === 0) { 5832 return -1; 5833 } 5834 const normalizedStartIndex = (startIndex2 % list.length + list.length) % list.length; 5835 const lowerString = string.toLowerCase(); 5836 for (let offset4 = 0; offset4 < list.length; offset4 += 1) { 5837 const index3 = (normalizedStartIndex + offset4) % list.length; 5838 const text = list[index3]; 5839 if (!text?.toLowerCase().startsWith(lowerString) || !isItemAvailable(index3)) { 5840 continue; 5841 } 5842 return index3; 5843 } 5844 return -1; 5845 } 5846 const listContent = listRef.current; 5847 if (stringRef.current.length > 0 && event.key === " ") { 5848 stopEvent(event); 5849 onTyping?.(true); 5850 } 5851 if (stringRef.current.length > 0 && stringRef.current[0] !== " ") { 5852 if (getMatchingIndex(listContent, stringRef.current) === -1 && event.key !== " ") { 5853 onTyping?.(false); 5854 } 5855 } 5856 if (listContent == null || // Character key. 5857 event.key.length !== 1 || // Modifier key. 5858 event.ctrlKey || event.metaKey || event.altKey) { 5859 return; 5860 } 5861 if (open2 && event.key !== " ") { 5862 stopEvent(event); 5863 onTyping?.(true); 5864 } 5865 const isNewSession = stringRef.current === ""; 5866 if (isNewSession) { 5867 prevIndexRef.current = selectedIndex ?? activeIndex ?? -1; 5868 } 5869 const allowRapidSuccessionOfFirstLetter = listContent.every((text, index3) => text && isItemAvailable(index3) ? text[0]?.toLowerCase() !== text[1]?.toLowerCase() : true); 5870 if (allowRapidSuccessionOfFirstLetter && stringRef.current === event.key) { 5871 stringRef.current = ""; 5872 prevIndexRef.current = matchIndexRef.current; 5873 } 5874 stringRef.current += event.key; 5875 timeout.start(resetMs, () => { 5876 stringRef.current = ""; 5877 prevIndexRef.current = matchIndexRef.current; 5878 onTyping?.(false); 5879 }); 5880 const prevIndex = isNewSession ? selectedIndex ?? activeIndex ?? -1 : prevIndexRef.current; 5881 const startIndex = (prevIndex ?? 0) + 1; 5882 const index2 = getMatchingIndex(listContent, stringRef.current, startIndex); 5883 if (index2 !== -1) { 5884 onMatchProp?.(index2, event); 5885 matchIndexRef.current = index2; 5886 } else if (event.key !== " ") { 5887 stringRef.current = ""; 5888 onTyping?.(false); 5889 } 5890 }); 5891 const onBlur = useStableCallback((event) => { 5892 const next = event.relatedTarget; 5893 const currentDomReferenceElement = store.select("domReferenceElement"); 5894 const currentFloatingElement = store.select("floatingElement"); 5895 const withinComposite = contains(currentDomReferenceElement, next) || contains(currentFloatingElement, next); 5896 if (withinComposite) { 5897 return; 5898 } 5899 timeout.clear(); 5900 stringRef.current = ""; 5901 prevIndexRef.current = matchIndexRef.current; 5902 onTyping?.(false); 5903 }); 5904 useIsoLayoutEffect(() => { 5905 if (!open2 && selectedIndex !== null) { 5906 return; 5907 } 5908 timeout.clear(); 5909 matchIndexRef.current = null; 5910 if (stringRef.current !== "") { 5911 stringRef.current = ""; 5912 onTyping?.(false); 5913 } 5914 }, [open2, selectedIndex, timeout, onTyping]); 5915 const sharedProps = React31.useMemo(() => ({ 5916 onKeyDown, 5917 onBlur 5918 }), [onKeyDown, onBlur]); 5919 return React31.useMemo(() => enabled ? { 5920 reference: sharedProps, 5921 floating: sharedProps 5922 } : {}, [enabled, sharedProps]); 5923 } 5924 5925 // node_modules/.store/@floating-ui/core@1.8.0-3V8aS7jJHHGcsCINjP9-5A/node_modules/@floating-ui/core/dist/floating-ui.core.mjs 5926 function computeCoordsFromPlacement(_ref, placement, rtl) { 5927 let { 5928 reference, 5929 floating 5930 } = _ref; 5931 const sideAxis = getSideAxis(placement); 5932 const alignmentAxis = getAlignmentAxis(placement); 5933 const alignLength = getAxisLength(alignmentAxis); 5934 const side = getSide(placement); 5935 const isVertical = sideAxis === "y"; 5936 const commonX = reference.x + reference.width / 2 - floating.width / 2; 5937 const commonY = reference.y + reference.height / 2 - floating.height / 2; 5938 const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2; 5939 let coords; 5940 switch (side) { 5941 case "top": 5942 coords = { 5943 x: commonX, 5944 y: reference.y - floating.height 5945 }; 5946 break; 5947 case "bottom": 5948 coords = { 5949 x: commonX, 5950 y: reference.y + reference.height 5951 }; 5952 break; 5953 case "right": 5954 coords = { 5955 x: reference.x + reference.width, 5956 y: commonY 5957 }; 5958 break; 5959 case "left": 5960 coords = { 5961 x: reference.x - floating.width, 5962 y: commonY 5963 }; 5964 break; 5965 default: 5966 coords = { 5967 x: reference.x, 5968 y: reference.y 5969 }; 5970 } 5971 const alignment = getAlignment(placement); 5972 if (alignment) { 5973 coords[alignmentAxis] += commonAlign * (alignment === "end" ? 1 : -1) * (rtl && isVertical ? -1 : 1); 5974 } 5975 return coords; 5976 } 5977 async function detectOverflow(state, options) { 5978 var _await$platform$isEle; 5979 if (options === void 0) { 5980 options = {}; 5981 } 5982 const { 5983 x, 5984 y, 5985 platform: platform3, 5986 rects, 5987 elements, 5988 strategy 5989 } = state; 5990 const { 5991 boundary = "clippingAncestors", 5992 rootBoundary = "viewport", 5993 elementContext = "floating", 5994 altBoundary = false, 5995 padding = 0 5996 } = evaluate(options, state); 5997 const paddingObject = getPaddingObject(padding); 5998 const altContext = elementContext === "floating" ? "reference" : "floating"; 5999 const element = elements[altBoundary ? altContext : elementContext]; 6000 const clippingClientRect = rectToClientRect(await platform3.getClippingRect({ 6001 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)), 6002 boundary, 6003 rootBoundary, 6004 strategy 6005 })); 6006 const rect = elementContext === "floating" ? { 6007 x, 6008 y, 6009 width: rects.floating.width, 6010 height: rects.floating.height 6011 } : rects.reference; 6012 const offsetParent = await (platform3.getOffsetParent == null ? void 0 : platform3.getOffsetParent(elements.floating)); 6013 const offsetScale = await (platform3.isElement == null ? void 0 : platform3.isElement(offsetParent)) && await (platform3.getScale == null ? void 0 : platform3.getScale(offsetParent)) || { 6014 x: 1, 6015 y: 1 6016 }; 6017 const elementClientRect = rectToClientRect(platform3.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform3.convertOffsetParentRelativeRectToViewportRelativeRect({ 6018 elements, 6019 rect, 6020 offsetParent, 6021 strategy 6022 }) : rect); 6023 return { 6024 top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y, 6025 bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y, 6026 left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x, 6027 right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x 6028 }; 6029 } 6030 var MAX_RESET_COUNT = 50; 6031 var computePosition = async (reference, floating, config) => { 6032 const { 6033 placement = "bottom", 6034 strategy = "absolute", 6035 middleware = [], 6036 platform: platform3 6037 } = config; 6038 const platformWithDetectOverflow = platform3.detectOverflow ? platform3 : { 6039 ...platform3, 6040 detectOverflow 6041 }; 6042 const rtl = await (platform3.isRTL == null ? void 0 : platform3.isRTL(floating)); 6043 let rects = await platform3.getElementRects({ 6044 reference, 6045 floating, 6046 strategy 6047 }); 6048 let { 6049 x, 6050 y 6051 } = computeCoordsFromPlacement(rects, placement, rtl); 6052 let statefulPlacement = placement; 6053 let resetCount = 0; 6054 const middlewareData = {}; 6055 for (let i = 0; i < middleware.length; i++) { 6056 const currentMiddleware = middleware[i]; 6057 if (!currentMiddleware) { 6058 continue; 6059 } 6060 const { 6061 name: name3, 6062 fn 6063 } = currentMiddleware; 6064 const { 6065 x: nextX, 6066 y: nextY, 6067 data, 6068 reset 6069 } = await fn({ 6070 x, 6071 y, 6072 initialPlacement: placement, 6073 placement: statefulPlacement, 6074 strategy, 6075 middlewareData, 6076 rects, 6077 platform: platformWithDetectOverflow, 6078 elements: { 6079 reference, 6080 floating 6081 } 6082 }); 6083 x = nextX != null ? nextX : x; 6084 y = nextY != null ? nextY : y; 6085 middlewareData[name3] = { 6086 ...middlewareData[name3], 6087 ...data 6088 }; 6089 if (reset && resetCount < MAX_RESET_COUNT) { 6090 resetCount++; 6091 if (typeof reset === "object") { 6092 if (reset.placement) { 6093 statefulPlacement = reset.placement; 6094 } 6095 if (reset.rects) { 6096 rects = reset.rects === true ? await platform3.getElementRects({ 6097 reference, 6098 floating, 6099 strategy 6100 }) : reset.rects; 6101 } 6102 ({ 6103 x, 6104 y 6105 } = computeCoordsFromPlacement(rects, statefulPlacement, rtl)); 6106 } 6107 i = -1; 6108 } 6109 } 6110 return { 6111 x, 6112 y, 6113 placement: statefulPlacement, 6114 strategy, 6115 middlewareData 6116 }; 6117 }; 6118 var flip = function(options) { 6119 if (options === void 0) { 6120 options = {}; 6121 } 6122 return { 6123 name: "flip", 6124 options, 6125 async fn(state) { 6126 var _middlewareData$arrow, _middlewareData$flip; 6127 const { 6128 placement, 6129 middlewareData, 6130 rects, 6131 initialPlacement, 6132 platform: platform3, 6133 elements 6134 } = state; 6135 const { 6136 mainAxis: checkMainAxis = true, 6137 crossAxis: checkCrossAxis = true, 6138 fallbackPlacements: specifiedFallbackPlacements, 6139 fallbackStrategy = "bestFit", 6140 fallbackAxisSideDirection = "none", 6141 flipAlignment = true, 6142 ...detectOverflowOptions 6143 } = evaluate(options, state); 6144 if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) { 6145 return {}; 6146 } 6147 const side = getSide(placement); 6148 const initialSideAxis = getSideAxis(initialPlacement); 6149 const isBasePlacement = getSide(initialPlacement) === initialPlacement; 6150 const rtl = await (platform3.isRTL == null ? void 0 : platform3.isRTL(elements.floating)); 6151 const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement)); 6152 const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== "none"; 6153 if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) { 6154 fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl)); 6155 } 6156 const placements2 = [initialPlacement, ...fallbackPlacements]; 6157 const overflow = await platform3.detectOverflow(state, detectOverflowOptions); 6158 const overflows = []; 6159 let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || []; 6160 if (checkMainAxis) { 6161 overflows.push(overflow[side]); 6162 } 6163 if (checkCrossAxis) { 6164 const sides2 = getAlignmentSides(placement, rects, rtl); 6165 overflows.push(overflow[sides2[0]], overflow[sides2[1]]); 6166 } 6167 overflowsData = [...overflowsData, { 6168 placement, 6169 overflows 6170 }]; 6171 if (!overflows.every((side2) => side2 <= 0)) { 6172 var _middlewareData$flip2, _overflowsData$filter; 6173 const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1; 6174 const nextPlacement = placements2[nextIndex]; 6175 if (nextPlacement) { 6176 const ignoreCrossAxisOverflow = checkCrossAxis === "alignment" ? initialSideAxis !== getSideAxis(nextPlacement) : false; 6177 if (!ignoreCrossAxisOverflow || // We leave the current main axis only if every placement on that axis 6178 // overflows the main axis. 6179 overflowsData.every((d) => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) { 6180 return { 6181 data: { 6182 index: nextIndex, 6183 overflows: overflowsData 6184 }, 6185 reset: { 6186 placement: nextPlacement 6187 } 6188 }; 6189 } 6190 } 6191 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; 6192 if (!resetPlacement) { 6193 switch (fallbackStrategy) { 6194 case "bestFit": { 6195 var _overflowsData$filter2; 6196 const placement2 = (_overflowsData$filter2 = overflowsData.filter((d) => { 6197 if (hasFallbackAxisSideDirection) { 6198 const currentSideAxis = getSideAxis(d.placement); 6199 return currentSideAxis === initialSideAxis || // Create a bias to the `y` side axis due to horizontal 6200 // reading directions favoring greater width. 6201 currentSideAxis === "y"; 6202 } 6203 return true; 6204 }).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]; 6205 if (placement2) { 6206 resetPlacement = placement2; 6207 } 6208 break; 6209 } 6210 case "initialPlacement": 6211 resetPlacement = initialPlacement; 6212 break; 6213 } 6214 } 6215 if (placement !== resetPlacement) { 6216 return { 6217 reset: { 6218 placement: resetPlacement 6219 } 6220 }; 6221 } 6222 } 6223 return {}; 6224 } 6225 }; 6226 }; 6227 var originSides = /* @__PURE__ */ new Set(["left", "top"]); 6228 async function convertValueToCoords(state, options) { 6229 const { 6230 placement, 6231 platform: platform3, 6232 elements 6233 } = state; 6234 const rtl = await (platform3.isRTL == null ? void 0 : platform3.isRTL(elements.floating)); 6235 const side = getSide(placement); 6236 const alignment = getAlignment(placement); 6237 const isVertical = getSideAxis(placement) === "y"; 6238 const mainAxisMulti = originSides.has(side) ? -1 : 1; 6239 const crossAxisMulti = rtl && isVertical ? -1 : 1; 6240 const rawValue = evaluate(options, state); 6241 let { 6242 mainAxis, 6243 crossAxis, 6244 alignmentAxis 6245 } = typeof rawValue === "number" ? { 6246 mainAxis: rawValue, 6247 crossAxis: 0, 6248 alignmentAxis: null 6249 } : { 6250 mainAxis: rawValue.mainAxis || 0, 6251 crossAxis: rawValue.crossAxis || 0, 6252 alignmentAxis: rawValue.alignmentAxis 6253 }; 6254 if (alignment && typeof alignmentAxis === "number") { 6255 crossAxis = alignment === "end" ? alignmentAxis * -1 : alignmentAxis; 6256 } 6257 return isVertical ? { 6258 x: crossAxis * crossAxisMulti, 6259 y: mainAxis * mainAxisMulti 6260 } : { 6261 x: mainAxis * mainAxisMulti, 6262 y: crossAxis * crossAxisMulti 6263 }; 6264 } 6265 var offset = function(options) { 6266 if (options === void 0) { 6267 options = 0; 6268 } 6269 return { 6270 name: "offset", 6271 options, 6272 async fn(state) { 6273 var _middlewareData$offse, _middlewareData$arrow; 6274 const { 6275 x, 6276 y, 6277 placement, 6278 middlewareData 6279 } = state; 6280 const diffCoords = await convertValueToCoords(state, options); 6281 if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) { 6282 return {}; 6283 } 6284 return { 6285 x: x + diffCoords.x, 6286 y: y + diffCoords.y, 6287 data: { 6288 ...diffCoords, 6289 placement 6290 } 6291 }; 6292 } 6293 }; 6294 }; 6295 var shift = function(options) { 6296 if (options === void 0) { 6297 options = {}; 6298 } 6299 return { 6300 name: "shift", 6301 options, 6302 async fn(state) { 6303 const { 6304 x, 6305 y, 6306 placement, 6307 platform: platform3 6308 } = state; 6309 const { 6310 mainAxis: checkMainAxis = true, 6311 crossAxis: checkCrossAxis = false, 6312 limiter = { 6313 fn: (_ref) => { 6314 let { 6315 x: x2, 6316 y: y2 6317 } = _ref; 6318 return { 6319 x: x2, 6320 y: y2 6321 }; 6322 } 6323 }, 6324 ...detectOverflowOptions 6325 } = evaluate(options, state); 6326 const coords = { 6327 x, 6328 y 6329 }; 6330 const overflow = await platform3.detectOverflow(state, detectOverflowOptions); 6331 const crossAxis = getSideAxis(placement); 6332 const mainAxis = getOppositeAxis(crossAxis); 6333 let mainAxisCoord = coords[mainAxis]; 6334 let crossAxisCoord = coords[crossAxis]; 6335 const clampCoord = (axis, coord) => clamp(coord + overflow[axis === "y" ? "top" : "left"], coord, coord - overflow[axis === "y" ? "bottom" : "right"]); 6336 if (checkMainAxis) { 6337 mainAxisCoord = clampCoord(mainAxis, mainAxisCoord); 6338 } 6339 if (checkCrossAxis) { 6340 crossAxisCoord = clampCoord(crossAxis, crossAxisCoord); 6341 } 6342 const limitedCoords = limiter.fn({ 6343 ...state, 6344 [mainAxis]: mainAxisCoord, 6345 [crossAxis]: crossAxisCoord 6346 }); 6347 return { 6348 ...limitedCoords, 6349 data: { 6350 x: limitedCoords.x - x, 6351 y: limitedCoords.y - y, 6352 enabled: { 6353 [mainAxis]: checkMainAxis, 6354 [crossAxis]: checkCrossAxis 6355 } 6356 } 6357 }; 6358 } 6359 }; 6360 }; 6361 var limitShift = function(options) { 6362 if (options === void 0) { 6363 options = {}; 6364 } 6365 return { 6366 options, 6367 fn(state) { 6368 var _rawOffset$mainAxis, _rawOffset$crossAxis; 6369 const { 6370 x, 6371 y, 6372 placement, 6373 rects, 6374 middlewareData 6375 } = state; 6376 const { 6377 offset: offset4 = 0, 6378 mainAxis: checkMainAxis = true, 6379 crossAxis: checkCrossAxis = true 6380 } = evaluate(options, state); 6381 const coords = { 6382 x, 6383 y 6384 }; 6385 const crossAxis = getSideAxis(placement); 6386 const mainAxis = getOppositeAxis(crossAxis); 6387 let mainAxisCoord = coords[mainAxis]; 6388 let crossAxisCoord = coords[crossAxis]; 6389 const rawOffset = evaluate(offset4, state); 6390 const computedOffset = typeof rawOffset === "number" ? { 6391 mainAxis: rawOffset, 6392 crossAxis: 0 6393 } : { 6394 mainAxis: (_rawOffset$mainAxis = rawOffset.mainAxis) != null ? _rawOffset$mainAxis : 0, 6395 crossAxis: (_rawOffset$crossAxis = rawOffset.crossAxis) != null ? _rawOffset$crossAxis : 0 6396 }; 6397 if (checkMainAxis) { 6398 const len = mainAxis === "y" ? "height" : "width"; 6399 const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis; 6400 const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis; 6401 if (mainAxisCoord < limitMin) { 6402 mainAxisCoord = limitMin; 6403 } else if (mainAxisCoord > limitMax) { 6404 mainAxisCoord = limitMax; 6405 } 6406 } 6407 if (checkCrossAxis) { 6408 var _middlewareData$offse, _middlewareData$offse2; 6409 const len = mainAxis === "y" ? "width" : "height"; 6410 const isOriginSide = originSides.has(getSide(placement)); 6411 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); 6412 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); 6413 if (crossAxisCoord < limitMin) { 6414 crossAxisCoord = limitMin; 6415 } else if (crossAxisCoord > limitMax) { 6416 crossAxisCoord = limitMax; 6417 } 6418 } 6419 return { 6420 [mainAxis]: mainAxisCoord, 6421 [crossAxis]: crossAxisCoord 6422 }; 6423 } 6424 }; 6425 }; 6426 var size = function(options) { 6427 if (options === void 0) { 6428 options = {}; 6429 } 6430 return { 6431 name: "size", 6432 options, 6433 async fn(state) { 6434 const { 6435 placement, 6436 rects, 6437 platform: platform3, 6438 elements 6439 } = state; 6440 const { 6441 apply = () => { 6442 }, 6443 ...detectOverflowOptions 6444 } = evaluate(options, state); 6445 const overflow = await platform3.detectOverflow(state, detectOverflowOptions); 6446 const side = getSide(placement); 6447 const alignment = getAlignment(placement); 6448 const isYAxis = getSideAxis(placement) === "y"; 6449 const { 6450 width, 6451 height 6452 } = rects.floating; 6453 let heightSide; 6454 let widthSide; 6455 if (side === "top" || side === "bottom") { 6456 heightSide = side; 6457 widthSide = alignment === (await (platform3.isRTL == null ? void 0 : platform3.isRTL(elements.floating)) ? "start" : "end") ? "left" : "right"; 6458 } else { 6459 widthSide = side; 6460 heightSide = alignment === "end" ? "top" : "bottom"; 6461 } 6462 const maximumClippingHeight = height - overflow.top - overflow.bottom; 6463 const maximumClippingWidth = width - overflow.left - overflow.right; 6464 const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight); 6465 const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth); 6466 const shiftData = state.middlewareData.shift; 6467 const noShift = !shiftData; 6468 let availableHeight2 = overflowAvailableHeight; 6469 let availableWidth2 = overflowAvailableWidth; 6470 if (shiftData != null && shiftData.enabled.x) { 6471 availableWidth2 = maximumClippingWidth; 6472 } 6473 if (shiftData != null && shiftData.enabled.y) { 6474 availableHeight2 = maximumClippingHeight; 6475 } 6476 if (noShift && !alignment) { 6477 if (isYAxis) { 6478 availableWidth2 = width - 2 * max(overflow.left, overflow.right); 6479 } else { 6480 availableHeight2 = height - 2 * max(overflow.top, overflow.bottom); 6481 } 6482 } 6483 await apply({ 6484 ...state, 6485 availableWidth: availableWidth2, 6486 availableHeight: availableHeight2 6487 }); 6488 const nextDimensions = await platform3.getDimensions(elements.floating); 6489 if (width !== nextDimensions.width || height !== nextDimensions.height) { 6490 return { 6491 reset: { 6492 rects: true 6493 } 6494 }; 6495 } 6496 return {}; 6497 } 6498 }; 6499 }; 6500 6501 // node_modules/.store/@floating-ui/dom@1.8.0-vHXcr4FgWneV0cgwFw-d7A/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs 6502 function getCssDimensions(element) { 6503 const css = getComputedStyle2(element); 6504 let width = parseFloat(css.width) || 0; 6505 let height = parseFloat(css.height) || 0; 6506 const hasOffset = isHTMLElement(element); 6507 const offsetWidth = hasOffset ? element.offsetWidth : width; 6508 const offsetHeight = hasOffset ? element.offsetHeight : height; 6509 const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight; 6510 if (shouldFallback) { 6511 width = offsetWidth; 6512 height = offsetHeight; 6513 } 6514 return { 6515 width, 6516 height, 6517 $: shouldFallback 6518 }; 6519 } 6520 function unwrapElement(element) { 6521 return !isElement(element) ? element.contextElement : element; 6522 } 6523 function getScale(element) { 6524 const domElement = unwrapElement(element); 6525 if (!isHTMLElement(domElement)) { 6526 return createCoords(1); 6527 } 6528 const rect = domElement.getBoundingClientRect(); 6529 const { 6530 width, 6531 height, 6532 $ 6533 } = getCssDimensions(domElement); 6534 let x = ($ ? round(rect.width) : rect.width) / width; 6535 let y = ($ ? round(rect.height) : rect.height) / height; 6536 if (!x || !Number.isFinite(x)) { 6537 x = 1; 6538 } 6539 if (!y || !Number.isFinite(y)) { 6540 y = 1; 6541 } 6542 return { 6543 x, 6544 y 6545 }; 6546 } 6547 var noOffsets = /* @__PURE__ */ createCoords(0); 6548 function getVisualOffsets(element) { 6549 const win = getWindow(element); 6550 if (!isWebKit() || !win.visualViewport) { 6551 return noOffsets; 6552 } 6553 return { 6554 x: win.visualViewport.offsetLeft, 6555 y: win.visualViewport.offsetTop 6556 }; 6557 } 6558 function shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) { 6559 if (isFixed === void 0) { 6560 isFixed = false; 6561 } 6562 return !!floatingOffsetParent && isFixed && floatingOffsetParent === getWindow(element); 6563 } 6564 function getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) { 6565 if (includeScale === void 0) { 6566 includeScale = false; 6567 } 6568 if (isFixedStrategy === void 0) { 6569 isFixedStrategy = false; 6570 } 6571 const clientRect = element.getBoundingClientRect(); 6572 const domElement = unwrapElement(element); 6573 let scale = createCoords(1); 6574 if (includeScale) { 6575 if (offsetParent) { 6576 if (isElement(offsetParent)) { 6577 scale = getScale(offsetParent); 6578 } 6579 } else { 6580 scale = getScale(element); 6581 } 6582 } 6583 const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0); 6584 let x = (clientRect.left + visualOffsets.x) / scale.x; 6585 let y = (clientRect.top + visualOffsets.y) / scale.y; 6586 let width = clientRect.width / scale.x; 6587 let height = clientRect.height / scale.y; 6588 if (domElement && offsetParent) { 6589 const win = getWindow(domElement); 6590 const offsetWin = isElement(offsetParent) ? getWindow(offsetParent) : offsetParent; 6591 let currentWin = win; 6592 let currentIFrame = getFrameElement(currentWin); 6593 while (currentIFrame && offsetWin !== currentWin) { 6594 const iframeScale = getScale(currentIFrame); 6595 const iframeRect = currentIFrame.getBoundingClientRect(); 6596 const css = getComputedStyle2(currentIFrame); 6597 const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x; 6598 const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y; 6599 x *= iframeScale.x; 6600 y *= iframeScale.y; 6601 width *= iframeScale.x; 6602 height *= iframeScale.y; 6603 x += left; 6604 y += top; 6605 currentWin = getWindow(currentIFrame); 6606 currentIFrame = getFrameElement(currentWin); 6607 } 6608 } 6609 return rectToClientRect({ 6610 width, 6611 height, 6612 x, 6613 y 6614 }); 6615 } 6616 function getWindowScrollBarX(element, rect) { 6617 const leftScroll = getNodeScroll(element).scrollLeft; 6618 if (!rect) { 6619 return getBoundingClientRect(getDocumentElement(element)).left + leftScroll; 6620 } 6621 return rect.left + leftScroll; 6622 } 6623 function getHTMLOffset(documentElement, scroll) { 6624 const htmlRect = documentElement.getBoundingClientRect(); 6625 const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect); 6626 const y = htmlRect.top + scroll.scrollTop; 6627 return { 6628 x, 6629 y 6630 }; 6631 } 6632 function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) { 6633 let { 6634 elements, 6635 rect, 6636 offsetParent, 6637 strategy 6638 } = _ref; 6639 const isFixed = strategy === "fixed"; 6640 const documentElement = getDocumentElement(offsetParent); 6641 const topLayer = elements ? isTopLayer(elements.floating) : false; 6642 if (offsetParent === documentElement || topLayer && isFixed) { 6643 return rect; 6644 } 6645 let scroll = { 6646 scrollLeft: 0, 6647 scrollTop: 0 6648 }; 6649 let scale = createCoords(1); 6650 const offsets = createCoords(0); 6651 const isOffsetParentAnElement = isHTMLElement(offsetParent); 6652 if (isOffsetParentAnElement || !isFixed) { 6653 if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) { 6654 scroll = getNodeScroll(offsetParent); 6655 } 6656 if (isOffsetParentAnElement) { 6657 const offsetRect = getBoundingClientRect(offsetParent); 6658 scale = getScale(offsetParent); 6659 offsets.x = offsetRect.x + offsetParent.clientLeft; 6660 offsets.y = offsetRect.y + offsetParent.clientTop; 6661 } 6662 } 6663 const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0); 6664 return { 6665 width: rect.width * scale.x, 6666 height: rect.height * scale.y, 6667 x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x, 6668 y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y 6669 }; 6670 } 6671 function getClientRects(element) { 6672 return element.getClientRects ? Array.from(element.getClientRects()) : []; 6673 } 6674 function getDocumentRect(html) { 6675 const scroll = getNodeScroll(html); 6676 const body = html.ownerDocument.body; 6677 const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth); 6678 const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight); 6679 let x = -scroll.scrollLeft + getWindowScrollBarX(html); 6680 const y = -scroll.scrollTop; 6681 if (getComputedStyle2(body).direction === "rtl") { 6682 x += max(html.clientWidth, body.clientWidth) - width; 6683 } 6684 return { 6685 width, 6686 height, 6687 x, 6688 y 6689 }; 6690 } 6691 var SCROLLBAR_MAX = 25; 6692 function getViewportRect(element, strategy, rootBoundary) { 6693 if (rootBoundary === void 0) { 6694 rootBoundary = "viewport"; 6695 } 6696 const isLayoutViewport = rootBoundary === "layoutViewport"; 6697 const win = getWindow(element); 6698 const html = getDocumentElement(element); 6699 const visualViewport = win.visualViewport; 6700 let width = html.clientWidth; 6701 let height = html.clientHeight; 6702 let x = 0; 6703 let y = 0; 6704 if (visualViewport) { 6705 const layoutRelativeClientCoords = !isWebKit() || strategy === "fixed"; 6706 if (isLayoutViewport) { 6707 if (!layoutRelativeClientCoords) { 6708 x = -visualViewport.offsetLeft; 6709 y = -visualViewport.offsetTop; 6710 } 6711 } else { 6712 width = visualViewport.width; 6713 height = visualViewport.height; 6714 if (layoutRelativeClientCoords) { 6715 x = visualViewport.offsetLeft; 6716 y = visualViewport.offsetTop; 6717 } 6718 } 6719 } 6720 const windowScrollbarX = getWindowScrollBarX(html); 6721 if (windowScrollbarX <= 0) { 6722 const doc = html.ownerDocument; 6723 const body = doc.body; 6724 const bodyStyles = getComputedStyle(body); 6725 const bodyMarginInline = doc.compatMode === "CSS1Compat" ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0; 6726 const reservedWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline); 6727 const gutter = getComputedStyle(html).scrollbarGutter === "stable both-edges" ? reservedWidth / 2 : reservedWidth; 6728 if (gutter <= SCROLLBAR_MAX) { 6729 width -= gutter; 6730 } 6731 } 6732 return { 6733 width, 6734 height, 6735 x, 6736 y 6737 }; 6738 } 6739 function getInnerBoundingClientRect(element, strategy) { 6740 const clientRect = getBoundingClientRect(element, true, strategy === "fixed"); 6741 const top = clientRect.top + element.clientTop; 6742 const left = clientRect.left + element.clientLeft; 6743 const scale = getScale(element); 6744 const width = element.clientWidth * scale.x; 6745 const height = element.clientHeight * scale.y; 6746 const x = left * scale.x; 6747 const y = top * scale.y; 6748 return { 6749 width, 6750 height, 6751 x, 6752 y 6753 }; 6754 } 6755 function getClientRectFromClippingAncestor(element, clippingAncestor, strategy) { 6756 let rect; 6757 if (clippingAncestor === "viewport" || clippingAncestor === "layoutViewport") { 6758 rect = getViewportRect(element, strategy, clippingAncestor); 6759 } else if (clippingAncestor === "document") { 6760 rect = getDocumentRect(getDocumentElement(element)); 6761 } else if (isElement(clippingAncestor)) { 6762 rect = getInnerBoundingClientRect(clippingAncestor, strategy); 6763 } else { 6764 const visualOffsets = getVisualOffsets(element); 6765 rect = { 6766 x: clippingAncestor.x - visualOffsets.x, 6767 y: clippingAncestor.y - visualOffsets.y, 6768 width: clippingAncestor.width, 6769 height: clippingAncestor.height 6770 }; 6771 } 6772 return rectToClientRect(rect); 6773 } 6774 function getClippingElementAncestors(element, cache) { 6775 const cachedResult = cache.get(element); 6776 if (cachedResult) { 6777 return cachedResult; 6778 } 6779 let result = getOverflowAncestors(element, [], false).filter((el2) => isElement(el2) && getNodeName(el2) !== "body"); 6780 let lastKeptComputedStyle = null; 6781 const elementIsFixed = getComputedStyle2(element).position === "fixed"; 6782 let currentNode = elementIsFixed ? getParentNode(element) : element; 6783 while (isElement(currentNode) && !isLastTraversableNode(currentNode)) { 6784 const computedStyle = getComputedStyle2(currentNode); 6785 const currentNodeIsContaining = isContainingBlock(currentNode); 6786 const lastPosition = lastKeptComputedStyle ? lastKeptComputedStyle.position : elementIsFixed ? "fixed" : ""; 6787 const shouldDropCurrentNode = !currentNodeIsContaining && (lastPosition === "fixed" || lastPosition === "absolute" && computedStyle.position === "static"); 6788 if (shouldDropCurrentNode) { 6789 result = result.filter((ancestor) => ancestor !== currentNode); 6790 } else { 6791 lastKeptComputedStyle = computedStyle; 6792 } 6793 currentNode = getParentNode(currentNode); 6794 } 6795 cache.set(element, result); 6796 return result; 6797 } 6798 function getClippingRect(_ref) { 6799 let { 6800 element, 6801 boundary, 6802 rootBoundary, 6803 strategy 6804 } = _ref; 6805 const elementClippingAncestors = boundary === "clippingAncestors" ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary); 6806 const clippingAncestors = [...elementClippingAncestors, rootBoundary]; 6807 const firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy); 6808 let top = firstRect.top; 6809 let right = firstRect.right; 6810 let bottom = firstRect.bottom; 6811 let left = firstRect.left; 6812 for (let i = 1; i < clippingAncestors.length; i++) { 6813 const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i], strategy); 6814 top = max(rect.top, top); 6815 right = min(rect.right, right); 6816 bottom = min(rect.bottom, bottom); 6817 left = max(rect.left, left); 6818 } 6819 return { 6820 width: right - left, 6821 height: bottom - top, 6822 x: left, 6823 y: top 6824 }; 6825 } 6826 function getDimensions(element) { 6827 const { 6828 width, 6829 height 6830 } = getCssDimensions(element); 6831 return { 6832 width, 6833 height 6834 }; 6835 } 6836 function getRectRelativeToOffsetParent(element, offsetParent, strategy) { 6837 const isOffsetParentAnElement = isHTMLElement(offsetParent); 6838 const documentElement = getDocumentElement(offsetParent); 6839 const isFixed = strategy === "fixed"; 6840 const rect = getBoundingClientRect(element, true, isFixed, offsetParent); 6841 let scroll = { 6842 scrollLeft: 0, 6843 scrollTop: 0 6844 }; 6845 const offsets = createCoords(0); 6846 if (isOffsetParentAnElement || !isFixed) { 6847 if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) { 6848 scroll = getNodeScroll(offsetParent); 6849 } 6850 if (isOffsetParentAnElement) { 6851 const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent); 6852 offsets.x = offsetRect.x + offsetParent.clientLeft; 6853 offsets.y = offsetRect.y + offsetParent.clientTop; 6854 } 6855 } 6856 if (!isOffsetParentAnElement && documentElement) { 6857 offsets.x = getWindowScrollBarX(documentElement); 6858 } 6859 const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0); 6860 const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x; 6861 const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y; 6862 return { 6863 x, 6864 y, 6865 width: rect.width, 6866 height: rect.height 6867 }; 6868 } 6869 function isStaticPositioned(element) { 6870 return getComputedStyle2(element).position === "static"; 6871 } 6872 function getTrueOffsetParent(element, polyfill) { 6873 if (!isHTMLElement(element) || getComputedStyle2(element).position === "fixed") { 6874 return null; 6875 } 6876 if (polyfill) { 6877 return polyfill(element); 6878 } 6879 let rawOffsetParent = element.offsetParent; 6880 if (getDocumentElement(element) === rawOffsetParent) { 6881 rawOffsetParent = rawOffsetParent.ownerDocument.body; 6882 } 6883 return rawOffsetParent; 6884 } 6885 function getOffsetParent(element, polyfill) { 6886 const win = getWindow(element); 6887 if (isTopLayer(element)) { 6888 return win; 6889 } 6890 if (!isHTMLElement(element)) { 6891 let svgOffsetParent = getParentNode(element); 6892 while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) { 6893 if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) { 6894 return svgOffsetParent; 6895 } 6896 svgOffsetParent = getParentNode(svgOffsetParent); 6897 } 6898 return win; 6899 } 6900 let offsetParent = getTrueOffsetParent(element, polyfill); 6901 while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) { 6902 offsetParent = getTrueOffsetParent(offsetParent, polyfill); 6903 } 6904 if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) { 6905 return win; 6906 } 6907 return offsetParent || getContainingBlock(element) || win; 6908 } 6909 var getElementRects = async function(data) { 6910 const getOffsetParentFn = this.getOffsetParent || getOffsetParent; 6911 const getDimensionsFn = this.getDimensions; 6912 const floatingDimensions = await getDimensionsFn(data.floating); 6913 return { 6914 reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy), 6915 floating: { 6916 x: 0, 6917 y: 0, 6918 width: floatingDimensions.width, 6919 height: floatingDimensions.height 6920 } 6921 }; 6922 }; 6923 function isRTL(element) { 6924 return getComputedStyle2(element).direction === "rtl"; 6925 } 6926 var platform2 = { 6927 convertOffsetParentRelativeRectToViewportRelativeRect, 6928 getDocumentElement, 6929 getClippingRect, 6930 getOffsetParent, 6931 getElementRects, 6932 getClientRects, 6933 getDimensions, 6934 getScale, 6935 isElement, 6936 isRTL 6937 }; 6938 function rectsAreEqual(a, b) { 6939 return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height; 6940 } 6941 function observeMove(element, onMove, ancestorResize) { 6942 let io = null; 6943 let timeoutId; 6944 const root = getDocumentElement(element); 6945 function cleanup() { 6946 var _io; 6947 clearTimeout(timeoutId); 6948 (_io = io) == null || _io.disconnect(); 6949 io = null; 6950 } 6951 function refresh(skip, threshold) { 6952 if (skip === void 0) { 6953 skip = false; 6954 } 6955 if (threshold === void 0) { 6956 threshold = 1; 6957 } 6958 cleanup(); 6959 const elementRectForRootMargin = element.getBoundingClientRect(); 6960 const { 6961 left, 6962 top, 6963 width, 6964 height 6965 } = elementRectForRootMargin; 6966 if (!skip) { 6967 onMove(); 6968 } 6969 if (!width || !height) { 6970 return; 6971 } 6972 const insetTop = floor(top); 6973 const insetRight = floor(root.clientWidth - (left + width)); 6974 const insetBottom = floor(root.clientHeight - (top + height)); 6975 const insetLeft = floor(left); 6976 const rootMargin = -insetTop + "px " + -insetRight + "px " + -insetBottom + "px " + -insetLeft + "px"; 6977 const options = { 6978 rootMargin, 6979 threshold: max(0, min(1, threshold)) || 1 6980 }; 6981 let isFirstUpdate = true; 6982 function handleObserve(entries) { 6983 const ratio = entries[0].intersectionRatio; 6984 if (!rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) { 6985 return refresh(); 6986 } 6987 if (ratio !== threshold) { 6988 if (!isFirstUpdate) { 6989 return refresh(); 6990 } 6991 if (!ratio) { 6992 timeoutId = setTimeout(() => { 6993 refresh(false, 1e-7); 6994 }, 1e3); 6995 } else { 6996 refresh(false, ratio); 6997 } 6998 } 6999 isFirstUpdate = false; 7000 } 7001 try { 7002 io = new IntersectionObserver(handleObserve, { 7003 ...options, 7004 // Handle <iframe>s 7005 root: root.ownerDocument 7006 }); 7007 } catch (_e) { 7008 io = new IntersectionObserver(handleObserve, options); 7009 } 7010 io.observe(element); 7011 } 7012 const win = getWindow(element); 7013 const handleResize = () => refresh(ancestorResize); 7014 win.addEventListener("resize", handleResize); 7015 refresh(true); 7016 return () => { 7017 win.removeEventListener("resize", handleResize); 7018 cleanup(); 7019 }; 7020 } 7021 function autoUpdate(reference, floating, update2, options) { 7022 if (options === void 0) { 7023 options = {}; 7024 } 7025 const { 7026 ancestorScroll = true, 7027 ancestorResize = true, 7028 elementResize = typeof ResizeObserver === "function", 7029 layoutShift = typeof IntersectionObserver === "function", 7030 animationFrame = false 7031 } = options; 7032 const referenceEl = unwrapElement(reference); 7033 const ancestors = ancestorScroll || ancestorResize ? [...referenceEl ? getOverflowAncestors(referenceEl) : [], ...floating ? getOverflowAncestors(floating) : []] : []; 7034 ancestors.forEach((ancestor) => { 7035 ancestorScroll && ancestor.addEventListener("scroll", update2); 7036 ancestorResize && ancestor.addEventListener("resize", update2); 7037 }); 7038 const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update2, ancestorResize) : null; 7039 let reobserveFrame = -1; 7040 let resizeObserver = null; 7041 if (elementResize) { 7042 resizeObserver = new ResizeObserver((_ref) => { 7043 let [firstEntry] = _ref; 7044 if (firstEntry && firstEntry.target === referenceEl && resizeObserver && floating) { 7045 resizeObserver.unobserve(floating); 7046 cancelAnimationFrame(reobserveFrame); 7047 reobserveFrame = requestAnimationFrame(() => { 7048 var _resizeObserver; 7049 (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating); 7050 }); 7051 } 7052 update2(); 7053 }); 7054 if (referenceEl && !animationFrame) { 7055 resizeObserver.observe(referenceEl); 7056 } 7057 if (floating) { 7058 resizeObserver.observe(floating); 7059 } 7060 } 7061 let frameId; 7062 let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null; 7063 if (animationFrame) { 7064 frameLoop(); 7065 } 7066 function frameLoop() { 7067 const nextRefRect = getBoundingClientRect(reference); 7068 if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) { 7069 update2(); 7070 } 7071 prevRefRect = nextRefRect; 7072 frameId = requestAnimationFrame(frameLoop); 7073 } 7074 update2(); 7075 return () => { 7076 var _resizeObserver2; 7077 ancestors.forEach((ancestor) => { 7078 ancestorScroll && ancestor.removeEventListener("scroll", update2); 7079 ancestorResize && ancestor.removeEventListener("resize", update2); 7080 }); 7081 cleanupIo == null || cleanupIo(); 7082 (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect(); 7083 resizeObserver = null; 7084 if (animationFrame) { 7085 cancelAnimationFrame(frameId); 7086 } 7087 }; 7088 } 7089 var offset2 = offset; 7090 var shift2 = shift; 7091 var flip2 = flip; 7092 var size2 = size; 7093 var limitShift2 = limitShift; 7094 var computePosition2 = (reference, floating, options) => { 7095 const cache = /* @__PURE__ */ new Map(); 7096 const mergedOptions = options != null ? options : {}; 7097 const platformWithCache = { 7098 ...platform2, 7099 ...mergedOptions.platform, 7100 _c: cache 7101 }; 7102 return computePosition(reference, floating, { 7103 ...mergedOptions, 7104 platform: platformWithCache 7105 }); 7106 }; 7107 7108 // node_modules/.store/@floating-ui/react-dom@2.1.9-AxWcAwqlMfOrAFOinFKSVg/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs 7109 var React32 = __toESM(require_react(), 1); 7110 var import_react2 = __toESM(require_react(), 1); 7111 var ReactDOM4 = __toESM(require_react_dom(), 1); 7112 var isClient = typeof document !== "undefined"; 7113 var noop2 = function noop3() { 7114 }; 7115 var index = isClient ? import_react2.useLayoutEffect : noop2; 7116 function deepEqual(a, b) { 7117 if (a === b) { 7118 return true; 7119 } 7120 if (typeof a !== typeof b) { 7121 return false; 7122 } 7123 if (typeof a === "function" && a.toString() === b.toString()) { 7124 return true; 7125 } 7126 let length; 7127 let i; 7128 let keys; 7129 if (a && b && typeof a === "object") { 7130 if (Array.isArray(a)) { 7131 length = a.length; 7132 if (length !== b.length) return false; 7133 for (i = length; i-- !== 0; ) { 7134 if (!deepEqual(a[i], b[i])) { 7135 return false; 7136 } 7137 } 7138 return true; 7139 } 7140 keys = Object.keys(a); 7141 length = keys.length; 7142 if (length !== Object.keys(b).length) { 7143 return false; 7144 } 7145 for (i = length; i-- !== 0; ) { 7146 if (!{}.hasOwnProperty.call(b, keys[i])) { 7147 return false; 7148 } 7149 } 7150 for (i = length; i-- !== 0; ) { 7151 const key = keys[i]; 7152 if (key === "_owner" && a.$$typeof) { 7153 continue; 7154 } 7155 if (!deepEqual(a[key], b[key])) { 7156 return false; 7157 } 7158 } 7159 return true; 7160 } 7161 return a !== a && b !== b; 7162 } 7163 function getDPR(element) { 7164 if (typeof window === "undefined") { 7165 return 1; 7166 } 7167 const win = element.ownerDocument.defaultView || window; 7168 return win.devicePixelRatio || 1; 7169 } 7170 function roundByDPR(element, value) { 7171 const dpr = getDPR(element); 7172 return Math.round(value * dpr) / dpr; 7173 } 7174 function useLatestRef(value) { 7175 const ref = React32.useRef(value); 7176 index(() => { 7177 ref.current = value; 7178 }); 7179 return ref; 7180 } 7181 function useFloating(options) { 7182 if (options === void 0) { 7183 options = {}; 7184 } 7185 const { 7186 placement = "bottom", 7187 strategy = "absolute", 7188 middleware = [], 7189 platform: platform3, 7190 elements: { 7191 reference: externalReference, 7192 floating: externalFloating 7193 } = {}, 7194 transform = true, 7195 whileElementsMounted, 7196 open: open2 7197 } = options; 7198 const [data, setData] = React32.useState({ 7199 x: 0, 7200 y: 0, 7201 strategy, 7202 placement, 7203 middlewareData: {}, 7204 isPositioned: false 7205 }); 7206 const [latestMiddleware, setLatestMiddleware] = React32.useState(middleware); 7207 if (!deepEqual(latestMiddleware, middleware)) { 7208 setLatestMiddleware(middleware); 7209 } 7210 const [_reference, _setReference] = React32.useState(null); 7211 const [_floating, _setFloating] = React32.useState(null); 7212 const setReference = React32.useCallback((node) => { 7213 if (node !== referenceRef.current) { 7214 referenceRef.current = node; 7215 _setReference(node); 7216 } 7217 }, []); 7218 const setFloating = React32.useCallback((node) => { 7219 if (node !== floatingRef.current) { 7220 floatingRef.current = node; 7221 _setFloating(node); 7222 } 7223 }, []); 7224 const referenceEl = externalReference || _reference; 7225 const floatingEl = externalFloating || _floating; 7226 const referenceRef = React32.useRef(null); 7227 const floatingRef = React32.useRef(null); 7228 const dataRef = React32.useRef(data); 7229 const hasWhileElementsMounted = whileElementsMounted != null; 7230 const whileElementsMountedRef = useLatestRef(whileElementsMounted); 7231 const platformRef = useLatestRef(platform3); 7232 const openRef = useLatestRef(open2); 7233 const update2 = React32.useCallback(() => { 7234 if (!referenceRef.current || !floatingRef.current) { 7235 return; 7236 } 7237 const config = { 7238 placement, 7239 strategy, 7240 middleware: latestMiddleware 7241 }; 7242 if (platformRef.current) { 7243 config.platform = platformRef.current; 7244 } 7245 computePosition2(referenceRef.current, floatingRef.current, config).then((data2) => { 7246 const fullData = { 7247 ...data2, 7248 // The floating element's position may be recomputed while it's closed 7249 // but still mounted (such as when transitioning out). To ensure 7250 // `isPositioned` will be `false` initially on the next open, avoid 7251 // setting it to `true` when `open === false` (must be specified). 7252 isPositioned: openRef.current !== false 7253 }; 7254 if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) { 7255 dataRef.current = fullData; 7256 ReactDOM4.flushSync(() => { 7257 setData(fullData); 7258 }); 7259 } 7260 }); 7261 }, [latestMiddleware, placement, strategy, platformRef, openRef]); 7262 index(() => { 7263 if (open2 === false && dataRef.current.isPositioned) { 7264 dataRef.current.isPositioned = false; 7265 setData((data2) => ({ 7266 ...data2, 7267 isPositioned: false 7268 })); 7269 } 7270 }, [open2]); 7271 const isMountedRef = React32.useRef(false); 7272 index(() => { 7273 isMountedRef.current = true; 7274 return () => { 7275 isMountedRef.current = false; 7276 }; 7277 }, []); 7278 index(() => { 7279 if (referenceEl) referenceRef.current = referenceEl; 7280 if (floatingEl) floatingRef.current = floatingEl; 7281 if (referenceEl && floatingEl) { 7282 if (whileElementsMountedRef.current) { 7283 return whileElementsMountedRef.current(referenceEl, floatingEl, update2); 7284 } 7285 update2(); 7286 } 7287 }, [referenceEl, floatingEl, update2, whileElementsMountedRef, hasWhileElementsMounted]); 7288 const refs = React32.useMemo(() => ({ 7289 reference: referenceRef, 7290 floating: floatingRef, 7291 setReference, 7292 setFloating 7293 }), [setReference, setFloating]); 7294 const elements = React32.useMemo(() => ({ 7295 reference: referenceEl, 7296 floating: floatingEl 7297 }), [referenceEl, floatingEl]); 7298 const floatingStyles = React32.useMemo(() => { 7299 const initialStyles = { 7300 position: strategy, 7301 left: 0, 7302 top: 0 7303 }; 7304 if (!elements.floating) { 7305 return initialStyles; 7306 } 7307 const x = roundByDPR(elements.floating, data.x); 7308 const y = roundByDPR(elements.floating, data.y); 7309 if (transform) { 7310 return { 7311 ...initialStyles, 7312 transform: "translate(" + x + "px, " + y + "px)", 7313 ...getDPR(elements.floating) >= 1.5 && { 7314 willChange: "transform" 7315 } 7316 }; 7317 } 7318 return { 7319 position: strategy, 7320 left: x, 7321 top: y 7322 }; 7323 }, [strategy, transform, elements.floating, data.x, data.y]); 7324 return React32.useMemo(() => ({ 7325 ...data, 7326 update: update2, 7327 refs, 7328 elements, 7329 floatingStyles 7330 }), [data, update2, refs, elements, floatingStyles]); 7331 } 7332 var offset3 = (options, deps) => { 7333 const result = offset2(options); 7334 return { 7335 name: result.name, 7336 fn: result.fn, 7337 options: [options, deps] 7338 }; 7339 }; 7340 var shift3 = (options, deps) => { 7341 const result = shift2(options); 7342 return { 7343 name: result.name, 7344 fn: result.fn, 7345 options: [options, deps] 7346 }; 7347 }; 7348 var limitShift3 = (options, deps) => { 7349 const result = limitShift2(options); 7350 return { 7351 fn: result.fn, 7352 options: [options, deps] 7353 }; 7354 }; 7355 var flip3 = (options, deps) => { 7356 const result = flip2(options); 7357 return { 7358 name: result.name, 7359 fn: result.fn, 7360 options: [options, deps] 7361 }; 7362 }; 7363 var size3 = (options, deps) => { 7364 const result = size2(options); 7365 return { 7366 name: result.name, 7367 fn: result.fn, 7368 options: [options, deps] 7369 }; 7370 }; 7371 7372 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/composite.mjs 7373 var ARROW_UP2 = "ArrowUp"; 7374 var ARROW_DOWN2 = "ArrowDown"; 7375 var ARROW_LEFT2 = "ArrowLeft"; 7376 var ARROW_RIGHT2 = "ArrowRight"; 7377 var HOME = "Home"; 7378 var END = "End"; 7379 var COMPOSITE_KEYS = /* @__PURE__ */ new Set([ARROW_UP2, ARROW_DOWN2, ARROW_LEFT2, ARROW_RIGHT2, HOME, END]); 7380 7381 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/inertValue.mjs 7382 function inertValue(value) { 7383 if (isReactVersionAtLeast(19)) { 7384 return value; 7385 } 7386 return value ? "true" : void 0; 7387 } 7388 7389 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/InternalBackdrop.mjs 7390 var React33 = __toESM(require_react(), 1); 7391 var import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1); 7392 var InternalBackdrop = /* @__PURE__ */ React33.forwardRef(function InternalBackdrop2(props, ref) { 7393 const { 7394 cutout, 7395 ...otherProps 7396 } = props; 7397 let clipPath; 7398 if (cutout) { 7399 const rect = cutout.getBoundingClientRect(); 7400 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)`; 7401 } 7402 return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { 7403 ref, 7404 role: "presentation", 7405 "data-base-ui-inert": "", 7406 ...otherProps, 7407 style: { 7408 position: "fixed", 7409 inset: 0, 7410 userSelect: "none", 7411 WebkitUserSelect: "none", 7412 clipPath 7413 } 7414 }); 7415 }); 7416 if (true) InternalBackdrop.displayName = "InternalBackdrop"; 7417 7418 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/useOpenInteractionType.mjs 7419 var React36 = __toESM(require_react(), 1); 7420 7421 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useEnhancedClickHandler.mjs 7422 var React34 = __toESM(require_react(), 1); 7423 function useEnhancedClickHandler(handler) { 7424 const lastClickInteractionTypeRef = React34.useRef(""); 7425 const handlePointerDown = React34.useCallback((event) => { 7426 if (event.defaultPrevented) { 7427 return; 7428 } 7429 lastClickInteractionTypeRef.current = event.pointerType; 7430 handler(event, event.pointerType); 7431 }, [handler]); 7432 const handleClick = React34.useCallback((event) => { 7433 if (event.detail === 0) { 7434 handler(event, "keyboard"); 7435 return; 7436 } 7437 if ("pointerType" in event) { 7438 handler(event, event.pointerType); 7439 } else { 7440 handler(event, lastClickInteractionTypeRef.current); 7441 } 7442 lastClickInteractionTypeRef.current = ""; 7443 }, [handler]); 7444 return { 7445 onClick: handleClick, 7446 onPointerDown: handlePointerDown 7447 }; 7448 } 7449 7450 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useValueChanged.mjs 7451 var React35 = __toESM(require_react(), 1); 7452 function useValueChanged(value, onChange) { 7453 const valueRef = React35.useRef(value); 7454 const onChangeCallback = useStableCallback(onChange); 7455 useIsoLayoutEffect(() => { 7456 if (valueRef.current !== value) { 7457 onChangeCallback(valueRef.current); 7458 } 7459 valueRef.current = value; 7460 }, [value, onChangeCallback]); 7461 } 7462 7463 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/useOpenInteractionType.mjs 7464 function useOpenMethodTriggerProps(open2, setOpenMethod) { 7465 const handleTriggerClick = useStableCallback((_, interactionType) => { 7466 const isOpen = typeof open2 === "function" ? open2() : open2; 7467 if (!isOpen) { 7468 setOpenMethod(interactionType || // On iOS Safari, the hitslop around touch targets means tapping outside an element's 7469 // bounds does not fire `pointerdown` but does fire `mousedown`. The `interactionType` 7470 // will be "" in that case. 7471 (parts_exports.os.ios ? "touch" : "")); 7472 } 7473 }); 7474 const { 7475 onClick, 7476 onPointerDown 7477 } = useEnhancedClickHandler(handleTriggerClick); 7478 return React36.useMemo(() => ({ 7479 onClick, 7480 onPointerDown 7481 }), [onClick, onPointerDown]); 7482 } 7483 function useOpenInteractionType(open2) { 7484 const [openMethod, setOpenMethod] = React36.useState(null); 7485 const triggerProps = useOpenMethodTriggerProps(open2, setOpenMethod); 7486 useValueChanged(open2, (previousOpen) => { 7487 if (previousOpen && !open2) { 7488 setOpenMethod(null); 7489 } 7490 }); 7491 return React36.useMemo(() => ({ 7492 openMethod, 7493 triggerProps 7494 }), [openMethod, triggerProps]); 7495 } 7496 7497 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useOnFirstRender.mjs 7498 var React37 = __toESM(require_react(), 1); 7499 function useOnFirstRender(fn) { 7500 const ref = React37.useRef(true); 7501 if (ref.current) { 7502 ref.current = false; 7503 fn(); 7504 } 7505 } 7506 7507 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/areArraysEqual.mjs 7508 function areArraysEqual(array1, array2, itemComparer = Object.is) { 7509 const { 7510 length 7511 } = array1; 7512 if (length !== array2.length) { 7513 return false; 7514 } 7515 for (let i = 0; i < length; i += 1) { 7516 if (!itemComparer(array1[i], array2[i])) { 7517 return false; 7518 } 7519 } 7520 return true; 7521 } 7522 7523 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/itemEquality.mjs 7524 var defaultItemEquality = (itemValue, selectedValue) => Object.is(itemValue, selectedValue); 7525 function compareItemEquality(itemValue, selectedValue, comparer) { 7526 if (itemValue == null || selectedValue == null) { 7527 return Object.is(itemValue, selectedValue); 7528 } 7529 return comparer(itemValue, selectedValue); 7530 } 7531 function isSelectedValueDirty(currentValue, initialValue, comparer) { 7532 if (Array.isArray(currentValue) && Array.isArray(initialValue)) { 7533 return !areArraysEqual(currentValue, initialValue, (itemValue, initialItemValue) => compareItemEquality(itemValue, initialItemValue, comparer)); 7534 } 7535 return currentValue !== initialValue; 7536 } 7537 function selectedValueIncludes(selectedValues, itemValue, comparer) { 7538 if (!selectedValues) { 7539 return false; 7540 } 7541 return selectedValues.some((selectedValue) => { 7542 if (selectedValue === void 0) { 7543 return false; 7544 } 7545 return compareItemEquality(itemValue, selectedValue, comparer); 7546 }); 7547 } 7548 function findItemIndex(itemValues, selectedValue, comparer) { 7549 if (!itemValues) { 7550 return -1; 7551 } 7552 return itemValues.findIndex((itemValue) => { 7553 if (itemValue === void 0) { 7554 return false; 7555 } 7556 return compareItemEquality(itemValue, selectedValue, comparer); 7557 }); 7558 } 7559 function createSelectionMatcher(selectedValues, comparer) { 7560 if (comparer !== defaultItemEquality) { 7561 return (itemValue) => selectedValueIncludes(selectedValues, itemValue, comparer); 7562 } 7563 const index2 = new Set(selectedValues); 7564 index2.delete(void 0); 7565 return (itemValue) => index2.has(itemValue) && (itemValue !== 0 || selectedValues.some((v) => Object.is(itemValue, v))); 7566 } 7567 function findSelectionIndex(itemValues, selectedValue, comparer, multiple) { 7568 const index2 = multiple && Array.isArray(selectedValue) ? ( 7569 // Anchor to the first selected item in rendered order so the index does not depend 7570 // on the order in which the values were added to the array. 7571 itemValues.findIndex(createSelectionMatcher(selectedValue, comparer)) 7572 ) : findItemIndex(itemValues, selectedValue, comparer); 7573 return index2 === -1 ? null : index2; 7574 } 7575 function resolveSelectedIndex(index2, itemValue, registry, selectedValues, comparer, currentIndex) { 7576 if (selectedValueIncludes(selectedValues, itemValue, comparer)) { 7577 return currentIndex != null && index2 > currentIndex && selectedValueIncludes(selectedValues, registry[currentIndex], comparer) ? currentIndex : index2; 7578 } 7579 return index2 === currentIndex ? findSelectionIndex(registry, selectedValues, comparer, true) : currentIndex; 7580 } 7581 function removeItem(selectedValues, itemValue, comparer) { 7582 return selectedValues.filter((selectedValue) => !compareItemEquality(itemValue, selectedValue, comparer)); 7583 } 7584 7585 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/resolveValueLabel.mjs 7586 var React38 = __toESM(require_react(), 1); 7587 7588 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/serializeValue.mjs 7589 function serializeValue(value) { 7590 if (value == null) { 7591 return ""; 7592 } 7593 if (typeof value === "string") { 7594 return value; 7595 } 7596 try { 7597 return JSON.stringify(value); 7598 } catch { 7599 return String(value); 7600 } 7601 } 7602 7603 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/resolveValueLabel.mjs 7604 var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1); 7605 function isGroup(item) { 7606 return typeof item === "object" && item != null && Array.isArray(item.items); 7607 } 7608 function isGroupedItems(items) { 7609 return isGroup(items?.[0]); 7610 } 7611 function flattenLeafItems(items) { 7612 return isGroupedItems(items) ? items.flatMap((group) => group.items) : items; 7613 } 7614 function hasNullItemLabel(items) { 7615 if (!Array.isArray(items)) { 7616 return items != null && "null" in items; 7617 } 7618 const arrayItems = items; 7619 if (isGroupedItems(arrayItems)) { 7620 for (const group of arrayItems) { 7621 for (const item of group.items) { 7622 if (item && item.value == null && item.label != null) { 7623 return true; 7624 } 7625 } 7626 } 7627 return false; 7628 } 7629 for (const item of arrayItems) { 7630 if (item && item.value == null && item.label != null) { 7631 return true; 7632 } 7633 } 7634 return false; 7635 } 7636 function stringifyAsLabel(item, itemToStringLabel) { 7637 if (itemToStringLabel && item != null) { 7638 return itemToStringLabel(item) ?? ""; 7639 } 7640 if (item && typeof item === "object") { 7641 if ("label" in item && item.label != null) { 7642 return String(item.label); 7643 } 7644 if ("value" in item) { 7645 return String(item.value); 7646 } 7647 } 7648 return serializeValue(item); 7649 } 7650 function stringifyAsValue(item, itemToStringValue) { 7651 if (itemToStringValue && item != null) { 7652 return itemToStringValue(item) ?? ""; 7653 } 7654 if (item && typeof item === "object" && "value" in item && "label" in item) { 7655 return serializeValue(item.value); 7656 } 7657 return serializeValue(item); 7658 } 7659 function resolveSelectedLabel(value, items, itemToStringLabel) { 7660 function fallback() { 7661 return stringifyAsLabel(value, itemToStringLabel); 7662 } 7663 if (itemToStringLabel && value != null) { 7664 return itemToStringLabel(value); 7665 } 7666 if (value && typeof value === "object" && "label" in value && value.label != null) { 7667 return value.label; 7668 } 7669 if (items && !Array.isArray(items)) { 7670 const label = Object.hasOwn(items, value) ? items[value] : void 0; 7671 return label ?? fallback(); 7672 } 7673 if (Array.isArray(items)) { 7674 const arrayItems = items; 7675 const flatItems = flattenLeafItems(arrayItems); 7676 if (value == null || typeof value !== "object") { 7677 const match = flatItems.find((item) => item.value === value); 7678 if (match && match.label != null) { 7679 return match.label; 7680 } 7681 return fallback(); 7682 } 7683 if ("value" in value) { 7684 const match = flatItems.find((item) => item && item.value === value.value); 7685 if (match && match.label != null) { 7686 return match.label; 7687 } 7688 } 7689 } 7690 return fallback(); 7691 } 7692 function resolveMultipleLabels(values, items, itemToStringLabel) { 7693 return values.reduce((acc, value, index2) => { 7694 if (index2 > 0) { 7695 acc.push(", "); 7696 } 7697 acc.push(/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(React38.Fragment, { 7698 children: resolveSelectedLabel(value, items, itemToStringLabel) 7699 }, index2)); 7700 return acc; 7701 }, []); 7702 } 7703 7704 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/field-root-context/FieldRootContext.mjs 7705 var React39 = __toESM(require_react(), 1); 7706 7707 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/control/FieldControlDataAttributes.mjs 7708 var valid = "data-valid"; 7709 var invalid = "data-invalid"; 7710 7711 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/field-constants/constants.mjs 7712 var DEFAULT_VALIDITY_STATE = { 7713 badInput: false, 7714 customError: false, 7715 patternMismatch: false, 7716 rangeOverflow: false, 7717 rangeUnderflow: false, 7718 stepMismatch: false, 7719 tooLong: false, 7720 tooShort: false, 7721 typeMismatch: false, 7722 valid: null, 7723 valueMissing: false 7724 }; 7725 var DEFAULT_FIELD_STATE_ATTRIBUTES = { 7726 valid: null, 7727 touched: false, 7728 dirty: false, 7729 filled: false, 7730 focused: false 7731 }; 7732 var DEFAULT_FIELD_ROOT_STATE = { 7733 disabled: false, 7734 ...DEFAULT_FIELD_STATE_ATTRIBUTES 7735 }; 7736 var fieldValidityMapping = { 7737 valid(value) { 7738 if (value === null) { 7739 return null; 7740 } 7741 if (value) { 7742 return { 7743 [valid]: "" 7744 }; 7745 } 7746 return { 7747 [invalid]: "" 7748 }; 7749 } 7750 }; 7751 7752 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/field-root-context/FieldRootContext.mjs 7753 var DEFAULT_FIELD_ROOT_CONTEXT = { 7754 invalid: void 0, 7755 name: void 0, 7756 validityData: { 7757 state: DEFAULT_VALIDITY_STATE, 7758 errors: [], 7759 error: "", 7760 value: "", 7761 initialValue: null 7762 }, 7763 setValidityData: NOOP, 7764 disabled: void 0, 7765 setTouched: NOOP, 7766 setDirty: NOOP, 7767 setFilled: NOOP, 7768 setFocused: NOOP, 7769 focusOwnerRef: { 7770 current: void 0 7771 }, 7772 validationMode: "onSubmit", 7773 shouldValidateOnChange: () => false, 7774 state: DEFAULT_FIELD_ROOT_STATE, 7775 registerFieldControl: NOOP, 7776 validation: { 7777 getValidationProps: (_disabled, props = EMPTY_OBJECT) => props, 7778 inputRef: { 7779 current: null 7780 }, 7781 registeredInputs: /* @__PURE__ */ new Map(), 7782 registerInput: NOOP, 7783 getInputControl: () => null, 7784 commit: async () => { 7785 }, 7786 change: NOOP 7787 } 7788 }; 7789 var FieldRootContext = /* @__PURE__ */ React39.createContext(DEFAULT_FIELD_ROOT_CONTEXT); 7790 if (true) FieldRootContext.displayName = "FieldRootContext"; 7791 function useFieldRootContext(optional = true) { 7792 const context = React39.useContext(FieldRootContext); 7793 if (context.setValidityData === NOOP && !optional) { 7794 throw new Error(true ? "Base UI: FieldRootContext is missing. Field parts must be placed within <Field.Root>." : formatErrorMessage_default(28)); 7795 } 7796 return context; 7797 } 7798 7799 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/field-register-control/useRegisterFieldControl.mjs 7800 function useRegisterFieldControl(controlRef, id, value, getFormValueOverride, enabled = true, name3) { 7801 const { 7802 registerFieldControl 7803 } = useFieldRootContext(); 7804 const sourceRef = useRefWithInit(() => /* @__PURE__ */ Symbol()); 7805 useIsoLayoutEffect(() => { 7806 const source = sourceRef.current; 7807 if (!enabled) { 7808 registerFieldControl(source, void 0); 7809 return; 7810 } 7811 const registration = { 7812 controlRef, 7813 getValue: getFormValueOverride, 7814 id, 7815 name: name3, 7816 value 7817 }; 7818 registerFieldControl(source, registration); 7819 }, [controlRef, enabled, getFormValueOverride, id, name3, registerFieldControl, sourceRef, value]); 7820 useIsoLayoutEffect(() => { 7821 const source = sourceRef.current; 7822 return () => { 7823 registerFieldControl(source, void 0); 7824 }; 7825 }, [registerFieldControl, sourceRef]); 7826 } 7827 7828 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/form-context/FormContext.mjs 7829 var React40 = __toESM(require_react(), 1); 7830 var FormContext = /* @__PURE__ */ React40.createContext({ 7831 elementRef: { 7832 current: null 7833 }, 7834 formRef: { 7835 current: { 7836 fields: /* @__PURE__ */ new Map() 7837 } 7838 }, 7839 errors: {}, 7840 clearErrors: NOOP, 7841 validationMode: "onSubmit", 7842 submitCountRef: { 7843 current: 0 7844 } 7845 }); 7846 if (true) FormContext.displayName = "FormContext"; 7847 function useFormContext() { 7848 return React40.useContext(FormContext); 7849 } 7850 7851 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/labelable-provider/useLabelableId.mjs 7852 var React42 = __toESM(require_react(), 1); 7853 7854 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/labelable-provider/LabelableContext.mjs 7855 var React41 = __toESM(require_react(), 1); 7856 var LabelableContext = /* @__PURE__ */ React41.createContext({ 7857 controlId: void 0, 7858 registerControlId: NOOP, 7859 resetControlId: NOOP, 7860 labelId: void 0, 7861 setLabelId: NOOP, 7862 messageIds: [], 7863 setMessageIds: NOOP, 7864 getDescriptionProps: (externalProps) => externalProps 7865 }); 7866 if (true) LabelableContext.displayName = "LabelableContext"; 7867 function useLabelableContext() { 7868 return React41.useContext(LabelableContext); 7869 } 7870 7871 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/labelable-provider/useLabelableId.mjs 7872 function useLabelableId(params = {}) { 7873 const { 7874 id, 7875 enabled = true 7876 } = params; 7877 const { 7878 controlId, 7879 registerControlId, 7880 resetControlId 7881 } = useLabelableContext(); 7882 const defaultId = useBaseUiId(); 7883 const controlSourceRef = useRefWithInit(() => /* @__PURE__ */ Symbol()); 7884 const hasRegisteredRef = React42.useRef(false); 7885 const hadExplicitIdRef = React42.useRef(false); 7886 const unregisterControlId = useStableCallback(() => { 7887 if (!hasRegisteredRef.current || registerControlId === NOOP) { 7888 return; 7889 } 7890 hasRegisteredRef.current = false; 7891 registerControlId(controlSourceRef.current, void 0); 7892 }); 7893 useIsoLayoutEffect(() => { 7894 if (!enabled || registerControlId === NOOP) { 7895 unregisterControlId(); 7896 return void 0; 7897 } 7898 let nextId; 7899 if (id !== void 0) { 7900 hadExplicitIdRef.current = true; 7901 nextId = id; 7902 } else if (hadExplicitIdRef.current) { 7903 nextId = defaultId; 7904 } else { 7905 resetControlId(); 7906 return void 0; 7907 } 7908 if (nextId === void 0) { 7909 unregisterControlId(); 7910 return void 0; 7911 } 7912 hasRegisteredRef.current = true; 7913 registerControlId(controlSourceRef.current, nextId); 7914 return void 0; 7915 }, [id, enabled, registerControlId, resetControlId, defaultId, controlSourceRef, unregisterControlId]); 7916 useIsoLayoutEffect(() => { 7917 return unregisterControlId; 7918 }, [unregisterControlId]); 7919 return (enabled ? controlId : void 0) ?? id ?? defaultId; 7920 } 7921 7922 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/direction-context/DirectionContext.mjs 7923 var React43 = __toESM(require_react(), 1); 7924 var DirectionContext = /* @__PURE__ */ React43.createContext(void 0); 7925 if (true) DirectionContext.displayName = "DirectionContext"; 7926 function useDirection() { 7927 const context = React43.useContext(DirectionContext); 7928 return context?.direction ?? "ltr"; 7929 } 7930 7931 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/field-root-context/useSetFieldFocused.mjs 7932 function useSetFieldFocused(disabled2, focusTargetRef, onFocusedChange) { 7933 const { 7934 setFocused, 7935 focusOwnerRef 7936 } = useFieldRootContext(); 7937 const setFieldFocused = useStableCallback((focused) => { 7938 if (focused ? !disabled2 : focusOwnerRef.current === setFieldFocused) { 7939 focusOwnerRef.current = focused && setFieldFocused; 7940 onFocusedChange?.(focused); 7941 setFocused(focused); 7942 } 7943 }); 7944 useIsoLayoutEffect(() => { 7945 const el2 = focusTargetRef.current; 7946 const root = el2?.getRootNode(); 7947 if (root?.activeElement === el2) { 7948 setFieldFocused(true); 7949 } 7950 return () => setFieldFocused(false); 7951 }, [disabled2, focusTargetRef, setFieldFocused]); 7952 return setFieldFocused; 7953 } 7954 7955 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/getPseudoElementBounds.mjs 7956 var BOUNDARY_OFFSET = 5; 7957 function isMouseWithinBounds(event, element) { 7958 const bounds = getPseudoElementBounds(element); 7959 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; 7960 } 7961 function getPseudoElementBounds(element) { 7962 const elementRect = element.getBoundingClientRect(); 7963 const win = getWindow(element); 7964 if (parts_exports.env.jsdom) { 7965 return elementRect; 7966 } 7967 const beforeStyles = win.getComputedStyle(element, "::before"); 7968 const afterStyles = win.getComputedStyle(element, "::after"); 7969 const hasPseudoElements = beforeStyles.content !== "none" || afterStyles.content !== "none"; 7970 if (!hasPseudoElements) { 7971 return elementRect; 7972 } 7973 const beforeWidth = parseFloat(beforeStyles.width) || 0; 7974 const beforeHeight = parseFloat(beforeStyles.height) || 0; 7975 const afterWidth = parseFloat(afterStyles.width) || 0; 7976 const afterHeight = parseFloat(afterStyles.height) || 0; 7977 const totalWidth = Math.max(elementRect.width, beforeWidth, afterWidth); 7978 const totalHeight = Math.max(elementRect.height, beforeHeight, afterHeight); 7979 const widthDiff = totalWidth - elementRect.width; 7980 const heightDiff = totalHeight - elementRect.height; 7981 return { 7982 left: elementRect.left - widthDiff / 2, 7983 right: elementRect.right + widthDiff / 2, 7984 top: elementRect.top - heightDiff / 2, 7985 bottom: elementRect.bottom + heightDiff / 2 7986 }; 7987 } 7988 7989 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/resolveAriaLabelledBy.mjs 7990 function getDefaultLabelId(id) { 7991 return id == null ? void 0 : `$id}-label`; 7992 } 7993 function resolveAriaLabelledBy(fieldLabelId, localLabelId) { 7994 return fieldLabelId ?? localLabelId; 7995 } 7996 7997 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useAnchorPositioning.mjs 7998 var React45 = __toESM(require_react(), 1); 7999 8000 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useFloating.mjs 8001 var React44 = __toESM(require_react(), 1); 8002 function useBaseUIFloating(options) { 8003 const { 8004 nodeId, 8005 externalTree, 8006 rootContext: store 8007 } = options; 8008 const referenceElement = store.useState("referenceElement"); 8009 const floatingElement = store.useState("floatingElement"); 8010 const domReferenceElement = store.useState("domReferenceElement"); 8011 const open2 = store.useState("open"); 8012 const floatingId = store.useState("floatingId"); 8013 const [positionReference, setPositionReferenceRaw] = React44.useState(null); 8014 const domReferenceRef = React44.useRef(null); 8015 const tree = useFloatingTree(externalTree); 8016 const storeElements = React44.useMemo(() => ({ 8017 reference: referenceElement, 8018 floating: floatingElement, 8019 domReference: domReferenceElement 8020 }), [referenceElement, floatingElement, domReferenceElement]); 8021 const position = useFloating({ 8022 ...options, 8023 elements: { 8024 ...storeElements, 8025 ...positionReference && { 8026 reference: positionReference 8027 } 8028 } 8029 }); 8030 const setPositionReference = React44.useCallback((node) => { 8031 const computedPositionReference = isElement(node) ? { 8032 getBoundingClientRect: () => node.getBoundingClientRect(), 8033 getClientRects: () => node.getClientRects(), 8034 contextElement: node 8035 } : node; 8036 setPositionReferenceRaw(computedPositionReference); 8037 position.refs.setReference(computedPositionReference); 8038 }, [position.refs]); 8039 const refs = React44.useMemo(() => ({ 8040 ...position.refs, 8041 setPositionReference, 8042 domReference: domReferenceRef 8043 }), [position.refs, setPositionReference]); 8044 const elements = React44.useMemo(() => ({ 8045 ...position.elements, 8046 domReference: domReferenceElement 8047 }), [position.elements, domReferenceElement]); 8048 const context = React44.useMemo(() => ({ 8049 ...position, 8050 dataRef: store.context.dataRef, 8051 open: open2, 8052 onOpenChange: store.setOpen, 8053 events: store.context.events, 8054 floatingId, 8055 refs, 8056 elements, 8057 nodeId, 8058 rootStore: store 8059 }), [position, refs, elements, nodeId, store, open2, floatingId]); 8060 useIsoLayoutEffect(() => { 8061 if (domReferenceElement) { 8062 domReferenceRef.current = domReferenceElement; 8063 } 8064 }, [domReferenceElement]); 8065 useIsoLayoutEffect(() => { 8066 store.context.dataRef.current.floatingContext = context; 8067 const node = tree?.nodesRef.current.find((n) => n.id === nodeId); 8068 if (node) { 8069 node.context = context; 8070 } 8071 }); 8072 return React44.useMemo(() => ({ 8073 ...position, 8074 context, 8075 refs, 8076 elements, 8077 rootStore: store 8078 }), [position, refs, elements, context, store]); 8079 } 8080 8081 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/middleware/arrow.mjs 8082 var baseArrow = (options) => ({ 8083 name: "arrow", 8084 options, 8085 async fn(state) { 8086 const { 8087 x, 8088 y, 8089 placement, 8090 rects, 8091 platform: platform3, 8092 elements, 8093 middlewareData 8094 } = state; 8095 const { 8096 element, 8097 padding = 0 8098 } = evaluate(options, state) || {}; 8099 if (element == null) { 8100 return {}; 8101 } 8102 const paddingObject = getPaddingObject(padding); 8103 const coords = { 8104 x, 8105 y 8106 }; 8107 const axis = getAlignmentAxis(placement); 8108 const length = getAxisLength(axis); 8109 const arrowDimensions = await platform3.getDimensions(element); 8110 const isYAxis = axis === "y"; 8111 const minProp = isYAxis ? "top" : "left"; 8112 const maxProp = isYAxis ? "bottom" : "right"; 8113 const clientProp = isYAxis ? "clientHeight" : "clientWidth"; 8114 const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length]; 8115 const startDiff = coords[axis] - rects.reference[axis]; 8116 const clientSize = elements.floating[clientProp] || rects.floating[length]; 8117 const centerToReference = endDiff / 2 - startDiff / 2; 8118 const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1; 8119 const minPadding = Math.min(paddingObject[minProp], largestPossiblePadding); 8120 const maxPadding = Math.min(paddingObject[maxProp], largestPossiblePadding); 8121 const min2 = minPadding; 8122 const max2 = clientSize - arrowDimensions[length] - maxPadding; 8123 const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference; 8124 const offset4 = clamp(min2, center, max2); 8125 const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset4 && rects.reference[length] / 2 - (center < min2 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0; 8126 const alignmentOffset = shouldAddOffset ? center < min2 ? center - min2 : center - max2 : 0; 8127 return { 8128 [axis]: coords[axis] + alignmentOffset, 8129 data: { 8130 [axis]: offset4, 8131 centerOffset: center - offset4 - alignmentOffset, 8132 ...shouldAddOffset && { 8133 alignmentOffset 8134 } 8135 }, 8136 reset: shouldAddOffset 8137 }; 8138 } 8139 }); 8140 var arrow4 = (options, deps) => { 8141 const { 8142 name: name3, 8143 fn 8144 } = baseArrow(options); 8145 return { 8146 name: name3, 8147 fn, 8148 options: [options, deps] 8149 }; 8150 }; 8151 8152 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/hideMiddleware.mjs 8153 var hide4 = { 8154 name: "hide", 8155 async fn(state) { 8156 const { 8157 width, 8158 height, 8159 x, 8160 y 8161 } = state.rects.reference; 8162 const anchorHidden2 = width === 0 && height === 0 && x === 0 && y === 0; 8163 const overflow = await state.platform.detectOverflow(state, { 8164 elementContext: "reference" 8165 }); 8166 const referenceHidden = overflow.top - height >= 0 || overflow.right - width >= 0 || overflow.bottom - height >= 0 || overflow.left - width >= 0; 8167 return { 8168 data: { 8169 referenceHidden: referenceHidden || anchorHidden2 8170 } 8171 }; 8172 } 8173 }; 8174 8175 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/adaptiveOriginConstants.mjs 8176 var DEFAULT_SIDES = { 8177 sideX: "left", 8178 sideY: "top" 8179 }; 8180 8181 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/CommonPositionerCssVars.mjs 8182 var availableWidth = "--available-width"; 8183 var availableHeight = "--available-height"; 8184 var anchorWidth = "--anchor-width"; 8185 var anchorHeight = "--anchor-height"; 8186 var transformOrigin = "--transform-origin"; 8187 8188 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useAnchorPositioning.mjs 8189 var AVAILABLE_WIDTH_VAR = availableWidth; 8190 var AVAILABLE_HEIGHT_VAR = availableHeight; 8191 function getLogicalSide(sideParam, renderedSide, isRtl) { 8192 const isLogicalSideParam = sideParam === "inline-start" || sideParam === "inline-end"; 8193 const logicalRight = isRtl ? "inline-start" : "inline-end"; 8194 const logicalLeft = isRtl ? "inline-end" : "inline-start"; 8195 return { 8196 top: "top", 8197 right: isLogicalSideParam ? logicalRight : "right", 8198 bottom: "bottom", 8199 left: isLogicalSideParam ? logicalLeft : "left" 8200 }[renderedSide]; 8201 } 8202 function getOffsetData(state, sideParam, isRtl) { 8203 const { 8204 rects, 8205 placement 8206 } = state; 8207 const data = { 8208 side: getLogicalSide(sideParam, getSide(placement), isRtl), 8209 align: getAlignment(placement) || "center", 8210 anchor: { 8211 width: rects.reference.width, 8212 height: rects.reference.height 8213 }, 8214 positioner: { 8215 width: rects.floating.width, 8216 height: rects.floating.height 8217 } 8218 }; 8219 return data; 8220 } 8221 function useAnchorPositioning(params) { 8222 return useAnchorPositioningWithHook(params, useBaseUIFloating); 8223 } 8224 function useAnchorPositioningWithHook(params, useFloatingHook) { 8225 const { 8226 // Public parameters 8227 anchor, 8228 positionMethod = "absolute", 8229 side: sideParam = "bottom", 8230 sideOffset = 0, 8231 align = "center", 8232 alignOffset = 0, 8233 collisionBoundary, 8234 collisionPadding: collisionPaddingParam = 5, 8235 sticky = false, 8236 arrowPadding = 5, 8237 disableAnchorTracking = false, 8238 inline: inlineMiddleware, 8239 // Private parameters 8240 keepMounted = false, 8241 floatingRootContext, 8242 mounted, 8243 collisionAvoidance, 8244 shift: shift4, 8245 nodeId, 8246 adaptiveOrigin, 8247 lazyFlip = false, 8248 externalTree 8249 } = params; 8250 const collisionAvoidanceSide = collisionAvoidance.side || "flip"; 8251 const collisionAvoidanceAlign = collisionAvoidance.align || "flip"; 8252 const collisionAvoidanceFallbackAxisSide = collisionAvoidance.fallbackAxisSide || "end"; 8253 const shiftCrossAxis = shift4?.crossAxis ?? false; 8254 const shiftRootBoundary = shift4?.rootBoundary; 8255 const anchorFn = typeof anchor === "function" ? anchor : void 0; 8256 const anchorFnCallback = useStableCallback(anchorFn); 8257 const anchorDep = anchorFn ? anchorFnCallback : anchor; 8258 const anchorValueRef = useValueAsRef(anchor); 8259 const mountedRef = useValueAsRef(mounted); 8260 const direction = useDirection(); 8261 const isRtl = direction === "rtl"; 8262 const [mountPlacement, setMountPlacement] = React45.useState(null); 8263 if (!mounted && mountPlacement !== null) { 8264 setMountPlacement(null); 8265 } 8266 const lockAlign = lazyFlip === "placement"; 8267 const mountSide = mountPlacement ? getSide(mountPlacement) : null; 8268 const mountAlign = mountPlacement && lockAlign ? getAlignment(mountPlacement) || "center" : null; 8269 const side = mountSide || { 8270 top: "top", 8271 right: "right", 8272 bottom: "bottom", 8273 left: "left", 8274 "inline-end": isRtl ? "left" : "right", 8275 "inline-start": isRtl ? "right" : "left" 8276 }[sideParam]; 8277 const placementAlign = mountAlign || align; 8278 const placement = placementAlign === "center" ? side : `$side}-$placementAlign}`; 8279 let collisionPadding = collisionPaddingParam; 8280 if (typeof collisionPadding === "number") { 8281 collisionPadding = { 8282 top: collisionPadding, 8283 right: collisionPadding, 8284 bottom: collisionPadding, 8285 left: collisionPadding 8286 }; 8287 } else if (collisionPadding) { 8288 collisionPadding = { 8289 top: collisionPadding.top || 0, 8290 right: collisionPadding.right || 0, 8291 bottom: collisionPadding.bottom || 0, 8292 left: collisionPadding.left || 0 8293 }; 8294 } 8295 const bias = 1; 8296 const biasTop = sideParam === "bottom" ? bias : 0; 8297 const biasBottom = sideParam === "top" ? bias : 0; 8298 const biasLeft = sideParam === "right" ? bias : 0; 8299 const biasRight = sideParam === "left" ? bias : 0; 8300 const commonCollisionProps = { 8301 boundary: collisionBoundary === "clipping-ancestors" ? "clippingAncestors" : collisionBoundary, 8302 padding: collisionPadding 8303 }; 8304 const arrowRef = React45.useRef(null); 8305 const sideOffsetRef = useValueAsRef(sideOffset); 8306 const alignOffsetRef = useValueAsRef(alignOffset); 8307 const sideOffsetDep = typeof sideOffset !== "function" ? sideOffset : 0; 8308 const alignOffsetDep = typeof alignOffset !== "function" ? alignOffset : 0; 8309 const middleware = []; 8310 if (inlineMiddleware) { 8311 middleware.push(inlineMiddleware); 8312 } 8313 middleware.push(offset3((state) => { 8314 const data = getOffsetData(state, sideParam, isRtl); 8315 const sideAxis = typeof sideOffsetRef.current === "function" ? sideOffsetRef.current(data) : sideOffsetRef.current; 8316 const alignAxis = typeof alignOffsetRef.current === "function" ? alignOffsetRef.current(data) : alignOffsetRef.current; 8317 return { 8318 mainAxis: sideAxis, 8319 crossAxis: alignAxis, 8320 alignmentAxis: alignAxis 8321 }; 8322 }, [sideOffsetDep, alignOffsetDep, isRtl, sideParam])); 8323 const shiftDisabled = collisionAvoidanceAlign === "none" && collisionAvoidanceSide !== "shift"; 8324 const crossAxisShiftEnabled = !shiftDisabled && (sticky || shiftCrossAxis || collisionAvoidanceSide === "shift"); 8325 const flipMiddleware = collisionAvoidanceSide === "none" ? null : flip3({ 8326 ...commonCollisionProps, 8327 // Ensure the popup flips if it's been limited by its --available-height and it resizes. 8328 // Since the size() padding is smaller than the flip() padding, flip() will take precedence. 8329 padding: { 8330 top: collisionPadding.top + bias + biasTop, 8331 right: collisionPadding.right + bias + biasRight, 8332 bottom: collisionPadding.bottom + bias + biasBottom, 8333 left: collisionPadding.left + bias + biasLeft 8334 }, 8335 mainAxis: !shiftCrossAxis && collisionAvoidanceSide === "flip", 8336 crossAxis: collisionAvoidanceAlign === "flip" ? "alignment" : false, 8337 fallbackAxisSideDirection: collisionAvoidanceFallbackAxisSide 8338 }); 8339 const shiftMiddleware = shiftDisabled ? null : shift3({ 8340 ...commonCollisionProps, 8341 // Use the Layout Viewport to avoid shifting around when pinch-zooming. 8342 rootBoundary: shiftRootBoundary, 8343 mainAxis: collisionAvoidanceAlign !== "none", 8344 crossAxis: crossAxisShiftEnabled, 8345 limiter: sticky || shiftCrossAxis ? void 0 : limitShift3((limitData) => { 8346 if (!arrowRef.current) { 8347 return {}; 8348 } 8349 const { 8350 width, 8351 height 8352 } = arrowRef.current.getBoundingClientRect(); 8353 const sideAxis = getSideAxis(getSide(limitData.placement)); 8354 const arrowSize = sideAxis === "y" ? width : height; 8355 const offsetAmount = sideAxis === "y" ? collisionPadding.left + collisionPadding.right : collisionPadding.top + collisionPadding.bottom; 8356 return { 8357 offset: arrowSize / 2 + offsetAmount / 2 8358 }; 8359 }) 8360 }, [commonCollisionProps, sticky, shiftCrossAxis, shiftRootBoundary, collisionPadding, collisionAvoidanceAlign]); 8361 if (collisionAvoidanceSide === "shift" || collisionAvoidanceAlign === "shift" || placementAlign === "center") { 8362 middleware.push(shiftMiddleware, flipMiddleware); 8363 } else { 8364 middleware.push(flipMiddleware, shiftMiddleware); 8365 } 8366 middleware.push(size3({ 8367 ...commonCollisionProps, 8368 apply({ 8369 elements: { 8370 floating 8371 }, 8372 availableWidth: availableWidth2, 8373 availableHeight: availableHeight2, 8374 rects 8375 }) { 8376 if (!mountedRef.current) { 8377 return; 8378 } 8379 const floatingStyle = floating.style; 8380 floatingStyle.setProperty(AVAILABLE_WIDTH_VAR, `$availableWidth2}px`); 8381 floatingStyle.setProperty(AVAILABLE_HEIGHT_VAR, `$availableHeight2}px`); 8382 const dpr = getWindow(floating).devicePixelRatio || 1; 8383 const { 8384 x: x2, 8385 y: y2, 8386 width, 8387 height 8388 } = rects.reference; 8389 const anchorWidth2 = (Math.round((x2 + width) * dpr) - Math.round(x2 * dpr)) / dpr; 8390 const anchorHeight2 = (Math.round((y2 + height) * dpr) - Math.round(y2 * dpr)) / dpr; 8391 floatingStyle.setProperty(anchorWidth, `$anchorWidth2}px`); 8392 floatingStyle.setProperty(anchorHeight, `$anchorHeight2}px`); 8393 } 8394 }), arrow4((state) => ({ 8395 // `transform-origin` calculations rely on an element existing. If the arrow hasn't been set, 8396 // we'll create a fake element. 8397 element: arrowRef.current || ownerDocument(state.elements.floating).createElement("div"), 8398 // No padding for the fake arrow: it would displace aligned popups on narrow anchors. 8399 padding: arrowRef.current ? arrowPadding : 0 8400 }), [arrowPadding]), { 8401 name: "transformOrigin", 8402 fn(state) { 8403 const { 8404 elements: { 8405 floating 8406 }, 8407 middlewareData: middlewareData2, 8408 placement: renderedPlacement2, 8409 platform: platform3, 8410 rects, 8411 y: y2 8412 } = state; 8413 const renderedSide2 = getSide(renderedPlacement2); 8414 const renderedAlign2 = getAlignment(renderedPlacement2); 8415 const isVertical = getSideAxis(renderedSide2) === "y"; 8416 const arrowEl = arrowRef.current; 8417 const sideOffsetValue = typeof sideOffset === "function" ? sideOffset(getOffsetData(state, sideParam, isRtl)) : sideOffset; 8418 let crossOrigin; 8419 if (!arrowEl && renderedAlign2 && Math.abs(isVertical ? middlewareData2.shift?.x || 0 : middlewareData2.shift?.y || 0) <= 1) { 8420 crossOrigin = renderedAlign2 === "start" === (isVertical && platform3.isRTL?.(floating) === true) ? "100%" : "0%"; 8421 } else { 8422 const arrowOffset = isVertical ? middlewareData2.arrow?.x || 0 : middlewareData2.arrow?.y || 0; 8423 const arrowSize = isVertical ? arrowEl?.clientWidth || 0 : arrowEl?.clientHeight || 0; 8424 crossOrigin = `$arrowOffset + arrowSize / 2}px`; 8425 } 8426 let sideOrigin = renderedSide2 === "top" || renderedSide2 === "left" ? `calc(100% + $sideOffsetValue}px)` : `${-sideOffsetValue}px`; 8427 if (crossAxisShiftEnabled && isVertical && Math.abs(middlewareData2.shift?.y || 0) > sideOffsetValue) { 8428 sideOrigin = `$rects.reference.y + rects.reference.height / 2 - y2}px`; 8429 } 8430 floating.style.setProperty(transformOrigin, isVertical ? `$crossOrigin} $sideOrigin}` : `$sideOrigin} $crossOrigin}`); 8431 return {}; 8432 } 8433 }, hide4, adaptiveOrigin); 8434 useIsoLayoutEffect(() => { 8435 if (!mounted && floatingRootContext) { 8436 floatingRootContext.update({ 8437 referenceElement: null, 8438 floatingElement: null, 8439 domReferenceElement: null, 8440 positionReference: null 8441 }); 8442 } 8443 }, [mounted, floatingRootContext]); 8444 const autoUpdateOptions = React45.useMemo(() => ({ 8445 ancestorScroll: !disableAnchorTracking, 8446 elementResize: !disableAnchorTracking && typeof ResizeObserver !== "undefined", 8447 layoutShift: !disableAnchorTracking && typeof IntersectionObserver !== "undefined" 8448 }), [disableAnchorTracking]); 8449 const { 8450 refs, 8451 elements, 8452 x, 8453 y, 8454 middlewareData, 8455 update: update2, 8456 placement: renderedPlacement, 8457 context, 8458 isPositioned, 8459 floatingStyles: originalFloatingStyles 8460 } = useFloatingHook({ 8461 rootContext: floatingRootContext, 8462 open: keepMounted ? mounted : void 0, 8463 placement, 8464 middleware, 8465 strategy: positionMethod, 8466 whileElementsMounted: keepMounted ? void 0 : (...args) => autoUpdate(...args, autoUpdateOptions), 8467 nodeId, 8468 externalTree 8469 }); 8470 const { 8471 sideX, 8472 sideY 8473 } = middlewareData.adaptiveOrigin || DEFAULT_SIDES; 8474 const resolvedPosition = isPositioned ? positionMethod : "fixed"; 8475 const floatingStyles = React45.useMemo(() => { 8476 let base; 8477 if (!isPositioned) { 8478 base = { 8479 position: resolvedPosition, 8480 top: 0, 8481 left: 0 8482 }; 8483 } else if (adaptiveOrigin) { 8484 base = { 8485 position: resolvedPosition, 8486 [sideX]: x, 8487 [sideY]: y 8488 }; 8489 } else { 8490 base = { 8491 ...originalFloatingStyles, 8492 position: resolvedPosition 8493 }; 8494 } 8495 base[AVAILABLE_WIDTH_VAR] = "100vw"; 8496 base[AVAILABLE_HEIGHT_VAR] = "100vh"; 8497 if (!isPositioned) { 8498 base.opacity = 0; 8499 } 8500 return base; 8501 }, [adaptiveOrigin, resolvedPosition, sideX, x, sideY, y, originalFloatingStyles, isPositioned]); 8502 const registeredPositionReferenceRef = React45.useRef(null); 8503 useIsoLayoutEffect(() => { 8504 if (!mounted) { 8505 return; 8506 } 8507 const anchorValue = anchorValueRef.current; 8508 const resolvedAnchor = typeof anchorValue === "function" ? anchorValue() : anchorValue; 8509 const unwrappedElement = (isRef(resolvedAnchor) ? resolvedAnchor.current : resolvedAnchor) || null; 8510 const finalAnchor = unwrappedElement || null; 8511 if (finalAnchor !== registeredPositionReferenceRef.current) { 8512 refs.setPositionReference(finalAnchor); 8513 registeredPositionReferenceRef.current = finalAnchor; 8514 } 8515 }, [mounted, refs, anchorDep, anchorValueRef]); 8516 React45.useEffect(() => { 8517 if (!mounted) { 8518 return; 8519 } 8520 const anchorValue = anchorValueRef.current; 8521 if (typeof anchorValue === "function") { 8522 return; 8523 } 8524 if (isRef(anchorValue) && anchorValue.current !== registeredPositionReferenceRef.current) { 8525 refs.setPositionReference(anchorValue.current); 8526 registeredPositionReferenceRef.current = anchorValue.current; 8527 } 8528 }, [mounted, refs, anchorDep, anchorValueRef]); 8529 React45.useEffect(() => { 8530 if (keepMounted && mounted && elements.reference && elements.floating) { 8531 return autoUpdate(elements.reference, elements.floating, update2, autoUpdateOptions); 8532 } 8533 return void 0; 8534 }, [keepMounted, mounted, elements, update2, autoUpdateOptions]); 8535 const renderedSide = getSide(renderedPlacement); 8536 const logicalRenderedSide = getLogicalSide(sideParam, renderedSide, isRtl); 8537 const renderedAlign = getAlignment(renderedPlacement) || "center"; 8538 const anchorHidden2 = Boolean(middlewareData.hide?.referenceHidden); 8539 useIsoLayoutEffect(() => { 8540 if (lazyFlip && mounted && isPositioned && (renderedSide !== side || lockAlign && renderedAlign !== placementAlign)) { 8541 setMountPlacement(renderedPlacement); 8542 } 8543 }, [lazyFlip, lockAlign, mounted, isPositioned, renderedPlacement, renderedSide, renderedAlign, side, placementAlign]); 8544 const arrowStyles = React45.useMemo(() => ({ 8545 position: "absolute", 8546 top: middlewareData.arrow?.y, 8547 left: middlewareData.arrow?.x 8548 }), [middlewareData.arrow]); 8549 const arrowUncentered = middlewareData.arrow?.centerOffset !== 0; 8550 return React45.useMemo(() => ({ 8551 positionerStyles: floatingStyles, 8552 arrowStyles, 8553 arrowRef, 8554 arrowUncentered, 8555 side: logicalRenderedSide, 8556 align: renderedAlign, 8557 physicalSide: renderedSide, 8558 anchorHidden: anchorHidden2, 8559 refs, 8560 context, 8561 isPositioned, 8562 update: update2 8563 }), [floatingStyles, arrowStyles, arrowRef, arrowUncentered, logicalRenderedSide, renderedAlign, renderedSide, anchorHidden2, refs, context, isPositioned, update2]); 8564 } 8565 function isRef(param) { 8566 return param != null && "current" in param; 8567 } 8568 8569 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/getDisabledMountTransitionStyles.mjs 8570 function getDisabledMountTransitionStyles(transitionStatus) { 8571 return transitionStatus === "starting" ? DISABLED_TRANSITIONS_STYLE : EMPTY_OBJECT; 8572 } 8573 8574 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/usePositioner.mjs 8575 function usePositioner(componentProps, state, { 8576 styles, 8577 transitionStatus, 8578 props, 8579 refs, 8580 hidden, 8581 inert = false 8582 }) { 8583 const style = { 8584 ...styles 8585 }; 8586 if (inert) { 8587 style.pointerEvents = "none"; 8588 } 8589 return useRenderElement("div", componentProps, { 8590 state, 8591 ref: refs, 8592 props: [{ 8593 role: "presentation", 8594 hidden, 8595 style 8596 }, getDisabledMountTransitionStyles(transitionStatus), props], 8597 stateAttributesMapping: popupStateMapping 8598 }); 8599 } 8600 8601 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/useAnchoredPopupScrollLock.mjs 8602 var React46 = __toESM(require_react(), 1); 8603 var VIEWPORT_WIDTH_TOLERANCE_PX = 20; 8604 function useAnchoredPopupScrollLock(enabled, touchOpen, positionerElement, referenceElement) { 8605 const [touchOpenShouldLockScroll, setTouchOpenShouldLockScroll] = React46.useState(false); 8606 useIsoLayoutEffect(() => { 8607 if (!enabled || !touchOpen || positionerElement == null) { 8608 setTouchOpenShouldLockScroll(false); 8609 return; 8610 } 8611 const viewportWidth = ownerDocument(positionerElement).documentElement.clientWidth; 8612 const popupWidth = positionerElement.offsetWidth; 8613 setTouchOpenShouldLockScroll(viewportWidth > 0 && popupWidth > 0 && popupWidth >= viewportWidth - VIEWPORT_WIDTH_TOLERANCE_PX); 8614 }, [enabled, touchOpen, positionerElement]); 8615 useScrollLock(enabled && (!touchOpen || touchOpenShouldLockScroll), referenceElement); 8616 } 8617 8618 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/listbox-separator/ListboxSeparator.mjs 8619 var React47 = __toESM(require_react(), 1); 8620 var ListboxSeparator = /* @__PURE__ */ React47.forwardRef(function ListboxSeparator2(componentProps, forwardedRef) { 8621 const { 8622 className, 8623 render, 8624 orientation = "horizontal", 8625 style, 8626 ...elementProps 8627 } = componentProps; 8628 const state = { 8629 orientation 8630 }; 8631 return useRenderElement("div", componentProps, { 8632 state, 8633 ref: forwardedRef, 8634 props: [{ 8635 role: "presentation" 8636 }, elementProps] 8637 }); 8638 }); 8639 if (true) ListboxSeparator.displayName = "ListboxSeparator"; 8640 8641 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/item/FieldItemContext.mjs 8642 var React48 = __toESM(require_react(), 1); 8643 var FieldItemContext = /* @__PURE__ */ React48.createContext({ 8644 disabled: false 8645 }); 8646 if (true) FieldItemContext.displayName = "FieldItemContext"; 8647 function useFieldItemContext() { 8648 const context = React48.useContext(FieldItemContext); 8649 return context; 8650 } 8651 8652 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/root/useFieldValidation.mjs 8653 var React49 = __toESM(require_react(), 1); 8654 8655 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/utils/getCombinedFieldValidityData.mjs 8656 function getCombinedFieldValidityData(validityData, invalid2) { 8657 return { 8658 ...validityData, 8659 state: { 8660 ...validityData.state, 8661 valid: !invalid2 && validityData.state.valid 8662 } 8663 }; 8664 } 8665 8666 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/root/useFieldValidation.mjs 8667 var validityKeys = Object.keys(DEFAULT_VALIDITY_STATE); 8668 function isEligibleInput(input, formElement) { 8669 if (input.matches(":disabled")) { 8670 return false; 8671 } 8672 if (!formElement || input.form === formElement) { 8673 return true; 8674 } 8675 return input.form === null && !input.hasAttribute("form"); 8676 } 8677 function findRepresentativeInput(inputs, formElement) { 8678 let fallback = null; 8679 for (const input of inputs.keys()) { 8680 if (!isEligibleInput(input, formElement)) { 8681 continue; 8682 } 8683 if (!input.validity.valid) { 8684 return input; 8685 } 8686 fallback ??= input; 8687 } 8688 return fallback; 8689 } 8690 function makeState(customError) { 8691 return { 8692 ...DEFAULT_VALIDITY_STATE, 8693 valid: !customError, 8694 customError 8695 }; 8696 } 8697 function getNativeErrors(element) { 8698 return element && element.validationMessage ? [element.validationMessage] : []; 8699 } 8700 function useFieldValidation(params) { 8701 const { 8702 elementRef, 8703 formRef 8704 } = useFormContext(); 8705 const { 8706 setValidityData, 8707 validate, 8708 validityData, 8709 validationDebounceTime, 8710 invalid: invalid2, 8711 markedDirtyRef, 8712 state, 8713 shouldValidateOnChange, 8714 validationMode, 8715 registeredFieldIdRef 8716 } = params; 8717 const { 8718 controlId, 8719 getDescriptionProps 8720 } = useLabelableContext(); 8721 const timeout = useTimeout(); 8722 const inputRef = React49.useRef(null); 8723 const registeredInputs = useRefWithInit(() => /* @__PURE__ */ new Map()).current; 8724 const validationCommitIdRef = React49.useRef(0); 8725 const customValidityRef = React49.useRef(null); 8726 const registerInput = React49.useCallback((element, registration) => { 8727 registeredInputs.set(element, registration); 8728 return () => { 8729 registeredInputs.delete(element); 8730 }; 8731 }, [registeredInputs]); 8732 const getInputControl = useStableCallback(() => { 8733 const element = findRepresentativeInput(registeredInputs, elementRef.current); 8734 return element && registeredInputs.get(element)?.controlRef.current || null; 8735 }); 8736 const commit = useStableCallback(async (value, revalidate = false) => { 8737 validationCommitIdRef.current += 1; 8738 const validationCommitId = validationCommitIdRef.current; 8739 function updateRegisteredFieldValidity(nextValidityData, externalInvalid = invalid2) { 8740 const fieldId = registeredFieldIdRef.current ?? controlId; 8741 if (fieldId == null) { 8742 return; 8743 } 8744 const currentFieldData = formRef.current.fields.get(fieldId); 8745 if (!currentFieldData) { 8746 return; 8747 } 8748 const validityDataWithFormErrors = getCombinedFieldValidityData(nextValidityData, externalInvalid); 8749 formRef.current.fields.set(fieldId, { 8750 ...currentFieldData, 8751 validityData: validityDataWithFormErrors 8752 }); 8753 } 8754 function makeValidityData(validityState, errorMessages) { 8755 const errors = validityState.valid === false ? errorMessages : []; 8756 return { 8757 value, 8758 state: validityState, 8759 error: errors[0] ?? "", 8760 errors, 8761 initialValue: validityData.initialValue 8762 }; 8763 } 8764 function setCustomValidity(element2, message) { 8765 const displaced = element2.validity.customError ? element2.validationMessage : ""; 8766 const ownedMessage = message.replace(/\r\n?/g, "\n"); 8767 element2.setCustomValidity(ownedMessage); 8768 customValidityRef.current = [element2, ownedMessage, displaced]; 8769 } 8770 function clearCustomValidity() { 8771 const record = customValidityRef.current; 8772 customValidityRef.current = null; 8773 if (record && (!record[0].willValidate || record[0].validationMessage === record[1])) { 8774 record[0].setCustomValidity(record[2]); 8775 } 8776 } 8777 function publish(validityState, errorMessages, externalInvalid) { 8778 const nextValidityData = makeValidityData(validityState, errorMessages); 8779 updateRegisteredFieldValidity(nextValidityData, externalInvalid); 8780 setValidityData(nextValidityData); 8781 } 8782 function getState(el2) { 8783 const computedState = validityKeys.reduce((acc, key) => { 8784 acc[key] = el2.validity[key]; 8785 return acc; 8786 }, {}); 8787 let hasOnlyValueMissingError = false; 8788 for (const key of validityKeys) { 8789 if (key === "valid") { 8790 continue; 8791 } 8792 if (key === "valueMissing" && computedState[key]) { 8793 hasOnlyValueMissingError = true; 8794 } else if (computedState[key]) { 8795 return computedState; 8796 } 8797 } 8798 if (hasOnlyValueMissingError && !markedDirtyRef.current) { 8799 computedState.valid = true; 8800 computedState.valueMissing = false; 8801 } 8802 return computedState; 8803 } 8804 function resolveRepresentativeInput() { 8805 return registeredInputs.size > 0 ? findRepresentativeInput(registeredInputs, elementRef.current) : inputRef.current; 8806 } 8807 let element = resolveRepresentativeInput(); 8808 function refreshState() { 8809 element = resolveRepresentativeInput(); 8810 return element?.willValidate ? getState(element) : makeState(false); 8811 } 8812 if (revalidate) { 8813 if (state.valid !== false || !element) { 8814 return; 8815 } 8816 if (!element.validity.valueMissing) { 8817 clearCustomValidity(); 8818 const currentElement = resolveRepresentativeInput(); 8819 const foreign = currentElement?.validity.customError ? getNativeErrors(currentElement) : []; 8820 publish(makeState(foreign.length > 0), foreign, false); 8821 return; 8822 } 8823 for (const key of validityKeys) { 8824 if (key !== "valid" && key !== "valueMissing" && key !== "customError" && element.validity[key]) { 8825 return; 8826 } 8827 } 8828 } 8829 timeout.clear(); 8830 clearCustomValidity(); 8831 let nextState = refreshState(); 8832 let validationErrors = getNativeErrors(element); 8833 const isValidatingOnChange = shouldValidateOnChange(); 8834 if (validationErrors.length === 0 || isValidatingOnChange) { 8835 const formValues = Array.from(formRef.current.fields.values()).reduce((acc, field) => { 8836 if (field.name) { 8837 acc[field.name] = field.getValue(); 8838 } 8839 return acc; 8840 }, {}); 8841 const resultOrPromise = validate(value, formValues); 8842 let result; 8843 if (typeof resultOrPromise === "object" && resultOrPromise !== null && "then" in resultOrPromise) { 8844 if (nextState.valid === false) { 8845 publish(nextState, validationErrors); 8846 } else if (validationMode === "onSubmit" || !validityData.state.customError) { 8847 nextState.valid = null; 8848 publish(nextState, validationErrors); 8849 } 8850 result = await resultOrPromise; 8851 if (validationCommitId !== validationCommitIdRef.current) { 8852 return; 8853 } 8854 nextState = refreshState(); 8855 } else { 8856 result = resultOrPromise; 8857 } 8858 validationErrors = result ? [].concat(result).filter(Boolean) : []; 8859 if (validationErrors.length > 0) { 8860 nextState.valid = false; 8861 nextState.customError = true; 8862 if (element?.willValidate) { 8863 setCustomValidity(element, validationErrors.join("\n")); 8864 } 8865 } else { 8866 validationErrors = getNativeErrors(element); 8867 } 8868 } 8869 publish(nextState, validationErrors); 8870 }); 8871 const change = useStableCallback((value, cancelPending = false) => { 8872 timeout.clear(); 8873 validationCommitIdRef.current += 1; 8874 if (cancelPending) { 8875 return; 8876 } 8877 const validateOnChange = shouldValidateOnChange(); 8878 if (validateOnChange && value !== "" && validationDebounceTime) { 8879 timeout.start(validationDebounceTime, () => { 8880 commit(value); 8881 }); 8882 } else { 8883 commit(value, !validateOnChange); 8884 } 8885 }); 8886 const getValidationProps = React49.useCallback((disabled2, externalProps = {}) => mergeProps(getDescriptionProps(externalProps), state.valid === false && !state.disabled && !disabled2 ? { 8887 "aria-invalid": true 8888 } : EMPTY_OBJECT), [getDescriptionProps, state.disabled, state.valid]); 8889 return React49.useMemo(() => ({ 8890 getValidationProps, 8891 inputRef, 8892 registeredInputs, 8893 registerInput, 8894 getInputControl, 8895 commit, 8896 change 8897 }), [getValidationProps, registeredInputs, registerInput, getInputControl, commit, change]); 8898 } 8899 8900 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/useRegisteredLabelId.mjs 8901 function useRegisteredLabelId(idProp, setLabelId) { 8902 const id = useBaseUiId(idProp); 8903 useIsoLayoutEffect(() => { 8904 setLabelId(id); 8905 return () => { 8906 setLabelId((currentId) => currentId === id ? void 0 : currentId); 8907 }; 8908 }, [id, setLabelId]); 8909 return id; 8910 } 8911 8912 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/labelable-provider/useLabel.mjs 8913 function useLabel(params = {}) { 8914 const { 8915 id: idProp, 8916 fallbackControlId, 8917 native = false, 8918 setLabelId: setLabelIdProp, 8919 focusControl: focusControlProp 8920 } = params; 8921 const { 8922 controlId: contextControlId, 8923 setLabelId: setContextLabelId 8924 } = useLabelableContext(); 8925 const syncLabelId = useStableCallback((nextLabelId) => { 8926 setContextLabelId(nextLabelId); 8927 setLabelIdProp?.(nextLabelId); 8928 }); 8929 const id = useRegisteredLabelId(idProp, syncLabelId); 8930 const resolvedControlId = contextControlId ?? fallbackControlId; 8931 function focusControl(event) { 8932 if (focusControlProp) { 8933 focusControlProp(event, resolvedControlId); 8934 return; 8935 } 8936 if (!resolvedControlId) { 8937 return; 8938 } 8939 const controlElement = getControlById(event.currentTarget, resolvedControlId); 8940 if (isHTMLElement(controlElement)) { 8941 focusElementWithVisible(controlElement); 8942 } 8943 } 8944 function handleInteraction(event) { 8945 const target = getTarget(event.nativeEvent); 8946 if (closest(target, "button,input,select,textarea")) { 8947 return; 8948 } 8949 if (!event.defaultPrevented && event.detail > 1) { 8950 event.preventDefault(); 8951 } 8952 if (native) { 8953 return; 8954 } 8955 focusControl(event); 8956 } 8957 return native ? { 8958 id, 8959 htmlFor: resolvedControlId, 8960 onMouseDown: handleInteraction 8961 } : { 8962 id, 8963 onClick: handleInteraction, 8964 onPointerDown(event) { 8965 event.preventDefault(); 8966 } 8967 }; 8968 } 8969 function getControlById(label, id) { 8970 let root = label.getRootNode(); 8971 while (isShadowRoot(root)) { 8972 const element = root.getElementById(id); 8973 if (element) { 8974 return element; 8975 } 8976 root = root.host.getRootNode(); 8977 } 8978 return ownerDocument(label).getElementById(id); 8979 } 8980 function focusElementWithVisible(element) { 8981 element.focus({ 8982 // Available from Chrome 144+ (January 2026). 8983 // Safari and Firefox already support it. 8984 focusVisible: true 8985 }); 8986 } 8987 8988 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/ItemIndicator.mjs 8989 var React50 = __toESM(require_react(), 1); 8990 var ItemIndicator = /* @__PURE__ */ React50.memo(/* @__PURE__ */ React50.forwardRef(function ItemIndicator2(componentProps, forwardedRef) { 8991 const { 8992 render, 8993 className, 8994 style, 8995 keepMounted, 8996 selected, 8997 ...elementProps 8998 } = componentProps; 8999 const indicatorRef = React50.useRef(null); 9000 const { 9001 transitionStatus, 9002 setMounted 9003 } = useTransitionStatus(selected); 9004 const state = { 9005 selected, 9006 transitionStatus 9007 }; 9008 const element = useRenderElement("span", componentProps, { 9009 ref: [forwardedRef, indicatorRef], 9010 state, 9011 props: [{ 9012 "aria-hidden": true, 9013 children: "\u2714\uFE0F" 9014 }, elementProps], 9015 stateAttributesMapping: transitionStatusMapping 9016 }); 9017 useOpenChangeComplete({ 9018 batch: true, 9019 enabled: !selected, 9020 open: selected, 9021 ref: indicatorRef, 9022 onComplete() { 9023 if (!selected) { 9024 setMounted(false); 9025 } 9026 } 9027 }); 9028 return element; 9029 })); 9030 if (true) ItemIndicator.displayName = "ItemIndicator"; 9031 9032 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/toolbar/root/ToolbarRootContext.mjs 9033 var React51 = __toESM(require_react(), 1); 9034 var ToolbarRootContext = /* @__PURE__ */ React51.createContext(void 0); 9035 if (true) ToolbarRootContext.displayName = "ToolbarRootContext"; 9036 function useToolbarRootContext(optional) { 9037 const context = React51.useContext(ToolbarRootContext); 9038 if (context === void 0 && !optional) { 9039 throw new Error(true ? "Base UI: ToolbarRootContext is missing. Toolbar parts must be placed within <Toolbar.Root>." : formatErrorMessage_default(69)); 9040 } 9041 return context; 9042 } 9043 9044 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/usePreviousValue.mjs 9045 var React52 = __toESM(require_react(), 1); 9046 function usePreviousValue(value) { 9047 const [state, setState] = React52.useState({ 9048 current: value, 9049 previous: null 9050 }); 9051 if (!Object.is(value, state.current)) { 9052 setState({ 9053 current: value, 9054 previous: state.current 9055 }); 9056 } 9057 return state.previous; 9058 } 9059 9060 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/direction-provider/DirectionProvider.mjs 9061 var React53 = __toESM(require_react(), 1); 9062 var import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1); 9063 var DirectionProvider = function DirectionProvider2(props) { 9064 const { 9065 direction = "ltr" 9066 } = props; 9067 const contextValue = React53.useMemo(() => ({ 9068 direction 9069 }), [direction]); 9070 return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(DirectionContext.Provider, { 9071 value: contextValue, 9072 children: props.children 9073 }); 9074 }; 9075 if (true) DirectionProvider.displayName = "DirectionProvider"; 9076 9077 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/isElementDisabled.mjs 9078 function isElementDisabled(element) { 9079 return element == null || element.hasAttribute("disabled") || element.getAttribute("aria-disabled") === "true"; 9080 } 9081 9082 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/csp-context/CSPContext.mjs 9083 var React54 = __toESM(require_react(), 1); 9084 var CSPContext = /* @__PURE__ */ React54.createContext(void 0); 9085 if (true) CSPContext.displayName = "CSPContext"; 9086 var DEFAULT_CSP_CONTEXT_VALUE = { 9087 disableStyleElements: false 9088 }; 9089 function useCSPContext() { 9090 return React54.useContext(CSPContext) ?? DEFAULT_CSP_CONTEXT_VALUE; 9091 } 9092 9093 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/clamp.mjs 9094 function clamp2(val, min2 = Number.MIN_SAFE_INTEGER, max2 = Number.MAX_SAFE_INTEGER) { 9095 return Math.max(min2, Math.min(val, max2)); 9096 } 9097 9098 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/index.parts.mjs 9099 var index_parts_exports = {}; 9100 __export(index_parts_exports, { 9101 Control: () => FieldControl, 9102 Description: () => FieldDescription, 9103 Error: () => FieldError, 9104 Item: () => FieldItem, 9105 Label: () => FieldLabel, 9106 Root: () => FieldRoot, 9107 Validity: () => FieldValidity 9108 }); 9109 9110 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/root/FieldRoot.mjs 9111 var React58 = __toESM(require_react(), 1); 9112 9113 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/fieldset/root/FieldsetRootContext.mjs 9114 var React55 = __toESM(require_react(), 1); 9115 var FieldsetRootContext = /* @__PURE__ */ React55.createContext(void 0); 9116 if (true) FieldsetRootContext.displayName = "FieldsetRootContext"; 9117 function useFieldsetRootContext(optional = false) { 9118 const context = React55.useContext(FieldsetRootContext); 9119 if (!context && !optional) { 9120 throw new Error(true ? "Base UI: FieldsetRootContext is missing. Fieldset parts must be placed within <Fieldset.Root>." : formatErrorMessage_default(86)); 9121 } 9122 return context; 9123 } 9124 9125 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/labelable-provider/LabelableProvider.mjs 9126 var React56 = __toESM(require_react(), 1); 9127 var import_jsx_runtime16 = __toESM(require_jsx_runtime(), 1); 9128 var LabelableProvider = function LabelableProvider2(props) { 9129 const defaultId = useBaseUiId(); 9130 const [controlIdState, setControlIdState] = React56.useState(defaultId); 9131 const [labelId, setLabelId] = React56.useState(); 9132 const [messageIds, setMessageIds] = React56.useState([]); 9133 const controlId = controlIdState === void 0 ? defaultId : controlIdState; 9134 const registrationsRef = useRefWithInit(() => /* @__PURE__ */ new Map()); 9135 const { 9136 messageIds: parentMessageIds 9137 } = useLabelableContext(); 9138 const registerControlId = useStableCallback((source, nextId) => { 9139 const registrations = registrationsRef.current; 9140 if (nextId === void 0) { 9141 registrations.delete(source); 9142 } else { 9143 registrations.set(source, nextId); 9144 } 9145 setControlIdState((prev) => { 9146 if (registrations.size === 0) { 9147 return prev; 9148 } 9149 let nextControlId; 9150 for (const id of registrations.values()) { 9151 if (id === prev) { 9152 return prev; 9153 } 9154 if (nextControlId === void 0) { 9155 nextControlId = id; 9156 } 9157 } 9158 return nextControlId; 9159 }); 9160 }); 9161 const resetControlId = useStableCallback(() => { 9162 if (registrationsRef.current.size === 0) { 9163 setControlIdState(defaultId); 9164 } 9165 }); 9166 const getDescriptionProps = React56.useCallback((externalProps) => { 9167 const ids = externalProps["aria-describedby"] ? externalProps["aria-describedby"].split(" ") : []; 9168 ids.push(...parentMessageIds, ...messageIds); 9169 return { 9170 ...externalProps, 9171 "aria-describedby": Array.from(new Set(ids)).join(" ") || void 0 9172 }; 9173 }, [parentMessageIds, messageIds]); 9174 const contextValue = React56.useMemo(() => ({ 9175 controlId, 9176 registerControlId, 9177 resetControlId, 9178 labelId, 9179 setLabelId, 9180 messageIds, 9181 setMessageIds, 9182 getDescriptionProps 9183 }), [controlId, registerControlId, resetControlId, labelId, setLabelId, messageIds, setMessageIds, getDescriptionProps]); 9184 return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(LabelableContext.Provider, { 9185 value: contextValue, 9186 children: props.children 9187 }); 9188 }; 9189 if (true) LabelableProvider.displayName = "LabelableProvider"; 9190 9191 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/field-register-control/useFieldControlRegistration.mjs 9192 var React57 = __toESM(require_react(), 1); 9193 function useFieldControlRegistration(params) { 9194 const { 9195 change, 9196 commit, 9197 invalid: invalid2, 9198 markedDirtyRef, 9199 name: name3, 9200 setRegisteredFieldName, 9201 registeredFieldIdRef, 9202 setValidityData, 9203 validityData 9204 } = params; 9205 const { 9206 formRef 9207 } = useFormContext(); 9208 const activeFieldControlSourceRef = React57.useRef(null); 9209 const registrationRef = React57.useRef(null); 9210 const initialValueCapturedRef = React57.useRef(false); 9211 const getValueForForm = useStableCallback(() => { 9212 const registration = registrationRef.current; 9213 if (!registration) { 9214 return void 0; 9215 } 9216 if (registration.getValue) { 9217 return registration.getValue(); 9218 } 9219 return registration.value; 9220 }); 9221 function getRegistrationValue(registration) { 9222 return registration.value === void 0 ? getValueForForm() : registration.value; 9223 } 9224 const validate = useStableCallback(() => { 9225 const registration = registrationRef.current; 9226 markedDirtyRef.current = true; 9227 if (!registration) { 9228 commit(validityData.value); 9229 return; 9230 } 9231 commit(getRegistrationValue(registration)); 9232 }); 9233 function refreshRegistration() { 9234 const registration = registrationRef.current; 9235 if (!registration || !registration.id) { 9236 return; 9237 } 9238 formRef.current.fields.set(registration.id, { 9239 getValue: getValueForForm, 9240 name: name3 ?? registration.name, 9241 controlRef: registration.controlRef, 9242 validityData: getCombinedFieldValidityData(validityData, invalid2), 9243 validate 9244 }); 9245 } 9246 function deleteRegistration(id = registrationRef.current?.id) { 9247 if (id) { 9248 formRef.current.fields.delete(id); 9249 } 9250 } 9251 function captureInitialValue(registration) { 9252 if (initialValueCapturedRef.current) { 9253 return; 9254 } 9255 initialValueCapturedRef.current = true; 9256 const initialValue = getRegistrationValue(registration); 9257 setValidityData((prev) => prev.initialValue === initialValue ? prev : { 9258 ...prev, 9259 initialValue 9260 }); 9261 } 9262 useIsoLayoutEffect(() => { 9263 const registration = registrationRef.current; 9264 if (!registration || !registration.id) { 9265 return; 9266 } 9267 setRegisteredFieldName(name3 ? void 0 : registration.name); 9268 formRef.current.fields.set(registration.id, { 9269 getValue: getValueForForm, 9270 name: name3 ?? registration.name, 9271 controlRef: registration.controlRef, 9272 validityData: getCombinedFieldValidityData(validityData, invalid2), 9273 validate 9274 }); 9275 }, [formRef, getValueForForm, invalid2, name3, setRegisteredFieldName, validate, validityData]); 9276 useIsoLayoutEffect(() => { 9277 const fields = formRef.current.fields; 9278 return () => { 9279 const id = registrationRef.current?.id; 9280 if (id) { 9281 fields.delete(id); 9282 } 9283 }; 9284 }, [formRef]); 9285 const register2 = useStableCallback((source, registration) => { 9286 if (!registration) { 9287 if (activeFieldControlSourceRef.current === source) { 9288 activeFieldControlSourceRef.current = null; 9289 change(void 0, true); 9290 deleteRegistration(); 9291 registrationRef.current = null; 9292 setRegisteredFieldName(void 0); 9293 registeredFieldIdRef.current = void 0; 9294 } 9295 return; 9296 } 9297 const previousId = registrationRef.current?.id; 9298 const previousSource = activeFieldControlSourceRef.current; 9299 if (previousSource && previousSource !== source) { 9300 change(void 0, true); 9301 } 9302 activeFieldControlSourceRef.current = source; 9303 registrationRef.current = registration; 9304 if (!name3) { 9305 setRegisteredFieldName(registration.name); 9306 } 9307 registeredFieldIdRef.current = registration.id; 9308 if (previousId && previousId !== registration.id) { 9309 deleteRegistration(previousId); 9310 } 9311 captureInitialValue(registration); 9312 refreshRegistration(); 9313 }); 9314 return [validate, register2]; 9315 } 9316 9317 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/root/FieldRoot.mjs 9318 var import_jsx_runtime17 = __toESM(require_jsx_runtime(), 1); 9319 var FieldRootInner = /* @__PURE__ */ React58.forwardRef(function FieldRootInner2(componentProps, forwardedRef) { 9320 const { 9321 errors, 9322 validationMode: formValidationMode, 9323 submitCountRef 9324 } = useFormContext(); 9325 const { 9326 render, 9327 className, 9328 validate: validateProp, 9329 validationDebounceTime = 0, 9330 validationMode = formValidationMode, 9331 name: name3, 9332 disabled: disabledProp = false, 9333 invalid: invalidProp, 9334 dirty: dirtyProp, 9335 touched: touchedProp, 9336 actionsRef, 9337 style, 9338 ...elementProps 9339 } = componentProps; 9340 const disabledFieldset = useFieldsetRootContext(true)?.disabled; 9341 const validate = useStableCallback(validateProp || (() => null)); 9342 const disabled2 = disabledFieldset || disabledProp; 9343 const [touchedState, setTouchedUnwrapped] = React58.useState(false); 9344 const [dirtyState, setDirtyUnwrapped] = React58.useState(false); 9345 const [filled, setFilled] = React58.useState(false); 9346 const [focused, setFocused] = React58.useState(false); 9347 const focusOwnerRef = React58.useRef(void 0); 9348 const dirty = dirtyProp ?? dirtyState; 9349 const touched = touchedProp ?? touchedState; 9350 const markedDirtyRef = React58.useRef(dirty); 9351 const registeredFieldIdRef = React58.useRef(void 0); 9352 const [registeredFieldName, setRegisteredFieldName] = React58.useState(); 9353 const effectiveName = name3 ?? registeredFieldName; 9354 useIsoLayoutEffect(() => { 9355 if (dirtyProp !== void 0) { 9356 markedDirtyRef.current = dirtyProp; 9357 } 9358 }, [dirtyProp]); 9359 const setDirty = useStableCallback((value) => { 9360 if (dirtyProp !== void 0) { 9361 return; 9362 } 9363 if (value) { 9364 markedDirtyRef.current = true; 9365 } 9366 setDirtyUnwrapped(value); 9367 }); 9368 const setTouched = useStableCallback((value) => { 9369 if (touchedProp !== void 0) { 9370 return; 9371 } 9372 setTouchedUnwrapped(value); 9373 }); 9374 const shouldValidateOnChange = useStableCallback(() => validationMode === "onChange" || validationMode === "onSubmit" && submitCountRef.current > 0); 9375 const formError = effectiveName && Object.hasOwn(errors, effectiveName) ? errors[effectiveName] : null; 9376 const hasFormError = !!(Array.isArray(formError) ? formError.length : formError); 9377 const invalid2 = invalidProp === true || hasFormError; 9378 const [validityData, setValidityData] = React58.useState({ 9379 state: DEFAULT_VALIDITY_STATE, 9380 error: "", 9381 errors: [], 9382 value: null, 9383 initialValue: null 9384 }); 9385 const valid2 = !invalid2 && (disabled2 ? null : validityData.state.valid); 9386 const state = React58.useMemo(() => ({ 9387 disabled: disabled2, 9388 touched, 9389 dirty, 9390 valid: valid2, 9391 filled, 9392 focused 9393 }), [disabled2, touched, dirty, valid2, filled, focused]); 9394 const validation = useFieldValidation({ 9395 setValidityData, 9396 validate, 9397 validityData, 9398 validationDebounceTime, 9399 invalid: invalid2, 9400 markedDirtyRef, 9401 state, 9402 shouldValidateOnChange, 9403 validationMode, 9404 registeredFieldIdRef 9405 }); 9406 const [validateFieldControl, registerFieldControl] = useFieldControlRegistration({ 9407 change: validation.change, 9408 commit: validation.commit, 9409 invalid: invalid2, 9410 markedDirtyRef, 9411 name: name3, 9412 setRegisteredFieldName, 9413 registeredFieldIdRef, 9414 setValidityData, 9415 validityData 9416 }); 9417 React58.useImperativeHandle(actionsRef, () => ({ 9418 validate: validateFieldControl 9419 }), [validateFieldControl]); 9420 const contextValue = React58.useMemo(() => ({ 9421 invalid: invalid2, 9422 name: effectiveName, 9423 validityData, 9424 setValidityData, 9425 disabled: disabled2, 9426 setTouched, 9427 setDirty, 9428 setFilled, 9429 setFocused, 9430 focusOwnerRef, 9431 validationMode, 9432 shouldValidateOnChange, 9433 state, 9434 registerFieldControl, 9435 validation 9436 }), [invalid2, effectiveName, validityData, disabled2, setTouched, setDirty, setFilled, setFocused, validationMode, shouldValidateOnChange, state, registerFieldControl, validation]); 9437 const element = useRenderElement("div", componentProps, { 9438 ref: forwardedRef, 9439 state, 9440 props: elementProps, 9441 stateAttributesMapping: fieldValidityMapping 9442 }); 9443 return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(FieldRootContext.Provider, { 9444 value: contextValue, 9445 children: element 9446 }); 9447 }); 9448 if (true) FieldRootInner.displayName = "FieldRootInner"; 9449 var FieldRoot = /* @__PURE__ */ React58.forwardRef(function FieldRoot2(componentProps, forwardedRef) { 9450 return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(LabelableProvider, { 9451 children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(FieldRootInner, { 9452 ...componentProps, 9453 ref: forwardedRef 9454 }) 9455 }); 9456 }); 9457 if (true) FieldRoot.displayName = "FieldRoot"; 9458 9459 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/label/FieldLabel.mjs 9460 var React59 = __toESM(require_react(), 1); 9461 var FieldLabel = /* @__PURE__ */ React59.forwardRef(function FieldLabel2(componentProps, forwardedRef) { 9462 const { 9463 render, 9464 className, 9465 style, 9466 id: idProp, 9467 nativeLabel = true, 9468 ...elementProps 9469 } = componentProps; 9470 const fieldRootContext = useFieldRootContext(false); 9471 const fieldItemContext = useFieldItemContext(); 9472 const { 9473 labelId 9474 } = useLabelableContext(); 9475 const state = { 9476 ...fieldRootContext.state, 9477 disabled: fieldRootContext.disabled || fieldItemContext.disabled 9478 }; 9479 const labelRef = React59.useRef(null); 9480 const labelProps = useLabel({ 9481 id: labelId ?? idProp, 9482 native: nativeLabel 9483 }); 9484 if (true) { 9485 React59.useEffect(() => { 9486 if (!labelRef.current) { 9487 return; 9488 } 9489 const isLabelTag = labelRef.current.tagName === "LABEL"; 9490 if (nativeLabel) { 9491 if (!isLabelTag) { 9492 const ownerStackMessage = SafeReact.captureOwnerStack?.() || ""; 9493 const message = "<Field.Label> expected a <label> element because the `nativeLabel` prop is true. Rendering a non-<label> disables native label association, so `htmlFor` will not work. Use a real <label> in the `render` prop, or set `nativeLabel` to `false`."; 9494 error(`$message}$ownerStackMessage}`); 9495 } 9496 } else if (isLabelTag) { 9497 const ownerStackMessage = SafeReact.captureOwnerStack?.() || ""; 9498 const message = "<Field.Label> expected a non-<label> element because the `nativeLabel` prop is false. Rendering a <label> assumes native label behavior while Base UI treats it as non-native, which can cause unexpected pointer behavior. Use a non-<label> in the `render` prop, or set `nativeLabel` to `true`."; 9499 error(`$message}$ownerStackMessage}`); 9500 } 9501 }, [nativeLabel]); 9502 } 9503 const element = useRenderElement("label", componentProps, { 9504 ref: [forwardedRef, labelRef], 9505 state, 9506 props: [labelProps, elementProps], 9507 stateAttributesMapping: fieldValidityMapping 9508 }); 9509 return element; 9510 }); 9511 if (true) FieldLabel.displayName = "FieldLabel"; 9512 9513 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/error/FieldError.mjs 9514 var React60 = __toESM(require_react(), 1); 9515 var import_jsx_runtime18 = __toESM(require_jsx_runtime(), 1); 9516 var stateAttributesMapping = { 9517 ...fieldValidityMapping, 9518 ...transitionStatusMapping 9519 }; 9520 var FieldError = /* @__PURE__ */ React60.forwardRef(function FieldError2(componentProps, forwardedRef) { 9521 const { 9522 render, 9523 id: idProp, 9524 className, 9525 match, 9526 style, 9527 ...elementProps 9528 } = componentProps; 9529 const id = useBaseUiId(idProp); 9530 const { 9531 validityData, 9532 state: fieldState, 9533 name: name3 9534 } = useFieldRootContext(false); 9535 const { 9536 setMessageIds 9537 } = useLabelableContext(); 9538 const { 9539 errors 9540 } = useFormContext(); 9541 const formError = name3 && Object.hasOwn(errors, name3) ? errors[name3] : null; 9542 const hasFormError = !!(Array.isArray(formError) ? formError.length : formError); 9543 const hasSpecificMatch = typeof match === "string"; 9544 let rendered = false; 9545 if (match === true) { 9546 rendered = true; 9547 } else if (fieldState.disabled) { 9548 rendered = false; 9549 } else if (hasSpecificMatch) { 9550 rendered = Boolean(validityData.state[match]); 9551 } else { 9552 rendered = hasFormError || validityData.state.valid === false; 9553 } 9554 const { 9555 mounted, 9556 transitionStatus, 9557 setMounted 9558 } = useTransitionStatus(rendered); 9559 useIsoLayoutEffect(() => { 9560 if (!rendered || !id) { 9561 return void 0; 9562 } 9563 setMessageIds((v) => v.concat(id)); 9564 return () => { 9565 setMessageIds((v) => v.filter((item) => item !== id)); 9566 }; 9567 }, [rendered, id, setMessageIds]); 9568 const errorRef = React60.useRef(null); 9569 const [lastRenderedMessage, setLastRenderedMessage] = React60.useState(null); 9570 const [lastRenderedMessageKey, setLastRenderedMessageKey] = React60.useState(null); 9571 let error2 = validityData.error; 9572 if (!hasSpecificMatch && hasFormError) { 9573 error2 = formError; 9574 } else if (validityData.errors.length > 1) { 9575 error2 = validityData.errors; 9576 } 9577 let errorMessage = error2; 9578 if (Array.isArray(error2)) { 9579 errorMessage = error2.length > 1 ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("ul", { 9580 children: error2.map((message) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("li", { 9581 children: message 9582 }, message)) 9583 }) : error2[0]; 9584 } 9585 const errorKey = Array.isArray(error2) ? JSON.stringify(error2) : error2; 9586 if (rendered && errorKey !== lastRenderedMessageKey) { 9587 setLastRenderedMessageKey(errorKey); 9588 setLastRenderedMessage(errorMessage); 9589 } 9590 useOpenChangeComplete({ 9591 open: rendered, 9592 ref: errorRef, 9593 onComplete() { 9594 if (!rendered) { 9595 setMounted(false); 9596 } 9597 } 9598 }); 9599 const state = { 9600 ...fieldState, 9601 transitionStatus 9602 }; 9603 const element = useRenderElement("div", componentProps, { 9604 ref: [forwardedRef, errorRef], 9605 state, 9606 props: [{ 9607 id, 9608 children: rendered ? errorMessage : lastRenderedMessage 9609 }, elementProps], 9610 stateAttributesMapping, 9611 enabled: mounted 9612 }); 9613 if (!mounted) { 9614 return null; 9615 } 9616 return element; 9617 }); 9618 if (true) FieldError.displayName = "FieldError"; 9619 9620 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/description/FieldDescription.mjs 9621 var React61 = __toESM(require_react(), 1); 9622 var FieldDescription = /* @__PURE__ */ React61.forwardRef(function FieldDescription2(componentProps, forwardedRef) { 9623 const { 9624 render, 9625 id: idProp, 9626 className, 9627 style, 9628 ...elementProps 9629 } = componentProps; 9630 const id = useBaseUiId(idProp); 9631 const fieldRootContext = useFieldRootContext(false); 9632 const fieldItemContext = useFieldItemContext(); 9633 const { 9634 setMessageIds 9635 } = useLabelableContext(); 9636 const state = { 9637 ...fieldRootContext.state, 9638 disabled: fieldRootContext.disabled || fieldItemContext.disabled 9639 }; 9640 useIsoLayoutEffect(() => { 9641 if (!id) { 9642 return void 0; 9643 } 9644 setMessageIds((v) => v.concat(id)); 9645 return () => { 9646 setMessageIds((v) => v.filter((item) => item !== id)); 9647 }; 9648 }, [id, setMessageIds]); 9649 const element = useRenderElement("p", componentProps, { 9650 ref: forwardedRef, 9651 state, 9652 props: [{ 9653 id 9654 }, elementProps], 9655 stateAttributesMapping: fieldValidityMapping 9656 }); 9657 return element; 9658 }); 9659 if (true) FieldDescription.displayName = "FieldDescription"; 9660 9661 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/control/FieldControl.mjs 9662 var React62 = __toESM(require_react(), 1); 9663 var FieldControl = /* @__PURE__ */ React62.forwardRef(function FieldControl2(componentProps, forwardedRef) { 9664 const { 9665 render, 9666 className, 9667 id: idProp, 9668 name: nameProp, 9669 value, 9670 disabled: disabledProp = false, 9671 onValueChange, 9672 defaultValue, 9673 autoFocus = false, 9674 style, 9675 ...elementProps 9676 } = componentProps; 9677 const { 9678 state: fieldState, 9679 name: fieldName, 9680 disabled: fieldDisabled, 9681 setTouched, 9682 setDirty, 9683 validityData, 9684 setFilled, 9685 validationMode, 9686 validation 9687 } = useFieldRootContext(); 9688 const { 9689 clearErrors, 9690 elementRef: formElementRef, 9691 submitCountRef 9692 } = useFormContext(); 9693 const disabled2 = fieldDisabled || disabledProp; 9694 const name3 = fieldName ?? nameProp; 9695 const state = { 9696 ...fieldState, 9697 disabled: disabled2 9698 }; 9699 const { 9700 labelId 9701 } = useLabelableContext(); 9702 const id = useLabelableId({ 9703 id: idProp 9704 }); 9705 const isControlled = value !== void 0; 9706 const serializedValue = value == null ? void 0 : String(value); 9707 const getValueFromInput = useStableCallback(() => validation.inputRef.current?.value); 9708 useRegisterFieldControl(validation.inputRef, id, serializedValue, getValueFromInput, !disabled2, nameProp); 9709 useIsoLayoutEffect(() => { 9710 const currentValue = serializedValue ?? validation.inputRef.current?.value; 9711 if (currentValue !== void 0) { 9712 setFilled(currentValue !== ""); 9713 } 9714 }, [serializedValue, defaultValue, validation.inputRef, setFilled]); 9715 useValueChanged(serializedValue, () => { 9716 if (serializedValue === void 0) { 9717 return; 9718 } 9719 clearErrors(name3); 9720 setDirty(serializedValue !== (validityData.initialValue ?? "")); 9721 validation.change(serializedValue); 9722 }); 9723 const inputRef = React62.useRef(null); 9724 const setFocused = useSetFieldFocused(disabled2, inputRef); 9725 const enterValidationTimeout = useTimeout(); 9726 const element = useRenderElement("input", componentProps, { 9727 ref: [forwardedRef, inputRef], 9728 state, 9729 props: [{ 9730 id, 9731 disabled: disabled2, 9732 name: name3, 9733 ref: validation.inputRef, 9734 "aria-labelledby": labelId, 9735 autoFocus, 9736 ...isControlled ? { 9737 value 9738 } : { 9739 defaultValue 9740 }, 9741 onChange(event) { 9742 const inputValue = event.currentTarget.value; 9743 const details = createChangeEventDetails(reason_parts_exports.none, event.nativeEvent); 9744 onValueChange?.(inputValue, details); 9745 if (isControlled) { 9746 return; 9747 } 9748 setDirty(inputValue !== (validityData.initialValue ?? "")); 9749 setFilled(inputValue !== ""); 9750 if (!event.nativeEvent.defaultPrevented && !details.isCanceled) { 9751 clearErrors(name3); 9752 validation.change(inputValue); 9753 } 9754 }, 9755 onFocus() { 9756 setFocused(true); 9757 }, 9758 onBlur(event) { 9759 setTouched(true); 9760 setFocused(false); 9761 if (validationMode === "onBlur") { 9762 const inputValue = event.currentTarget.value; 9763 validation.commit(inputValue); 9764 if (isControlled) { 9765 queueMicrotask(() => { 9766 const nextValue = validation.inputRef.current?.value; 9767 if (nextValue !== void 0 && nextValue !== inputValue && nextValue !== (validityData.initialValue ?? "")) { 9768 validation.commit(nextValue); 9769 } 9770 }); 9771 } 9772 } 9773 }, 9774 onKeyDown(event) { 9775 if (event.currentTarget.tagName === "INPUT" && event.key === "Enter") { 9776 setTouched(true); 9777 const value2 = event.currentTarget.value; 9778 const form = event.currentTarget.form; 9779 if (form && form === formElementRef.current && !event.defaultPrevented) { 9780 const input = event.currentTarget; 9781 const submitCount = submitCountRef.current; 9782 enterValidationTimeout.start(0, () => { 9783 if (submitCountRef.current === submitCount) { 9784 validation.commit(input.value); 9785 } 9786 }); 9787 } else { 9788 validation.commit(value2); 9789 } 9790 } 9791 } 9792 }, elementProps, (props) => validation.getValidationProps(disabled2, props)], 9793 stateAttributesMapping: fieldValidityMapping 9794 }); 9795 return element; 9796 }); 9797 if (true) FieldControl.displayName = "FieldControl"; 9798 9799 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/validity/FieldValidity.mjs 9800 var React63 = __toESM(require_react(), 1); 9801 var import_jsx_runtime19 = __toESM(require_jsx_runtime(), 1); 9802 var FieldValidity = function FieldValidity2(props) { 9803 const { 9804 children 9805 } = props; 9806 const { 9807 validityData, 9808 invalid: invalid2 9809 } = useFieldRootContext(false); 9810 const combinedFieldValidityData = React63.useMemo(() => getCombinedFieldValidityData(validityData, invalid2), [validityData, invalid2]); 9811 const isInvalid = combinedFieldValidityData.state.valid === false; 9812 const { 9813 transitionStatus 9814 } = useTransitionStatus(isInvalid); 9815 const fieldValidityState = React63.useMemo(() => { 9816 return { 9817 ...combinedFieldValidityData, 9818 validity: combinedFieldValidityData.state, 9819 transitionStatus 9820 }; 9821 }, [combinedFieldValidityData, transitionStatus]); 9822 return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(React63.Fragment, { 9823 children: children(fieldValidityState) 9824 }); 9825 }; 9826 if (true) FieldValidity.displayName = "FieldValidity"; 9827 9828 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/item/FieldItem.mjs 9829 var React64 = __toESM(require_react(), 1); 9830 var import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1); 9831 var FieldItem = /* @__PURE__ */ React64.forwardRef(function FieldItem2(componentProps, forwardedRef) { 9832 const { 9833 render, 9834 className, 9835 style, 9836 disabled: disabledProp = false, 9837 ...elementProps 9838 } = componentProps; 9839 const { 9840 state: fieldState, 9841 disabled: rootDisabled 9842 } = useFieldRootContext(false); 9843 const disabled2 = rootDisabled || disabledProp; 9844 const state = { 9845 ...fieldState, 9846 disabled: disabled2 9847 }; 9848 const fieldItemContext = React64.useMemo(() => ({ 9849 disabled: disabled2 9850 }), [disabled2]); 9851 const element = useRenderElement("div", componentProps, { 9852 ref: forwardedRef, 9853 state, 9854 props: elementProps, 9855 stateAttributesMapping: fieldValidityMapping 9856 }); 9857 return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(LabelableProvider, { 9858 children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(FieldItemContext.Provider, { 9859 value: fieldItemContext, 9860 children: element 9861 }) 9862 }); 9863 }); 9864 if (true) FieldItem.displayName = "FieldItem"; 9865 9866 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/styles.mjs 9867 var import_jsx_runtime21 = __toESM(require_jsx_runtime(), 1); 9868 var DISABLE_SCROLLBAR_CLASS_NAME = "base-ui-disable-scrollbar"; 9869 var styleDisableScrollbar = { 9870 className: DISABLE_SCROLLBAR_CLASS_NAME, 9871 getElement(nonce) { 9872 return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("style", { 9873 nonce, 9874 href: DISABLE_SCROLLBAR_CLASS_NAME, 9875 precedence: "base-ui:low", 9876 children: `.$DISABLE_SCROLLBAR_CLASS_NAME}{scrollbar-width:none}.$DISABLE_SCROLLBAR_CLASS_NAME}::-webkit-scrollbar{display:none}` 9877 }); 9878 } 9879 }; 9880 if (true) styleDisableScrollbar.getElement.displayName = "styleDisableScrollbar.getElement"; 9881 9882 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/scrollEdges.mjs 9883 var SCROLL_EDGE_TOLERANCE_PX = 1; 9884 function getMaxScrollOffset(scrollSize, clientSize) { 9885 return Math.max(0, scrollSize - clientSize); 9886 } 9887 function normalizeScrollOffset(value, max2) { 9888 if (max2 <= 0) { 9889 return 0; 9890 } 9891 const clamped = clamp2(value, 0, max2); 9892 const startDistance = clamped; 9893 const endDistance = max2 - clamped; 9894 const withinStartTolerance = startDistance <= SCROLL_EDGE_TOLERANCE_PX; 9895 const withinEndTolerance = endDistance <= SCROLL_EDGE_TOLERANCE_PX; 9896 if (withinStartTolerance && withinEndTolerance) { 9897 return startDistance <= endDistance ? 0 : max2; 9898 } 9899 if (withinStartTolerance) { 9900 return 0; 9901 } 9902 if (withinEndTolerance) { 9903 return max2; 9904 } 9905 return clamped; 9906 } 9907 9908 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/index.parts.mjs 9909 var index_parts_exports2 = {}; 9910 __export(index_parts_exports2, { 9911 Arrow: () => SelectArrow, 9912 Backdrop: () => SelectBackdrop, 9913 Group: () => SelectGroup, 9914 GroupLabel: () => SelectGroupLabel, 9915 Icon: () => SelectIcon, 9916 Item: () => SelectItem, 9917 ItemIndicator: () => SelectItemIndicator, 9918 ItemText: () => SelectItemText, 9919 Label: () => SelectLabel, 9920 List: () => SelectList, 9921 Popup: () => SelectPopup, 9922 Portal: () => SelectPortal, 9923 Positioner: () => SelectPositioner, 9924 Root: () => SelectRoot, 9925 ScrollDownArrow: () => SelectScrollDownArrow, 9926 ScrollUpArrow: () => SelectScrollUpArrow, 9927 Separator: () => SelectSeparator, 9928 Trigger: () => SelectTrigger, 9929 Value: () => SelectValue 9930 }); 9931 9932 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/root/SelectRoot.mjs 9933 var React66 = __toESM(require_react(), 1); 9934 9935 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/root/SelectRootContext.mjs 9936 var React65 = __toESM(require_react(), 1); 9937 var SelectRootContext = /* @__PURE__ */ React65.createContext(void 0); 9938 if (true) SelectRootContext.displayName = "SelectRootContext"; 9939 var SelectFloatingContext = /* @__PURE__ */ React65.createContext(void 0); 9940 if (true) SelectFloatingContext.displayName = "SelectFloatingContext"; 9941 function useSelectRootContext() { 9942 const store = React65.useContext(SelectRootContext); 9943 if (store === void 0) { 9944 throw new Error(true ? "Base UI: SelectRootContext is missing. Select parts must be placed within <Select.Root>." : formatErrorMessage_default(60)); 9945 } 9946 return store; 9947 } 9948 function useSelectFloatingContext() { 9949 const context = React65.useContext(SelectFloatingContext); 9950 if (context === void 0) { 9951 throw new Error(true ? "Base UI: SelectFloatingContext is missing. Select parts must be placed within <Select.Root>." : formatErrorMessage_default(61)); 9952 } 9953 return context; 9954 } 9955 9956 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/store.mjs 9957 var selectors2 = { 9958 id: (state) => state.id, 9959 labelId: (state) => state.labelId, 9960 modal: (state) => state.modal, 9961 multiple: (state) => state.multiple, 9962 disabled: (state) => state.disabled, 9963 readOnly: (state) => state.readOnly, 9964 required: (state) => state.required, 9965 highlightItemOnHover: (state) => state.highlightItemOnHover, 9966 items: (state) => state.items, 9967 itemToStringLabel: (state) => state.itemToStringLabel, 9968 isItemEqualToValue: (state) => state.isItemEqualToValue, 9969 value: (state) => state.value, 9970 hasSelectedValue: (state) => { 9971 const { 9972 value, 9973 multiple, 9974 itemToStringValue 9975 } = state; 9976 if (value == null) { 9977 return false; 9978 } 9979 if (multiple && Array.isArray(value)) { 9980 return value.length > 0; 9981 } 9982 return stringifyAsValue(value, itemToStringValue) !== ""; 9983 }, 9984 hasNullItemLabel: (state, enabled) => { 9985 return enabled ? hasNullItemLabel(state.items) : false; 9986 }, 9987 open: (state) => state.open, 9988 mounted: (state) => state.mounted, 9989 forceMount: (state) => state.forceMount, 9990 transitionStatus: (state) => state.transitionStatus, 9991 openMethod: (state) => state.openMethod, 9992 activeIndex: (state) => state.activeIndex, 9993 selectedIndex: (state) => state.selectedIndex, 9994 isActive: (state, index2) => state.activeIndex === index2, 9995 isSelected: (state, itemValue) => { 9996 const comparer = state.isItemEqualToValue; 9997 const storeValue = state.value; 9998 if (state.multiple) { 9999 return Array.isArray(storeValue) && storeValue.some((selectedItem) => compareItemEquality(itemValue, selectedItem, comparer)); 10000 } 10001 return compareItemEquality(itemValue, storeValue, comparer); 10002 }, 10003 isSelectedByFocus: (state, index2) => { 10004 return state.selectedIndex === index2; 10005 }, 10006 popupProps: (state) => state.popupProps, 10007 triggerProps: (state) => state.triggerProps, 10008 itemRoot: (state) => state.itemRoot, 10009 triggerElement: (state) => state.triggerElement, 10010 positionerElement: (state) => state.positionerElement, 10011 listElement: (state) => state.listElement, 10012 popupSide: (state) => state.popupSide, 10013 scrollUpArrowVisible: (state) => state.scrollUpArrowVisible, 10014 scrollDownArrowVisible: (state) => state.scrollDownArrowVisible, 10015 hasScrollArrows: (state) => state.hasScrollArrows 10016 }; 10017 10018 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/root/SelectRoot.mjs 10019 var import_jsx_runtime22 = __toESM(require_jsx_runtime(), 1); 10020 function SelectRoot(props) { 10021 const { 10022 id, 10023 value: valueProp, 10024 defaultValue = null, 10025 onValueChange, 10026 open: openProp, 10027 defaultOpen = false, 10028 onOpenChange, 10029 name: nameProp, 10030 form, 10031 autoComplete, 10032 disabled: disabledProp = false, 10033 readOnly = false, 10034 required = false, 10035 modal = true, 10036 actionsRef, 10037 inputRef, 10038 onOpenChangeComplete, 10039 items, 10040 multiple = false, 10041 itemToStringLabel, 10042 itemToStringValue, 10043 isItemEqualToValue = defaultItemEquality, 10044 highlightItemOnHover = true, 10045 children 10046 } = props; 10047 const { 10048 clearErrors 10049 } = useFormContext(); 10050 const { 10051 setDirty, 10052 setTouched, 10053 setFocused, 10054 validityData, 10055 setFilled, 10056 name: fieldName, 10057 disabled: fieldDisabled, 10058 validation, 10059 validationMode 10060 } = useFieldRootContext(); 10061 const generatedId = useLabelableId({ 10062 id 10063 }); 10064 const disabled2 = fieldDisabled || disabledProp; 10065 const name3 = fieldName ?? nameProp; 10066 const [value, setValueUnwrapped] = useControlled({ 10067 controlled: valueProp, 10068 default: multiple ? defaultValue ?? EMPTY_ARRAY : defaultValue, 10069 name: "Select", 10070 state: "value" 10071 }); 10072 const [open2, setOpenUnwrapped] = useControlled({ 10073 controlled: openProp, 10074 default: defaultOpen, 10075 name: "Select", 10076 state: "open" 10077 }); 10078 const listRef = React66.useRef([]); 10079 const labelsRef = React66.useRef([]); 10080 const popupRef = React66.useRef(null); 10081 const scrollHandlerRef = React66.useRef(null); 10082 const scrollArrowsMountedCountRef = React66.useRef(0); 10083 const valueRef = React66.useRef(null); 10084 const valuesRef = React66.useRef([]); 10085 const typingRef = React66.useRef(false); 10086 const firstItemTextRef = React66.useRef(null); 10087 const selectedItemTextRef = React66.useRef(null); 10088 const selectionRef = React66.useRef({ 10089 allowSelectedMouseUp: false, 10090 allowUnselectedMouseUp: false, 10091 dragY: 0 10092 }); 10093 const alignItemWithTriggerActiveRef = React66.useRef(false); 10094 const initialValueRef = React66.useRef(value); 10095 const { 10096 openMethod, 10097 triggerProps: interactionTypeProps 10098 } = useOpenInteractionType(open2); 10099 const store = useRefWithInit(() => new ReactStore({ 10100 id: generatedId, 10101 labelId: void 0, 10102 modal, 10103 multiple, 10104 disabled: disabled2, 10105 readOnly, 10106 required, 10107 highlightItemOnHover, 10108 itemToStringLabel, 10109 itemToStringValue, 10110 isItemEqualToValue, 10111 value, 10112 open: open2, 10113 // Seeded with the initial values of `useUnmountAfterClose`, which is called after the 10114 // store because its unmount cleanup writes to it. `useSyncedValues` keeps them in sync. 10115 mounted: open2, 10116 transitionStatus: void 0, 10117 items, 10118 forceMount: false, 10119 openMethod: null, 10120 activeIndex: null, 10121 selectedIndex: null, 10122 popupProps: EMPTY_OBJECT, 10123 triggerProps: EMPTY_OBJECT, 10124 itemRoot: { 10125 props: EMPTY_OBJECT, 10126 multiple, 10127 disabled: disabled2, 10128 readOnly, 10129 isItemEqualToValue 10130 }, 10131 triggerElement: null, 10132 positionerElement: null, 10133 listElement: null, 10134 popupSide: null, 10135 scrollUpArrowVisible: false, 10136 scrollDownArrowVisible: false, 10137 hasScrollArrows: false 10138 }, { 10139 setValue: NOOP, 10140 setOpen: NOOP, 10141 handleScrollArrowVisibility: NOOP, 10142 onOpenChangeComplete: NOOP, 10143 listRef, 10144 popupRef, 10145 scrollHandlerRef, 10146 scrollArrowsMountedCountRef, 10147 valueRef, 10148 valuesRef, 10149 labelsRef, 10150 typingRef, 10151 selectionRef, 10152 firstItemTextRef, 10153 selectedItemTextRef, 10154 alignItemWithTriggerActiveRef, 10155 initialValueRef 10156 }, selectors2)).current; 10157 const [preventUnmountOnClose, setPreventUnmountOnClose] = React66.useState(false); 10158 const { 10159 mounted, 10160 transitionStatus, 10161 forceUnmount: handleUnmount 10162 } = useUnmountAfterClose({ 10163 open: open2, 10164 ref: popupRef, 10165 preventUnmountOnClose, 10166 setPreventUnmountOnClose, 10167 onUnmount() { 10168 store.update({ 10169 activeIndex: null, 10170 openMethod: null, 10171 scrollUpArrowVisible: false, 10172 scrollDownArrowVisible: false 10173 }); 10174 onOpenChangeComplete?.(false); 10175 } 10176 }); 10177 const activeIndex = store.useState("activeIndex"); 10178 const selectedIndex = store.useState("selectedIndex"); 10179 const triggerElement = store.useState("triggerElement"); 10180 const positionerElement = store.useState("positionerElement"); 10181 const previousOpenMethod = usePreviousValue(openMethod); 10182 const renderedOpenMethod = openMethod ?? previousOpenMethod; 10183 const serializedValue = React66.useMemo(() => { 10184 if (multiple) { 10185 return ""; 10186 } 10187 return stringifyAsValue(value, itemToStringValue); 10188 }, [multiple, value, itemToStringValue]); 10189 const fieldStringValue = React66.useMemo(() => { 10190 if (multiple && Array.isArray(value)) { 10191 return value.map((currentValue) => stringifyAsValue(currentValue, itemToStringValue)); 10192 } 10193 return stringifyAsValue(value, itemToStringValue); 10194 }, [multiple, value, itemToStringValue]); 10195 const controlRef = useValueAsRef(triggerElement); 10196 const getStringifiedValueForForm = useStableCallback(() => fieldStringValue); 10197 useRegisterFieldControl(controlRef, generatedId, value, getStringifiedValueForForm, !disabled2, nameProp); 10198 const hasSelectedValue = multiple ? Array.isArray(value) && value.length > 0 : value != null && serializedValue !== ""; 10199 useIsoLayoutEffect(() => { 10200 setFilled(hasSelectedValue); 10201 }, [hasSelectedValue, setFilled]); 10202 useIsoLayoutEffect(function syncSelectedIndex() { 10203 const nextIndex = findSelectionIndex(valuesRef.current, value, isItemEqualToValue, multiple); 10204 if (nextIndex === null) { 10205 selectedItemTextRef.current = null; 10206 } 10207 if (open2) { 10208 return; 10209 } 10210 store.set("selectedIndex", nextIndex); 10211 }, [multiple, open2, value, isItemEqualToValue, store]); 10212 useValueChanged(value, () => { 10213 clearErrors(name3); 10214 setDirty(isSelectedValueDirty(value, validityData.initialValue, isItemEqualToValue)); 10215 validation.change(value); 10216 }); 10217 const setOpen = useStableCallback((nextOpen, eventDetails) => { 10218 const openEventDetails = eventDetails; 10219 const shouldPreventUnmountOnClose = attachPreventUnmountOnClose(openEventDetails); 10220 onOpenChange?.(nextOpen, openEventDetails); 10221 if (eventDetails.isCanceled) { 10222 return; 10223 } 10224 if (!nextOpen) { 10225 setPreventUnmountOnClose(shouldPreventUnmountOnClose()); 10226 } 10227 setOpenUnwrapped(nextOpen); 10228 if (!nextOpen && (eventDetails.reason === reason_parts_exports.focusOut || eventDetails.reason === reason_parts_exports.outsidePress)) { 10229 setTouched(true); 10230 setFocused(false); 10231 if (validationMode === "onBlur") { 10232 validation.commit(value); 10233 } 10234 } 10235 }); 10236 React66.useImperativeHandle(actionsRef, () => ({ 10237 unmount: handleUnmount, 10238 close: () => { 10239 if (store.state.open) { 10240 setOpen(false, createChangeEventDetails(reason_parts_exports.imperativeAction)); 10241 } 10242 } 10243 }), [handleUnmount, setOpen, store]); 10244 const setValue = useStableCallback((nextValue, eventDetails) => { 10245 onValueChange?.(nextValue, eventDetails); 10246 if (eventDetails.isCanceled) { 10247 return; 10248 } 10249 setValueUnwrapped(nextValue); 10250 }); 10251 const handleScrollArrowVisibility = useStableCallback((scroller) => { 10252 const maxScrollTop = getMaxScrollOffset(scroller.scrollHeight, scroller.clientHeight); 10253 const scrollTop = normalizeScrollOffset(scroller.scrollTop, maxScrollTop); 10254 const shouldShowUp = scrollTop > 0; 10255 const shouldShowDown = scrollTop < maxScrollTop; 10256 store.set("scrollUpArrowVisible", shouldShowUp); 10257 store.set("scrollDownArrowVisible", shouldShowDown); 10258 }); 10259 const floatingContext = useFloatingRootContext({ 10260 open: open2, 10261 onOpenChange: setOpen, 10262 elements: { 10263 reference: triggerElement, 10264 floating: positionerElement 10265 } 10266 }); 10267 const click = useClick(floatingContext, { 10268 enabled: !disabled2, 10269 event: "mousedown" 10270 }); 10271 const dismiss = useDismiss(floatingContext); 10272 const listNavigation2 = useListNavigation(floatingContext, { 10273 enabled: !disabled2, 10274 listRef, 10275 activeIndex, 10276 selectedIndex, 10277 disabledIndices: EMPTY_ARRAY, 10278 onNavigate(nextActiveIndex) { 10279 if (nextActiveIndex === null && !open2) { 10280 return; 10281 } 10282 store.set("activeIndex", nextActiveIndex); 10283 }, 10284 focusItemOnHover: highlightItemOnHover 10285 }); 10286 const typeahead = useTypeahead(floatingContext, { 10287 // Typeahead on an open popup only moves the highlight, so it remains available while 10288 // `readOnly`. The closed-trigger variant commits a value instead, so it doesn't. 10289 enabled: !disabled2 && (open2 || !readOnly && !multiple), 10290 listRef: labelsRef, 10291 activeIndex, 10292 selectedIndex, 10293 // Skip disabled items while matching so typeahead advances to the next selectable item 10294 // (a click can never select a disabled item and native `<select>` skips them too). Resolve 10295 // the disabled state from the element via the attribute-only `isElementDisabled` so the 10296 // hidden, force-mounted items used for closed-trigger typeahead aren't dropped by the 10297 // `elementsRef`/visibility filter that `disabledIndices` deliberately sidesteps. 10298 disabledIndices: (index2) => isElementDisabled(listRef.current[index2]), 10299 onMatch(index2) { 10300 if (open2) { 10301 store.set("activeIndex", index2); 10302 } else { 10303 setValue(valuesRef.current[index2], createChangeEventDetails(reason_parts_exports.none)); 10304 } 10305 }, 10306 onTyping(typing) { 10307 typingRef.current = typing; 10308 } 10309 }); 10310 const mergedTriggerProps = React66.useMemo(() => mergeProps(typeahead.reference, listNavigation2.reference, dismiss.reference, click.reference, interactionTypeProps), [click.reference, typeahead.reference, listNavigation2.reference, dismiss.reference, interactionTypeProps]); 10311 const popupProps = React66.useMemo(() => mergeProps(FOCUSABLE_POPUP_PROPS, typeahead.floating, listNavigation2.floating, dismiss.floating), [typeahead.floating, listNavigation2.floating, dismiss.floating]); 10312 const itemProps = listNavigation2.item ?? EMPTY_OBJECT; 10313 const itemRoot = React66.useMemo(() => ({ 10314 props: itemProps, 10315 multiple, 10316 disabled: disabled2, 10317 readOnly, 10318 isItemEqualToValue 10319 }), [itemProps, multiple, disabled2, readOnly, isItemEqualToValue]); 10320 store.useContextCallback("setValue", setValue); 10321 store.useContextCallback("setOpen", setOpen); 10322 store.useContextCallback("handleScrollArrowVisibility", handleScrollArrowVisibility); 10323 store.useContextCallback("onOpenChangeComplete", onOpenChangeComplete); 10324 useOnFirstRender(() => { 10325 store.update({ 10326 popupProps, 10327 triggerProps: mergedTriggerProps, 10328 itemRoot 10329 }); 10330 }); 10331 store.useSyncedValues({ 10332 id: generatedId, 10333 modal, 10334 multiple, 10335 disabled: disabled2, 10336 readOnly, 10337 required, 10338 highlightItemOnHover, 10339 value, 10340 open: open2, 10341 mounted, 10342 transitionStatus, 10343 popupProps, 10344 triggerProps: mergedTriggerProps, 10345 itemRoot, 10346 items, 10347 itemToStringLabel, 10348 itemToStringValue, 10349 isItemEqualToValue, 10350 openMethod: renderedOpenMethod 10351 }); 10352 const ref = useMergedRefs(inputRef, validation.inputRef); 10353 const hiddenInputName = multiple ? void 0 : name3; 10354 const hiddenInputs = React66.useMemo(() => { 10355 if (!multiple || !Array.isArray(value) || !name3) { 10356 return null; 10357 } 10358 return value.map((v) => { 10359 const currentSerializedValue = stringifyAsValue(v, itemToStringValue); 10360 return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("input", { 10361 type: "hidden", 10362 form, 10363 name: name3, 10364 value: currentSerializedValue, 10365 disabled: disabled2 10366 }, currentSerializedValue); 10367 }); 10368 }, [multiple, value, form, name3, itemToStringValue, disabled2]); 10369 return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(SelectRootContext.Provider, { 10370 value: store, 10371 children: [/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(SelectFloatingContext.Provider, { 10372 value: floatingContext, 10373 children 10374 }), /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("input", { 10375 ...validation.getValidationProps(disabled2, { 10376 onFocus() { 10377 store.state.triggerElement?.focus({ 10378 // Supported in Chrome from 144 (January 2026) 10379 focusVisible: true 10380 }); 10381 }, 10382 // Handle browser autofill. 10383 onChange(event) { 10384 if (event.nativeEvent.defaultPrevented || disabled2 || readOnly) { 10385 return; 10386 } 10387 const nextValue = event.currentTarget.value; 10388 const details = createChangeEventDetails(reason_parts_exports.none, event.nativeEvent); 10389 function handleChange() { 10390 if (multiple) { 10391 return; 10392 } 10393 const nextValueLower = nextValue.toLowerCase(); 10394 let matchingIndex = valuesRef.current.findIndex((candidate) => stringifyAsValue(candidate, itemToStringValue).toLowerCase() === nextValueLower || stringifyAsLabel(candidate, itemToStringLabel).toLowerCase() === nextValueLower); 10395 if (matchingIndex === -1) { 10396 matchingIndex = valuesRef.current.findIndex((_, index2) => { 10397 const renderedLabel = labelsRef.current[index2]; 10398 return renderedLabel != null && renderedLabel.toLowerCase() === nextValueLower; 10399 }); 10400 } 10401 const matchingValue = valuesRef.current[matchingIndex]; 10402 if (matchingValue != null) { 10403 setValue(matchingValue, details); 10404 } 10405 } 10406 store.set("forceMount", true); 10407 queueMicrotask(handleChange); 10408 } 10409 }), 10410 id: generatedId && hiddenInputName == null ? `$generatedId}-hidden-input` : void 0, 10411 form, 10412 name: hiddenInputName, 10413 autoComplete, 10414 value: serializedValue, 10415 disabled: disabled2, 10416 required: required && !(multiple && hasSelectedValue), 10417 readOnly, 10418 ref, 10419 style: name3 ? visuallyHiddenInput : visuallyHidden, 10420 tabIndex: -1, 10421 "aria-hidden": true, 10422 suppressHydrationWarning: true 10423 }), hiddenInputs] 10424 }); 10425 } 10426 10427 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/label/SelectLabel.mjs 10428 var React67 = __toESM(require_react(), 1); 10429 var SelectLabel = /* @__PURE__ */ React67.forwardRef(function SelectLabel2(componentProps, forwardedRef) { 10430 const { 10431 render, 10432 className, 10433 style, 10434 ...elementProps 10435 } = componentProps; 10436 const elementPropsWithoutId = elementProps; 10437 delete elementPropsWithoutId.id; 10438 const fieldRootContext = useFieldRootContext(); 10439 const store = useSelectRootContext(); 10440 const triggerElement = store.useState("triggerElement"); 10441 const rootId = store.useState("id"); 10442 const defaultLabelId = getDefaultLabelId(rootId); 10443 const labelProps = useLabel({ 10444 id: defaultLabelId, 10445 fallbackControlId: triggerElement?.id ?? rootId, 10446 setLabelId(nextLabelId) { 10447 const resolvedLabelId = typeof nextLabelId === "function" ? nextLabelId(store.state.labelId) : nextLabelId; 10448 store.set("labelId", resolvedLabelId); 10449 } 10450 }); 10451 return useRenderElement("div", componentProps, { 10452 ref: forwardedRef, 10453 state: fieldRootContext.state, 10454 props: [labelProps, elementProps], 10455 stateAttributesMapping: fieldValidityMapping 10456 }); 10457 }); 10458 if (true) SelectLabel.displayName = "SelectLabel"; 10459 10460 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/trigger/SelectTrigger.mjs 10461 var React68 = __toESM(require_react(), 1); 10462 10463 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/trigger/SelectTriggerDataAttributes.mjs 10464 var popupOpen2 = CommonTriggerDataAttributes_exports.popupOpen; 10465 var pressed2 = CommonTriggerDataAttributes_exports.pressed; 10466 var popupSide = "data-popup-side"; 10467 10468 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/trigger/SelectTrigger.mjs 10469 var SELECTED_DELAY = 400; 10470 var stateAttributesMapping2 = { 10471 ...pressableTriggerOpenStateMapping, 10472 ...fieldValidityMapping, 10473 popupSide: (side) => side ? { 10474 [popupSide]: side 10475 } : null, 10476 value: () => null 10477 }; 10478 var SelectTrigger = /* @__PURE__ */ React68.forwardRef(function SelectTrigger2(componentProps, forwardedRef) { 10479 const { 10480 render, 10481 className, 10482 id: idProp, 10483 disabled: disabledProp = false, 10484 nativeButton = true, 10485 style, 10486 ...elementProps 10487 } = componentProps; 10488 const { 10489 setTouched, 10490 validationMode, 10491 validation, 10492 state: fieldState, 10493 disabled: fieldDisabled 10494 } = useFieldRootContext(); 10495 const { 10496 labelId: fieldLabelId 10497 } = useLabelableContext(); 10498 const store = useSelectRootContext(); 10499 const readOnly = store.useState("readOnly"); 10500 const required = store.useState("required"); 10501 const selectDisabled = store.useState("disabled"); 10502 const disabled2 = fieldDisabled || selectDisabled || disabledProp; 10503 const open2 = store.useState("open"); 10504 const mounted = store.useState("mounted"); 10505 const value = store.useState("value"); 10506 const triggerProps = store.useState("triggerProps"); 10507 const positionerElement = store.useState("positionerElement"); 10508 const listElement = store.useState("listElement"); 10509 const popupSideValue = store.useState("popupSide"); 10510 const rootId = store.useState("id"); 10511 const selectLabelId = store.useState("labelId"); 10512 const hasSelectedValue = store.useState("hasSelectedValue"); 10513 const popupSide2 = mounted && positionerElement ? popupSideValue : null; 10514 const id = idProp ?? rootId; 10515 const ariaLabelledBy = resolveAriaLabelledBy(fieldLabelId, selectLabelId); 10516 useLabelableId({ 10517 id: idProp 10518 }); 10519 const positionerRef = useValueAsRef(positionerElement); 10520 const triggerRef = React68.useRef(null); 10521 const setFocused = useSetFieldFocused(disabled2, triggerRef); 10522 const { 10523 getButtonProps, 10524 buttonRef 10525 } = useButton({ 10526 disabled: disabled2, 10527 native: nativeButton 10528 }); 10529 const setTriggerElement = store.useStateSetter("triggerElement"); 10530 const timeoutFocus = useTimeout(); 10531 const timeoutMouseDown = useTimeout(); 10532 const selectedDelayTimeout = useTimeout(); 10533 React68.useEffect(() => { 10534 if (open2) { 10535 selectedDelayTimeout.start(SELECTED_DELAY, () => { 10536 store.context.selectionRef.current.allowUnselectedMouseUp = true; 10537 store.context.selectionRef.current.allowSelectedMouseUp = true; 10538 }); 10539 return () => { 10540 selectedDelayTimeout.clear(); 10541 }; 10542 } 10543 store.context.selectionRef.current = { 10544 allowSelectedMouseUp: false, 10545 allowUnselectedMouseUp: false, 10546 dragY: 0 10547 }; 10548 timeoutMouseDown.clear(); 10549 return void 0; 10550 }, [open2, store, timeoutMouseDown, selectedDelayTimeout]); 10551 const mergedProps = mergeProps(triggerProps, { 10552 id, 10553 role: "combobox", 10554 "aria-expanded": open2, 10555 "aria-haspopup": "listbox", 10556 "aria-controls": open2 ? listElement?.id ?? getFloatingFocusElement(positionerElement)?.id : void 0, 10557 "aria-labelledby": ariaLabelledBy, 10558 "aria-readonly": readOnly || void 0, 10559 "aria-required": required || void 0, 10560 tabIndex: disabled2 ? -1 : 0, 10561 onFocus(event) { 10562 setFocused(true); 10563 if (open2 && store.context.alignItemWithTriggerActiveRef.current) { 10564 store.context.setOpen(false, createChangeEventDetails(reason_parts_exports.none, event.nativeEvent)); 10565 } 10566 timeoutFocus.start(0, () => { 10567 store.set("forceMount", true); 10568 }); 10569 }, 10570 onBlur(event) { 10571 if (contains(positionerElement, event.relatedTarget)) { 10572 return; 10573 } 10574 setTouched(true); 10575 setFocused(false); 10576 if (validationMode === "onBlur") { 10577 validation.commit(value); 10578 } 10579 }, 10580 onMouseDown(event) { 10581 if (open2) { 10582 return; 10583 } 10584 const doc = ownerDocument(event.currentTarget); 10585 function handleMouseUp(mouseEvent) { 10586 if (!triggerRef.current) { 10587 return; 10588 } 10589 const mouseUpTarget = mouseEvent.target; 10590 if (contains(triggerRef.current, mouseUpTarget) || contains(positionerRef.current, mouseUpTarget)) { 10591 return; 10592 } 10593 if (isMouseWithinBounds(mouseEvent, triggerRef.current)) { 10594 return; 10595 } 10596 store.context.setOpen(false, createChangeEventDetails(reason_parts_exports.cancelOpen, mouseEvent)); 10597 } 10598 timeoutMouseDown.start(0, () => { 10599 doc.addEventListener("mouseup", handleMouseUp, { 10600 once: true 10601 }); 10602 }); 10603 } 10604 }, elementProps, getButtonProps); 10605 const props = validation.getValidationProps(disabled2, mergedProps); 10606 props.role = "combobox"; 10607 const state = { 10608 ...fieldState, 10609 open: open2, 10610 disabled: disabled2, 10611 value, 10612 readOnly, 10613 popupSide: popupSide2, 10614 placeholder: !hasSelectedValue 10615 }; 10616 return useRenderElement("button", componentProps, { 10617 ref: [forwardedRef, triggerRef, buttonRef, setTriggerElement], 10618 state, 10619 stateAttributesMapping: stateAttributesMapping2, 10620 props 10621 }); 10622 }); 10623 if (true) SelectTrigger.displayName = "SelectTrigger"; 10624 10625 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/value/SelectValue.mjs 10626 var React69 = __toESM(require_react(), 1); 10627 var stateAttributesMapping3 = { 10628 value: () => null 10629 }; 10630 var SelectValue = /* @__PURE__ */ React69.forwardRef(function SelectValue2(componentProps, forwardedRef) { 10631 const { 10632 className, 10633 render, 10634 children: childrenProp, 10635 placeholder, 10636 style, 10637 ...elementProps 10638 } = componentProps; 10639 const store = useSelectRootContext(); 10640 const value = store.useState("value"); 10641 const items = store.useState("items"); 10642 const itemToStringLabel = store.useState("itemToStringLabel"); 10643 const hasSelectedValue = store.useState("hasSelectedValue"); 10644 const shouldCheckNullItemLabel = !hasSelectedValue && placeholder != null && childrenProp == null; 10645 const hasNullLabel = store.useState("hasNullItemLabel", shouldCheckNullItemLabel); 10646 const state = { 10647 value, 10648 placeholder: !hasSelectedValue 10649 }; 10650 let children = null; 10651 if (typeof childrenProp === "function") { 10652 children = childrenProp(value); 10653 } else if (childrenProp != null) { 10654 children = childrenProp; 10655 } else if (shouldCheckNullItemLabel && !hasNullLabel) { 10656 children = placeholder; 10657 } else if (Array.isArray(value)) { 10658 children = resolveMultipleLabels(value, items, itemToStringLabel); 10659 } else { 10660 children = resolveSelectedLabel(value, items, itemToStringLabel); 10661 } 10662 const element = useRenderElement("span", componentProps, { 10663 state, 10664 ref: [forwardedRef, store.context.valueRef], 10665 props: [{ 10666 children 10667 }, elementProps], 10668 stateAttributesMapping: stateAttributesMapping3 10669 }); 10670 return element; 10671 }); 10672 if (true) SelectValue.displayName = "SelectValue"; 10673 10674 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/icon/SelectIcon.mjs 10675 var React70 = __toESM(require_react(), 1); 10676 var SelectIcon = /* @__PURE__ */ React70.forwardRef(function SelectIcon2(componentProps, forwardedRef) { 10677 const { 10678 render, 10679 className, 10680 style, 10681 ...elementProps 10682 } = componentProps; 10683 const store = useSelectRootContext(); 10684 const open2 = store.useState("open"); 10685 const state = { 10686 open: open2 10687 }; 10688 const element = useRenderElement("span", componentProps, { 10689 state, 10690 ref: forwardedRef, 10691 props: [{ 10692 "aria-hidden": true, 10693 children: "\u25BC" 10694 }, elementProps], 10695 stateAttributesMapping: triggerOpenStateMapping 10696 }); 10697 return element; 10698 }); 10699 if (true) SelectIcon.displayName = "SelectIcon"; 10700 10701 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/portal/SelectPortal.mjs 10702 var React71 = __toESM(require_react(), 1); 10703 var import_jsx_runtime23 = __toESM(require_jsx_runtime(), 1); 10704 var SelectPortal = /* @__PURE__ */ React71.forwardRef(function SelectPortal2(portalProps, forwardedRef) { 10705 const store = useSelectRootContext(); 10706 const mounted = store.useState("mounted"); 10707 const forceMount = store.useState("forceMount"); 10708 const shouldRender = mounted || forceMount; 10709 if (!shouldRender) { 10710 return null; 10711 } 10712 return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(FloatingPortal, { 10713 ref: forwardedRef, 10714 ...portalProps 10715 }); 10716 }); 10717 if (true) SelectPortal.displayName = "SelectPortal"; 10718 10719 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/backdrop/SelectBackdrop.mjs 10720 var React72 = __toESM(require_react(), 1); 10721 var stateAttributesMapping4 = { 10722 ...popupStateMapping, 10723 ...transitionStatusMapping 10724 }; 10725 var SelectBackdrop = /* @__PURE__ */ React72.forwardRef(function SelectBackdrop2(componentProps, forwardedRef) { 10726 const { 10727 render, 10728 className, 10729 style, 10730 ...elementProps 10731 } = componentProps; 10732 const store = useSelectRootContext(); 10733 const open2 = store.useState("open"); 10734 const mounted = store.useState("mounted"); 10735 const transitionStatus = store.useState("transitionStatus"); 10736 const state = { 10737 open: open2, 10738 transitionStatus 10739 }; 10740 const element = useRenderElement("div", componentProps, { 10741 state, 10742 ref: forwardedRef, 10743 props: [{ 10744 role: "presentation", 10745 hidden: !mounted, 10746 style: { 10747 userSelect: "none", 10748 WebkitUserSelect: "none" 10749 } 10750 }, elementProps], 10751 stateAttributesMapping: stateAttributesMapping4 10752 }); 10753 return element; 10754 }); 10755 if (true) SelectBackdrop.displayName = "SelectBackdrop"; 10756 10757 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/positioner/SelectPositioner.mjs 10758 var React74 = __toESM(require_react(), 1); 10759 10760 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/positioner/SelectPositionerContext.mjs 10761 var React73 = __toESM(require_react(), 1); 10762 var SelectPositionerContext = /* @__PURE__ */ React73.createContext(void 0); 10763 if (true) SelectPositionerContext.displayName = "SelectPositionerContext"; 10764 function useSelectPositionerContext() { 10765 const context = React73.useContext(SelectPositionerContext); 10766 if (!context) { 10767 throw new Error(true ? "Base UI: SelectPositionerContext is missing. SelectPositioner parts must be placed within <Select.Positioner>." : formatErrorMessage_default(59)); 10768 } 10769 return context; 10770 } 10771 10772 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/popup/utils.mjs 10773 function clearStyles(element, originalStyles) { 10774 if (element) { 10775 Object.assign(element.style, originalStyles); 10776 } 10777 } 10778 var LIST_FUNCTIONAL_STYLES = { 10779 position: "relative", 10780 maxHeight: "100%", 10781 overflowX: "hidden", 10782 overflowY: "auto" 10783 }; 10784 10785 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/positioner/SelectPositioner.mjs 10786 var import_jsx_runtime24 = __toESM(require_jsx_runtime(), 1); 10787 var FIXED = { 10788 position: "fixed" 10789 }; 10790 var SelectPositioner = /* @__PURE__ */ React74.forwardRef(function SelectPositioner2(componentProps, forwardedRef) { 10791 const { 10792 anchor, 10793 className, 10794 render, 10795 // `useAnchorPositioning` applies the same defaults to the undefined values; the names 10796 // remain destructured to exclude the props from `elementProps`. 10797 positionMethod, 10798 side, 10799 align, 10800 sideOffset, 10801 alignOffset, 10802 collisionBoundary = "clipping-ancestors", 10803 collisionPadding, 10804 arrowPadding, 10805 sticky, 10806 disableAnchorTracking, 10807 alignItemWithTrigger = true, 10808 collisionAvoidance = DROPDOWN_COLLISION_AVOIDANCE, 10809 style, 10810 ...elementProps 10811 } = componentProps; 10812 const store = useSelectRootContext(); 10813 const floatingRootContext = useSelectFloatingContext(); 10814 const open2 = store.useState("open"); 10815 const mounted = store.useState("mounted"); 10816 const modal = store.useState("modal"); 10817 const value = store.useState("value"); 10818 const openMethod = store.useState("openMethod"); 10819 const positionerElement = store.useState("positionerElement"); 10820 const triggerElement = store.useState("triggerElement"); 10821 const isItemEqualToValue = store.useState("isItemEqualToValue"); 10822 const transitionStatus = store.useState("transitionStatus"); 10823 const scrollUpArrowRef = React74.useRef(null); 10824 const scrollDownArrowRef = React74.useRef(null); 10825 const [controlledAlignItemWithTrigger, setControlledAlignItemWithTrigger] = React74.useState(alignItemWithTrigger); 10826 const alignItemWithTriggerActive = mounted && controlledAlignItemWithTrigger && openMethod !== "touch"; 10827 if (!mounted && controlledAlignItemWithTrigger !== alignItemWithTrigger) { 10828 setControlledAlignItemWithTrigger(alignItemWithTrigger); 10829 } 10830 React74.useImperativeHandle(store.context.alignItemWithTriggerActiveRef, () => alignItemWithTriggerActive); 10831 useAnchoredPopupScrollLock((alignItemWithTriggerActive || modal) && open2, openMethod === "touch", positionerElement, triggerElement); 10832 const positioning = useAnchorPositioning({ 10833 anchor, 10834 floatingRootContext, 10835 positionMethod, 10836 mounted, 10837 side, 10838 sideOffset, 10839 align, 10840 alignOffset, 10841 arrowPadding, 10842 collisionBoundary, 10843 collisionPadding, 10844 sticky, 10845 disableAnchorTracking: disableAnchorTracking ?? alignItemWithTriggerActive, 10846 collisionAvoidance, 10847 keepMounted: true 10848 }); 10849 const renderedSide = alignItemWithTriggerActive ? "none" : positioning.side; 10850 const positionerStyles = alignItemWithTriggerActive ? FIXED : positioning.positionerStyles; 10851 const state = { 10852 open: open2, 10853 side: renderedSide, 10854 align: positioning.align, 10855 anchorHidden: positioning.anchorHidden 10856 }; 10857 useIsoLayoutEffect(() => { 10858 store.set("popupSide", positioning.side); 10859 }, [store, positioning.side]); 10860 const setPositionerElement = store.useStateSetter("positionerElement"); 10861 const element = usePositioner(componentProps, state, { 10862 styles: positionerStyles, 10863 transitionStatus, 10864 props: elementProps, 10865 refs: [forwardedRef, setPositionerElement], 10866 hidden: !mounted, 10867 inert: !open2 10868 }); 10869 const prevMapSizeRef = React74.useRef(0); 10870 const onMapChange = useStableCallback((map) => { 10871 if (store.context.valuesRef.current.length === 0) { 10872 return; 10873 } 10874 const prevSize = prevMapSizeRef.current; 10875 prevMapSizeRef.current = map.size; 10876 const eventDetails = createChangeEventDetails(reason_parts_exports.none); 10877 if (prevSize !== 0 && !store.state.multiple && value !== null) { 10878 const selectedValueIndex = findItemIndex(store.context.valuesRef.current, value, isItemEqualToValue); 10879 if (selectedValueIndex === -1) { 10880 const initialSelectedValue = store.context.initialValueRef.current; 10881 const hasInitial = initialSelectedValue != null && findItemIndex(store.context.valuesRef.current, initialSelectedValue, isItemEqualToValue) !== -1; 10882 const nextValue = hasInitial ? initialSelectedValue : null; 10883 store.context.setValue(nextValue, eventDetails); 10884 if (nextValue === null) { 10885 store.set("selectedIndex", null); 10886 store.context.selectedItemTextRef.current = null; 10887 } 10888 } 10889 } 10890 if (prevSize !== 0 && store.state.multiple && Array.isArray(value)) { 10891 const nextValue = value.filter((selectedItemValue) => findItemIndex(store.context.valuesRef.current, selectedItemValue, isItemEqualToValue) !== -1); 10892 if (nextValue.length !== value.length) { 10893 store.context.setValue(nextValue, eventDetails); 10894 if (nextValue.length === 0) { 10895 store.set("selectedIndex", null); 10896 store.context.selectedItemTextRef.current = null; 10897 } 10898 } 10899 } 10900 if (open2 && alignItemWithTriggerActive) { 10901 store.update({ 10902 scrollUpArrowVisible: false, 10903 scrollDownArrowVisible: false 10904 }); 10905 const stylesToClear = { 10906 height: "" 10907 }; 10908 clearStyles(positionerElement, stylesToClear); 10909 clearStyles(store.context.popupRef.current, stylesToClear); 10910 } 10911 }); 10912 const contextValue = React74.useMemo(() => ({ 10913 ...positioning, 10914 side: renderedSide, 10915 alignItemWithTriggerActive, 10916 setControlledAlignItemWithTrigger, 10917 scrollUpArrowRef, 10918 scrollDownArrowRef 10919 }), [positioning, renderedSide, alignItemWithTriggerActive, setControlledAlignItemWithTrigger]); 10920 return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(CompositeList, { 10921 elementsRef: store.context.listRef, 10922 labelsRef: store.context.labelsRef, 10923 onMapChange, 10924 children: /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(SelectPositionerContext.Provider, { 10925 value: contextValue, 10926 children: [mounted && modal && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(InternalBackdrop, { 10927 inert: inertValue(!open2), 10928 cutout: triggerElement 10929 }), element] 10930 }) 10931 }); 10932 }); 10933 if (true) SelectPositioner.displayName = "SelectPositioner"; 10934 10935 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/popup/SelectPopup.mjs 10936 var React75 = __toESM(require_react(), 1); 10937 10938 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/positioner/SelectPositionerCssVars.mjs 10939 var transformOrigin2 = "--transform-origin"; 10940 10941 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/popup/SelectPopup.mjs 10942 var import_jsx_runtime25 = __toESM(require_jsx_runtime(), 1); 10943 var stateAttributesMapping5 = { 10944 ...popupStateMapping, 10945 ...transitionStatusMapping 10946 }; 10947 var SelectPopup = /* @__PURE__ */ React75.forwardRef(function SelectPopup2(componentProps, forwardedRef) { 10948 const { 10949 render, 10950 className, 10951 style, 10952 finalFocus, 10953 ...elementProps 10954 } = componentProps; 10955 const store = useSelectRootContext(); 10956 const multiple = store.useState("multiple"); 10957 const readOnly = store.useState("readOnly"); 10958 const highlightItemOnHover = store.useState("highlightItemOnHover"); 10959 const floatingRootContext = useSelectFloatingContext(); 10960 const { 10961 side, 10962 align, 10963 alignItemWithTriggerActive, 10964 isPositioned, 10965 setControlledAlignItemWithTrigger 10966 } = useSelectPositionerContext(); 10967 const insideToolbar = useToolbarRootContext(true) != null; 10968 const direction = useDirection(); 10969 const { 10970 nonce, 10971 disableStyleElements 10972 } = useCSPContext(); 10973 const id = store.useState("id"); 10974 const open2 = store.useState("open"); 10975 const openMethod = store.useState("openMethod"); 10976 const mounted = store.useState("mounted"); 10977 const popupProps = store.useState("popupProps"); 10978 const transitionStatus = store.useState("transitionStatus"); 10979 const triggerElement = store.useState("triggerElement"); 10980 const positionerElement = store.useState("positionerElement"); 10981 const listElement = store.useState("listElement"); 10982 const reachedMaxHeightRef = React75.useRef(false); 10983 const initialPlacedRef = React75.useRef(false); 10984 const originalPositionerStylesRef = React75.useRef({}); 10985 const scrollArrowFrame = useAnimationFrame(); 10986 const handleScroll = useStableCallback((scroller) => { 10987 if (!positionerElement || !store.context.popupRef.current || !initialPlacedRef.current) { 10988 return; 10989 } 10990 const isTopPositioned = positionerElement.style.top === "0px"; 10991 const isBottomPositioned = positionerElement.style.bottom === "0px"; 10992 if (reachedMaxHeightRef.current || !alignItemWithTriggerActive || !isTopPositioned && !isBottomPositioned) { 10993 store.context.handleScrollArrowVisibility(scroller); 10994 return; 10995 } 10996 const scale = getScale2(positionerElement); 10997 const currentHeight = normalizeSize(positionerElement.getBoundingClientRect().height, "y", scale); 10998 const doc = ownerDocument(positionerElement); 10999 const win = getWindow(positionerElement); 11000 const positionerStyles = win.getComputedStyle(positionerElement); 11001 const marginTop = parseFloat(positionerStyles.marginTop); 11002 const marginBottom = parseFloat(positionerStyles.marginBottom); 11003 const maxPopupHeight = getMaxPopupHeight(win.getComputedStyle(store.context.popupRef.current)); 11004 const maxAvailableHeight = Math.min(doc.documentElement.clientHeight - marginTop - marginBottom, maxPopupHeight); 11005 const scrollTop = scroller.scrollTop; 11006 const maxScrollTop = getMaxScrollTop(scroller); 11007 let nextScrollTop = null; 11008 const setHeight = (height) => { 11009 positionerElement.style.height = `$height}px`; 11010 }; 11011 const diff = isTopPositioned ? maxScrollTop - scrollTop : scrollTop; 11012 const nextHeight = Math.min(currentHeight + diff, maxAvailableHeight); 11013 if (diff <= SCROLL_EDGE_TOLERANCE_PX) { 11014 const heightDelta = clamp2(diff, 0, maxAvailableHeight - currentHeight); 11015 if (heightDelta > 0) { 11016 setHeight(currentHeight + heightDelta); 11017 } 11018 scroller.scrollTop = isTopPositioned ? maxScrollTop : 0; 11019 if (maxAvailableHeight - (currentHeight + heightDelta) <= SCROLL_EDGE_TOLERANCE_PX) { 11020 reachedMaxHeightRef.current = true; 11021 } 11022 store.context.handleScrollArrowVisibility(scroller); 11023 return; 11024 } 11025 if (maxAvailableHeight - nextHeight > SCROLL_EDGE_TOLERANCE_PX) { 11026 nextScrollTop = isTopPositioned ? Infinity : 0; 11027 } else if (isBottomPositioned && scrollTop < maxScrollTop) { 11028 const overshoot = currentHeight + diff - maxAvailableHeight; 11029 nextScrollTop = scrollTop - (diff - overshoot); 11030 } 11031 const nextPositionerHeight = Math.ceil(nextHeight); 11032 if (nextPositionerHeight !== 0) { 11033 setHeight(nextPositionerHeight); 11034 } 11035 if (nextScrollTop != null) { 11036 const target = clamp2(nextScrollTop, 0, getMaxScrollTop(scroller)); 11037 if (Math.abs(scroller.scrollTop - target) > SCROLL_EDGE_TOLERANCE_PX) { 11038 scroller.scrollTop = target; 11039 } 11040 } 11041 if (nextPositionerHeight >= maxAvailableHeight - SCROLL_EDGE_TOLERANCE_PX) { 11042 reachedMaxHeightRef.current = true; 11043 } 11044 store.context.handleScrollArrowVisibility(scroller); 11045 }); 11046 React75.useImperativeHandle(store.context.scrollHandlerRef, () => handleScroll, [handleScroll]); 11047 useOpenChangeComplete({ 11048 open: open2, 11049 ref: store.context.popupRef, 11050 onComplete() { 11051 if (open2) { 11052 store.context.onOpenChangeComplete(true); 11053 } 11054 } 11055 }); 11056 const state = { 11057 open: open2, 11058 transitionStatus, 11059 side, 11060 align 11061 }; 11062 useIsoLayoutEffect(() => { 11063 if (!positionerElement || !store.context.popupRef.current || Object.keys(originalPositionerStylesRef.current).length) { 11064 return; 11065 } 11066 originalPositionerStylesRef.current = { 11067 top: positionerElement.style.top || "0", 11068 left: positionerElement.style.left || "0", 11069 right: positionerElement.style.right, 11070 height: positionerElement.style.height, 11071 bottom: positionerElement.style.bottom, 11072 minHeight: positionerElement.style.minHeight, 11073 maxHeight: positionerElement.style.maxHeight, 11074 marginTop: positionerElement.style.marginTop, 11075 marginBottom: positionerElement.style.marginBottom 11076 }; 11077 }, [store, positionerElement]); 11078 useIsoLayoutEffect(() => { 11079 if (open2 || alignItemWithTriggerActive) { 11080 return; 11081 } 11082 initialPlacedRef.current = false; 11083 reachedMaxHeightRef.current = false; 11084 clearStyles(positionerElement, originalPositionerStylesRef.current); 11085 }, [open2, alignItemWithTriggerActive, positionerElement]); 11086 useIsoLayoutEffect(() => { 11087 const popupElement = store.context.popupRef.current; 11088 if (!open2 || !triggerElement || !positionerElement || !popupElement || alignItemWithTriggerActive && !isPositioned || store.state.transitionStatus === "ending") { 11089 return; 11090 } 11091 initialPlacedRef.current = true; 11092 popupElement.style.removeProperty(transformOrigin2); 11093 if (!alignItemWithTriggerActive) { 11094 scrollArrowFrame.request(() => store.context.handleScrollArrowVisibility(listElement || popupElement)); 11095 return; 11096 } 11097 const restoreTransformStyles = unsetTransformStyles(popupElement); 11098 try { 11099 let textElement = store.context.selectedItemTextRef.current; 11100 if (!textElement?.isConnected) { 11101 const hasSelectedValue = store.select("hasSelectedValue"); 11102 textElement = !hasSelectedValue && store.context.firstItemTextRef.current?.isConnected ? store.context.firstItemTextRef.current : null; 11103 } 11104 const valueElement = store.context.valueRef.current; 11105 const win = getWindow(positionerElement); 11106 const positionerStyles = win.getComputedStyle(positionerElement); 11107 const popupStyles = win.getComputedStyle(popupElement); 11108 const doc = ownerDocument(triggerElement); 11109 const scale = getScale2(triggerElement); 11110 const triggerRect = normalizeRect(triggerElement.getBoundingClientRect(), scale); 11111 const positionerRect = normalizeRect(positionerElement.getBoundingClientRect(), scale); 11112 const triggerHeight = triggerRect.height; 11113 const scroller = listElement || popupElement; 11114 const scrollHeight = scroller.scrollHeight; 11115 const borderBottom = parseFloat(popupStyles.borderBottomWidth); 11116 const marginTop = parseFloat(positionerStyles.marginTop) || 10; 11117 const marginBottom = parseFloat(positionerStyles.marginBottom) || 10; 11118 const minHeight = parseFloat(positionerStyles.minHeight) || 100; 11119 const maxPopupHeight = getMaxPopupHeight(popupStyles); 11120 const paddingLeft = 5; 11121 const paddingRight = 5; 11122 const triggerCollisionThreshold = 20; 11123 const viewportHeight = doc.documentElement.clientHeight - marginTop - marginBottom; 11124 const viewportWidth = doc.documentElement.clientWidth; 11125 const availableSpaceBeneathTrigger = viewportHeight - triggerRect.bottom + triggerHeight; 11126 let textRect; 11127 let alignedLeft = direction === "rtl" ? triggerRect.right - positionerRect.width : triggerRect.left; 11128 let offsetY = 0; 11129 if (textElement && valueElement) { 11130 const valueRect = normalizeRect(valueElement.getBoundingClientRect(), scale); 11131 textRect = normalizeRect(textElement.getBoundingClientRect(), scale); 11132 alignedLeft = positionerRect.left + (direction === "rtl" ? valueRect.right - textRect.right : valueRect.left - textRect.left); 11133 const valueCenterFromTriggerTop = valueRect.top - triggerRect.top + valueRect.height / 2; 11134 const textCenterFromPositionerTop = textRect.top - positionerRect.top + textRect.height / 2; 11135 offsetY = textCenterFromPositionerTop - valueCenterFromTriggerTop; 11136 } 11137 const idealHeight = availableSpaceBeneathTrigger + offsetY + marginBottom + borderBottom; 11138 let height = Math.min(viewportHeight, idealHeight); 11139 const maxHeight = viewportHeight - marginTop - marginBottom; 11140 const scrollTop = idealHeight - height; 11141 const maxRight = viewportWidth - paddingRight; 11142 positionerElement.style.left = `$clamp2(alignedLeft, paddingLeft, maxRight - positionerRect.width)}px`; 11143 positionerElement.style.height = `$height}px`; 11144 positionerElement.style.maxHeight = "none"; 11145 positionerElement.style.marginTop = `$marginTop}px`; 11146 positionerElement.style.marginBottom = `$marginBottom}px`; 11147 popupElement.style.height = "100%"; 11148 const maxScrollTop = getMaxScrollTop(scroller); 11149 const isTopPositioned = scrollTop >= maxScrollTop - SCROLL_EDGE_TOLERANCE_PX; 11150 if (isTopPositioned) { 11151 height = Math.min(viewportHeight, positionerRect.height) - (scrollTop - maxScrollTop); 11152 } 11153 const fallbackToAlignPopupToTrigger = triggerRect.top < triggerCollisionThreshold || triggerRect.bottom > viewportHeight - triggerCollisionThreshold || Math.ceil(height) + SCROLL_EDGE_TOLERANCE_PX < Math.min(scrollHeight, minHeight); 11154 const isPinchZoomed = (win.visualViewport?.scale ?? 1) !== 1 && parts_exports.engine.webkit; 11155 if (fallbackToAlignPopupToTrigger || isPinchZoomed) { 11156 clearStyles(positionerElement, originalPositionerStylesRef.current); 11157 setControlledAlignItemWithTrigger(false); 11158 return; 11159 } 11160 const initialHeight = Math.max(minHeight, height); 11161 if (isTopPositioned) { 11162 const topOffset = Math.max(0, viewportHeight - idealHeight); 11163 positionerElement.style.top = positionerRect.height >= maxHeight ? "0" : `$topOffset}px`; 11164 positionerElement.style.height = `$height}px`; 11165 scroller.scrollTop = getMaxScrollTop(scroller); 11166 } else { 11167 positionerElement.style.bottom = "0"; 11168 scroller.scrollTop = scrollTop; 11169 } 11170 if (textRect) { 11171 const popupTop = positionerRect.top; 11172 const popupHeight = positionerRect.height; 11173 const textCenterY = textRect.top + textRect.height / 2; 11174 const clampedY = clamp2(popupHeight > 0 ? (textCenterY - popupTop) / popupHeight * 100 : 50, 0, 100); 11175 popupElement.style.setProperty(transformOrigin2, `50% $clampedY}%`); 11176 } 11177 if (initialHeight === viewportHeight || height >= maxPopupHeight) { 11178 reachedMaxHeightRef.current = true; 11179 } 11180 store.context.handleScrollArrowVisibility(scroller); 11181 if (highlightItemOnHover && store.state.selectedIndex === null && store.state.activeIndex === null && store.context.listRef.current[0] != null) { 11182 store.set("activeIndex", 0); 11183 } 11184 } finally { 11185 restoreTransformStyles(); 11186 } 11187 }, [store, open2, positionerElement, triggerElement, alignItemWithTriggerActive, setControlledAlignItemWithTrigger, scrollArrowFrame, listElement, highlightItemOnHover, direction, isPositioned]); 11188 React75.useEffect(() => { 11189 if (!alignItemWithTriggerActive || !positionerElement || !open2) { 11190 return void 0; 11191 } 11192 const win = getWindow(positionerElement); 11193 function handleResize(event) { 11194 store.context.setOpen(false, createChangeEventDetails(reason_parts_exports.windowResize, event)); 11195 } 11196 return addEventListener(win, "resize", handleResize); 11197 }, [store, alignItemWithTriggerActive, positionerElement, open2]); 11198 const defaultProps = { 11199 ...listElement ? { 11200 role: "presentation" 11201 } : { 11202 role: "listbox", 11203 "aria-multiselectable": multiple || void 0, 11204 "aria-readonly": readOnly || void 0, 11205 id: `$id}-list` 11206 }, 11207 onKeyDown(event) { 11208 if (insideToolbar && COMPOSITE_KEYS.has(event.key)) { 11209 event.stopPropagation(); 11210 } 11211 }, 11212 onScroll(event) { 11213 if (listElement) { 11214 return; 11215 } 11216 handleScroll(event.currentTarget); 11217 }, 11218 ...alignItemWithTriggerActive && { 11219 style: listElement ? { 11220 height: "100%" 11221 } : LIST_FUNCTIONAL_STYLES 11222 }, 11223 className: !listElement && alignItemWithTriggerActive ? styleDisableScrollbar.className : void 0 11224 }; 11225 const element = useRenderElement("div", componentProps, { 11226 ref: [forwardedRef, store.context.popupRef], 11227 state, 11228 stateAttributesMapping: stateAttributesMapping5, 11229 props: [popupProps, defaultProps, getDisabledMountTransitionStyles(transitionStatus), elementProps] 11230 }); 11231 return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(React75.Fragment, { 11232 children: [!disableStyleElements && styleDisableScrollbar.getElement(nonce), /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(FloatingFocusManager, { 11233 context: floatingRootContext, 11234 modal: false, 11235 disabled: !mounted, 11236 openInteractionType: openMethod, 11237 returnFocus: finalFocus, 11238 restoreFocus: true, 11239 children: element 11240 })] 11241 }); 11242 }); 11243 if (true) SelectPopup.displayName = "SelectPopup"; 11244 function getMaxPopupHeight(popupStyles) { 11245 const maxHeightStyle = popupStyles.maxHeight; 11246 return maxHeightStyle.endsWith("px") ? parseFloat(maxHeightStyle) || Infinity : Infinity; 11247 } 11248 function getMaxScrollTop(scroller) { 11249 return getMaxScrollOffset(scroller.scrollHeight, scroller.clientHeight); 11250 } 11251 function getScale2(element) { 11252 return platform2.getScale(element); 11253 } 11254 function normalizeSize(size4, axis, scale) { 11255 return size4 / scale[axis]; 11256 } 11257 function normalizeRect(rect, scale) { 11258 return rectToClientRect({ 11259 x: normalizeSize(rect.x, "x", scale), 11260 y: normalizeSize(rect.y, "y", scale), 11261 width: normalizeSize(rect.width, "x", scale), 11262 height: normalizeSize(rect.height, "y", scale) 11263 }); 11264 } 11265 var TRANSFORM_STYLE_RESETS = [["transform", "none"], ["scale", "1"], ["translate", "0 0"]]; 11266 function unsetTransformStyles(popupElement) { 11267 const { 11268 style 11269 } = popupElement; 11270 const originalStyles = {}; 11271 for (const [property, value] of TRANSFORM_STYLE_RESETS) { 11272 originalStyles[property] = style.getPropertyValue(property); 11273 style.setProperty(property, value, "important"); 11274 } 11275 return () => { 11276 for (const [property] of TRANSFORM_STYLE_RESETS) { 11277 const originalValue = originalStyles[property]; 11278 if (originalValue) { 11279 style.setProperty(property, originalValue); 11280 } else { 11281 style.removeProperty(property); 11282 } 11283 } 11284 }; 11285 } 11286 11287 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/list/SelectList.mjs 11288 var React76 = __toESM(require_react(), 1); 11289 var SelectList = /* @__PURE__ */ React76.forwardRef(function SelectList2(componentProps, forwardedRef) { 11290 const { 11291 render, 11292 className, 11293 style, 11294 ...elementProps 11295 } = componentProps; 11296 const store = useSelectRootContext(); 11297 const multiple = store.useState("multiple"); 11298 const readOnly = store.useState("readOnly"); 11299 const { 11300 alignItemWithTriggerActive 11301 } = useSelectPositionerContext(); 11302 const hasScrollArrows = store.useState("hasScrollArrows"); 11303 const openMethod = store.useState("openMethod"); 11304 const id = store.useState("id"); 11305 const defaultProps = { 11306 id: `$id}-list`, 11307 role: "listbox", 11308 "aria-multiselectable": multiple || void 0, 11309 "aria-readonly": readOnly || void 0, 11310 onScroll(event) { 11311 store.context.scrollHandlerRef.current?.(event.currentTarget); 11312 }, 11313 ...alignItemWithTriggerActive && { 11314 style: LIST_FUNCTIONAL_STYLES 11315 }, 11316 className: hasScrollArrows && openMethod !== "touch" ? styleDisableScrollbar.className : void 0 11317 }; 11318 const setListElement = store.useStateSetter("listElement"); 11319 return useRenderElement("div", componentProps, { 11320 ref: [forwardedRef, setListElement], 11321 props: [defaultProps, elementProps] 11322 }); 11323 }); 11324 if (true) SelectList.displayName = "SelectList"; 11325 11326 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/item/SelectItem.mjs 11327 var React78 = __toESM(require_react(), 1); 11328 11329 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/item/SelectItemContext.mjs 11330 var React77 = __toESM(require_react(), 1); 11331 var SelectItemContext = /* @__PURE__ */ React77.createContext(void 0); 11332 if (true) SelectItemContext.displayName = "SelectItemContext"; 11333 function useSelectItemContext() { 11334 const context = React77.useContext(SelectItemContext); 11335 if (!context) { 11336 throw new Error(true ? "Base UI: SelectItemContext is missing. SelectItem parts must be placed within <Select.Item>." : formatErrorMessage_default(57)); 11337 } 11338 return context; 11339 } 11340 11341 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/item/SelectItem.mjs 11342 var import_jsx_runtime26 = __toESM(require_jsx_runtime(), 1); 11343 var SelectItem = /* @__PURE__ */ React78.memo(/* @__PURE__ */ React78.forwardRef(function SelectItem2(componentProps, forwardedRef) { 11344 const { 11345 render, 11346 className, 11347 style, 11348 value: itemValue = null, 11349 label, 11350 disabled: disabledProp = false, 11351 nativeButton = false, 11352 ...elementProps 11353 } = componentProps; 11354 const textRef = React78.useRef(null); 11355 const listItem = useCompositeListItem({ 11356 guess: true, 11357 label, 11358 textRef 11359 }); 11360 const store = useSelectRootContext(); 11361 const { 11362 props: itemProps, 11363 multiple, 11364 disabled: selectDisabled, 11365 readOnly, 11366 isItemEqualToValue 11367 } = store.useState("itemRoot"); 11368 const disabled2 = selectDisabled || disabledProp; 11369 const highlighted = store.useState("isActive", listItem.index); 11370 const open2 = store.useState("open"); 11371 const selected = store.useState("isSelected", itemValue); 11372 const selectedByFocus = store.useState("isSelectedByFocus", listItem.index); 11373 const index2 = listItem.index; 11374 const itemRef = React78.useRef(null); 11375 useIsoLayoutEffect(() => { 11376 const values = store.context.valuesRef.current; 11377 values[index2] = itemValue; 11378 return () => { 11379 delete values[index2]; 11380 }; 11381 }, [index2, itemValue, store]); 11382 useIsoLayoutEffect(() => { 11383 const selectedValue = store.state.value; 11384 const currentIndex = store.state.selectedIndex; 11385 let nextIndex = currentIndex; 11386 let claims; 11387 if (multiple && Array.isArray(selectedValue)) { 11388 nextIndex = resolveSelectedIndex(index2, itemValue, store.context.valuesRef.current, selectedValue, isItemEqualToValue, currentIndex); 11389 claims = nextIndex === index2; 11390 if (index2 === currentIndex && !claims) { 11391 store.context.selectedItemTextRef.current = null; 11392 } 11393 } else { 11394 claims = selectedValue !== void 0 && compareItemEquality(itemValue, selectedValue, isItemEqualToValue); 11395 if (claims) { 11396 nextIndex = index2; 11397 } 11398 } 11399 store.set("selectedIndex", nextIndex); 11400 if (claims && textRef.current) { 11401 store.context.selectedItemTextRef.current = textRef.current; 11402 } 11403 }, [index2, multiple, isItemEqualToValue, store, itemValue]); 11404 const pointerTypeRef = React78.useRef("mouse"); 11405 const allowMouseSelectionRef = React78.useRef(false); 11406 const { 11407 getButtonProps, 11408 buttonRef 11409 } = useButton({ 11410 disabled: disabled2, 11411 focusableWhenDisabled: true, 11412 native: nativeButton, 11413 composite: true 11414 }); 11415 const state = { 11416 disabled: disabled2, 11417 selected, 11418 highlighted 11419 }; 11420 function commitSelection(event) { 11421 if (selectDisabled || readOnly) { 11422 return; 11423 } 11424 const selectedValue = store.state.value; 11425 if (multiple) { 11426 const currentValue = Array.isArray(selectedValue) ? selectedValue : []; 11427 const nextValue = selected ? removeItem(currentValue, itemValue, isItemEqualToValue) : [...currentValue, itemValue]; 11428 store.context.setValue(nextValue, createChangeEventDetails(reason_parts_exports.itemPress, event)); 11429 } else { 11430 store.context.setValue(itemValue, createChangeEventDetails(reason_parts_exports.itemPress, event)); 11431 store.context.setOpen(false, createChangeEventDetails(reason_parts_exports.itemPress, event)); 11432 } 11433 } 11434 function resetDragMovement() { 11435 store.context.selectionRef.current.dragY = 0; 11436 } 11437 const defaultProps = { 11438 role: "option", 11439 "aria-selected": selected, 11440 tabIndex: open2 && highlighted ? 0 : -1, 11441 onKeyDown(event) { 11442 store.set("activeIndex", index2); 11443 if (event.key === " " && store.context.typingRef.current) { 11444 event.preventDefault(); 11445 } 11446 }, 11447 onClick(event) { 11448 const isMouseClick = pointerTypeRef.current !== "touch"; 11449 const clickPointerType = event.nativeEvent.pointerType; 11450 const isVirtualMouseClick = isMouseClick && isVirtualClick(event.nativeEvent) && // Generic no-pointer `detail === 0` clicks stay tied to highlight state. Virtual 11451 // clicks that carry browser pointer data, including an empty string from assistive 11452 // technology, can activate unhighlighted items. 11453 (clickPointerType !== void 0 || highlighted); 11454 const isInvalidMouseClick = isMouseClick && !isVirtualMouseClick && !allowMouseSelectionRef.current; 11455 allowMouseSelectionRef.current = false; 11456 if (disabled2 || isInvalidMouseClick) { 11457 return; 11458 } 11459 commitSelection(event.nativeEvent); 11460 }, 11461 onPointerEnter(event) { 11462 pointerTypeRef.current = event.pointerType; 11463 }, 11464 onPointerMove(event) { 11465 if (event.pointerType === "mouse" && event.buttons === 1) { 11466 const selection = store.context.selectionRef.current; 11467 selection.dragY += event.movementY; 11468 if (selection.dragY ** 2 >= 64) { 11469 selection.allowUnselectedMouseUp = true; 11470 } 11471 } 11472 }, 11473 onPointerDown(event) { 11474 pointerTypeRef.current = event.pointerType; 11475 allowMouseSelectionRef.current = true; 11476 resetDragMovement(); 11477 }, 11478 onMouseUp() { 11479 resetDragMovement(); 11480 if (disabled2 || pointerTypeRef.current === "touch") { 11481 return; 11482 } 11483 if (allowMouseSelectionRef.current) { 11484 return; 11485 } 11486 const disallowSelectedMouseUp = !store.context.selectionRef.current.allowSelectedMouseUp && selected; 11487 const disallowUnselectedMouseUp = !store.context.selectionRef.current.allowUnselectedMouseUp && !selected; 11488 if (disallowSelectedMouseUp || disallowUnselectedMouseUp) { 11489 return; 11490 } 11491 allowMouseSelectionRef.current = true; 11492 itemRef.current?.click(); 11493 allowMouseSelectionRef.current = false; 11494 } 11495 }; 11496 const element = useRenderElement("div", componentProps, { 11497 ref: [buttonRef, forwardedRef, listItem.ref, itemRef], 11498 state, 11499 props: [itemProps, defaultProps, elementProps, getButtonProps] 11500 }); 11501 const contextValue = React78.useMemo(() => ({ 11502 selected, 11503 index: index2, 11504 textRef, 11505 selectedByFocus 11506 }), [selected, index2, textRef, selectedByFocus]); 11507 return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(SelectItemContext.Provider, { 11508 value: contextValue, 11509 children: element 11510 }); 11511 })); 11512 if (true) SelectItem.displayName = "SelectItem"; 11513 11514 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/item-indicator/SelectItemIndicator.mjs 11515 var React79 = __toESM(require_react(), 1); 11516 var import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1); 11517 var SelectItemIndicator = /* @__PURE__ */ React79.forwardRef(function SelectItemIndicator2(componentProps, forwardedRef) { 11518 const { 11519 selected 11520 } = useSelectItemContext(); 11521 const shouldRender = componentProps.keepMounted || selected; 11522 if (!shouldRender) { 11523 return null; 11524 } 11525 return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(ItemIndicator, { 11526 ...componentProps, 11527 selected, 11528 ref: forwardedRef 11529 }); 11530 }); 11531 if (true) SelectItemIndicator.displayName = "SelectItemIndicator"; 11532 11533 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/item-text/SelectItemText.mjs 11534 var React80 = __toESM(require_react(), 1); 11535 var SelectItemText = /* @__PURE__ */ React80.memo(/* @__PURE__ */ React80.forwardRef(function SelectItemText2(componentProps, forwardedRef) { 11536 const { 11537 index: index2, 11538 textRef, 11539 selectedByFocus 11540 } = useSelectItemContext(); 11541 const store = useSelectRootContext(); 11542 const { 11543 render, 11544 className, 11545 style, 11546 ...elementProps 11547 } = componentProps; 11548 const localRef = React80.useCallback((node) => { 11549 if (!node) { 11550 return; 11551 } 11552 if (index2 === 0) { 11553 store.context.firstItemTextRef.current = node; 11554 } 11555 if (selectedByFocus) { 11556 store.context.selectedItemTextRef.current = node; 11557 } 11558 }, [store, index2, selectedByFocus]); 11559 const element = useRenderElement("div", componentProps, { 11560 ref: [localRef, forwardedRef, textRef], 11561 props: elementProps 11562 }); 11563 return element; 11564 })); 11565 if (true) SelectItemText.displayName = "SelectItemText"; 11566 11567 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/arrow/SelectArrow.mjs 11568 var React81 = __toESM(require_react(), 1); 11569 var SelectArrow = /* @__PURE__ */ React81.forwardRef(function SelectArrow2(componentProps, forwardedRef) { 11570 const { 11571 render, 11572 className, 11573 style, 11574 ...elementProps 11575 } = componentProps; 11576 const store = useSelectRootContext(); 11577 const { 11578 side, 11579 align, 11580 arrowRef, 11581 arrowStyles, 11582 arrowUncentered, 11583 alignItemWithTriggerActive 11584 } = useSelectPositionerContext(); 11585 const open2 = store.useState("open"); 11586 const state = { 11587 open: open2, 11588 side, 11589 align, 11590 uncentered: arrowUncentered 11591 }; 11592 const element = useRenderElement("div", componentProps, { 11593 state, 11594 ref: [arrowRef, forwardedRef], 11595 props: [{ 11596 style: arrowStyles, 11597 "aria-hidden": true 11598 }, elementProps], 11599 stateAttributesMapping: popupTransitionStateMapping 11600 }); 11601 if (alignItemWithTriggerActive) { 11602 return null; 11603 } 11604 return element; 11605 }); 11606 if (true) SelectArrow.displayName = "SelectArrow"; 11607 11608 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/scroll-down-arrow/SelectScrollDownArrow.mjs 11609 var React83 = __toESM(require_react(), 1); 11610 11611 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/scroll-arrow/SelectScrollArrow.mjs 11612 var React82 = __toESM(require_react(), 1); 11613 var SelectScrollArrow = /* @__PURE__ */ React82.forwardRef(function SelectScrollArrow2(componentProps, forwardedRef) { 11614 const { 11615 render, 11616 className, 11617 style, 11618 direction, 11619 keepMounted, 11620 ...elementProps 11621 } = componentProps; 11622 const isUp = direction === "up"; 11623 const store = useSelectRootContext(); 11624 const { 11625 side, 11626 scrollDownArrowRef, 11627 scrollUpArrowRef 11628 } = useSelectPositionerContext(); 11629 const visibleSelector = isUp ? "scrollUpArrowVisible" : "scrollDownArrowVisible"; 11630 const stateVisible = store.useState(visibleSelector); 11631 const openMethod = store.useState("openMethod"); 11632 const visible = stateVisible && openMethod !== "touch"; 11633 const timeout = useTimeout(); 11634 const scrollArrowRef = isUp ? scrollUpArrowRef : scrollDownArrowRef; 11635 const { 11636 mounted, 11637 transitionStatus, 11638 setMounted 11639 } = useTransitionStatus(visible); 11640 useIsoLayoutEffect(() => { 11641 store.context.scrollArrowsMountedCountRef.current += 1; 11642 store.set("hasScrollArrows", true); 11643 return () => { 11644 store.context.scrollArrowsMountedCountRef.current = Math.max(0, store.context.scrollArrowsMountedCountRef.current - 1); 11645 if (store.context.scrollArrowsMountedCountRef.current === 0) { 11646 store.set("hasScrollArrows", false); 11647 } 11648 }; 11649 }, [store]); 11650 useOpenChangeComplete({ 11651 open: visible, 11652 ref: scrollArrowRef, 11653 onComplete() { 11654 if (!visible) { 11655 setMounted(false); 11656 } 11657 } 11658 }); 11659 const state = { 11660 direction, 11661 visible, 11662 side, 11663 transitionStatus 11664 }; 11665 const defaultProps = { 11666 "aria-hidden": true, 11667 children: isUp ? "\u25B2" : "\u25BC", 11668 style: { 11669 position: "absolute" 11670 }, 11671 onMouseMove(event) { 11672 if (event.movementX === 0 && event.movementY === 0 || timeout.isStarted()) { 11673 return; 11674 } 11675 store.set("activeIndex", null); 11676 function scrollNextItem() { 11677 const scroller = store.state.listElement ?? store.context.popupRef.current; 11678 if (!scroller) { 11679 return; 11680 } 11681 store.set("activeIndex", null); 11682 store.context.handleScrollArrowVisibility(scroller); 11683 const maxScrollTop = getMaxScrollOffset(scroller.scrollHeight, scroller.clientHeight); 11684 const scrollTop = normalizeScrollOffset(scroller.scrollTop, maxScrollTop); 11685 const isScrolledToEdge = scrollTop === (isUp ? 0 : maxScrollTop); 11686 const items = store.context.listRef.current; 11687 if (scrollTop !== scroller.scrollTop) { 11688 scroller.scrollTop = scrollTop; 11689 } 11690 if (isScrolledToEdge) { 11691 timeout.clear(); 11692 return; 11693 } 11694 if (items.length > 0) { 11695 const scrollArrowHeight = scrollArrowRef.current?.offsetHeight || 0; 11696 scroller.scrollTop = getTargetScrollTop(items, isUp, scrollTop, scroller.clientHeight, scrollArrowHeight, maxScrollTop); 11697 } 11698 timeout.start(40, scrollNextItem); 11699 } 11700 timeout.start(40, scrollNextItem); 11701 }, 11702 onMouseLeave() { 11703 timeout.clear(); 11704 } 11705 }; 11706 const element = useRenderElement("div", componentProps, { 11707 ref: [forwardedRef, scrollArrowRef], 11708 state, 11709 props: [defaultProps, elementProps], 11710 stateAttributesMapping: transitionStatusMapping 11711 }); 11712 const shouldRender = mounted || keepMounted; 11713 if (!shouldRender) { 11714 return null; 11715 } 11716 return element; 11717 }); 11718 if (true) SelectScrollArrow.displayName = "SelectScrollArrow"; 11719 function getTargetScrollTop(items, isUp, scrollTop, clientHeight, scrollArrowHeight, maxScrollTop) { 11720 if (isUp) { 11721 let firstVisibleIndex = 0; 11722 const visibleTop = scrollTop + scrollArrowHeight - SCROLL_EDGE_TOLERANCE_PX; 11723 for (let i = 0; i < items.length; i += 1) { 11724 const item = items[i]; 11725 if (item && item.offsetTop >= visibleTop) { 11726 firstVisibleIndex = i; 11727 break; 11728 } 11729 } 11730 const targetIndex2 = Math.max(0, firstVisibleIndex - 1); 11731 const targetItem2 = items[targetIndex2]; 11732 return targetIndex2 < firstVisibleIndex && targetItem2 ? normalizeScrollOffset(targetItem2.offsetTop - scrollArrowHeight, maxScrollTop) : 0; 11733 } 11734 let lastVisibleIndex = items.length - 1; 11735 const visibleBottom = scrollTop + clientHeight - scrollArrowHeight + SCROLL_EDGE_TOLERANCE_PX; 11736 for (let i = 0; i < items.length; i += 1) { 11737 const item = items[i]; 11738 if (item && item.offsetTop + item.offsetHeight > visibleBottom) { 11739 lastVisibleIndex = Math.max(0, i - 1); 11740 break; 11741 } 11742 } 11743 const targetIndex = Math.min(items.length - 1, lastVisibleIndex + 1); 11744 const targetItem = items[targetIndex]; 11745 return targetIndex > lastVisibleIndex && targetItem ? normalizeScrollOffset(targetItem.offsetTop + targetItem.offsetHeight - clientHeight + scrollArrowHeight, maxScrollTop) : maxScrollTop; 11746 } 11747 11748 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/scroll-down-arrow/SelectScrollDownArrow.mjs 11749 var import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1); 11750 var SelectScrollDownArrow = /* @__PURE__ */ React83.forwardRef(function SelectScrollDownArrow2(props, forwardedRef) { 11751 return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(SelectScrollArrow, { 11752 ...props, 11753 ref: forwardedRef, 11754 direction: "down" 11755 }); 11756 }); 11757 if (true) SelectScrollDownArrow.displayName = "SelectScrollDownArrow"; 11758 11759 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/scroll-up-arrow/SelectScrollUpArrow.mjs 11760 var React84 = __toESM(require_react(), 1); 11761 var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1); 11762 var SelectScrollUpArrow = /* @__PURE__ */ React84.forwardRef(function SelectScrollUpArrow2(props, forwardedRef) { 11763 return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(SelectScrollArrow, { 11764 ...props, 11765 ref: forwardedRef, 11766 direction: "up" 11767 }); 11768 }); 11769 if (true) SelectScrollUpArrow.displayName = "SelectScrollUpArrow"; 11770 11771 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/group/SelectGroup.mjs 11772 var React86 = __toESM(require_react(), 1); 11773 11774 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/group/SelectGroupContext.mjs 11775 var React85 = __toESM(require_react(), 1); 11776 var SelectGroupContext = /* @__PURE__ */ React85.createContext(void 0); 11777 if (true) SelectGroupContext.displayName = "SelectGroupContext"; 11778 function useSelectGroupContext() { 11779 const context = React85.useContext(SelectGroupContext); 11780 if (context === void 0) { 11781 throw new Error(true ? "Base UI: SelectGroupContext is missing. SelectGroup parts must be placed within <Select.Group>." : formatErrorMessage_default(56)); 11782 } 11783 return context; 11784 } 11785 11786 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/group/SelectGroup.mjs 11787 var import_jsx_runtime30 = __toESM(require_jsx_runtime(), 1); 11788 var SelectGroup = /* @__PURE__ */ React86.forwardRef(function SelectGroup2(componentProps, forwardedRef) { 11789 const { 11790 render, 11791 className, 11792 style, 11793 ...elementProps 11794 } = componentProps; 11795 const [labelId, setLabelId] = React86.useState(); 11796 const contextValue = React86.useMemo(() => ({ 11797 labelId, 11798 setLabelId 11799 }), [labelId, setLabelId]); 11800 const element = useRenderElement("div", componentProps, { 11801 ref: forwardedRef, 11802 props: [{ 11803 role: "group", 11804 "aria-labelledby": labelId 11805 }, elementProps] 11806 }); 11807 return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(SelectGroupContext.Provider, { 11808 value: contextValue, 11809 children: element 11810 }); 11811 }); 11812 if (true) SelectGroup.displayName = "SelectGroup"; 11813 11814 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/group-label/SelectGroupLabel.mjs 11815 var React87 = __toESM(require_react(), 1); 11816 var SelectGroupLabel = /* @__PURE__ */ React87.forwardRef(function SelectGroupLabel2(componentProps, forwardedRef) { 11817 const { 11818 render, 11819 className, 11820 style, 11821 id: idProp, 11822 ...elementProps 11823 } = componentProps; 11824 const { 11825 setLabelId 11826 } = useSelectGroupContext(); 11827 const id = useBaseUiId(idProp); 11828 useIsoLayoutEffect(() => { 11829 setLabelId(id); 11830 return () => { 11831 setLabelId((currentId) => currentId === id ? void 0 : currentId); 11832 }; 11833 }, [id, setLabelId]); 11834 const element = useRenderElement("div", componentProps, { 11835 ref: forwardedRef, 11836 props: [{ 11837 id, 11838 "aria-hidden": true 11839 }, elementProps] 11840 }); 11841 return element; 11842 }); 11843 if (true) SelectGroupLabel.displayName = "SelectGroupLabel"; 11844 11845 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/separator/SelectSeparator.mjs 11846 var SelectSeparator = ListboxSeparator; 11847 11848 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/use-render/useRender.mjs 11849 function useRender(params) { 11850 return useRenderElement(params.defaultTagName ?? "div", params, params); 11851 } 11852 11853 // packages/ui/build-module/text/text.mjs 11854 var import_element8 = __toESM(require_element(), 1); 11855 var STYLE_HASH_ATTRIBUTE = "data-wp-hash"; 11856 function getRuntime() { 11857 const globalScope = globalThis; 11858 if (globalScope.__wpStyleRuntime) { 11859 return globalScope.__wpStyleRuntime; 11860 } 11861 globalScope.__wpStyleRuntime = { 11862 documents: /* @__PURE__ */ new Map(), 11863 styles: /* @__PURE__ */ new Map(), 11864 injectedStyles: /* @__PURE__ */ new WeakMap() 11865 }; 11866 if (typeof document !== "undefined") { 11867 registerDocument(document); 11868 } 11869 return globalScope.__wpStyleRuntime; 11870 } 11871 function documentContainsStyleHash(targetDocument, hash) { 11872 if (!targetDocument.head) { 11873 return false; 11874 } 11875 for (const style of targetDocument.head.querySelectorAll( 11876 `style[$STYLE_HASH_ATTRIBUTE}]` 11877 )) { 11878 if (style.getAttribute(STYLE_HASH_ATTRIBUTE) === hash) { 11879 return true; 11880 } 11881 } 11882 return false; 11883 } 11884 function injectStyle(targetDocument, hash, css) { 11885 if (!targetDocument.head) { 11886 return; 11887 } 11888 const runtime = getRuntime(); 11889 let injectedStyles = runtime.injectedStyles.get(targetDocument); 11890 if (!injectedStyles) { 11891 injectedStyles = /* @__PURE__ */ new Set(); 11892 runtime.injectedStyles.set(targetDocument, injectedStyles); 11893 } 11894 if (injectedStyles.has(hash)) { 11895 return; 11896 } 11897 if (documentContainsStyleHash(targetDocument, hash)) { 11898 injectedStyles.add(hash); 11899 return; 11900 } 11901 const style = targetDocument.createElement("style"); 11902 style.setAttribute(STYLE_HASH_ATTRIBUTE, hash); 11903 style.appendChild(targetDocument.createTextNode(css)); 11904 targetDocument.head.appendChild(style); 11905 injectedStyles.add(hash); 11906 } 11907 function registerDocument(targetDocument) { 11908 const runtime = getRuntime(); 11909 runtime.documents.set( 11910 targetDocument, 11911 (runtime.documents.get(targetDocument) ?? 0) + 1 11912 ); 11913 for (const [hash, css] of runtime.styles) { 11914 injectStyle(targetDocument, hash, css); 11915 } 11916 return () => { 11917 const count = runtime.documents.get(targetDocument); 11918 if (count === void 0) { 11919 return; 11920 } 11921 if (count <= 1) { 11922 runtime.documents.delete(targetDocument); 11923 return; 11924 } 11925 runtime.documents.set(targetDocument, count - 1); 11926 }; 11927 } 11928 function registerStyle(hash, css) { 11929 const runtime = getRuntime(); 11930 runtime.styles.set(hash, css); 11931 for (const targetDocument of runtime.documents.keys()) { 11932 injectStyle(targetDocument, hash, css); 11933 } 11934 } 11935 if (typeof process === "undefined" || true) { 11936 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)}}}'); 11937 } 11938 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" }; 11939 if (typeof process === "undefined" || true) { 11940 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)}"); 11941 } 11942 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" }; 11943 var Text = (0, import_element8.forwardRef)( 11944 function UnforwardedText({ variant = "body-md", render, className, ...props }, ref) { 11945 const element = useRender({ 11946 render, 11947 defaultTagName: "span", 11948 ref, 11949 props: mergeProps(props, { 11950 className: clsx_default( 11951 style_default.text, 11952 global_css_defense_default.heading, 11953 global_css_defense_default.p, 11954 style_default[variant], 11955 className 11956 ) 11957 }) 11958 }); 11959 return element; 11960 } 11961 ); 11962 11963 // packages/ui/build-module/visually-hidden/visually-hidden.mjs 11964 var import_element9 = __toESM(require_element(), 1); 11965 var STYLE_HASH_ATTRIBUTE2 = "data-wp-hash"; 11966 function getRuntime2() { 11967 const globalScope = globalThis; 11968 if (globalScope.__wpStyleRuntime) { 11969 return globalScope.__wpStyleRuntime; 11970 } 11971 globalScope.__wpStyleRuntime = { 11972 documents: /* @__PURE__ */ new Map(), 11973 styles: /* @__PURE__ */ new Map(), 11974 injectedStyles: /* @__PURE__ */ new WeakMap() 11975 }; 11976 if (typeof document !== "undefined") { 11977 registerDocument2(document); 11978 } 11979 return globalScope.__wpStyleRuntime; 11980 } 11981 function documentContainsStyleHash2(targetDocument, hash) { 11982 if (!targetDocument.head) { 11983 return false; 11984 } 11985 for (const style of targetDocument.head.querySelectorAll( 11986 `style[$STYLE_HASH_ATTRIBUTE2}]` 11987 )) { 11988 if (style.getAttribute(STYLE_HASH_ATTRIBUTE2) === hash) { 11989 return true; 11990 } 11991 } 11992 return false; 11993 } 11994 function injectStyle2(targetDocument, hash, css) { 11995 if (!targetDocument.head) { 11996 return; 11997 } 11998 const runtime = getRuntime2(); 11999 let injectedStyles = runtime.injectedStyles.get(targetDocument); 12000 if (!injectedStyles) { 12001 injectedStyles = /* @__PURE__ */ new Set(); 12002 runtime.injectedStyles.set(targetDocument, injectedStyles); 12003 } 12004 if (injectedStyles.has(hash)) { 12005 return; 12006 } 12007 if (documentContainsStyleHash2(targetDocument, hash)) { 12008 injectedStyles.add(hash); 12009 return; 12010 } 12011 const style = targetDocument.createElement("style"); 12012 style.setAttribute(STYLE_HASH_ATTRIBUTE2, hash); 12013 style.appendChild(targetDocument.createTextNode(css)); 12014 targetDocument.head.appendChild(style); 12015 injectedStyles.add(hash); 12016 } 12017 function registerDocument2(targetDocument) { 12018 const runtime = getRuntime2(); 12019 runtime.documents.set( 12020 targetDocument, 12021 (runtime.documents.get(targetDocument) ?? 0) + 1 12022 ); 12023 for (const [hash, css] of runtime.styles) { 12024 injectStyle2(targetDocument, hash, css); 12025 } 12026 return () => { 12027 const count = runtime.documents.get(targetDocument); 12028 if (count === void 0) { 12029 return; 12030 } 12031 if (count <= 1) { 12032 runtime.documents.delete(targetDocument); 12033 return; 12034 } 12035 runtime.documents.set(targetDocument, count - 1); 12036 }; 12037 } 12038 function registerStyle2(hash, css) { 12039 const runtime = getRuntime2(); 12040 runtime.styles.set(hash, css); 12041 for (const targetDocument of runtime.documents.keys()) { 12042 injectStyle2(targetDocument, hash, css); 12043 } 12044 } 12045 if (typeof process === "undefined" || true) { 12046 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}"); 12047 } 12048 var style_default2 = { "visually-hidden": "f37b9e2e191ebd66__visually-hidden" }; 12049 var VisuallyHidden = (0, import_element9.forwardRef)( 12050 function UnforwardedVisuallyHidden({ render, ...restProps }, ref) { 12051 const element = useRender({ 12052 render, 12053 ref, 12054 props: mergeProps( 12055 { className: style_default2["visually-hidden"] }, 12056 restProps, 12057 { 12058 // @ts-expect-error Arbitrary data-* attributes aren't indexable on the typed div props. Kept hardcoded so consumers can't change or remove it. 12059 "data-visually-hidden": "" 12060 } 12061 ) 12062 }); 12063 return element; 12064 } 12065 ); 12066 12067 // packages/ui/build-module/utils/item-popup/item-content.mjs 12068 var import_element10 = __toESM(require_element(), 1); 12069 var VALIDATION_ENABLED = true; 12070 function parseItemContent(children, { Label: Label2, Description: Description2, validationMessage }) { 12071 const childArray = import_element10.Children.toArray(children); 12072 const [label, ...descriptions] = childArray; 12073 const hasLabel = (0, import_element10.isValidElement)(label) && label.type === Label2; 12074 const descriptionElements = descriptions.filter( 12075 (description) => (0, import_element10.isValidElement)(description) && description.type === Description2 12076 ); 12077 if (VALIDATION_ENABLED && (!hasLabel || descriptionElements.length !== descriptions.length)) { 12078 throw new Error(validationMessage); 12079 } 12080 return { 12081 descriptionIds: descriptionElements.map( 12082 (description) => description.props.id 12083 ), 12084 hasLabel, 12085 labelId: hasLabel ? label.props.id : void 0 12086 }; 12087 } 12088 function useItemContent(children, components, { 12089 "aria-describedby": ariaDescribedBy, 12090 "aria-label": ariaLabel, 12091 "aria-labelledby": ariaLabelledBy 12092 } = {}) { 12093 const generatedLabelId = (0, import_element10.useId)(); 12094 const generatedDescriptionId = (0, import_element10.useId)(); 12095 const { descriptionIds, hasLabel, labelId } = parseItemContent( 12096 children, 12097 components 12098 ); 12099 const resolvedLabelId = hasLabel ? labelId ?? generatedLabelId : void 0; 12100 const resolvedDescriptionIds = descriptionIds.map( 12101 (descriptionId, index2) => descriptionId ?? `$generatedDescriptionId}-$index2}` 12102 ); 12103 const itemDescribedBy = Array.from( 12104 /* @__PURE__ */ new Set([ 12105 ...ariaDescribedBy?.split(/\s+/).filter(Boolean) ?? [], 12106 ...resolvedDescriptionIds 12107 ]) 12108 ).join(" "); 12109 let descriptionIndex = 0; 12110 const { Label: Label2, Description: Description2, descriptionValidationToken } = components; 12111 const contentChildren = import_element10.Children.map(children, (child) => { 12112 if (!(0, import_element10.isValidElement)(child)) { 12113 return child; 12114 } 12115 if (child.type === Label2) { 12116 return child.props.id === resolvedLabelId ? child : (0, import_element10.cloneElement)(child, { id: resolvedLabelId }); 12117 } 12118 if (child.type !== Description2) { 12119 return child; 12120 } 12121 const descriptionId = resolvedDescriptionIds[descriptionIndex++]; 12122 if (!descriptionValidationToken && child.props.id === descriptionId) { 12123 return child; 12124 } 12125 return (0, import_element10.cloneElement)(child, { 12126 id: descriptionId, 12127 ...descriptionValidationToken && { 12128 validationToken: descriptionValidationToken 12129 } 12130 }); 12131 }); 12132 const labelledBy = ariaLabelledBy ?? (ariaLabel ? void 0 : resolvedLabelId); 12133 return { 12134 contentChildren, 12135 resolvedLabelId, 12136 itemAriaProps: { 12137 "aria-describedby": itemDescribedBy || void 0, 12138 "aria-label": ariaLabel, 12139 "aria-labelledby": labelledBy 12140 } 12141 }; 12142 } 12143 12144 // packages/ui/build-module/utils/render-slot-with-children.mjs 12145 var import_element11 = __toESM(require_element(), 1); 12146 function renderSlotWithChildren(slot, defaultSlot, children) { 12147 return (0, import_element11.cloneElement)( 12148 slot ?? defaultSlot, 12149 { children } 12150 ); 12151 } 12152 12153 // packages/ui/build-module/utils/wp-compat-overlay-slot.mjs 12154 var STYLE_HASH_ATTRIBUTE3 = "data-wp-hash"; 12155 function getRuntime3() { 12156 const globalScope = globalThis; 12157 if (globalScope.__wpStyleRuntime) { 12158 return globalScope.__wpStyleRuntime; 12159 } 12160 globalScope.__wpStyleRuntime = { 12161 documents: /* @__PURE__ */ new Map(), 12162 styles: /* @__PURE__ */ new Map(), 12163 injectedStyles: /* @__PURE__ */ new WeakMap() 12164 }; 12165 if (typeof document !== "undefined") { 12166 registerDocument3(document); 12167 } 12168 return globalScope.__wpStyleRuntime; 12169 } 12170 function documentContainsStyleHash3(targetDocument, hash) { 12171 if (!targetDocument.head) { 12172 return false; 12173 } 12174 for (const style of targetDocument.head.querySelectorAll( 12175 `style[$STYLE_HASH_ATTRIBUTE3}]` 12176 )) { 12177 if (style.getAttribute(STYLE_HASH_ATTRIBUTE3) === hash) { 12178 return true; 12179 } 12180 } 12181 return false; 12182 } 12183 function injectStyle3(targetDocument, hash, css) { 12184 if (!targetDocument.head) { 12185 return; 12186 } 12187 const runtime = getRuntime3(); 12188 let injectedStyles = runtime.injectedStyles.get(targetDocument); 12189 if (!injectedStyles) { 12190 injectedStyles = /* @__PURE__ */ new Set(); 12191 runtime.injectedStyles.set(targetDocument, injectedStyles); 12192 } 12193 if (injectedStyles.has(hash)) { 12194 return; 12195 } 12196 if (documentContainsStyleHash3(targetDocument, hash)) { 12197 injectedStyles.add(hash); 12198 return; 12199 } 12200 const style = targetDocument.createElement("style"); 12201 style.setAttribute(STYLE_HASH_ATTRIBUTE3, hash); 12202 style.appendChild(targetDocument.createTextNode(css)); 12203 targetDocument.head.appendChild(style); 12204 injectedStyles.add(hash); 12205 } 12206 function registerDocument3(targetDocument) { 12207 const runtime = getRuntime3(); 12208 runtime.documents.set( 12209 targetDocument, 12210 (runtime.documents.get(targetDocument) ?? 0) + 1 12211 ); 12212 for (const [hash, css] of runtime.styles) { 12213 injectStyle3(targetDocument, hash, css); 12214 } 12215 return () => { 12216 const count = runtime.documents.get(targetDocument); 12217 if (count === void 0) { 12218 return; 12219 } 12220 if (count <= 1) { 12221 runtime.documents.delete(targetDocument); 12222 return; 12223 } 12224 runtime.documents.set(targetDocument, count - 1); 12225 }; 12226 } 12227 function registerStyle3(hash, css) { 12228 const runtime = getRuntime3(); 12229 runtime.styles.set(hash, css); 12230 for (const targetDocument of runtime.documents.keys()) { 12231 injectStyle3(targetDocument, hash, css); 12232 } 12233 } 12234 if (typeof process === "undefined" || true) { 12235 registerStyle3("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}}}"); 12236 } 12237 var wp_compat_overlay_slot_default = { "slot": "_11fc52b637ff8a7e__slot" }; 12238 var WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE = "data-wp-compat-overlay-slot"; 12239 function resolveOwnerDocument() { 12240 return typeof document === "undefined" ? null : document; 12241 } 12242 function isInWordPressEnvironment() { 12243 let topWp; 12244 try { 12245 topWp = window.top?.wp; 12246 } catch { 12247 } 12248 const wp = topWp ?? window.wp; 12249 return typeof wp?.components === "object" && wp.components !== null; 12250 } 12251 var cachedSlot = null; 12252 function ensureSlotIsAccessible(element) { 12253 element.setAttribute("aria-hidden", "false"); 12254 return element; 12255 } 12256 function createSlot(ownerDocument2) { 12257 const element = ownerDocument2.createElement("div"); 12258 element.setAttribute(WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE, ""); 12259 if (wp_compat_overlay_slot_default.slot) { 12260 element.classList.add(wp_compat_overlay_slot_default.slot); 12261 } 12262 ownerDocument2.body.appendChild(element); 12263 return element; 12264 } 12265 function getWpCompatOverlaySlot() { 12266 if (typeof window === "undefined") { 12267 return void 0; 12268 } 12269 if (!isInWordPressEnvironment() && window.__wpUiCompatOverlaySlotEnabled !== true) { 12270 return void 0; 12271 } 12272 const ownerDocument2 = resolveOwnerDocument(); 12273 if (!ownerDocument2 || !ownerDocument2.body) { 12274 return void 0; 12275 } 12276 if (cachedSlot && cachedSlot.ownerDocument === ownerDocument2 && cachedSlot.isConnected) { 12277 return ensureSlotIsAccessible(cachedSlot); 12278 } 12279 const existing = ownerDocument2.querySelector( 12280 `[$WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE}]` 12281 ); 12282 if (existing instanceof HTMLDivElement) { 12283 cachedSlot = ensureSlotIsAccessible(existing); 12284 return cachedSlot; 12285 } 12286 if (cachedSlot?.isConnected) { 12287 cachedSlot.remove(); 12288 } 12289 cachedSlot = ensureSlotIsAccessible(createSlot(ownerDocument2)); 12290 return cachedSlot; 12291 } 12292 12293 // packages/ui/build-module/form/primitives/constants.mjs 12294 var ITEM_POPUP_POSITIONER_PROPS = { 12295 align: "start", 12296 sideOffset: 8, 12297 collisionPadding: 12 12298 }; 12299 12300 // packages/ui/build-module/utils/direction-provider.mjs 12301 var import_i18n = __toESM(require_i18n(), 1); 12302 var import_jsx_runtime31 = __toESM(require_jsx_runtime(), 1); 12303 function DirectionProvider3({ children }) { 12304 return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(DirectionProvider, { direction: (0, import_i18n.isRTL)() ? "rtl" : "ltr", children }); 12305 } 12306 12307 // packages/ui/build-module/stack/stack.mjs 12308 var import_element12 = __toESM(require_element(), 1); 12309 var STYLE_HASH_ATTRIBUTE4 = "data-wp-hash"; 12310 function getRuntime4() { 12311 const globalScope = globalThis; 12312 if (globalScope.__wpStyleRuntime) { 12313 return globalScope.__wpStyleRuntime; 12314 } 12315 globalScope.__wpStyleRuntime = { 12316 documents: /* @__PURE__ */ new Map(), 12317 styles: /* @__PURE__ */ new Map(), 12318 injectedStyles: /* @__PURE__ */ new WeakMap() 12319 }; 12320 if (typeof document !== "undefined") { 12321 registerDocument4(document); 12322 } 12323 return globalScope.__wpStyleRuntime; 12324 } 12325 function documentContainsStyleHash4(targetDocument, hash) { 12326 if (!targetDocument.head) { 12327 return false; 12328 } 12329 for (const style of targetDocument.head.querySelectorAll( 12330 `style[$STYLE_HASH_ATTRIBUTE4}]` 12331 )) { 12332 if (style.getAttribute(STYLE_HASH_ATTRIBUTE4) === hash) { 12333 return true; 12334 } 12335 } 12336 return false; 12337 } 12338 function injectStyle4(targetDocument, hash, css) { 12339 if (!targetDocument.head) { 12340 return; 12341 } 12342 const runtime = getRuntime4(); 12343 let injectedStyles = runtime.injectedStyles.get(targetDocument); 12344 if (!injectedStyles) { 12345 injectedStyles = /* @__PURE__ */ new Set(); 12346 runtime.injectedStyles.set(targetDocument, injectedStyles); 12347 } 12348 if (injectedStyles.has(hash)) { 12349 return; 12350 } 12351 if (documentContainsStyleHash4(targetDocument, hash)) { 12352 injectedStyles.add(hash); 12353 return; 12354 } 12355 const style = targetDocument.createElement("style"); 12356 style.setAttribute(STYLE_HASH_ATTRIBUTE4, hash); 12357 style.appendChild(targetDocument.createTextNode(css)); 12358 targetDocument.head.appendChild(style); 12359 injectedStyles.add(hash); 12360 } 12361 function registerDocument4(targetDocument) { 12362 const runtime = getRuntime4(); 12363 runtime.documents.set( 12364 targetDocument, 12365 (runtime.documents.get(targetDocument) ?? 0) + 1 12366 ); 12367 for (const [hash, css] of runtime.styles) { 12368 injectStyle4(targetDocument, hash, css); 12369 } 12370 return () => { 12371 const count = runtime.documents.get(targetDocument); 12372 if (count === void 0) { 12373 return; 12374 } 12375 if (count <= 1) { 12376 runtime.documents.delete(targetDocument); 12377 return; 12378 } 12379 runtime.documents.set(targetDocument, count - 1); 12380 }; 12381 } 12382 function registerStyle4(hash, css) { 12383 const runtime = getRuntime4(); 12384 runtime.styles.set(hash, css); 12385 for (const targetDocument of runtime.documents.keys()) { 12386 injectStyle4(targetDocument, hash, css); 12387 } 12388 } 12389 if (typeof process === "undefined" || true) { 12390 registerStyle4("32aba35fe1", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._19ce0419607e1896__stack{display:flex}}}"); 12391 } 12392 var style_default3 = { "stack": "_19ce0419607e1896__stack" }; 12393 var gapTokens = { 12394 xs: "var(--wpds-dimension-gap-xs, 4px)", 12395 sm: "var(--wpds-dimension-gap-sm, 8px)", 12396 md: "var(--wpds-dimension-gap-md, 12px)", 12397 lg: "var(--wpds-dimension-gap-lg, 16px)", 12398 xl: "var(--wpds-dimension-gap-xl, 24px)", 12399 "2xl": "var(--wpds-dimension-gap-2xl, 32px)", 12400 "3xl": "var(--wpds-dimension-gap-3xl, 40px)" 12401 }; 12402 var Stack = (0, import_element12.forwardRef)( 12403 function UnforwardedStack({ direction, gap, align, justify, wrap, render, ...props }, ref) { 12404 const style = { 12405 gap: gap && gapTokens[gap], 12406 alignItems: align, 12407 justifyContent: justify, 12408 flexDirection: direction, 12409 flexWrap: wrap 12410 }; 12411 const element = useRender({ 12412 render, 12413 ref, 12414 props: mergeProps(props, { 12415 style, 12416 className: style_default3.stack 12417 }) 12418 }); 12419 return element; 12420 } 12421 ); 12422 12423 // packages/ui/build-module/form/primitives/input-layout/input-layout.mjs 12424 var import_element13 = __toESM(require_element(), 1); 12425 var import_jsx_runtime32 = __toESM(require_jsx_runtime(), 1); 12426 var STYLE_HASH_ATTRIBUTE5 = "data-wp-hash"; 12427 function getRuntime5() { 12428 const globalScope = globalThis; 12429 if (globalScope.__wpStyleRuntime) { 12430 return globalScope.__wpStyleRuntime; 12431 } 12432 globalScope.__wpStyleRuntime = { 12433 documents: /* @__PURE__ */ new Map(), 12434 styles: /* @__PURE__ */ new Map(), 12435 injectedStyles: /* @__PURE__ */ new WeakMap() 12436 }; 12437 if (typeof document !== "undefined") { 12438 registerDocument5(document); 12439 } 12440 return globalScope.__wpStyleRuntime; 12441 } 12442 function documentContainsStyleHash5(targetDocument, hash) { 12443 if (!targetDocument.head) { 12444 return false; 12445 } 12446 for (const style of targetDocument.head.querySelectorAll( 12447 `style[$STYLE_HASH_ATTRIBUTE5}]` 12448 )) { 12449 if (style.getAttribute(STYLE_HASH_ATTRIBUTE5) === hash) { 12450 return true; 12451 } 12452 } 12453 return false; 12454 } 12455 function injectStyle5(targetDocument, hash, css) { 12456 if (!targetDocument.head) { 12457 return; 12458 } 12459 const runtime = getRuntime5(); 12460 let injectedStyles = runtime.injectedStyles.get(targetDocument); 12461 if (!injectedStyles) { 12462 injectedStyles = /* @__PURE__ */ new Set(); 12463 runtime.injectedStyles.set(targetDocument, injectedStyles); 12464 } 12465 if (injectedStyles.has(hash)) { 12466 return; 12467 } 12468 if (documentContainsStyleHash5(targetDocument, hash)) { 12469 injectedStyles.add(hash); 12470 return; 12471 } 12472 const style = targetDocument.createElement("style"); 12473 style.setAttribute(STYLE_HASH_ATTRIBUTE5, hash); 12474 style.appendChild(targetDocument.createTextNode(css)); 12475 targetDocument.head.appendChild(style); 12476 injectedStyles.add(hash); 12477 } 12478 function registerDocument5(targetDocument) { 12479 const runtime = getRuntime5(); 12480 runtime.documents.set( 12481 targetDocument, 12482 (runtime.documents.get(targetDocument) ?? 0) + 1 12483 ); 12484 for (const [hash, css] of runtime.styles) { 12485 injectStyle5(targetDocument, hash, css); 12486 } 12487 return () => { 12488 const count = runtime.documents.get(targetDocument); 12489 if (count === void 0) { 12490 return; 12491 } 12492 if (count <= 1) { 12493 runtime.documents.delete(targetDocument); 12494 return; 12495 } 12496 runtime.documents.set(targetDocument, count - 1); 12497 }; 12498 } 12499 function registerStyle5(hash, css) { 12500 const runtime = getRuntime5(); 12501 runtime.styles.set(hash, css); 12502 for (const targetDocument of runtime.documents.keys()) { 12503 injectStyle5(targetDocument, hash, css); 12504 } 12505 } 12506 if (typeof process === "undefined" || true) { 12507 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)}"); 12508 } 12509 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" }; 12510 if (typeof process === "undefined" || true) { 12511 registerStyle5("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 12512 } 12513 var resets_default = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; 12514 if (typeof process === "undefined" || true) { 12515 registerStyle5("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))}}}}'); 12516 } 12517 var style_default4 = { "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" }; 12518 var InputLayout = (0, import_element13.forwardRef)( 12519 function UnforwardedInputLayout({ 12520 className, 12521 children, 12522 visuallyDisabled, 12523 size: size4 = "default", 12524 isBorderless, 12525 prefix, 12526 suffix, 12527 ...restProps 12528 }, ref) { 12529 return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)( 12530 "div", 12531 { 12532 ref, 12533 className: clsx_default( 12534 global_css_defense_default2.div, 12535 resets_default["box-sizing"], 12536 style_default4["input-layout"], 12537 style_default4[`is-size-$size4}`], 12538 visuallyDisabled && style_default4["is-disabled"], 12539 isBorderless && style_default4["is-borderless"], 12540 className 12541 ), 12542 ...restProps, 12543 children: [ 12544 import_element13.Children.count(prefix) > 0 && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)( 12545 "div", 12546 { 12547 className: style_default4["slot-wrapper"], 12548 "data-slot-type": "prefix", 12549 children: prefix 12550 } 12551 ), 12552 children, 12553 import_element13.Children.count(suffix) > 0 && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)( 12554 "div", 12555 { 12556 className: style_default4["slot-wrapper"], 12557 "data-slot-type": "suffix", 12558 children: suffix 12559 } 12560 ) 12561 ] 12562 } 12563 ); 12564 } 12565 ); 12566 12567 // packages/ui/build-module/form/primitives/input-layout/slot.mjs 12568 var import_element14 = __toESM(require_element(), 1); 12569 var import_jsx_runtime33 = __toESM(require_jsx_runtime(), 1); 12570 var STYLE_HASH_ATTRIBUTE6 = "data-wp-hash"; 12571 function getRuntime6() { 12572 const globalScope = globalThis; 12573 if (globalScope.__wpStyleRuntime) { 12574 return globalScope.__wpStyleRuntime; 12575 } 12576 globalScope.__wpStyleRuntime = { 12577 documents: /* @__PURE__ */ new Map(), 12578 styles: /* @__PURE__ */ new Map(), 12579 injectedStyles: /* @__PURE__ */ new WeakMap() 12580 }; 12581 if (typeof document !== "undefined") { 12582 registerDocument6(document); 12583 } 12584 return globalScope.__wpStyleRuntime; 12585 } 12586 function documentContainsStyleHash6(targetDocument, hash) { 12587 if (!targetDocument.head) { 12588 return false; 12589 } 12590 for (const style of targetDocument.head.querySelectorAll( 12591 `style[$STYLE_HASH_ATTRIBUTE6}]` 12592 )) { 12593 if (style.getAttribute(STYLE_HASH_ATTRIBUTE6) === hash) { 12594 return true; 12595 } 12596 } 12597 return false; 12598 } 12599 function injectStyle6(targetDocument, hash, css) { 12600 if (!targetDocument.head) { 12601 return; 12602 } 12603 const runtime = getRuntime6(); 12604 let injectedStyles = runtime.injectedStyles.get(targetDocument); 12605 if (!injectedStyles) { 12606 injectedStyles = /* @__PURE__ */ new Set(); 12607 runtime.injectedStyles.set(targetDocument, injectedStyles); 12608 } 12609 if (injectedStyles.has(hash)) { 12610 return; 12611 } 12612 if (documentContainsStyleHash6(targetDocument, hash)) { 12613 injectedStyles.add(hash); 12614 return; 12615 } 12616 const style = targetDocument.createElement("style"); 12617 style.setAttribute(STYLE_HASH_ATTRIBUTE6, hash); 12618 style.appendChild(targetDocument.createTextNode(css)); 12619 targetDocument.head.appendChild(style); 12620 injectedStyles.add(hash); 12621 } 12622 function registerDocument6(targetDocument) { 12623 const runtime = getRuntime6(); 12624 runtime.documents.set( 12625 targetDocument, 12626 (runtime.documents.get(targetDocument) ?? 0) + 1 12627 ); 12628 for (const [hash, css] of runtime.styles) { 12629 injectStyle6(targetDocument, hash, css); 12630 } 12631 return () => { 12632 const count = runtime.documents.get(targetDocument); 12633 if (count === void 0) { 12634 return; 12635 } 12636 if (count <= 1) { 12637 runtime.documents.delete(targetDocument); 12638 return; 12639 } 12640 runtime.documents.set(targetDocument, count - 1); 12641 }; 12642 } 12643 function registerStyle6(hash, css) { 12644 const runtime = getRuntime6(); 12645 runtime.styles.set(hash, css); 12646 for (const targetDocument of runtime.documents.keys()) { 12647 injectStyle6(targetDocument, hash, css); 12648 } 12649 } 12650 if (typeof process === "undefined" || true) { 12651 registerStyle6("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))}}}}'); 12652 } 12653 var style_default5 = { "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" }; 12654 var InputLayoutSlot = (0, import_element14.forwardRef)(function UnforwardedInputLayoutSlot({ padding = "default", className, ...restProps }, ref) { 12655 return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( 12656 "div", 12657 { 12658 ref, 12659 className: clsx_default( 12660 style_default5["input-layout-slot"], 12661 style_default5[`is-padding-$padding}`], 12662 className 12663 ), 12664 ...restProps 12665 } 12666 ); 12667 }); 12668 InputLayoutSlot.displayName = "InputLayout.Slot"; 12669 12670 // packages/ui/build-module/form/primitives/input-layout/index.mjs 12671 var InputLayout2 = Object.assign(InputLayout, { 12672 Slot: InputLayoutSlot 12673 }); 12674 12675 // packages/ui/build-module/utils/css/item-popup.mjs 12676 var STYLE_HASH_ATTRIBUTE7 = "data-wp-hash"; 12677 function getRuntime7() { 12678 const globalScope = globalThis; 12679 if (globalScope.__wpStyleRuntime) { 12680 return globalScope.__wpStyleRuntime; 12681 } 12682 globalScope.__wpStyleRuntime = { 12683 documents: /* @__PURE__ */ new Map(), 12684 styles: /* @__PURE__ */ new Map(), 12685 injectedStyles: /* @__PURE__ */ new WeakMap() 12686 }; 12687 if (typeof document !== "undefined") { 12688 registerDocument7(document); 12689 } 12690 return globalScope.__wpStyleRuntime; 12691 } 12692 function documentContainsStyleHash7(targetDocument, hash) { 12693 if (!targetDocument.head) { 12694 return false; 12695 } 12696 for (const style of targetDocument.head.querySelectorAll( 12697 `style[$STYLE_HASH_ATTRIBUTE7}]` 12698 )) { 12699 if (style.getAttribute(STYLE_HASH_ATTRIBUTE7) === hash) { 12700 return true; 12701 } 12702 } 12703 return false; 12704 } 12705 function injectStyle7(targetDocument, hash, css) { 12706 if (!targetDocument.head) { 12707 return; 12708 } 12709 const runtime = getRuntime7(); 12710 let injectedStyles = runtime.injectedStyles.get(targetDocument); 12711 if (!injectedStyles) { 12712 injectedStyles = /* @__PURE__ */ new Set(); 12713 runtime.injectedStyles.set(targetDocument, injectedStyles); 12714 } 12715 if (injectedStyles.has(hash)) { 12716 return; 12717 } 12718 if (documentContainsStyleHash7(targetDocument, hash)) { 12719 injectedStyles.add(hash); 12720 return; 12721 } 12722 const style = targetDocument.createElement("style"); 12723 style.setAttribute(STYLE_HASH_ATTRIBUTE7, hash); 12724 style.appendChild(targetDocument.createTextNode(css)); 12725 targetDocument.head.appendChild(style); 12726 injectedStyles.add(hash); 12727 } 12728 function registerDocument7(targetDocument) { 12729 const runtime = getRuntime7(); 12730 runtime.documents.set( 12731 targetDocument, 12732 (runtime.documents.get(targetDocument) ?? 0) + 1 12733 ); 12734 for (const [hash, css] of runtime.styles) { 12735 injectStyle7(targetDocument, hash, css); 12736 } 12737 return () => { 12738 const count = runtime.documents.get(targetDocument); 12739 if (count === void 0) { 12740 return; 12741 } 12742 if (count <= 1) { 12743 runtime.documents.delete(targetDocument); 12744 return; 12745 } 12746 runtime.documents.set(targetDocument, count - 1); 12747 }; 12748 } 12749 function registerStyle7(hash, css) { 12750 const runtime = getRuntime7(); 12751 runtime.styles.set(hash, css); 12752 for (const targetDocument of runtime.documents.keys()) { 12753 injectStyle7(targetDocument, hash, css); 12754 } 12755 } 12756 if (typeof process === "undefined" || true) { 12757 registerStyle7("e25d67a230", '@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([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-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{min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[aria-disabled=true] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([aria-disabled=true]) ._160635254c702623__item-description{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)}}}'); 12758 } 12759 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" }; 12760 function getItemPopupWidthClassName(width = "anchor") { 12761 switch (width) { 12762 case "available": 12763 return item_popup_default["is-width-available"]; 12764 case "content": 12765 return item_popup_default["is-width-content"]; 12766 case "lg": 12767 return item_popup_default["is-width-lg"]; 12768 case "md": 12769 return item_popup_default["is-width-md"]; 12770 case "sm": 12771 return item_popup_default["is-width-sm"]; 12772 case "anchor": 12773 return item_popup_default["is-width-anchor"]; 12774 default: 12775 return false; 12776 } 12777 } 12778 12779 // packages/ui/build-module/form/primitives/field/index.mjs 12780 var field_exports = {}; 12781 __export(field_exports, { 12782 Control: () => Control, 12783 Description: () => Description, 12784 Details: () => Details, 12785 Item: () => Item, 12786 Label: () => Label, 12787 Root: () => Root, 12788 VisualLabel: () => VisualLabel 12789 }); 12790 12791 // packages/ui/build-module/form/primitives/field/root.mjs 12792 var import_element15 = __toESM(require_element(), 1); 12793 var import_jsx_runtime34 = __toESM(require_jsx_runtime(), 1); 12794 var STYLE_HASH_ATTRIBUTE8 = "data-wp-hash"; 12795 function getRuntime8() { 12796 const globalScope = globalThis; 12797 if (globalScope.__wpStyleRuntime) { 12798 return globalScope.__wpStyleRuntime; 12799 } 12800 globalScope.__wpStyleRuntime = { 12801 documents: /* @__PURE__ */ new Map(), 12802 styles: /* @__PURE__ */ new Map(), 12803 injectedStyles: /* @__PURE__ */ new WeakMap() 12804 }; 12805 if (typeof document !== "undefined") { 12806 registerDocument8(document); 12807 } 12808 return globalScope.__wpStyleRuntime; 12809 } 12810 function documentContainsStyleHash8(targetDocument, hash) { 12811 if (!targetDocument.head) { 12812 return false; 12813 } 12814 for (const style of targetDocument.head.querySelectorAll( 12815 `style[$STYLE_HASH_ATTRIBUTE8}]` 12816 )) { 12817 if (style.getAttribute(STYLE_HASH_ATTRIBUTE8) === hash) { 12818 return true; 12819 } 12820 } 12821 return false; 12822 } 12823 function injectStyle8(targetDocument, hash, css) { 12824 if (!targetDocument.head) { 12825 return; 12826 } 12827 const runtime = getRuntime8(); 12828 let injectedStyles = runtime.injectedStyles.get(targetDocument); 12829 if (!injectedStyles) { 12830 injectedStyles = /* @__PURE__ */ new Set(); 12831 runtime.injectedStyles.set(targetDocument, injectedStyles); 12832 } 12833 if (injectedStyles.has(hash)) { 12834 return; 12835 } 12836 if (documentContainsStyleHash8(targetDocument, hash)) { 12837 injectedStyles.add(hash); 12838 return; 12839 } 12840 const style = targetDocument.createElement("style"); 12841 style.setAttribute(STYLE_HASH_ATTRIBUTE8, hash); 12842 style.appendChild(targetDocument.createTextNode(css)); 12843 targetDocument.head.appendChild(style); 12844 injectedStyles.add(hash); 12845 } 12846 function registerDocument8(targetDocument) { 12847 const runtime = getRuntime8(); 12848 runtime.documents.set( 12849 targetDocument, 12850 (runtime.documents.get(targetDocument) ?? 0) + 1 12851 ); 12852 for (const [hash, css] of runtime.styles) { 12853 injectStyle8(targetDocument, hash, css); 12854 } 12855 return () => { 12856 const count = runtime.documents.get(targetDocument); 12857 if (count === void 0) { 12858 return; 12859 } 12860 if (count <= 1) { 12861 runtime.documents.delete(targetDocument); 12862 return; 12863 } 12864 runtime.documents.set(targetDocument, count - 1); 12865 }; 12866 } 12867 function registerStyle8(hash, css) { 12868 const runtime = getRuntime8(); 12869 runtime.styles.set(hash, css); 12870 for (const targetDocument of runtime.documents.keys()) { 12871 injectStyle8(targetDocument, hash, css); 12872 } 12873 } 12874 if (typeof process === "undefined" || true) { 12875 registerStyle8("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 12876 } 12877 var resets_default2 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; 12878 var DEFAULT_RENDER = (props) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Stack, { ...props, direction: "column", gap: "sm" }); 12879 var Root = (0, import_element15.forwardRef)( 12880 function UnforwardedRoot({ className, render = DEFAULT_RENDER, ...restProps }, ref) { 12881 return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)( 12882 index_parts_exports.Root, 12883 { 12884 ref, 12885 className: clsx_default(resets_default2["box-sizing"], className), 12886 render, 12887 ...restProps 12888 } 12889 ); 12890 } 12891 ); 12892 12893 // packages/ui/build-module/form/primitives/field/item.mjs 12894 var import_element16 = __toESM(require_element(), 1); 12895 var import_jsx_runtime35 = __toESM(require_jsx_runtime(), 1); 12896 var Item = (0, import_element16.forwardRef)(function UnforwardedItem(props, ref) { 12897 return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(index_parts_exports.Item, { ref, ...props }); 12898 }); 12899 12900 // packages/ui/build-module/form/primitives/field/label.mjs 12901 var import_element17 = __toESM(require_element(), 1); 12902 var import_jsx_runtime36 = __toESM(require_jsx_runtime(), 1); 12903 var STYLE_HASH_ATTRIBUTE9 = "data-wp-hash"; 12904 function getRuntime9() { 12905 const globalScope = globalThis; 12906 if (globalScope.__wpStyleRuntime) { 12907 return globalScope.__wpStyleRuntime; 12908 } 12909 globalScope.__wpStyleRuntime = { 12910 documents: /* @__PURE__ */ new Map(), 12911 styles: /* @__PURE__ */ new Map(), 12912 injectedStyles: /* @__PURE__ */ new WeakMap() 12913 }; 12914 if (typeof document !== "undefined") { 12915 registerDocument9(document); 12916 } 12917 return globalScope.__wpStyleRuntime; 12918 } 12919 function documentContainsStyleHash9(targetDocument, hash) { 12920 if (!targetDocument.head) { 12921 return false; 12922 } 12923 for (const style of targetDocument.head.querySelectorAll( 12924 `style[$STYLE_HASH_ATTRIBUTE9}]` 12925 )) { 12926 if (style.getAttribute(STYLE_HASH_ATTRIBUTE9) === hash) { 12927 return true; 12928 } 12929 } 12930 return false; 12931 } 12932 function injectStyle9(targetDocument, hash, css) { 12933 if (!targetDocument.head) { 12934 return; 12935 } 12936 const runtime = getRuntime9(); 12937 let injectedStyles = runtime.injectedStyles.get(targetDocument); 12938 if (!injectedStyles) { 12939 injectedStyles = /* @__PURE__ */ new Set(); 12940 runtime.injectedStyles.set(targetDocument, injectedStyles); 12941 } 12942 if (injectedStyles.has(hash)) { 12943 return; 12944 } 12945 if (documentContainsStyleHash9(targetDocument, hash)) { 12946 injectedStyles.add(hash); 12947 return; 12948 } 12949 const style = targetDocument.createElement("style"); 12950 style.setAttribute(STYLE_HASH_ATTRIBUTE9, hash); 12951 style.appendChild(targetDocument.createTextNode(css)); 12952 targetDocument.head.appendChild(style); 12953 injectedStyles.add(hash); 12954 } 12955 function registerDocument9(targetDocument) { 12956 const runtime = getRuntime9(); 12957 runtime.documents.set( 12958 targetDocument, 12959 (runtime.documents.get(targetDocument) ?? 0) + 1 12960 ); 12961 for (const [hash, css] of runtime.styles) { 12962 injectStyle9(targetDocument, hash, css); 12963 } 12964 return () => { 12965 const count = runtime.documents.get(targetDocument); 12966 if (count === void 0) { 12967 return; 12968 } 12969 if (count <= 1) { 12970 runtime.documents.delete(targetDocument); 12971 return; 12972 } 12973 runtime.documents.set(targetDocument, count - 1); 12974 }; 12975 } 12976 function registerStyle9(hash, css) { 12977 const runtime = getRuntime9(); 12978 runtime.styles.set(hash, css); 12979 for (const targetDocument of runtime.documents.keys()) { 12980 injectStyle9(targetDocument, hash, css); 12981 } 12982 } 12983 if (typeof process === "undefined" || true) { 12984 registerStyle9("df33c48b2d", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._2d5ad850b2f90964__label{--wp-ui-field-label-line-height:var(--wpds-typography-line-height-xs,16px);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-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);line-height:var(--wp-ui-field-label-line-height);text-transform:uppercase;&._17c4214649230bea__is-plain{font-size:var(--wpds-typography-font-size-md,13px);font-weight:var(--wpds-typography-font-weight-default,400);text-transform:none}}._08a3750500e0233f__description{--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);--_gcd-p-margin:0;text-wrap:pretty;color:var(--wpds-color-foreground-content-neutral-weak,#707070);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:var(--wpds-typography-line-height-xs,16px)}}}'); 12985 } 12986 var field_default = { "label": "_2d5ad850b2f90964__label", "is-plain": "_17c4214649230bea__is-plain", "description": "_08a3750500e0233f__description" }; 12987 var Label = (0, import_element17.forwardRef)( 12988 function UnforwardedLabel({ className, hideFromVision, variant, ...restProps }, ref) { 12989 const label = /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( 12990 index_parts_exports.Label, 12991 { 12992 ref, 12993 className: clsx_default( 12994 field_default.label, 12995 variant && field_default[`is-$variant}`], 12996 className 12997 ), 12998 ...restProps 12999 } 13000 ); 13001 if (hideFromVision) { 13002 return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(VisuallyHidden, { render: label }); 13003 } 13004 return label; 13005 } 13006 ); 13007 13008 // packages/ui/build-module/form/primitives/field/description.mjs 13009 var import_element18 = __toESM(require_element(), 1); 13010 var import_jsx_runtime37 = __toESM(require_jsx_runtime(), 1); 13011 var STYLE_HASH_ATTRIBUTE10 = "data-wp-hash"; 13012 function getRuntime10() { 13013 const globalScope = globalThis; 13014 if (globalScope.__wpStyleRuntime) { 13015 return globalScope.__wpStyleRuntime; 13016 } 13017 globalScope.__wpStyleRuntime = { 13018 documents: /* @__PURE__ */ new Map(), 13019 styles: /* @__PURE__ */ new Map(), 13020 injectedStyles: /* @__PURE__ */ new WeakMap() 13021 }; 13022 if (typeof document !== "undefined") { 13023 registerDocument10(document); 13024 } 13025 return globalScope.__wpStyleRuntime; 13026 } 13027 function documentContainsStyleHash10(targetDocument, hash) { 13028 if (!targetDocument.head) { 13029 return false; 13030 } 13031 for (const style of targetDocument.head.querySelectorAll( 13032 `style[$STYLE_HASH_ATTRIBUTE10}]` 13033 )) { 13034 if (style.getAttribute(STYLE_HASH_ATTRIBUTE10) === hash) { 13035 return true; 13036 } 13037 } 13038 return false; 13039 } 13040 function injectStyle10(targetDocument, hash, css) { 13041 if (!targetDocument.head) { 13042 return; 13043 } 13044 const runtime = getRuntime10(); 13045 let injectedStyles = runtime.injectedStyles.get(targetDocument); 13046 if (!injectedStyles) { 13047 injectedStyles = /* @__PURE__ */ new Set(); 13048 runtime.injectedStyles.set(targetDocument, injectedStyles); 13049 } 13050 if (injectedStyles.has(hash)) { 13051 return; 13052 } 13053 if (documentContainsStyleHash10(targetDocument, hash)) { 13054 injectedStyles.add(hash); 13055 return; 13056 } 13057 const style = targetDocument.createElement("style"); 13058 style.setAttribute(STYLE_HASH_ATTRIBUTE10, hash); 13059 style.appendChild(targetDocument.createTextNode(css)); 13060 targetDocument.head.appendChild(style); 13061 injectedStyles.add(hash); 13062 } 13063 function registerDocument10(targetDocument) { 13064 const runtime = getRuntime10(); 13065 runtime.documents.set( 13066 targetDocument, 13067 (runtime.documents.get(targetDocument) ?? 0) + 1 13068 ); 13069 for (const [hash, css] of runtime.styles) { 13070 injectStyle10(targetDocument, hash, css); 13071 } 13072 return () => { 13073 const count = runtime.documents.get(targetDocument); 13074 if (count === void 0) { 13075 return; 13076 } 13077 if (count <= 1) { 13078 runtime.documents.delete(targetDocument); 13079 return; 13080 } 13081 runtime.documents.set(targetDocument, count - 1); 13082 }; 13083 } 13084 function registerStyle10(hash, css) { 13085 const runtime = getRuntime10(); 13086 runtime.styles.set(hash, css); 13087 for (const targetDocument of runtime.documents.keys()) { 13088 injectStyle10(targetDocument, hash, css); 13089 } 13090 } 13091 if (typeof process === "undefined" || true) { 13092 registerStyle10("abb19c3171", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}[role=treeitem] span._400bf7ee0c6061a9__span[aria-hidden]{display:var(--_gcd-span-display,inline);font-family:var(--_gcd-span-font-family,inherit);font-size:var(--_gcd-span-font-size,inherit);line-height:var(--_gcd-span-line-height,1);pointer-events:var(--_gcd-span-pointer-events,auto);position:var(--_gcd-span-position,static)}"); 13093 } 13094 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" }; 13095 if (typeof process === "undefined" || true) { 13096 registerStyle10("df33c48b2d", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._2d5ad850b2f90964__label{--wp-ui-field-label-line-height:var(--wpds-typography-line-height-xs,16px);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-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);line-height:var(--wp-ui-field-label-line-height);text-transform:uppercase;&._17c4214649230bea__is-plain{font-size:var(--wpds-typography-font-size-md,13px);font-weight:var(--wpds-typography-font-weight-default,400);text-transform:none}}._08a3750500e0233f__description{--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);--_gcd-p-margin:0;text-wrap:pretty;color:var(--wpds-color-foreground-content-neutral-weak,#707070);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:var(--wpds-typography-line-height-xs,16px)}}}'); 13097 } 13098 var field_default2 = { "label": "_2d5ad850b2f90964__label", "is-plain": "_17c4214649230bea__is-plain", "description": "_08a3750500e0233f__description" }; 13099 var Description = (0, import_element18.forwardRef)(function UnforwardedDescription({ className, ...restProps }, ref) { 13100 return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( 13101 index_parts_exports.Description, 13102 { 13103 ref, 13104 className: clsx_default( 13105 global_css_defense_default3.p, 13106 field_default2.description, 13107 className 13108 ), 13109 ...restProps 13110 } 13111 ); 13112 }); 13113 13114 // packages/ui/build-module/form/primitives/field/details.mjs 13115 var import_element19 = __toESM(require_element(), 1); 13116 var import_i18n2 = __toESM(require_i18n(), 1); 13117 var import_jsx_runtime38 = __toESM(require_jsx_runtime(), 1); 13118 var STYLE_HASH_ATTRIBUTE11 = "data-wp-hash"; 13119 function getRuntime11() { 13120 const globalScope = globalThis; 13121 if (globalScope.__wpStyleRuntime) { 13122 return globalScope.__wpStyleRuntime; 13123 } 13124 globalScope.__wpStyleRuntime = { 13125 documents: /* @__PURE__ */ new Map(), 13126 styles: /* @__PURE__ */ new Map(), 13127 injectedStyles: /* @__PURE__ */ new WeakMap() 13128 }; 13129 if (typeof document !== "undefined") { 13130 registerDocument11(document); 13131 } 13132 return globalScope.__wpStyleRuntime; 13133 } 13134 function documentContainsStyleHash11(targetDocument, hash) { 13135 if (!targetDocument.head) { 13136 return false; 13137 } 13138 for (const style of targetDocument.head.querySelectorAll( 13139 `style[$STYLE_HASH_ATTRIBUTE11}]` 13140 )) { 13141 if (style.getAttribute(STYLE_HASH_ATTRIBUTE11) === hash) { 13142 return true; 13143 } 13144 } 13145 return false; 13146 } 13147 function injectStyle11(targetDocument, hash, css) { 13148 if (!targetDocument.head) { 13149 return; 13150 } 13151 const runtime = getRuntime11(); 13152 let injectedStyles = runtime.injectedStyles.get(targetDocument); 13153 if (!injectedStyles) { 13154 injectedStyles = /* @__PURE__ */ new Set(); 13155 runtime.injectedStyles.set(targetDocument, injectedStyles); 13156 } 13157 if (injectedStyles.has(hash)) { 13158 return; 13159 } 13160 if (documentContainsStyleHash11(targetDocument, hash)) { 13161 injectedStyles.add(hash); 13162 return; 13163 } 13164 const style = targetDocument.createElement("style"); 13165 style.setAttribute(STYLE_HASH_ATTRIBUTE11, hash); 13166 style.appendChild(targetDocument.createTextNode(css)); 13167 targetDocument.head.appendChild(style); 13168 injectedStyles.add(hash); 13169 } 13170 function registerDocument11(targetDocument) { 13171 const runtime = getRuntime11(); 13172 runtime.documents.set( 13173 targetDocument, 13174 (runtime.documents.get(targetDocument) ?? 0) + 1 13175 ); 13176 for (const [hash, css] of runtime.styles) { 13177 injectStyle11(targetDocument, hash, css); 13178 } 13179 return () => { 13180 const count = runtime.documents.get(targetDocument); 13181 if (count === void 0) { 13182 return; 13183 } 13184 if (count <= 1) { 13185 runtime.documents.delete(targetDocument); 13186 return; 13187 } 13188 runtime.documents.set(targetDocument, count - 1); 13189 }; 13190 } 13191 function registerStyle11(hash, css) { 13192 const runtime = getRuntime11(); 13193 runtime.styles.set(hash, css); 13194 for (const targetDocument of runtime.documents.keys()) { 13195 injectStyle11(targetDocument, hash, css); 13196 } 13197 } 13198 if (typeof process === "undefined" || true) { 13199 registerStyle11("df33c48b2d", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._2d5ad850b2f90964__label{--wp-ui-field-label-line-height:var(--wpds-typography-line-height-xs,16px);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-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);line-height:var(--wp-ui-field-label-line-height);text-transform:uppercase;&._17c4214649230bea__is-plain{font-size:var(--wpds-typography-font-size-md,13px);font-weight:var(--wpds-typography-font-weight-default,400);text-transform:none}}._08a3750500e0233f__description{--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);--_gcd-p-margin:0;text-wrap:pretty;color:var(--wpds-color-foreground-content-neutral-weak,#707070);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:var(--wpds-typography-line-height-xs,16px)}}}'); 13200 } 13201 var field_default3 = { "label": "_2d5ad850b2f90964__label", "is-plain": "_17c4214649230bea__is-plain", "description": "_08a3750500e0233f__description" }; 13202 var Details = (0, import_element19.forwardRef)( 13203 function UnforwardedDetails({ className, ...restProps }, ref) { 13204 return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_jsx_runtime38.Fragment, { children: [ 13205 /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(VisuallyHidden, { render: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(index_parts_exports.Description, {}), children: (0, import_i18n2.__)("More details follow the field.") }), 13206 /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( 13207 "div", 13208 { 13209 ref, 13210 className: clsx_default(field_default3.description, className), 13211 ...restProps 13212 } 13213 ) 13214 ] }); 13215 } 13216 ); 13217 13218 // packages/ui/build-module/form/primitives/field/control.mjs 13219 var import_element20 = __toESM(require_element(), 1); 13220 var import_jsx_runtime39 = __toESM(require_jsx_runtime(), 1); 13221 var Control = (0, import_element20.forwardRef)( 13222 function UnforwardedControl(props, ref) { 13223 return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(index_parts_exports.Control, { ref, ...props }); 13224 } 13225 ); 13226 13227 // packages/ui/build-module/form/primitives/field/visual-label.mjs 13228 var import_element21 = __toESM(require_element(), 1); 13229 var STYLE_HASH_ATTRIBUTE12 = "data-wp-hash"; 13230 function getRuntime12() { 13231 const globalScope = globalThis; 13232 if (globalScope.__wpStyleRuntime) { 13233 return globalScope.__wpStyleRuntime; 13234 } 13235 globalScope.__wpStyleRuntime = { 13236 documents: /* @__PURE__ */ new Map(), 13237 styles: /* @__PURE__ */ new Map(), 13238 injectedStyles: /* @__PURE__ */ new WeakMap() 13239 }; 13240 if (typeof document !== "undefined") { 13241 registerDocument12(document); 13242 } 13243 return globalScope.__wpStyleRuntime; 13244 } 13245 function documentContainsStyleHash12(targetDocument, hash) { 13246 if (!targetDocument.head) { 13247 return false; 13248 } 13249 for (const style of targetDocument.head.querySelectorAll( 13250 `style[$STYLE_HASH_ATTRIBUTE12}]` 13251 )) { 13252 if (style.getAttribute(STYLE_HASH_ATTRIBUTE12) === hash) { 13253 return true; 13254 } 13255 } 13256 return false; 13257 } 13258 function injectStyle12(targetDocument, hash, css) { 13259 if (!targetDocument.head) { 13260 return; 13261 } 13262 const runtime = getRuntime12(); 13263 let injectedStyles = runtime.injectedStyles.get(targetDocument); 13264 if (!injectedStyles) { 13265 injectedStyles = /* @__PURE__ */ new Set(); 13266 runtime.injectedStyles.set(targetDocument, injectedStyles); 13267 } 13268 if (injectedStyles.has(hash)) { 13269 return; 13270 } 13271 if (documentContainsStyleHash12(targetDocument, hash)) { 13272 injectedStyles.add(hash); 13273 return; 13274 } 13275 const style = targetDocument.createElement("style"); 13276 style.setAttribute(STYLE_HASH_ATTRIBUTE12, hash); 13277 style.appendChild(targetDocument.createTextNode(css)); 13278 targetDocument.head.appendChild(style); 13279 injectedStyles.add(hash); 13280 } 13281 function registerDocument12(targetDocument) { 13282 const runtime = getRuntime12(); 13283 runtime.documents.set( 13284 targetDocument, 13285 (runtime.documents.get(targetDocument) ?? 0) + 1 13286 ); 13287 for (const [hash, css] of runtime.styles) { 13288 injectStyle12(targetDocument, hash, css); 13289 } 13290 return () => { 13291 const count = runtime.documents.get(targetDocument); 13292 if (count === void 0) { 13293 return; 13294 } 13295 if (count <= 1) { 13296 runtime.documents.delete(targetDocument); 13297 return; 13298 } 13299 runtime.documents.set(targetDocument, count - 1); 13300 }; 13301 } 13302 function registerStyle12(hash, css) { 13303 const runtime = getRuntime12(); 13304 runtime.styles.set(hash, css); 13305 for (const targetDocument of runtime.documents.keys()) { 13306 injectStyle12(targetDocument, hash, css); 13307 } 13308 } 13309 if (typeof process === "undefined" || true) { 13310 registerStyle12("df33c48b2d", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._2d5ad850b2f90964__label{--wp-ui-field-label-line-height:var(--wpds-typography-line-height-xs,16px);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-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);line-height:var(--wp-ui-field-label-line-height);text-transform:uppercase;&._17c4214649230bea__is-plain{font-size:var(--wpds-typography-font-size-md,13px);font-weight:var(--wpds-typography-font-weight-default,400);text-transform:none}}._08a3750500e0233f__description{--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);--_gcd-p-margin:0;text-wrap:pretty;color:var(--wpds-color-foreground-content-neutral-weak,#707070);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:var(--wpds-typography-line-height-xs,16px)}}}'); 13311 } 13312 var field_default4 = { "label": "_2d5ad850b2f90964__label", "is-plain": "_17c4214649230bea__is-plain", "description": "_08a3750500e0233f__description" }; 13313 var VisualLabel = (0, import_element21.forwardRef)( 13314 function UnforwardedVisualLabel({ className, render, variant, ...restProps }, ref) { 13315 return useRender({ 13316 defaultTagName: "span", 13317 render, 13318 ref, 13319 props: mergeProps(restProps, { 13320 className: clsx_default( 13321 field_default4.label, 13322 variant && field_default4[`is-$variant}`], 13323 className 13324 ) 13325 }) 13326 }); 13327 } 13328 ); 13329 VisualLabel.displayName = "Field.VisualLabel"; 13330 13331 // packages/ui/build-module/form/primitives/select/index.mjs 13332 var select_exports = {}; 13333 __export(select_exports, { 13334 Group: () => Group, 13335 GroupLabel: () => GroupLabel, 13336 Item: () => Item2, 13337 ItemDescription: () => ItemDescription, 13338 ItemLabel: () => ItemLabel, 13339 Popup: () => Popup, 13340 Portal: () => Portal, 13341 Positioner: () => Positioner, 13342 Root: () => Root2, 13343 Separator: () => Separator, 13344 Trigger: () => Trigger 13345 }); 13346 13347 // packages/ui/build-module/form/primitives/select/group.mjs 13348 var import_element22 = __toESM(require_element(), 1); 13349 var import_jsx_runtime40 = __toESM(require_jsx_runtime(), 1); 13350 var STYLE_HASH_ATTRIBUTE13 = "data-wp-hash"; 13351 function getRuntime13() { 13352 const globalScope = globalThis; 13353 if (globalScope.__wpStyleRuntime) { 13354 return globalScope.__wpStyleRuntime; 13355 } 13356 globalScope.__wpStyleRuntime = { 13357 documents: /* @__PURE__ */ new Map(), 13358 styles: /* @__PURE__ */ new Map(), 13359 injectedStyles: /* @__PURE__ */ new WeakMap() 13360 }; 13361 if (typeof document !== "undefined") { 13362 registerDocument13(document); 13363 } 13364 return globalScope.__wpStyleRuntime; 13365 } 13366 function documentContainsStyleHash13(targetDocument, hash) { 13367 if (!targetDocument.head) { 13368 return false; 13369 } 13370 for (const style of targetDocument.head.querySelectorAll( 13371 `style[$STYLE_HASH_ATTRIBUTE13}]` 13372 )) { 13373 if (style.getAttribute(STYLE_HASH_ATTRIBUTE13) === hash) { 13374 return true; 13375 } 13376 } 13377 return false; 13378 } 13379 function injectStyle13(targetDocument, hash, css) { 13380 if (!targetDocument.head) { 13381 return; 13382 } 13383 const runtime = getRuntime13(); 13384 let injectedStyles = runtime.injectedStyles.get(targetDocument); 13385 if (!injectedStyles) { 13386 injectedStyles = /* @__PURE__ */ new Set(); 13387 runtime.injectedStyles.set(targetDocument, injectedStyles); 13388 } 13389 if (injectedStyles.has(hash)) { 13390 return; 13391 } 13392 if (documentContainsStyleHash13(targetDocument, hash)) { 13393 injectedStyles.add(hash); 13394 return; 13395 } 13396 const style = targetDocument.createElement("style"); 13397 style.setAttribute(STYLE_HASH_ATTRIBUTE13, hash); 13398 style.appendChild(targetDocument.createTextNode(css)); 13399 targetDocument.head.appendChild(style); 13400 injectedStyles.add(hash); 13401 } 13402 function registerDocument13(targetDocument) { 13403 const runtime = getRuntime13(); 13404 runtime.documents.set( 13405 targetDocument, 13406 (runtime.documents.get(targetDocument) ?? 0) + 1 13407 ); 13408 for (const [hash, css] of runtime.styles) { 13409 injectStyle13(targetDocument, hash, css); 13410 } 13411 return () => { 13412 const count = runtime.documents.get(targetDocument); 13413 if (count === void 0) { 13414 return; 13415 } 13416 if (count <= 1) { 13417 runtime.documents.delete(targetDocument); 13418 return; 13419 } 13420 runtime.documents.set(targetDocument, count - 1); 13421 }; 13422 } 13423 function registerStyle13(hash, css) { 13424 const runtime = getRuntime13(); 13425 runtime.styles.set(hash, css); 13426 for (const targetDocument of runtime.documents.keys()) { 13427 injectStyle13(targetDocument, hash, css); 13428 } 13429 } 13430 if (typeof process === "undefined" || true) { 13431 registerStyle13("e25d67a230", '@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([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-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{min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[aria-disabled=true] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([aria-disabled=true]) ._160635254c702623__item-description{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)}}}'); 13432 } 13433 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" }; 13434 var Group = (0, import_element22.forwardRef)( 13435 function UnforwardedGroup({ className, children, ...restProps }, ref) { 13436 return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)( 13437 index_parts_exports2.Group, 13438 { 13439 className: clsx_default(item_popup_default2.group, className), 13440 ref, 13441 ...restProps, 13442 children 13443 } 13444 ); 13445 } 13446 ); 13447 13448 // packages/ui/build-module/form/primitives/select/group-label.mjs 13449 var import_element23 = __toESM(require_element(), 1); 13450 var import_jsx_runtime41 = __toESM(require_jsx_runtime(), 1); 13451 var STYLE_HASH_ATTRIBUTE14 = "data-wp-hash"; 13452 function getRuntime14() { 13453 const globalScope = globalThis; 13454 if (globalScope.__wpStyleRuntime) { 13455 return globalScope.__wpStyleRuntime; 13456 } 13457 globalScope.__wpStyleRuntime = { 13458 documents: /* @__PURE__ */ new Map(), 13459 styles: /* @__PURE__ */ new Map(), 13460 injectedStyles: /* @__PURE__ */ new WeakMap() 13461 }; 13462 if (typeof document !== "undefined") { 13463 registerDocument14(document); 13464 } 13465 return globalScope.__wpStyleRuntime; 13466 } 13467 function documentContainsStyleHash14(targetDocument, hash) { 13468 if (!targetDocument.head) { 13469 return false; 13470 } 13471 for (const style of targetDocument.head.querySelectorAll( 13472 `style[$STYLE_HASH_ATTRIBUTE14}]` 13473 )) { 13474 if (style.getAttribute(STYLE_HASH_ATTRIBUTE14) === hash) { 13475 return true; 13476 } 13477 } 13478 return false; 13479 } 13480 function injectStyle14(targetDocument, hash, css) { 13481 if (!targetDocument.head) { 13482 return; 13483 } 13484 const runtime = getRuntime14(); 13485 let injectedStyles = runtime.injectedStyles.get(targetDocument); 13486 if (!injectedStyles) { 13487 injectedStyles = /* @__PURE__ */ new Set(); 13488 runtime.injectedStyles.set(targetDocument, injectedStyles); 13489 } 13490 if (injectedStyles.has(hash)) { 13491 return; 13492 } 13493 if (documentContainsStyleHash14(targetDocument, hash)) { 13494 injectedStyles.add(hash); 13495 return; 13496 } 13497 const style = targetDocument.createElement("style"); 13498 style.setAttribute(STYLE_HASH_ATTRIBUTE14, hash); 13499 style.appendChild(targetDocument.createTextNode(css)); 13500 targetDocument.head.appendChild(style); 13501 injectedStyles.add(hash); 13502 } 13503 function registerDocument14(targetDocument) { 13504 const runtime = getRuntime14(); 13505 runtime.documents.set( 13506 targetDocument, 13507 (runtime.documents.get(targetDocument) ?? 0) + 1 13508 ); 13509 for (const [hash, css] of runtime.styles) { 13510 injectStyle14(targetDocument, hash, css); 13511 } 13512 return () => { 13513 const count = runtime.documents.get(targetDocument); 13514 if (count === void 0) { 13515 return; 13516 } 13517 if (count <= 1) { 13518 runtime.documents.delete(targetDocument); 13519 return; 13520 } 13521 runtime.documents.set(targetDocument, count - 1); 13522 }; 13523 } 13524 function registerStyle14(hash, css) { 13525 const runtime = getRuntime14(); 13526 runtime.styles.set(hash, css); 13527 for (const targetDocument of runtime.documents.keys()) { 13528 injectStyle14(targetDocument, hash, css); 13529 } 13530 } 13531 if (typeof process === "undefined" || true) { 13532 registerStyle14("e25d67a230", '@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([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-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{min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[aria-disabled=true] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([aria-disabled=true]) ._160635254c702623__item-description{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)}}}'); 13533 } 13534 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" }; 13535 var GroupLabel = (0, import_element23.forwardRef)( 13536 function UnforwardedGroupLabel({ className, children, ...restProps }, ref) { 13537 return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( 13538 Text, 13539 { 13540 variant: "heading-sm", 13541 className: clsx_default( 13542 item_popup_default3["group-label"], 13543 className 13544 ), 13545 render: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(index_parts_exports2.GroupLabel, { ref, ...restProps }), 13546 children 13547 } 13548 ); 13549 } 13550 ); 13551 13552 // packages/ui/build-module/form/primitives/select/item.mjs 13553 var import_element26 = __toESM(require_element(), 1); 13554 13555 // packages/ui/build-module/form/primitives/select/item-description.mjs 13556 var import_element24 = __toESM(require_element(), 1); 13557 var import_jsx_runtime42 = __toESM(require_jsx_runtime(), 1); 13558 var STYLE_HASH_ATTRIBUTE15 = "data-wp-hash"; 13559 function getRuntime15() { 13560 const globalScope = globalThis; 13561 if (globalScope.__wpStyleRuntime) { 13562 return globalScope.__wpStyleRuntime; 13563 } 13564 globalScope.__wpStyleRuntime = { 13565 documents: /* @__PURE__ */ new Map(), 13566 styles: /* @__PURE__ */ new Map(), 13567 injectedStyles: /* @__PURE__ */ new WeakMap() 13568 }; 13569 if (typeof document !== "undefined") { 13570 registerDocument15(document); 13571 } 13572 return globalScope.__wpStyleRuntime; 13573 } 13574 function documentContainsStyleHash15(targetDocument, hash) { 13575 if (!targetDocument.head) { 13576 return false; 13577 } 13578 for (const style of targetDocument.head.querySelectorAll( 13579 `style[$STYLE_HASH_ATTRIBUTE15}]` 13580 )) { 13581 if (style.getAttribute(STYLE_HASH_ATTRIBUTE15) === hash) { 13582 return true; 13583 } 13584 } 13585 return false; 13586 } 13587 function injectStyle15(targetDocument, hash, css) { 13588 if (!targetDocument.head) { 13589 return; 13590 } 13591 const runtime = getRuntime15(); 13592 let injectedStyles = runtime.injectedStyles.get(targetDocument); 13593 if (!injectedStyles) { 13594 injectedStyles = /* @__PURE__ */ new Set(); 13595 runtime.injectedStyles.set(targetDocument, injectedStyles); 13596 } 13597 if (injectedStyles.has(hash)) { 13598 return; 13599 } 13600 if (documentContainsStyleHash15(targetDocument, hash)) { 13601 injectedStyles.add(hash); 13602 return; 13603 } 13604 const style = targetDocument.createElement("style"); 13605 style.setAttribute(STYLE_HASH_ATTRIBUTE15, hash); 13606 style.appendChild(targetDocument.createTextNode(css)); 13607 targetDocument.head.appendChild(style); 13608 injectedStyles.add(hash); 13609 } 13610 function registerDocument15(targetDocument) { 13611 const runtime = getRuntime15(); 13612 runtime.documents.set( 13613 targetDocument, 13614 (runtime.documents.get(targetDocument) ?? 0) + 1 13615 ); 13616 for (const [hash, css] of runtime.styles) { 13617 injectStyle15(targetDocument, hash, css); 13618 } 13619 return () => { 13620 const count = runtime.documents.get(targetDocument); 13621 if (count === void 0) { 13622 return; 13623 } 13624 if (count <= 1) { 13625 runtime.documents.delete(targetDocument); 13626 return; 13627 } 13628 runtime.documents.set(targetDocument, count - 1); 13629 }; 13630 } 13631 function registerStyle15(hash, css) { 13632 const runtime = getRuntime15(); 13633 runtime.styles.set(hash, css); 13634 for (const targetDocument of runtime.documents.keys()) { 13635 injectStyle15(targetDocument, hash, css); 13636 } 13637 } 13638 if (typeof process === "undefined" || true) { 13639 registerStyle15("e25d67a230", '@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([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-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{min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[aria-disabled=true] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([aria-disabled=true]) ._160635254c702623__item-description{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)}}}'); 13640 } 13641 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" }; 13642 var ITEM_DESCRIPTION_DIRECT_CHILD = /* @__PURE__ */ Symbol(); 13643 var ItemDescription = (0, import_element24.forwardRef)(function UnforwardedItemDescription(props, ref) { 13644 const { className, validationToken, ...restProps } = props; 13645 if (validationToken !== ITEM_DESCRIPTION_DIRECT_CHILD) { 13646 throw new Error( 13647 "Select.ItemDescription: Missing direct select item parent. Render <Select.ItemDescription> as a direct child of <Select.Item>." 13648 ); 13649 } 13650 return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( 13651 Text, 13652 { 13653 ref, 13654 variant: "body-sm", 13655 className: clsx_default( 13656 item_popup_default4["item-description"], 13657 className 13658 ), 13659 ...restProps 13660 } 13661 ); 13662 }); 13663 13664 // packages/ui/build-module/form/primitives/select/item-label.mjs 13665 var import_element25 = __toESM(require_element(), 1); 13666 var import_jsx_runtime43 = __toESM(require_jsx_runtime(), 1); 13667 var STYLE_HASH_ATTRIBUTE16 = "data-wp-hash"; 13668 function getRuntime16() { 13669 const globalScope = globalThis; 13670 if (globalScope.__wpStyleRuntime) { 13671 return globalScope.__wpStyleRuntime; 13672 } 13673 globalScope.__wpStyleRuntime = { 13674 documents: /* @__PURE__ */ new Map(), 13675 styles: /* @__PURE__ */ new Map(), 13676 injectedStyles: /* @__PURE__ */ new WeakMap() 13677 }; 13678 if (typeof document !== "undefined") { 13679 registerDocument16(document); 13680 } 13681 return globalScope.__wpStyleRuntime; 13682 } 13683 function documentContainsStyleHash16(targetDocument, hash) { 13684 if (!targetDocument.head) { 13685 return false; 13686 } 13687 for (const style of targetDocument.head.querySelectorAll( 13688 `style[$STYLE_HASH_ATTRIBUTE16}]` 13689 )) { 13690 if (style.getAttribute(STYLE_HASH_ATTRIBUTE16) === hash) { 13691 return true; 13692 } 13693 } 13694 return false; 13695 } 13696 function injectStyle16(targetDocument, hash, css) { 13697 if (!targetDocument.head) { 13698 return; 13699 } 13700 const runtime = getRuntime16(); 13701 let injectedStyles = runtime.injectedStyles.get(targetDocument); 13702 if (!injectedStyles) { 13703 injectedStyles = /* @__PURE__ */ new Set(); 13704 runtime.injectedStyles.set(targetDocument, injectedStyles); 13705 } 13706 if (injectedStyles.has(hash)) { 13707 return; 13708 } 13709 if (documentContainsStyleHash16(targetDocument, hash)) { 13710 injectedStyles.add(hash); 13711 return; 13712 } 13713 const style = targetDocument.createElement("style"); 13714 style.setAttribute(STYLE_HASH_ATTRIBUTE16, hash); 13715 style.appendChild(targetDocument.createTextNode(css)); 13716 targetDocument.head.appendChild(style); 13717 injectedStyles.add(hash); 13718 } 13719 function registerDocument16(targetDocument) { 13720 const runtime = getRuntime16(); 13721 runtime.documents.set( 13722 targetDocument, 13723 (runtime.documents.get(targetDocument) ?? 0) + 1 13724 ); 13725 for (const [hash, css] of runtime.styles) { 13726 injectStyle16(targetDocument, hash, css); 13727 } 13728 return () => { 13729 const count = runtime.documents.get(targetDocument); 13730 if (count === void 0) { 13731 return; 13732 } 13733 if (count <= 1) { 13734 runtime.documents.delete(targetDocument); 13735 return; 13736 } 13737 runtime.documents.set(targetDocument, count - 1); 13738 }; 13739 } 13740 function registerStyle16(hash, css) { 13741 const runtime = getRuntime16(); 13742 runtime.styles.set(hash, css); 13743 for (const targetDocument of runtime.documents.keys()) { 13744 injectStyle16(targetDocument, hash, css); 13745 } 13746 } 13747 if (typeof process === "undefined" || true) { 13748 registerStyle16("e25d67a230", '@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([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-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{min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[aria-disabled=true] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([aria-disabled=true]) ._160635254c702623__item-description{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)}}}'); 13749 } 13750 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" }; 13751 var ItemLabel = (0, import_element25.forwardRef)( 13752 function UnforwardedItemLabel({ children, className, render, ...restProps }, ref) { 13753 return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( 13754 Text, 13755 { 13756 ref, 13757 variant: "body-md", 13758 render: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(index_parts_exports2.ItemText, { render }), 13759 className: clsx_default(item_popup_default5["item-label"], className), 13760 ...restProps, 13761 children 13762 } 13763 ); 13764 } 13765 ); 13766 13767 // packages/ui/build-module/form/primitives/select/item.mjs 13768 var import_jsx_runtime44 = __toESM(require_jsx_runtime(), 1); 13769 var STYLE_HASH_ATTRIBUTE17 = "data-wp-hash"; 13770 function getRuntime17() { 13771 const globalScope = globalThis; 13772 if (globalScope.__wpStyleRuntime) { 13773 return globalScope.__wpStyleRuntime; 13774 } 13775 globalScope.__wpStyleRuntime = { 13776 documents: /* @__PURE__ */ new Map(), 13777 styles: /* @__PURE__ */ new Map(), 13778 injectedStyles: /* @__PURE__ */ new WeakMap() 13779 }; 13780 if (typeof document !== "undefined") { 13781 registerDocument17(document); 13782 } 13783 return globalScope.__wpStyleRuntime; 13784 } 13785 function documentContainsStyleHash17(targetDocument, hash) { 13786 if (!targetDocument.head) { 13787 return false; 13788 } 13789 for (const style of targetDocument.head.querySelectorAll( 13790 `style[$STYLE_HASH_ATTRIBUTE17}]` 13791 )) { 13792 if (style.getAttribute(STYLE_HASH_ATTRIBUTE17) === hash) { 13793 return true; 13794 } 13795 } 13796 return false; 13797 } 13798 function injectStyle17(targetDocument, hash, css) { 13799 if (!targetDocument.head) { 13800 return; 13801 } 13802 const runtime = getRuntime17(); 13803 let injectedStyles = runtime.injectedStyles.get(targetDocument); 13804 if (!injectedStyles) { 13805 injectedStyles = /* @__PURE__ */ new Set(); 13806 runtime.injectedStyles.set(targetDocument, injectedStyles); 13807 } 13808 if (injectedStyles.has(hash)) { 13809 return; 13810 } 13811 if (documentContainsStyleHash17(targetDocument, hash)) { 13812 injectedStyles.add(hash); 13813 return; 13814 } 13815 const style = targetDocument.createElement("style"); 13816 style.setAttribute(STYLE_HASH_ATTRIBUTE17, hash); 13817 style.appendChild(targetDocument.createTextNode(css)); 13818 targetDocument.head.appendChild(style); 13819 injectedStyles.add(hash); 13820 } 13821 function registerDocument17(targetDocument) { 13822 const runtime = getRuntime17(); 13823 runtime.documents.set( 13824 targetDocument, 13825 (runtime.documents.get(targetDocument) ?? 0) + 1 13826 ); 13827 for (const [hash, css] of runtime.styles) { 13828 injectStyle17(targetDocument, hash, css); 13829 } 13830 return () => { 13831 const count = runtime.documents.get(targetDocument); 13832 if (count === void 0) { 13833 return; 13834 } 13835 if (count <= 1) { 13836 runtime.documents.delete(targetDocument); 13837 return; 13838 } 13839 runtime.documents.set(targetDocument, count - 1); 13840 }; 13841 } 13842 function registerStyle17(hash, css) { 13843 const runtime = getRuntime17(); 13844 runtime.styles.set(hash, css); 13845 for (const targetDocument of runtime.documents.keys()) { 13846 injectStyle17(targetDocument, hash, css); 13847 } 13848 } 13849 if (typeof process === "undefined" || true) { 13850 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)}"); 13851 } 13852 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" }; 13853 if (typeof process === "undefined" || true) { 13854 registerStyle17("e25d67a230", '@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([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-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{min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[aria-disabled=true] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([aria-disabled=true]) ._160635254c702623__item-description{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)}}}'); 13855 } 13856 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" }; 13857 if (typeof process === "undefined" || true) { 13858 registerStyle17("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 13859 } 13860 var resets_default3 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; 13861 var ITEM_CONTENT_COMPONENTS = { 13862 Label: ItemLabel, 13863 Description: ItemDescription, 13864 descriptionValidationToken: ITEM_DESCRIPTION_DIRECT_CHILD, 13865 validationMessage: "Select.ItemLabel must be the first direct child of every select item, followed only by Select.ItemDescription components." 13866 }; 13867 var Item2 = (0, import_element26.forwardRef)( 13868 function UnforwardedItem2({ 13869 className, 13870 value, 13871 size: size4 = "default", 13872 children, 13873 "aria-describedby": ariaDescribedBy, 13874 "aria-label": ariaLabel, 13875 "aria-labelledby": ariaLabelledBy, 13876 ...restProps 13877 }, ref) { 13878 const { contentChildren, itemAriaProps } = useItemContent( 13879 children, 13880 ITEM_CONTENT_COMPONENTS, 13881 { 13882 "aria-describedby": ariaDescribedBy, 13883 "aria-label": ariaLabel, 13884 "aria-labelledby": ariaLabelledBy 13885 } 13886 ); 13887 return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)( 13888 index_parts_exports2.Item, 13889 { 13890 className: clsx_default( 13891 global_css_defense_default4.div, 13892 resets_default3["box-sizing"], 13893 item_popup_default6.item, 13894 size4 === "small" && item_popup_default6["is-size-small"], 13895 className 13896 ), 13897 value, 13898 ref, 13899 ...itemAriaProps, 13900 ...restProps, 13901 children: [ 13902 /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { className: item_popup_default6["item-icon"], children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)( 13903 Icon, 13904 { 13905 icon: check_default, 13906 className: item_popup_default6["item-indicator-icon"], 13907 size: 16 13908 } 13909 ) }), 13910 /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className: item_popup_default6["item-text"], children: contentChildren }) 13911 ] 13912 } 13913 ); 13914 } 13915 ); 13916 13917 // packages/ui/build-module/form/primitives/select/popup.mjs 13918 var import_element29 = __toESM(require_element(), 1); 13919 13920 // packages/ui/build-module/form/primitives/select/portal.mjs 13921 var import_element27 = __toESM(require_element(), 1); 13922 var import_jsx_runtime45 = __toESM(require_jsx_runtime(), 1); 13923 var Portal = (0, import_element27.forwardRef)(function SelectPortal3({ container, ...restProps }, ref) { 13924 return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)( 13925 index_parts_exports2.Portal, 13926 { 13927 container: container === void 0 ? getWpCompatOverlaySlot() : container, 13928 ...restProps, 13929 ref 13930 } 13931 ); 13932 }); 13933 13934 // packages/ui/build-module/form/primitives/select/positioner.mjs 13935 var import_element28 = __toESM(require_element(), 1); 13936 var import_jsx_runtime46 = __toESM(require_jsx_runtime(), 1); 13937 var STYLE_HASH_ATTRIBUTE18 = "data-wp-hash"; 13938 function getRuntime18() { 13939 const globalScope = globalThis; 13940 if (globalScope.__wpStyleRuntime) { 13941 return globalScope.__wpStyleRuntime; 13942 } 13943 globalScope.__wpStyleRuntime = { 13944 documents: /* @__PURE__ */ new Map(), 13945 styles: /* @__PURE__ */ new Map(), 13946 injectedStyles: /* @__PURE__ */ new WeakMap() 13947 }; 13948 if (typeof document !== "undefined") { 13949 registerDocument18(document); 13950 } 13951 return globalScope.__wpStyleRuntime; 13952 } 13953 function documentContainsStyleHash18(targetDocument, hash) { 13954 if (!targetDocument.head) { 13955 return false; 13956 } 13957 for (const style of targetDocument.head.querySelectorAll( 13958 `style[$STYLE_HASH_ATTRIBUTE18}]` 13959 )) { 13960 if (style.getAttribute(STYLE_HASH_ATTRIBUTE18) === hash) { 13961 return true; 13962 } 13963 } 13964 return false; 13965 } 13966 function injectStyle18(targetDocument, hash, css) { 13967 if (!targetDocument.head) { 13968 return; 13969 } 13970 const runtime = getRuntime18(); 13971 let injectedStyles = runtime.injectedStyles.get(targetDocument); 13972 if (!injectedStyles) { 13973 injectedStyles = /* @__PURE__ */ new Set(); 13974 runtime.injectedStyles.set(targetDocument, injectedStyles); 13975 } 13976 if (injectedStyles.has(hash)) { 13977 return; 13978 } 13979 if (documentContainsStyleHash18(targetDocument, hash)) { 13980 injectedStyles.add(hash); 13981 return; 13982 } 13983 const style = targetDocument.createElement("style"); 13984 style.setAttribute(STYLE_HASH_ATTRIBUTE18, hash); 13985 style.appendChild(targetDocument.createTextNode(css)); 13986 targetDocument.head.appendChild(style); 13987 injectedStyles.add(hash); 13988 } 13989 function registerDocument18(targetDocument) { 13990 const runtime = getRuntime18(); 13991 runtime.documents.set( 13992 targetDocument, 13993 (runtime.documents.get(targetDocument) ?? 0) + 1 13994 ); 13995 for (const [hash, css] of runtime.styles) { 13996 injectStyle18(targetDocument, hash, css); 13997 } 13998 return () => { 13999 const count = runtime.documents.get(targetDocument); 14000 if (count === void 0) { 14001 return; 14002 } 14003 if (count <= 1) { 14004 runtime.documents.delete(targetDocument); 14005 return; 14006 } 14007 runtime.documents.set(targetDocument, count - 1); 14008 }; 14009 } 14010 function registerStyle18(hash, css) { 14011 const runtime = getRuntime18(); 14012 runtime.styles.set(hash, css); 14013 for (const targetDocument of runtime.documents.keys()) { 14014 injectStyle18(targetDocument, hash, css); 14015 } 14016 } 14017 if (typeof process === "undefined" || true) { 14018 registerStyle18("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 14019 } 14020 var resets_default4 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; 14021 if (typeof process === "undefined" || true) { 14022 registerStyle18("e25d67a230", '@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([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-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{min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[aria-disabled=true] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([aria-disabled=true]) ._160635254c702623__item-description{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)}}}'); 14023 } 14024 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" }; 14025 if (typeof process === "undefined" || true) { 14026 registerStyle18("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)}}}}"); 14027 } 14028 var style_default6 = { "positioner": "_0ab863136fb95530__positioner", "list": "a9ab07efb9ef413f__list" }; 14029 var Positioner = (0, import_element28.forwardRef)( 14030 function SelectPositioner3({ className, alignItemWithTrigger = true, ...props }, ref) { 14031 return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)( 14032 index_parts_exports2.Positioner, 14033 { 14034 ...ITEM_POPUP_POSITIONER_PROPS, 14035 ...props, 14036 alignItemWithTrigger, 14037 ref, 14038 className: clsx_default( 14039 resets_default4["box-sizing"], 14040 style_default6.positioner, 14041 alignItemWithTrigger && item_popup_default7["is-align-item-with-trigger"], 14042 className 14043 ) 14044 } 14045 ); 14046 } 14047 ); 14048 14049 // packages/ui/build-module/form/primitives/select/popup.mjs 14050 var import_jsx_runtime47 = __toESM(require_jsx_runtime(), 1); 14051 var STYLE_HASH_ATTRIBUTE19 = "data-wp-hash"; 14052 function getRuntime19() { 14053 const globalScope = globalThis; 14054 if (globalScope.__wpStyleRuntime) { 14055 return globalScope.__wpStyleRuntime; 14056 } 14057 globalScope.__wpStyleRuntime = { 14058 documents: /* @__PURE__ */ new Map(), 14059 styles: /* @__PURE__ */ new Map(), 14060 injectedStyles: /* @__PURE__ */ new WeakMap() 14061 }; 14062 if (typeof document !== "undefined") { 14063 registerDocument19(document); 14064 } 14065 return globalScope.__wpStyleRuntime; 14066 } 14067 function documentContainsStyleHash19(targetDocument, hash) { 14068 if (!targetDocument.head) { 14069 return false; 14070 } 14071 for (const style of targetDocument.head.querySelectorAll( 14072 `style[$STYLE_HASH_ATTRIBUTE19}]` 14073 )) { 14074 if (style.getAttribute(STYLE_HASH_ATTRIBUTE19) === hash) { 14075 return true; 14076 } 14077 } 14078 return false; 14079 } 14080 function injectStyle19(targetDocument, hash, css) { 14081 if (!targetDocument.head) { 14082 return; 14083 } 14084 const runtime = getRuntime19(); 14085 let injectedStyles = runtime.injectedStyles.get(targetDocument); 14086 if (!injectedStyles) { 14087 injectedStyles = /* @__PURE__ */ new Set(); 14088 runtime.injectedStyles.set(targetDocument, injectedStyles); 14089 } 14090 if (injectedStyles.has(hash)) { 14091 return; 14092 } 14093 if (documentContainsStyleHash19(targetDocument, hash)) { 14094 injectedStyles.add(hash); 14095 return; 14096 } 14097 const style = targetDocument.createElement("style"); 14098 style.setAttribute(STYLE_HASH_ATTRIBUTE19, hash); 14099 style.appendChild(targetDocument.createTextNode(css)); 14100 targetDocument.head.appendChild(style); 14101 injectedStyles.add(hash); 14102 } 14103 function registerDocument19(targetDocument) { 14104 const runtime = getRuntime19(); 14105 runtime.documents.set( 14106 targetDocument, 14107 (runtime.documents.get(targetDocument) ?? 0) + 1 14108 ); 14109 for (const [hash, css] of runtime.styles) { 14110 injectStyle19(targetDocument, hash, css); 14111 } 14112 return () => { 14113 const count = runtime.documents.get(targetDocument); 14114 if (count === void 0) { 14115 return; 14116 } 14117 if (count <= 1) { 14118 runtime.documents.delete(targetDocument); 14119 return; 14120 } 14121 runtime.documents.set(targetDocument, count - 1); 14122 }; 14123 } 14124 function registerStyle19(hash, css) { 14125 const runtime = getRuntime19(); 14126 runtime.styles.set(hash, css); 14127 for (const targetDocument of runtime.documents.keys()) { 14128 injectStyle19(targetDocument, hash, css); 14129 } 14130 } 14131 if (typeof process === "undefined" || true) { 14132 registerStyle19("e25d67a230", '@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([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-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{min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[aria-disabled=true] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([aria-disabled=true]) ._160635254c702623__item-description{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)}}}'); 14133 } 14134 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" }; 14135 if (typeof process === "undefined" || true) { 14136 registerStyle19("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)}}}}"); 14137 } 14138 var style_default7 = { "positioner": "_0ab863136fb95530__positioner", "list": "a9ab07efb9ef413f__list" }; 14139 var Popup = (0, import_element29.forwardRef)( 14140 function UnforwardedPopup({ className, portal, positioner, width, children, ...restProps }, ref) { 14141 const popupContent = /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( 14142 index_parts_exports2.Popup, 14143 { 14144 ref, 14145 className: clsx_default( 14146 item_popup_default8.popup, 14147 getItemPopupWidthClassName(width), 14148 className 14149 ), 14150 ...restProps, 14151 children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( 14152 index_parts_exports2.List, 14153 { 14154 className: clsx_default( 14155 item_popup_default8["list-chrome"], 14156 style_default7.list 14157 ), 14158 children 14159 } 14160 ) 14161 } 14162 ); 14163 const positionedPopup = renderSlotWithChildren( 14164 positioner, 14165 /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Positioner, {}), 14166 popupContent 14167 ); 14168 return renderSlotWithChildren(portal, /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Portal, {}), positionedPopup); 14169 } 14170 ); 14171 14172 // packages/ui/build-module/form/primitives/select/root.mjs 14173 var import_jsx_runtime48 = __toESM(require_jsx_runtime(), 1); 14174 function Root2(props) { 14175 return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(DirectionProvider3, { children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(index_parts_exports2.Root, { ...props }) }); 14176 } 14177 14178 // packages/ui/build-module/form/primitives/select/separator.mjs 14179 var import_element30 = __toESM(require_element(), 1); 14180 var import_jsx_runtime49 = __toESM(require_jsx_runtime(), 1); 14181 var STYLE_HASH_ATTRIBUTE20 = "data-wp-hash"; 14182 function getRuntime20() { 14183 const globalScope = globalThis; 14184 if (globalScope.__wpStyleRuntime) { 14185 return globalScope.__wpStyleRuntime; 14186 } 14187 globalScope.__wpStyleRuntime = { 14188 documents: /* @__PURE__ */ new Map(), 14189 styles: /* @__PURE__ */ new Map(), 14190 injectedStyles: /* @__PURE__ */ new WeakMap() 14191 }; 14192 if (typeof document !== "undefined") { 14193 registerDocument20(document); 14194 } 14195 return globalScope.__wpStyleRuntime; 14196 } 14197 function documentContainsStyleHash20(targetDocument, hash) { 14198 if (!targetDocument.head) { 14199 return false; 14200 } 14201 for (const style of targetDocument.head.querySelectorAll( 14202 `style[$STYLE_HASH_ATTRIBUTE20}]` 14203 )) { 14204 if (style.getAttribute(STYLE_HASH_ATTRIBUTE20) === hash) { 14205 return true; 14206 } 14207 } 14208 return false; 14209 } 14210 function injectStyle20(targetDocument, hash, css) { 14211 if (!targetDocument.head) { 14212 return; 14213 } 14214 const runtime = getRuntime20(); 14215 let injectedStyles = runtime.injectedStyles.get(targetDocument); 14216 if (!injectedStyles) { 14217 injectedStyles = /* @__PURE__ */ new Set(); 14218 runtime.injectedStyles.set(targetDocument, injectedStyles); 14219 } 14220 if (injectedStyles.has(hash)) { 14221 return; 14222 } 14223 if (documentContainsStyleHash20(targetDocument, hash)) { 14224 injectedStyles.add(hash); 14225 return; 14226 } 14227 const style = targetDocument.createElement("style"); 14228 style.setAttribute(STYLE_HASH_ATTRIBUTE20, hash); 14229 style.appendChild(targetDocument.createTextNode(css)); 14230 targetDocument.head.appendChild(style); 14231 injectedStyles.add(hash); 14232 } 14233 function registerDocument20(targetDocument) { 14234 const runtime = getRuntime20(); 14235 runtime.documents.set( 14236 targetDocument, 14237 (runtime.documents.get(targetDocument) ?? 0) + 1 14238 ); 14239 for (const [hash, css] of runtime.styles) { 14240 injectStyle20(targetDocument, hash, css); 14241 } 14242 return () => { 14243 const count = runtime.documents.get(targetDocument); 14244 if (count === void 0) { 14245 return; 14246 } 14247 if (count <= 1) { 14248 runtime.documents.delete(targetDocument); 14249 return; 14250 } 14251 runtime.documents.set(targetDocument, count - 1); 14252 }; 14253 } 14254 function registerStyle20(hash, css) { 14255 const runtime = getRuntime20(); 14256 runtime.styles.set(hash, css); 14257 for (const targetDocument of runtime.documents.keys()) { 14258 injectStyle20(targetDocument, hash, css); 14259 } 14260 } 14261 if (typeof process === "undefined" || true) { 14262 registerStyle20("e25d67a230", '@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([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-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{min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[aria-disabled=true] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([aria-disabled=true]) ._160635254c702623__item-description{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)}}}'); 14263 } 14264 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" }; 14265 var Separator = (0, import_element30.forwardRef)( 14266 function SelectSeparator2({ 14267 className, 14268 orientation: _orientation, 14269 ...props 14270 }, ref) { 14271 return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( 14272 index_parts_exports2.Separator, 14273 { 14274 ref, 14275 className: clsx_default(item_popup_default9.separator, className), 14276 ...props 14277 } 14278 ); 14279 } 14280 ); 14281 14282 // packages/ui/build-module/form/primitives/select/trigger.mjs 14283 var import_element31 = __toESM(require_element(), 1); 14284 var import_i18n3 = __toESM(require_i18n(), 1); 14285 var import_jsx_runtime50 = __toESM(require_jsx_runtime(), 1); 14286 var STYLE_HASH_ATTRIBUTE21 = "data-wp-hash"; 14287 function getRuntime21() { 14288 const globalScope = globalThis; 14289 if (globalScope.__wpStyleRuntime) { 14290 return globalScope.__wpStyleRuntime; 14291 } 14292 globalScope.__wpStyleRuntime = { 14293 documents: /* @__PURE__ */ new Map(), 14294 styles: /* @__PURE__ */ new Map(), 14295 injectedStyles: /* @__PURE__ */ new WeakMap() 14296 }; 14297 if (typeof document !== "undefined") { 14298 registerDocument21(document); 14299 } 14300 return globalScope.__wpStyleRuntime; 14301 } 14302 function documentContainsStyleHash21(targetDocument, hash) { 14303 if (!targetDocument.head) { 14304 return false; 14305 } 14306 for (const style of targetDocument.head.querySelectorAll( 14307 `style[$STYLE_HASH_ATTRIBUTE21}]` 14308 )) { 14309 if (style.getAttribute(STYLE_HASH_ATTRIBUTE21) === hash) { 14310 return true; 14311 } 14312 } 14313 return false; 14314 } 14315 function injectStyle21(targetDocument, hash, css) { 14316 if (!targetDocument.head) { 14317 return; 14318 } 14319 const runtime = getRuntime21(); 14320 let injectedStyles = runtime.injectedStyles.get(targetDocument); 14321 if (!injectedStyles) { 14322 injectedStyles = /* @__PURE__ */ new Set(); 14323 runtime.injectedStyles.set(targetDocument, injectedStyles); 14324 } 14325 if (injectedStyles.has(hash)) { 14326 return; 14327 } 14328 if (documentContainsStyleHash21(targetDocument, hash)) { 14329 injectedStyles.add(hash); 14330 return; 14331 } 14332 const style = targetDocument.createElement("style"); 14333 style.setAttribute(STYLE_HASH_ATTRIBUTE21, hash); 14334 style.appendChild(targetDocument.createTextNode(css)); 14335 targetDocument.head.appendChild(style); 14336 injectedStyles.add(hash); 14337 } 14338 function registerDocument21(targetDocument) { 14339 const runtime = getRuntime21(); 14340 runtime.documents.set( 14341 targetDocument, 14342 (runtime.documents.get(targetDocument) ?? 0) + 1 14343 ); 14344 for (const [hash, css] of runtime.styles) { 14345 injectStyle21(targetDocument, hash, css); 14346 } 14347 return () => { 14348 const count = runtime.documents.get(targetDocument); 14349 if (count === void 0) { 14350 return; 14351 } 14352 if (count <= 1) { 14353 runtime.documents.delete(targetDocument); 14354 return; 14355 } 14356 runtime.documents.set(targetDocument, count - 1); 14357 }; 14358 } 14359 function registerStyle21(hash, css) { 14360 const runtime = getRuntime21(); 14361 runtime.styles.set(hash, css); 14362 for (const targetDocument of runtime.documents.keys()) { 14363 injectStyle21(targetDocument, hash, css); 14364 } 14365 } 14366 if (typeof process === "undefined" || true) { 14367 registerStyle21("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))}}}"); 14368 } 14369 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" }; 14370 if (typeof process === "undefined" || true) { 14371 registerStyle21("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}}}"); 14372 } 14373 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" }; 14374 var Trigger = (0, import_element31.forwardRef)( 14375 function UnforwardedTrigger({ 14376 className, 14377 size: size4, 14378 variant, 14379 children, 14380 placeholder = (0, import_i18n3.__)("Select"), 14381 ...restProps 14382 }, ref) { 14383 return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)( 14384 InputLayout2, 14385 { 14386 className: clsx_default( 14387 focus_module_default["outset-ring--focus-within-except-active"], 14388 select_trigger_default["trigger-wrapper"], 14389 variant === "minimal" && select_trigger_default["is-minimal"], 14390 className 14391 ), 14392 size: size4, 14393 isBorderless: variant === "minimal", 14394 children: /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)( 14395 index_parts_exports2.Trigger, 14396 { 14397 ...restProps, 14398 className: clsx_default( 14399 select_trigger_default.trigger, 14400 variant === "minimal" && select_trigger_default["is-minimal"] 14401 ), 14402 "data-can-disable-input-layout": true, 14403 ref, 14404 children: [ 14405 /* @__PURE__ */ (0, import_jsx_runtime50.jsx)( 14406 index_parts_exports2.Value, 14407 { 14408 placeholder, 14409 className: select_trigger_default["trigger-value"], 14410 children 14411 } 14412 ), 14413 /* @__PURE__ */ (0, import_jsx_runtime50.jsx)( 14414 Icon, 14415 { 14416 className: select_trigger_default["trigger-caret"], 14417 icon: chevron_down_default, 14418 size: 18 14419 } 14420 ) 14421 ] 14422 } 14423 ) 14424 } 14425 ); 14426 } 14427 ); 14428 14429 // packages/ui/build-module/form/select-control/select-control.mjs 14430 var import_element34 = __toESM(require_element(), 1); 14431 14432 // packages/ui/build-module/form/select-control/item.mjs 14433 var import_element32 = __toESM(require_element(), 1); 14434 var import_jsx_runtime51 = __toESM(require_jsx_runtime(), 1); 14435 var Item3 = (0, import_element32.forwardRef)( 14436 function UnforwardedItem3(props, ref) { 14437 return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(select_exports.Item, { ref, ...props }); 14438 } 14439 ); 14440 14441 // packages/ui/build-module/form/select-control/trigger.mjs 14442 var import_element33 = __toESM(require_element(), 1); 14443 var import_jsx_runtime52 = __toESM(require_jsx_runtime(), 1); 14444 var Trigger2 = (0, import_element33.forwardRef)(function UnforwardedTrigger2(props, ref) { 14445 return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(select_exports.Trigger, { ref, ...props }); 14446 }); 14447 14448 // packages/ui/build-module/form/select-control/select-control.mjs 14449 var import_jsx_runtime53 = __toESM(require_jsx_runtime(), 1); 14450 var DEFAULT_TRIGGER = /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Trigger2, {}); 14451 var SelectControl = (0, import_element34.forwardRef)(function UnforwardedSelectControl({ 14452 className, 14453 children, 14454 items, 14455 label, 14456 description, 14457 details, 14458 hideLabelFromVision, 14459 placeholder, 14460 popupWidth = "content", 14461 size: size4 = "default", 14462 trigger, 14463 ...restProps 14464 }, ref) { 14465 const triggerElement = useRender({ 14466 render: trigger ?? DEFAULT_TRIGGER, 14467 ref, 14468 props: { placeholder, size: size4 } 14469 }); 14470 return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(field_exports.Root, { className, children: [ 14471 /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(field_exports.Label, { hideFromVision: hideLabelFromVision, children: label }), 14472 /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(select_exports.Root, { items, ...restProps, children: [ 14473 triggerElement, 14474 /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(select_exports.Popup, { width: popupWidth, children: children !== void 0 ? children : items?.map((item) => /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)( 14475 Item3, 14476 { 14477 value: item, 14478 label: item.label, 14479 disabled: item.disabled, 14480 children: [ 14481 /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(select_exports.ItemLabel, { children: item.label }), 14482 item.description ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(select_exports.ItemDescription, { children: item.description }) : null 14483 ] 14484 }, 14485 item.value ?? "null" 14486 )) }) 14487 ] }), 14488 description && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(field_exports.Description, { children: description }), 14489 details && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(field_exports.Details, { children: details }) 14490 ] }); 14491 }); 14492 14493 // packages/ui/build-module/form/select-control/index.mjs 14494 Trigger2.displayName = "SelectControl.Trigger"; 14495 Group.displayName = "SelectControl.Group"; 14496 GroupLabel.displayName = "SelectControl.GroupLabel"; 14497 Item3.displayName = "SelectControl.Item"; 14498 ItemLabel.displayName = "SelectControl.ItemLabel"; 14499 ItemDescription.displayName = "SelectControl.ItemDescription"; 14500 var SelectControl2 = Object.assign(SelectControl, { 14501 /** 14502 * The trigger button, passed through the `trigger` prop to customize 14503 * its props while retaining the control's label and selected content. 14504 */ 14505 Trigger: Trigger2, 14506 /** 14507 * Groups related items together with an associated label rendered by 14508 * `SelectControl.GroupLabel`. 14509 */ 14510 Group, 14511 /** 14512 * Renders a label for a `SelectControl.Group`. 14513 */ 14514 GroupLabel, 14515 /** 14516 * An item rendered inside a `SelectControl` popup. 14517 */ 14518 Item: Item3, 14519 /** 14520 * The primary label of a select item. 14521 */ 14522 ItemLabel, 14523 /** 14524 * Supplementary content that describes a select item via 14525 * `aria-describedby`. 14526 */ 14527 ItemDescription, 14528 /** 14529 * Renders a visual separator between items or groups. 14530 */ 14531 Separator 14532 }); 14533 14534 // packages/widgets/build-module/blocks/legacy-widget/edit/widget-type-selector.mjs 14535 var import_i18n4 = __toESM(require_i18n(), 1); 14536 var import_data = __toESM(require_data(), 1); 14537 var import_core_data = __toESM(require_core_data(), 1); 14538 var import_block_editor = __toESM(require_block_editor(), 1); 14539 var import_jsx_runtime54 = __toESM(require_jsx_runtime(), 1); 14540 function WidgetTypeSelector({ selectedId, onSelect }) { 14541 const widgetTypes = (0, import_data.useSelect)((select2) => { 14542 const hiddenIds = select2(import_block_editor.store).getSettings()?.widgetTypesToHideFromLegacyWidgetBlock ?? []; 14543 return select2(import_core_data.store).getWidgetTypes({ per_page: -1 })?.filter((widgetType) => !hiddenIds.includes(widgetType.id)); 14544 }, []); 14545 if (!widgetTypes) { 14546 return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_components.Spinner, {}); 14547 } 14548 if (widgetTypes.length === 0) { 14549 return (0, import_i18n4.__)("There are no widgets available."); 14550 } 14551 const items = [ 14552 { value: "", label: (0, import_i18n4.__)("Select widget") }, 14553 ...widgetTypes.map((widgetType) => ({ 14554 value: widgetType.id, 14555 label: widgetType.name 14556 })) 14557 ]; 14558 return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( 14559 SelectControl2, 14560 { 14561 label: (0, import_i18n4.__)("Legacy widget"), 14562 value: items.find((item) => item.value === selectedId) ?? items[0], 14563 items, 14564 onValueChange: (item) => { 14565 const value = item?.value; 14566 if (value) { 14567 const selected = widgetTypes.find( 14568 (widgetType) => widgetType.id === value 14569 ); 14570 onSelect({ 14571 selectedId: selected.id, 14572 isMulti: selected.is_multi 14573 }); 14574 } else { 14575 onSelect({ selectedId: null }); 14576 } 14577 } 14578 } 14579 ); 14580 } 14581 14582 // packages/widgets/build-module/blocks/legacy-widget/edit/inspector-card.mjs 14583 var import_jsx_runtime55 = __toESM(require_jsx_runtime(), 1); 14584 function InspectorCard({ name: name3, description }) { 14585 return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "wp-block-legacy-widget-inspector-card", children: [ 14586 /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("h3", { className: "wp-block-legacy-widget-inspector-card__name", children: name3 }), 14587 /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { children: description }) 14588 ] }); 14589 } 14590 14591 // packages/widgets/build-module/blocks/legacy-widget/edit/form.mjs 14592 var import_element35 = __toESM(require_element(), 1); 14593 var import_data2 = __toESM(require_data(), 1); 14594 var import_notices = __toESM(require_notices(), 1); 14595 var import_i18n6 = __toESM(require_i18n(), 1); 14596 var import_components2 = __toESM(require_components(), 1); 14597 var import_compose2 = __toESM(require_compose(), 1); 14598 14599 // packages/widgets/build-module/blocks/legacy-widget/edit/control.mjs 14600 var import_api_fetch = __toESM(require_api_fetch(), 1); 14601 var import_compose = __toESM(require_compose(), 1); 14602 var import_i18n5 = __toESM(require_i18n(), 1); 14603 var Control2 = class { 14604 /** 14605 * Creates and loads a new control. 14606 * 14607 * @access public 14608 * @param {Object} params 14609 * @param {string} params.id 14610 * @param {string} params.idBase 14611 * @param {Object} params.instance 14612 * @param {Function} params.onChangeInstance 14613 * @param {Function} params.onChangeHasPreview 14614 * @param {Function} params.onError 14615 */ 14616 constructor({ 14617 id, 14618 idBase, 14619 instance, 14620 onChangeInstance, 14621 onChangeHasPreview, 14622 onError 14623 }) { 14624 this.id = id; 14625 this.idBase = idBase; 14626 this._instance = instance; 14627 this._hasPreview = null; 14628 this.onChangeInstance = onChangeInstance; 14629 this.onChangeHasPreview = onChangeHasPreview; 14630 this.onError = onError; 14631 this.number = ++lastNumber; 14632 this.handleFormChange = (0, import_compose.debounce)( 14633 this.handleFormChange.bind(this), 14634 200 14635 ); 14636 this.handleFormSubmit = this.handleFormSubmit.bind(this); 14637 this.initDOM(); 14638 this.bindEvents(); 14639 this.loadContent(); 14640 } 14641 /** 14642 * Clean up the control so that it can be garbage collected. 14643 * 14644 * @access public 14645 */ 14646 destroy() { 14647 this.unbindEvents(); 14648 this.element.remove(); 14649 } 14650 /** 14651 * Creates the control's DOM structure. 14652 * 14653 * @access private 14654 */ 14655 initDOM() { 14656 this.element = el("div", { class: "widget open" }, [ 14657 el("div", { class: "widget-inside" }, [ 14658 this.form = el("form", { class: "form", method: "post" }, [ 14659 // These hidden form inputs are what most widgets' scripts 14660 // use to access data about the widget. 14661 el("input", { 14662 class: "widget-id", 14663 type: "hidden", 14664 name: "widget-id", 14665 value: this.id ?? `$this.idBase}-$this.number}` 14666 }), 14667 el("input", { 14668 class: "id_base", 14669 type: "hidden", 14670 name: "id_base", 14671 value: this.idBase ?? this.id 14672 }), 14673 el("input", { 14674 class: "widget-width", 14675 type: "hidden", 14676 name: "widget-width", 14677 value: "250" 14678 }), 14679 el("input", { 14680 class: "widget-height", 14681 type: "hidden", 14682 name: "widget-height", 14683 value: "200" 14684 }), 14685 el("input", { 14686 class: "widget_number", 14687 type: "hidden", 14688 name: "widget_number", 14689 value: this.idBase ? this.number.toString() : "" 14690 }), 14691 this.content = el("div", { class: "widget-content" }), 14692 // Non-multi widgets can be saved via a Save button. 14693 this.id && el( 14694 "button", 14695 { 14696 class: "button is-primary", 14697 type: "submit" 14698 }, 14699 (0, import_i18n5.__)("Save") 14700 ) 14701 ]) 14702 ]) 14703 ]); 14704 } 14705 /** 14706 * Adds the control's event listeners. 14707 * 14708 * @access private 14709 */ 14710 bindEvents() { 14711 if (window.jQuery) { 14712 const { jQuery: $ } = window; 14713 $(this.form).on("change", null, this.handleFormChange); 14714 $(this.form).on("input", null, this.handleFormChange); 14715 $(this.form).on("submit", this.handleFormSubmit); 14716 } else { 14717 this.form.addEventListener("change", this.handleFormChange); 14718 this.form.addEventListener("input", this.handleFormChange); 14719 this.form.addEventListener("submit", this.handleFormSubmit); 14720 } 14721 } 14722 /** 14723 * Removes the control's event listeners. 14724 * 14725 * @access private 14726 */ 14727 unbindEvents() { 14728 if (window.jQuery) { 14729 const { jQuery: $ } = window; 14730 $(this.form).off("change", null, this.handleFormChange); 14731 $(this.form).off("input", null, this.handleFormChange); 14732 $(this.form).off("submit", this.handleFormSubmit); 14733 } else { 14734 this.form.removeEventListener("change", this.handleFormChange); 14735 this.form.removeEventListener("input", this.handleFormChange); 14736 this.form.removeEventListener("submit", this.handleFormSubmit); 14737 } 14738 } 14739 /** 14740 * Fetches the widget's form HTML from the REST API and loads it into the 14741 * control's form. 14742 * 14743 * @access private 14744 */ 14745 async loadContent() { 14746 try { 14747 if (this.id) { 14748 const { form } = await saveWidget(this.id); 14749 this.content.innerHTML = form; 14750 } else if (this.idBase) { 14751 const { form, preview } = await encodeWidget({ 14752 idBase: this.idBase, 14753 instance: this.instance, 14754 number: this.number 14755 }); 14756 this.content.innerHTML = form; 14757 this.hasPreview = !isEmptyHTML(preview); 14758 if (!this.instance.hash) { 14759 const { instance } = await encodeWidget({ 14760 idBase: this.idBase, 14761 instance: this.instance, 14762 number: this.number, 14763 formData: serializeForm(this.form) 14764 }); 14765 this.instance = instance; 14766 } 14767 } 14768 if (window.jQuery) { 14769 const { jQuery: $ } = window; 14770 $(document).trigger("widget-added", [$(this.element)]); 14771 } 14772 } catch (error2) { 14773 this.onError(error2); 14774 } 14775 } 14776 /** 14777 * Perform a save when a multi widget's form is changed. Non-multi widgets 14778 * are saved manually. 14779 * 14780 * @access private 14781 */ 14782 handleFormChange() { 14783 if (this.idBase) { 14784 this.saveForm(); 14785 } 14786 } 14787 /** 14788 * Perform a save when the control's form is manually submitted. 14789 * 14790 * @access private 14791 * @param {Event} event 14792 */ 14793 handleFormSubmit(event) { 14794 event.preventDefault(); 14795 this.saveForm(); 14796 } 14797 /** 14798 * Serialize the control's form, send it to the REST API, and update the 14799 * instance with the encoded instance that the REST API returns. 14800 * 14801 * @access private 14802 */ 14803 async saveForm() { 14804 const formData = serializeForm(this.form); 14805 try { 14806 if (this.id) { 14807 const { form } = await saveWidget(this.id, formData); 14808 this.content.innerHTML = form; 14809 if (window.jQuery) { 14810 const { jQuery: $ } = window; 14811 $(document).trigger("widget-updated", [ 14812 $(this.element) 14813 ]); 14814 } 14815 } else if (this.idBase) { 14816 const { instance, preview } = await encodeWidget({ 14817 idBase: this.idBase, 14818 instance: this.instance, 14819 number: this.number, 14820 formData 14821 }); 14822 this.instance = instance; 14823 this.hasPreview = !isEmptyHTML(preview); 14824 } 14825 } catch (error2) { 14826 this.onError(error2); 14827 } 14828 } 14829 /** 14830 * The widget's instance object. 14831 * 14832 * @access private 14833 */ 14834 get instance() { 14835 return this._instance; 14836 } 14837 /** 14838 * The widget's instance object. 14839 * 14840 * @access private 14841 */ 14842 set instance(instance) { 14843 if (this._instance !== instance) { 14844 this._instance = instance; 14845 this.onChangeInstance(instance); 14846 } 14847 } 14848 /** 14849 * Whether or not the widget can be previewed. 14850 * 14851 * @access public 14852 */ 14853 get hasPreview() { 14854 return this._hasPreview; 14855 } 14856 /** 14857 * Whether or not the widget can be previewed. 14858 * 14859 * @access private 14860 */ 14861 set hasPreview(hasPreview) { 14862 if (this._hasPreview !== hasPreview) { 14863 this._hasPreview = hasPreview; 14864 this.onChangeHasPreview(hasPreview); 14865 } 14866 } 14867 }; 14868 var lastNumber = 0; 14869 function el(tagName, attributes = {}, content = null) { 14870 const element = document.createElement(tagName); 14871 for (const [attribute, value] of Object.entries(attributes)) { 14872 element.setAttribute(attribute, value); 14873 } 14874 if (Array.isArray(content)) { 14875 for (const child of content) { 14876 if (child) { 14877 element.appendChild(child); 14878 } 14879 } 14880 } else if (typeof content === "string") { 14881 element.innerText = content; 14882 } 14883 return element; 14884 } 14885 async function saveWidget(id, formData = null) { 14886 let widget; 14887 if (formData) { 14888 widget = await (0, import_api_fetch.default)({ 14889 path: `/wp/v2/widgets/$id}?context=edit`, 14890 method: "PUT", 14891 data: { 14892 form_data: formData 14893 } 14894 }); 14895 } else { 14896 widget = await (0, import_api_fetch.default)({ 14897 path: `/wp/v2/widgets/$id}?context=edit`, 14898 method: "GET" 14899 }); 14900 } 14901 return { form: widget.rendered_form }; 14902 } 14903 async function encodeWidget({ idBase, instance, number, formData = null }) { 14904 const response = await (0, import_api_fetch.default)({ 14905 path: `/wp/v2/widget-types/$idBase}/encode`, 14906 method: "POST", 14907 data: { 14908 instance, 14909 number, 14910 form_data: formData 14911 } 14912 }); 14913 return { 14914 instance: response.instance, 14915 form: response.form, 14916 preview: response.preview 14917 }; 14918 } 14919 function isEmptyHTML(html) { 14920 const element = document.createElement("div"); 14921 element.innerHTML = html; 14922 return isEmptyNode(element); 14923 } 14924 function isEmptyNode(node) { 14925 switch (node.nodeType) { 14926 case node.TEXT_NODE: 14927 return node.nodeValue.trim() === ""; 14928 case node.ELEMENT_NODE: 14929 if ([ 14930 "AUDIO", 14931 "CANVAS", 14932 "EMBED", 14933 "IFRAME", 14934 "IMG", 14935 "MATH", 14936 "OBJECT", 14937 "SVG", 14938 "VIDEO" 14939 ].includes(node.tagName)) { 14940 return false; 14941 } 14942 if (!node.hasChildNodes()) { 14943 return true; 14944 } 14945 return Array.from(node.childNodes).every(isEmptyNode); 14946 default: 14947 return true; 14948 } 14949 } 14950 function serializeForm(form) { 14951 return new window.URLSearchParams( 14952 Array.from(new window.FormData(form)) 14953 ).toString(); 14954 } 14955 14956 // packages/widgets/build-module/blocks/legacy-widget/edit/form.mjs 14957 var import_jsx_runtime56 = __toESM(require_jsx_runtime(), 1); 14958 function Form({ 14959 title, 14960 isVisible, 14961 id, 14962 idBase, 14963 instance, 14964 isWide, 14965 onChangeInstance, 14966 onChangeHasPreview 14967 }) { 14968 const ref = (0, import_element35.useRef)(); 14969 const isMediumLargeViewport = (0, import_compose2.useViewportMatch)("small"); 14970 const outgoingInstances = (0, import_element35.useRef)(/* @__PURE__ */ new Set()); 14971 const incomingInstances = (0, import_element35.useRef)(/* @__PURE__ */ new Set()); 14972 const { createNotice } = (0, import_data2.useDispatch)(import_notices.store); 14973 (0, import_element35.useEffect)(() => { 14974 if (incomingInstances.current.has(instance)) { 14975 incomingInstances.current.delete(instance); 14976 return; 14977 } 14978 const control = new Control2({ 14979 id, 14980 idBase, 14981 instance, 14982 onChangeInstance(nextInstance) { 14983 outgoingInstances.current.add(instance); 14984 incomingInstances.current.add(nextInstance); 14985 onChangeInstance(nextInstance); 14986 }, 14987 onChangeHasPreview, 14988 onError(error2) { 14989 window.console.error(error2); 14990 createNotice( 14991 "error", 14992 (0, import_i18n6.sprintf)( 14993 /* translators: %s: the name of the affected block. */ 14994 (0, import_i18n6.__)( 14995 'The "%s" block was affected by errors and may not function properly. Check the developer tools for more details.' 14996 ), 14997 idBase || id 14998 ) 14999 ); 15000 } 15001 }); 15002 ref.current.appendChild(control.element); 15003 return () => { 15004 if (outgoingInstances.current.has(instance)) { 15005 outgoingInstances.current.delete(instance); 15006 return; 15007 } 15008 control.destroy(); 15009 }; 15010 }, [ 15011 id, 15012 idBase, 15013 instance, 15014 onChangeInstance, 15015 onChangeHasPreview, 15016 isMediumLargeViewport 15017 ]); 15018 if (isWide && isMediumLargeViewport) { 15019 return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)( 15020 "div", 15021 { 15022 className: clsx_default({ 15023 "wp-block-legacy-widget__container": isVisible 15024 }), 15025 children: [ 15026 isVisible && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("h3", { className: "wp-block-legacy-widget__edit-form-title", children: title }), 15027 /* @__PURE__ */ (0, import_jsx_runtime56.jsx)( 15028 import_components2.Popover, 15029 { 15030 focusOnMount: false, 15031 placement: "right", 15032 offset: 32, 15033 resize: false, 15034 flip: false, 15035 shift: true, 15036 children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)( 15037 "div", 15038 { 15039 ref, 15040 className: "wp-block-legacy-widget__edit-form", 15041 hidden: !isVisible 15042 } 15043 ) 15044 } 15045 ) 15046 ] 15047 } 15048 ); 15049 } 15050 return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)( 15051 "div", 15052 { 15053 ref, 15054 className: "wp-block-legacy-widget__edit-form", 15055 hidden: !isVisible, 15056 children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("h3", { className: "wp-block-legacy-widget__edit-form-title", children: title }) 15057 } 15058 ); 15059 } 15060 15061 // packages/widgets/build-module/blocks/legacy-widget/edit/preview.mjs 15062 var import_compose3 = __toESM(require_compose(), 1); 15063 var import_element36 = __toESM(require_element(), 1); 15064 var import_components3 = __toESM(require_components(), 1); 15065 var import_i18n7 = __toESM(require_i18n(), 1); 15066 var import_api_fetch2 = __toESM(require_api_fetch(), 1); 15067 var import_jsx_runtime57 = __toESM(require_jsx_runtime(), 1); 15068 function Preview({ idBase, instance, isVisible }) { 15069 const [isLoaded, setIsLoaded] = (0, import_element36.useState)(false); 15070 const [srcDoc, setSrcDoc] = (0, import_element36.useState)(""); 15071 (0, import_element36.useEffect)(() => { 15072 const abortController = typeof window.AbortController === "undefined" ? void 0 : new window.AbortController(); 15073 async function fetchPreviewHTML() { 15074 const restRoute = `/wp/v2/widget-types/$idBase}/render`; 15075 return await (0, import_api_fetch2.default)({ 15076 path: restRoute, 15077 method: "POST", 15078 signal: abortController?.signal, 15079 data: instance ? { instance } : {} 15080 }); 15081 } 15082 fetchPreviewHTML().then((response) => { 15083 setSrcDoc(response.preview); 15084 }).catch((error2) => { 15085 if ("AbortError" === error2.name) { 15086 return; 15087 } 15088 throw error2; 15089 }); 15090 return () => abortController?.abort(); 15091 }, [idBase, instance]); 15092 const ref = (0, import_compose3.useRefEffect)( 15093 (iframe) => { 15094 if (!isLoaded) { 15095 return; 15096 } 15097 function setHeight() { 15098 const height = Math.max( 15099 iframe.contentDocument.documentElement?.offsetHeight ?? 0, 15100 iframe.contentDocument.body?.offsetHeight ?? 0 15101 ); 15102 iframe.style.height = `$height !== 0 ? height : 100}px`; 15103 } 15104 const { IntersectionObserver: IntersectionObserver2 } = iframe.ownerDocument.defaultView; 15105 const intersectionObserver = new IntersectionObserver2( 15106 ([entry]) => { 15107 if (entry.isIntersecting) { 15108 setHeight(); 15109 } 15110 }, 15111 { 15112 threshold: 1 15113 } 15114 ); 15115 intersectionObserver.observe(iframe); 15116 iframe.addEventListener("load", setHeight); 15117 return () => { 15118 intersectionObserver.disconnect(); 15119 iframe.removeEventListener("load", setHeight); 15120 }; 15121 }, 15122 [isLoaded] 15123 ); 15124 return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_jsx_runtime57.Fragment, { children: [ 15125 isVisible && !isLoaded && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_components3.Placeholder, { children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_components3.Spinner, {}) }), 15126 /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( 15127 "div", 15128 { 15129 className: clsx_default("wp-block-legacy-widget__edit-preview", { 15130 "is-offscreen": !isVisible || !isLoaded 15131 }), 15132 children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_components3.Disabled, { children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( 15133 "iframe", 15134 { 15135 ref, 15136 className: "wp-block-legacy-widget__edit-preview-iframe", 15137 tabIndex: "-1", 15138 title: (0, import_i18n7.__)("Legacy Widget Preview"), 15139 srcDoc, 15140 onLoad: (event) => { 15141 event.target.contentDocument.body.style.overflow = "hidden"; 15142 setIsLoaded(true); 15143 }, 15144 height: 100 15145 } 15146 ) }) 15147 } 15148 ) 15149 ] }); 15150 } 15151 15152 // packages/widgets/build-module/blocks/legacy-widget/edit/no-preview.mjs 15153 var import_i18n8 = __toESM(require_i18n(), 1); 15154 var import_jsx_runtime58 = __toESM(require_jsx_runtime(), 1); 15155 function NoPreview({ name: name3 }) { 15156 return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "wp-block-legacy-widget__edit-no-preview", children: [ 15157 name3 && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("h3", { children: name3 }), 15158 /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("p", { children: (0, import_i18n8.__)("No preview available.") }) 15159 ] }); 15160 } 15161 15162 // packages/widgets/build-module/blocks/legacy-widget/edit/convert-to-blocks-button.mjs 15163 var import_data3 = __toESM(require_data(), 1); 15164 var import_block_editor2 = __toESM(require_block_editor(), 1); 15165 var import_components4 = __toESM(require_components(), 1); 15166 var import_blocks = __toESM(require_blocks(), 1); 15167 var import_i18n9 = __toESM(require_i18n(), 1); 15168 var import_jsx_runtime59 = __toESM(require_jsx_runtime(), 1); 15169 function ConvertToBlocksButton({ clientId, rawInstance }) { 15170 const { replaceBlocks } = (0, import_data3.useDispatch)(import_block_editor2.store); 15171 return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( 15172 import_components4.ToolbarButton, 15173 { 15174 onClick: () => { 15175 if (rawInstance.title) { 15176 replaceBlocks(clientId, [ 15177 (0, import_blocks.createBlock)("core/heading", { 15178 content: rawInstance.title 15179 }), 15180 ...(0, import_blocks.rawHandler)({ HTML: rawInstance.text }) 15181 ]); 15182 } else { 15183 replaceBlocks( 15184 clientId, 15185 (0, import_blocks.rawHandler)({ HTML: rawInstance.text }) 15186 ); 15187 } 15188 }, 15189 children: (0, import_i18n9.__)("Convert to blocks") 15190 } 15191 ); 15192 } 15193 15194 // packages/widgets/build-module/blocks/legacy-widget/edit/index.mjs 15195 var import_jsx_runtime60 = __toESM(require_jsx_runtime(), 1); 15196 function Edit(props) { 15197 const { id, idBase } = props.attributes; 15198 const { isWide = false } = props; 15199 const blockProps = (0, import_block_editor3.useBlockProps)({ 15200 className: clsx_default({ 15201 "is-wide-widget": isWide 15202 }) 15203 }); 15204 return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("div", { ...blockProps, children: !id && !idBase ? /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Empty, { ...props }) : /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(NotEmpty, { ...props }) }); 15205 } 15206 function Empty({ attributes: { id, idBase }, setAttributes }) { 15207 return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)( 15208 import_components5.Placeholder, 15209 { 15210 icon: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_block_editor3.BlockIcon, { icon: brush_default }), 15211 label: (0, import_i18n10.__)("Legacy Widget"), 15212 children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_components5.Flex, { children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_components5.FlexBlock, { children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)( 15213 WidgetTypeSelector, 15214 { 15215 selectedId: id ?? idBase, 15216 onSelect: ({ selectedId, isMulti }) => { 15217 if (!selectedId) { 15218 setAttributes({ 15219 id: null, 15220 idBase: null, 15221 instance: null 15222 }); 15223 } else if (isMulti) { 15224 setAttributes({ 15225 id: null, 15226 idBase: selectedId, 15227 instance: {} 15228 }); 15229 } else { 15230 setAttributes({ 15231 id: selectedId, 15232 idBase: null, 15233 instance: null 15234 }); 15235 } 15236 } 15237 } 15238 ) }) }) 15239 } 15240 ); 15241 } 15242 function NotEmpty({ 15243 attributes: { id, idBase, instance }, 15244 setAttributes, 15245 clientId, 15246 isSelected, 15247 isWide = false 15248 }) { 15249 const [hasPreview, setHasPreview] = (0, import_element37.useState)(null); 15250 const widgetTypeId = id ?? idBase; 15251 const { record: widgetType, hasResolved: hasResolvedWidgetType } = (0, import_core_data2.useEntityRecord)("root", "widgetType", widgetTypeId); 15252 const setInstance = (0, import_element37.useCallback)((nextInstance) => { 15253 setAttributes({ instance: nextInstance }); 15254 }, []); 15255 if (!widgetType && hasResolvedWidgetType) { 15256 return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)( 15257 import_components5.Placeholder, 15258 { 15259 icon: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_block_editor3.BlockIcon, { icon: brush_default }), 15260 label: (0, import_i18n10.__)("Legacy Widget"), 15261 children: (0, import_i18n10.__)("Widget is missing.") 15262 } 15263 ); 15264 } 15265 if (!hasResolvedWidgetType) { 15266 return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_components5.Placeholder, { children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_components5.Spinner, {}) }); 15267 } 15268 const mode = idBase && !isSelected ? "preview" : "edit"; 15269 return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(import_jsx_runtime60.Fragment, { children: [ 15270 idBase === "text" && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_block_editor3.BlockControls, { group: "other", children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)( 15271 ConvertToBlocksButton, 15272 { 15273 clientId, 15274 rawInstance: instance.raw 15275 } 15276 ) }), 15277 /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_block_editor3.InspectorControls, { children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)( 15278 InspectorCard, 15279 { 15280 name: widgetType.name, 15281 description: widgetType.description 15282 } 15283 ) }), 15284 /* @__PURE__ */ (0, import_jsx_runtime60.jsx)( 15285 Form, 15286 { 15287 title: widgetType.name, 15288 isVisible: mode === "edit", 15289 id, 15290 idBase, 15291 instance, 15292 isWide, 15293 onChangeInstance: setInstance, 15294 onChangeHasPreview: setHasPreview 15295 } 15296 ), 15297 idBase && /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(import_jsx_runtime60.Fragment, { children: [ 15298 hasPreview === null && mode === "preview" && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_components5.Placeholder, { children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_components5.Spinner, {}) }), 15299 hasPreview === true && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)( 15300 Preview, 15301 { 15302 idBase, 15303 instance, 15304 isVisible: mode === "preview" 15305 } 15306 ), 15307 hasPreview === false && mode === "preview" && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(NoPreview, { name: widgetType.name }) 15308 ] }) 15309 ] }); 15310 } 15311 15312 // packages/widgets/build-module/blocks/legacy-widget/transforms.mjs 15313 var import_blocks2 = __toESM(require_blocks(), 1); 15314 var legacyWidgetTransforms = [ 15315 { 15316 block: "core/calendar", 15317 widget: "calendar" 15318 }, 15319 { 15320 block: "core/search", 15321 widget: "search" 15322 }, 15323 { 15324 block: "core/html", 15325 widget: "custom_html", 15326 transformBlock: ({ content }) => (0, import_blocks2.createBlock)("core/html", {}, [], [content]) 15327 }, 15328 { 15329 block: "core/archives", 15330 widget: "archives", 15331 transform: ({ count, dropdown }) => { 15332 return { 15333 displayAsDropdown: !!dropdown, 15334 showPostCounts: !!count 15335 }; 15336 } 15337 }, 15338 { 15339 block: "core/latest-posts", 15340 widget: "recent-posts", 15341 transform: ({ show_date: displayPostDate, number }) => { 15342 return { 15343 displayPostDate: !!displayPostDate, 15344 postsToShow: number 15345 }; 15346 } 15347 }, 15348 { 15349 block: "core/latest-comments", 15350 widget: "recent-comments", 15351 transform: ({ number }) => { 15352 return { 15353 commentsToShow: number 15354 }; 15355 } 15356 }, 15357 { 15358 block: "core/tag-cloud", 15359 widget: "tag_cloud", 15360 transform: ({ taxonomy, count }) => { 15361 return { 15362 showTagCounts: !!count, 15363 taxonomy 15364 }; 15365 } 15366 }, 15367 { 15368 block: "core/categories", 15369 widget: "categories", 15370 transform: ({ count, dropdown, hierarchical }) => { 15371 return { 15372 displayAsDropdown: !!dropdown, 15373 showPostCounts: !!count, 15374 showHierarchy: !!hierarchical 15375 }; 15376 } 15377 }, 15378 { 15379 block: "core/audio", 15380 widget: "media_audio", 15381 transform: ({ url, preload, loop, attachment_id: id }) => { 15382 return { 15383 src: url, 15384 id, 15385 preload, 15386 loop 15387 }; 15388 } 15389 }, 15390 { 15391 block: "core/video", 15392 widget: "media_video", 15393 transform: ({ url, preload, loop, attachment_id: id }) => { 15394 return { 15395 src: url, 15396 id, 15397 preload, 15398 loop 15399 }; 15400 } 15401 }, 15402 { 15403 block: "core/image", 15404 widget: "media_image", 15405 transform: ({ 15406 alt, 15407 attachment_id: id, 15408 caption, 15409 height, 15410 link_classes: linkClass, 15411 link_rel: rel, 15412 link_target_blank: targetBlack, 15413 link_type: linkDestination, 15414 link_url: link, 15415 size: sizeSlug, 15416 url, 15417 width 15418 }) => { 15419 return { 15420 alt, 15421 caption, 15422 height, 15423 id, 15424 link, 15425 linkClass, 15426 linkDestination, 15427 linkTarget: targetBlack ? "_blank" : void 0, 15428 rel, 15429 sizeSlug, 15430 url, 15431 width 15432 }; 15433 } 15434 }, 15435 { 15436 block: "core/gallery", 15437 widget: "media_gallery", 15438 transform: ({ ids, link_type: linkTo, size: size4, number }) => { 15439 return { 15440 ids, 15441 columns: number, 15442 linkTo, 15443 sizeSlug: size4, 15444 images: ids.map((id) => ({ 15445 id 15446 })) 15447 }; 15448 } 15449 }, 15450 { 15451 block: "core/rss", 15452 widget: "rss", 15453 transform: ({ 15454 url, 15455 show_author: displayAuthor, 15456 show_date: displayDate, 15457 show_summary: displayExcerpt, 15458 items 15459 }) => { 15460 return { 15461 feedURL: url, 15462 displayAuthor: !!displayAuthor, 15463 displayDate: !!displayDate, 15464 displayExcerpt: !!displayExcerpt, 15465 itemsToShow: items 15466 }; 15467 } 15468 } 15469 ].map(({ block, widget, transform, transformBlock }) => { 15470 return { 15471 type: "block", 15472 blocks: [block], 15473 isMatch: ({ idBase, instance }) => { 15474 return idBase === widget && !!instance?.raw; 15475 }, 15476 transform: ({ instance }) => { 15477 const transformedBlock = transformBlock ? transformBlock(instance.raw) : (0, import_blocks2.createBlock)( 15478 block, 15479 transform ? transform(instance.raw) : void 0 15480 ); 15481 if (!instance.raw?.title) { 15482 return transformedBlock; 15483 } 15484 return [ 15485 (0, import_blocks2.createBlock)("core/heading", { 15486 content: instance.raw.title 15487 }), 15488 transformedBlock 15489 ]; 15490 } 15491 }; 15492 }); 15493 var transforms = { 15494 to: legacyWidgetTransforms 15495 }; 15496 var transforms_default = transforms; 15497 15498 // packages/widgets/build-module/blocks/legacy-widget/index.mjs 15499 var { name } = block_default; 15500 var settings = { 15501 icon: widget_default, 15502 edit: Edit, 15503 transforms: transforms_default 15504 }; 15505 15506 // packages/widgets/build-module/blocks/widget-group/index.mjs 15507 var widget_group_exports = {}; 15508 __export(widget_group_exports, { 15509 metadata: () => block_default2, 15510 name: () => name2, 15511 settings: () => settings2 15512 }); 15513 var import_i18n12 = __toESM(require_i18n(), 1); 15514 var import_blocks3 = __toESM(require_blocks(), 1); 15515 15516 // packages/widgets/build-module/blocks/widget-group/block.json 15517 var block_default2 = { 15518 $schema: "https://schemas.wp.org/trunk/block.json", 15519 apiVersion: 3, 15520 name: "core/widget-group", 15521 title: "Widget Group", 15522 category: "widgets", 15523 attributes: { 15524 title: { 15525 type: "string" 15526 } 15527 }, 15528 supports: { 15529 html: false, 15530 inserter: true, 15531 customClassName: true, 15532 reusable: false 15533 }, 15534 editorStyle: "wp-block-widget-group-editor", 15535 style: "wp-block-widget-group" 15536 }; 15537 15538 // packages/widgets/build-module/blocks/widget-group/edit.mjs 15539 var import_block_editor4 = __toESM(require_block_editor(), 1); 15540 var import_components6 = __toESM(require_components(), 1); 15541 var import_i18n11 = __toESM(require_i18n(), 1); 15542 var import_data4 = __toESM(require_data(), 1); 15543 var import_jsx_runtime61 = __toESM(require_jsx_runtime(), 1); 15544 function Edit2(props) { 15545 const { clientId } = props; 15546 const hasInnerBlocks = (0, import_data4.useSelect)( 15547 (select2) => select2(import_block_editor4.store).getBlockCount(clientId) > 0, 15548 [clientId] 15549 ); 15550 return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { ...(0, import_block_editor4.useBlockProps)({ className: "widget" }), children: !hasInnerBlocks ? /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(PlaceholderContent, { ...props }) : /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(PreviewContent, { ...props }) }); 15551 } 15552 function PlaceholderContent({ clientId }) { 15553 return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_jsx_runtime61.Fragment, { children: [ 15554 /* @__PURE__ */ (0, import_jsx_runtime61.jsx)( 15555 import_components6.Placeholder, 15556 { 15557 className: "wp-block-widget-group__placeholder", 15558 icon: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_block_editor4.BlockIcon, { icon: group_default }), 15559 label: (0, import_i18n11.__)("Widget Group"), 15560 children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_block_editor4.ButtonBlockAppender, { rootClientId: clientId }) 15561 } 15562 ), 15563 /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_block_editor4.InnerBlocks, { renderAppender: false }) 15564 ] }); 15565 } 15566 function PreviewContent({ attributes, setAttributes }) { 15567 return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_jsx_runtime61.Fragment, { children: [ 15568 /* @__PURE__ */ (0, import_jsx_runtime61.jsx)( 15569 import_block_editor4.RichText, 15570 { 15571 tagName: "h2", 15572 identifier: "title", 15573 className: "widget-title", 15574 allowedFormats: [], 15575 placeholder: (0, import_i18n11.__)("Title"), 15576 value: attributes.title ?? "", 15577 onChange: (title) => setAttributes({ title }) 15578 } 15579 ), 15580 /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_block_editor4.InnerBlocks, {}) 15581 ] }); 15582 } 15583 15584 // packages/widgets/build-module/blocks/widget-group/save.mjs 15585 var import_block_editor5 = __toESM(require_block_editor(), 1); 15586 var import_jsx_runtime62 = __toESM(require_jsx_runtime(), 1); 15587 function save({ attributes }) { 15588 return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_jsx_runtime62.Fragment, { children: [ 15589 /* @__PURE__ */ (0, import_jsx_runtime62.jsx)( 15590 import_block_editor5.RichText.Content, 15591 { 15592 tagName: "h2", 15593 className: "widget-title", 15594 value: attributes.title 15595 } 15596 ), 15597 /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "wp-widget-group__inner-blocks", children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_block_editor5.InnerBlocks.Content, {}) }) 15598 ] }); 15599 } 15600 15601 // packages/widgets/build-module/blocks/widget-group/deprecated.mjs 15602 var import_block_editor6 = __toESM(require_block_editor(), 1); 15603 var import_jsx_runtime63 = __toESM(require_jsx_runtime(), 1); 15604 var v1 = { 15605 attributes: { 15606 title: { 15607 type: "string" 15608 } 15609 }, 15610 supports: { 15611 html: false, 15612 inserter: true, 15613 customClassName: true, 15614 reusable: false 15615 }, 15616 save({ attributes }) { 15617 return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_jsx_runtime63.Fragment, { children: [ 15618 /* @__PURE__ */ (0, import_jsx_runtime63.jsx)( 15619 import_block_editor6.RichText.Content, 15620 { 15621 tagName: "h2", 15622 className: "widget-title", 15623 value: attributes.title 15624 } 15625 ), 15626 /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_block_editor6.InnerBlocks.Content, {}) 15627 ] }); 15628 } 15629 }; 15630 var deprecated_default = [v1]; 15631 15632 // packages/widgets/build-module/blocks/widget-group/index.mjs 15633 var { name: name2 } = block_default2; 15634 var settings2 = { 15635 title: (0, import_i18n12.__)("Widget Group"), 15636 description: (0, import_i18n12.__)( 15637 "Create a classic widget layout with a title that\u2019s styled by your theme for your widget areas." 15638 ), 15639 icon: group_default, 15640 __experimentalLabel: ({ name: label }) => label, 15641 edit: Edit2, 15642 save, 15643 transforms: { 15644 from: [ 15645 { 15646 type: "block", 15647 isMultiBlock: true, 15648 blocks: ["*"], 15649 isMatch(attributes, blocks) { 15650 return !blocks.some( 15651 (block) => block.name === "core/widget-group" 15652 ); 15653 }, 15654 __experimentalConvert(blocks) { 15655 let innerBlocks = blocks.map( 15656 (block) => (0, import_blocks3.cloneSanitizedBlock)(block) 15657 ); 15658 const firstHeadingBlock = innerBlocks[0].name === "core/heading" ? innerBlocks[0] : null; 15659 innerBlocks = innerBlocks.filter( 15660 (block) => block !== firstHeadingBlock 15661 ); 15662 return (0, import_blocks3.createBlock)( 15663 "core/widget-group", 15664 { 15665 ...firstHeadingBlock && { 15666 title: firstHeadingBlock.attributes.content 15667 } 15668 }, 15669 innerBlocks 15670 ); 15671 } 15672 } 15673 ] 15674 }, 15675 deprecated: deprecated_default 15676 }; 15677 15678 // packages/widgets/build-module/components/move-to-widget-area/index.mjs 15679 var import_components7 = __toESM(require_components(), 1); 15680 var import_i18n13 = __toESM(require_i18n(), 1); 15681 var import_jsx_runtime64 = __toESM(require_jsx_runtime(), 1); 15682 function MoveToWidgetArea({ 15683 currentWidgetAreaId, 15684 widgetAreas, 15685 onSelect 15686 }) { 15687 return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_components7.ToolbarGroup, { children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_components7.ToolbarItem, { children: (toggleProps) => /* @__PURE__ */ (0, import_jsx_runtime64.jsx)( 15688 import_components7.DropdownMenu, 15689 { 15690 icon: move_to_default, 15691 label: (0, import_i18n13.__)("Move to widget area"), 15692 toggleProps, 15693 children: ({ onClose }) => /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_components7.MenuGroup, { label: (0, import_i18n13.__)("Move to"), children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)( 15694 import_components7.MenuItemsChoice, 15695 { 15696 choices: widgetAreas.map( 15697 (widgetArea) => ({ 15698 value: widgetArea.id, 15699 label: widgetArea.name, 15700 info: widgetArea.description 15701 }) 15702 ), 15703 value: currentWidgetAreaId, 15704 onSelect: (value) => { 15705 onSelect(value); 15706 onClose(); 15707 } 15708 } 15709 ) }) 15710 } 15711 ) }) }); 15712 } 15713 15714 // packages/widgets/build-module/utils.mjs 15715 function getWidgetIdFromBlock(block) { 15716 return block.attributes.__internalWidgetId; 15717 } 15718 function addWidgetIdToBlock(block, widgetId) { 15719 return { 15720 ...block, 15721 attributes: { 15722 ...block.attributes || {}, 15723 __internalWidgetId: widgetId 15724 } 15725 }; 15726 } 15727 15728 // packages/widgets/build-module/register-legacy-widget-variations.mjs 15729 var import_data5 = __toESM(require_data(), 1); 15730 var import_core_data3 = __toESM(require_core_data(), 1); 15731 var import_blocks4 = __toESM(require_blocks(), 1); 15732 function registerLegacyWidgetVariations(settings3) { 15733 const unsubscribe = (0, import_data5.subscribe)(() => { 15734 const hiddenIds = settings3?.widgetTypesToHideFromLegacyWidgetBlock ?? []; 15735 const widgetTypes = (0, import_data5.select)(import_core_data3.store).getWidgetTypes({ per_page: -1 })?.filter((widgetType) => !hiddenIds.includes(widgetType.id)); 15736 if (widgetTypes) { 15737 unsubscribe(); 15738 (0, import_data5.dispatch)(import_blocks4.store).addBlockVariations( 15739 "core/legacy-widget", 15740 widgetTypes.map((widgetType) => ({ 15741 name: widgetType.id, 15742 title: widgetType.name, 15743 description: widgetType.description, 15744 attributes: widgetType.is_multi ? { 15745 idBase: widgetType.id, 15746 instance: {} 15747 } : { 15748 id: widgetType.id 15749 } 15750 })) 15751 ); 15752 } 15753 }); 15754 } 15755 15756 // packages/widgets/build-module/index.mjs 15757 function registerLegacyWidgetBlock(supports = {}) { 15758 const { metadata, settings: settings3, name: name3 } = legacy_widget_exports; 15759 (0, import_blocks5.registerBlockType)( 15760 { name: name3, ...metadata }, 15761 { 15762 ...settings3, 15763 supports: { 15764 ...settings3.supports, 15765 ...supports 15766 } 15767 } 15768 ); 15769 } 15770 function registerWidgetGroupBlock(supports = {}) { 15771 const { metadata, settings: settings3, name: name3 } = widget_group_exports; 15772 (0, import_blocks5.registerBlockType)( 15773 { name: name3, ...metadata }, 15774 { 15775 ...settings3, 15776 supports: { 15777 ...settings3.supports, 15778 ...supports 15779 } 15780 } 15781 ); 15782 } 15783 return __toCommonJS(index_exports); 15784 })(); 15785 /*! Bundled license information: 15786 15787 use-sync-external-store/cjs/use-sync-external-store-shim.development.js: 15788 (** 15789 * @license React 15790 * use-sync-external-store-shim.development.js 15791 * 15792 * Copyright (c) Meta Platforms, Inc. and affiliates. 15793 * 15794 * This source code is licensed under the MIT license found in the 15795 * LICENSE file in the root directory of this source tree. 15796 *) 15797 15798 use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js: 15799 (** 15800 * @license React 15801 * use-sync-external-store-shim/with-selector.development.js 15802 * 15803 * Copyright (c) Meta Platforms, Inc. and affiliates. 15804 * 15805 * This source code is licensed under the MIT license found in the 15806 * LICENSE file in the root directory of this source tree. 15807 *) 15808 */ 15809 (window.wp ||= {}).widgets = wp.widgets; 15810 })();
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated : Thu Oct 22 08:20:34 2026 | Cross-referenced by PHPXref |