| [ 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 // package-external:@wordpress/warning 106 var require_warning = __commonJS({ 107 "package-external:@wordpress/warning"(exports, module) { 108 module.exports = window.wp.warning; 109 } 110 }); 111 112 // node_modules/.store/use-sync-external-store@1.7.0-jHNF5n8408rkWhZ5NHKclA/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js 113 var require_use_sync_external_store_shim_development = __commonJS({ 114 "node_modules/.store/use-sync-external-store@1.7.0-jHNF5n8408rkWhZ5NHKclA/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js"(exports) { 115 "use strict"; 116 (function() { 117 function is(x, y) { 118 return x === y && (0 !== x || 1 / x === 1 / y) || x !== x && y !== y; 119 } 120 function useSyncExternalStore$2(subscribe2, getSnapshot) { 121 didWarnOld18Alpha || void 0 === React88.startTransition || (didWarnOld18Alpha = true, console.error( 122 "You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release." 123 )); 124 var value = getSnapshot(); 125 if (!didWarnUncachedGetSnapshot) { 126 var cachedValue = getSnapshot(); 127 objectIs(value, cachedValue) || (console.error( 128 "The result of getSnapshot should be cached to avoid an infinite loop" 129 ), didWarnUncachedGetSnapshot = true); 130 } 131 cachedValue = useState22({ 132 inst: { value, getSnapshot } 133 }); 134 var inst = cachedValue[0].inst, forceUpdate = cachedValue[1]; 135 useLayoutEffect3( 136 function() { 137 inst.value = value; 138 inst.getSnapshot = getSnapshot; 139 checkIfSnapshotChanged(inst) && forceUpdate({ inst }); 140 }, 141 [subscribe2, value, getSnapshot] 142 ); 143 useEffect15( 144 function() { 145 checkIfSnapshotChanged(inst) && forceUpdate({ inst }); 146 return subscribe2(function() { 147 checkIfSnapshotChanged(inst) && forceUpdate({ inst }); 148 }); 149 }, 150 [subscribe2] 151 ); 152 useDebugValue2(value); 153 return value; 154 } 155 function checkIfSnapshotChanged(inst) { 156 var latestGetSnapshot = inst.getSnapshot; 157 inst = inst.value; 158 try { 159 var nextValue = latestGetSnapshot(); 160 return !objectIs(inst, nextValue); 161 } catch (error2) { 162 return true; 163 } 164 } 165 function useSyncExternalStore$1(subscribe2, getSnapshot) { 166 return getSnapshot(); 167 } 168 "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error()); 169 var 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; 170 exports.useSyncExternalStore = void 0 !== React88.useSyncExternalStore ? React88.useSyncExternalStore : shim; 171 "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error()); 172 })(); 173 } 174 }); 175 176 // node_modules/.store/use-sync-external-store@1.7.0-jHNF5n8408rkWhZ5NHKclA/node_modules/use-sync-external-store/shim/index.js 177 var require_shim = __commonJS({ 178 "node_modules/.store/use-sync-external-store@1.7.0-jHNF5n8408rkWhZ5NHKclA/node_modules/use-sync-external-store/shim/index.js"(exports, module) { 179 "use strict"; 180 if (false) { 181 module.exports = null; 182 } else { 183 module.exports = require_use_sync_external_store_shim_development(); 184 } 185 } 186 }); 187 188 // node_modules/.store/use-sync-external-store@1.7.0-jHNF5n8408rkWhZ5NHKclA/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js 189 var require_with_selector_development = __commonJS({ 190 "node_modules/.store/use-sync-external-store@1.7.0-jHNF5n8408rkWhZ5NHKclA/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js"(exports) { 191 "use strict"; 192 (function() { 193 function is(x, y) { 194 return x === y && (0 !== x || 1 / x === 1 / y) || x !== x && y !== y; 195 } 196 "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error()); 197 var 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; 198 exports.useSyncExternalStoreWithSelector = function(subscribe2, getSnapshot, getServerSnapshot, selector, isEqual) { 199 var instRef = useRef36(null); 200 if (null === instRef.current) { 201 var inst = { hasValue: false, value: null }; 202 instRef.current = inst; 203 } else inst = instRef.current; 204 instRef = useMemo23( 205 function() { 206 function memoizedSelector(nextSnapshot) { 207 if (!hasMemo) { 208 hasMemo = true; 209 memoizedSnapshot = nextSnapshot; 210 nextSnapshot = selector(nextSnapshot); 211 if (void 0 !== isEqual && inst.hasValue) { 212 var currentSelection = inst.value; 213 if (isEqual(currentSelection, nextSnapshot)) 214 return memoizedSelection = currentSelection; 215 } 216 return memoizedSelection = nextSnapshot; 217 } 218 currentSelection = memoizedSelection; 219 if (objectIs(memoizedSnapshot, nextSnapshot)) 220 return currentSelection; 221 var nextSelection = selector(nextSnapshot); 222 if (void 0 !== isEqual && isEqual(currentSelection, nextSelection)) 223 return memoizedSnapshot = nextSnapshot, currentSelection; 224 memoizedSnapshot = nextSnapshot; 225 return memoizedSelection = nextSelection; 226 } 227 var hasMemo = false, memoizedSnapshot, memoizedSelection, maybeGetServerSnapshot = void 0 === getServerSnapshot ? null : getServerSnapshot; 228 return [ 229 function() { 230 return memoizedSelector(getSnapshot()); 231 }, 232 null === maybeGetServerSnapshot ? void 0 : function() { 233 return memoizedSelector(maybeGetServerSnapshot()); 234 } 235 ]; 236 }, 237 [getSnapshot, getServerSnapshot, selector, isEqual] 238 ); 239 var value = useSyncExternalStore2(subscribe2, instRef[0], instRef[1]); 240 useEffect15( 241 function() { 242 inst.hasValue = true; 243 inst.value = value; 244 }, 245 [value] 246 ); 247 useDebugValue2(value); 248 return value; 249 }; 250 "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error()); 251 })(); 252 } 253 }); 254 255 // node_modules/.store/use-sync-external-store@1.7.0-jHNF5n8408rkWhZ5NHKclA/node_modules/use-sync-external-store/shim/with-selector.js 256 var require_with_selector = __commonJS({ 257 "node_modules/.store/use-sync-external-store@1.7.0-jHNF5n8408rkWhZ5NHKclA/node_modules/use-sync-external-store/shim/with-selector.js"(exports, module) { 258 "use strict"; 259 if (false) { 260 module.exports = null; 261 } else { 262 module.exports = require_with_selector_development(); 263 } 264 } 265 }); 266 267 // package-external:@wordpress/compose 268 var require_compose = __commonJS({ 269 "package-external:@wordpress/compose"(exports, module) { 270 module.exports = window.wp.compose; 271 } 272 }); 273 274 // package-external:@wordpress/data 275 var require_data = __commonJS({ 276 "package-external:@wordpress/data"(exports, module) { 277 module.exports = window.wp.data; 278 } 279 }); 280 281 // package-external:@wordpress/notices 282 var require_notices = __commonJS({ 283 "package-external:@wordpress/notices"(exports, module) { 284 module.exports = window.wp.notices; 285 } 286 }); 287 288 // package-external:@wordpress/api-fetch 289 var require_api_fetch = __commonJS({ 290 "package-external:@wordpress/api-fetch"(exports, module) { 291 module.exports = window.wp.apiFetch; 292 } 293 }); 294 295 // packages/widgets/build-module/index.mjs 296 var index_exports = {}; 297 __export(index_exports, { 298 MoveToWidgetArea: () => MoveToWidgetArea, 299 addWidgetIdToBlock: () => addWidgetIdToBlock, 300 getWidgetIdFromBlock: () => getWidgetIdFromBlock, 301 registerLegacyWidgetBlock: () => registerLegacyWidgetBlock, 302 registerLegacyWidgetVariations: () => registerLegacyWidgetVariations, 303 registerWidgetGroupBlock: () => registerWidgetGroupBlock 304 }); 305 var import_blocks5 = __toESM(require_blocks(), 1); 306 307 // packages/widgets/build-module/blocks/legacy-widget/index.mjs 308 var legacy_widget_exports = {}; 309 __export(legacy_widget_exports, { 310 metadata: () => block_default, 311 name: () => name, 312 settings: () => settings 313 }); 314 315 // packages/icons/build-module/library/brush.mjs 316 var import_primitives = __toESM(require_primitives(), 1); 317 var import_jsx_runtime = __toESM(require_jsx_runtime(), 1); 318 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" }) }); 319 320 // packages/icons/build-module/library/check.mjs 321 var import_primitives2 = __toESM(require_primitives(), 1); 322 var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1); 323 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" }) }); 324 325 // packages/icons/build-module/library/chevron-down.mjs 326 var import_primitives3 = __toESM(require_primitives(), 1); 327 var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1); 328 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" }) }); 329 330 // packages/icons/build-module/library/group.mjs 331 var import_primitives4 = __toESM(require_primitives(), 1); 332 var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1); 333 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: [ 334 /* @__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" }), 335 /* @__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" }) 336 ] }); 337 338 // packages/icons/build-module/library/move-to.mjs 339 var import_primitives5 = __toESM(require_primitives(), 1); 340 var import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1); 341 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" }) }); 342 343 // packages/icons/build-module/library/widget.mjs 344 var import_primitives6 = __toESM(require_primitives(), 1); 345 var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1); 346 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: [ 347 /* @__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" }), 348 /* @__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" }) 349 ] }); 350 351 // packages/widgets/build-module/blocks/legacy-widget/block.json 352 var block_default = { 353 $schema: "https://schemas.wp.org/trunk/block.json", 354 apiVersion: 3, 355 name: "core/legacy-widget", 356 title: "Legacy Widget", 357 category: "widgets", 358 description: "Display a legacy widget.", 359 textdomain: "default", 360 attributes: { 361 id: { 362 type: "string", 363 default: null 364 }, 365 idBase: { 366 type: "string", 367 default: null 368 }, 369 instance: { 370 type: "object", 371 default: null 372 } 373 }, 374 supports: { 375 html: false, 376 customClassName: false, 377 reusable: false 378 }, 379 editorStyle: "wp-block-legacy-widget-editor" 380 }; 381 382 // node_modules/.store/clsx@2.1.1-XOLP1vUL9vEGfpiXm37fAw/node_modules/clsx/dist/clsx.mjs 383 function r(e) { 384 var t, f, n = ""; 385 if ("string" == typeof e || "number" == typeof e) n += e; 386 else if ("object" == typeof e) if (Array.isArray(e)) { 387 var o = e.length; 388 for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f); 389 } else for (f in e) e[f] && (n && (n += " "), n += f); 390 return n; 391 } 392 function clsx() { 393 for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t); 394 return n; 395 } 396 var clsx_default = clsx; 397 398 // packages/widgets/build-module/blocks/legacy-widget/edit/index.mjs 399 var import_block_editor3 = __toESM(require_block_editor(), 1); 400 var import_components5 = __toESM(require_components(), 1); 401 var import_i18n10 = __toESM(require_i18n(), 1); 402 var import_element37 = __toESM(require_element(), 1); 403 var import_core_data2 = __toESM(require_core_data(), 1); 404 405 // packages/widgets/build-module/blocks/legacy-widget/edit/widget-type-selector.mjs 406 var import_components = __toESM(require_components(), 1); 407 408 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useRenderElement.mjs 409 var React4 = __toESM(require_react(), 1); 410 411 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useRefWithInit.mjs 412 var React = __toESM(require_react(), 1); 413 var UNINITIALIZED = {}; 414 function useRefWithInit(init, initArg) { 415 const ref = React.useRef(UNINITIALIZED); 416 if (ref.current === UNINITIALIZED) { 417 ref.current = init(initArg); 418 } 419 return ref; 420 } 421 422 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useMergedRefs.mjs 423 function useMergedRefs(a, b, c, d) { 424 const forkRef = useRefWithInit(createForkRef).current; 425 if (didChange(forkRef, a, b, c, d)) { 426 update(forkRef, [a, b, c, d]); 427 } 428 return forkRef.callback; 429 } 430 function useMergedRefsN(refs) { 431 const forkRef = useRefWithInit(createForkRef).current; 432 if (didChangeN(forkRef, refs)) { 433 update(forkRef, refs); 434 } 435 return forkRef.callback; 436 } 437 function createForkRef() { 438 return { 439 callback: null, 440 cleanup: null, 441 refs: [] 442 }; 443 } 444 function didChange(forkRef, a, b, c, d) { 445 return forkRef.refs[0] !== a || forkRef.refs[1] !== b || forkRef.refs[2] !== c || forkRef.refs[3] !== d; 446 } 447 function didChangeN(forkRef, newRefs) { 448 return forkRef.refs.length !== newRefs.length || forkRef.refs.some((ref, index2) => ref !== newRefs[index2]); 449 } 450 function update(forkRef, refs) { 451 forkRef.refs = refs; 452 if (refs.every((ref) => ref == null)) { 453 forkRef.callback = null; 454 return; 455 } 456 forkRef.callback = (instance) => { 457 if (forkRef.cleanup) { 458 forkRef.cleanup(); 459 forkRef.cleanup = null; 460 } 461 if (instance != null) { 462 const cleanupCallbacks = Array(refs.length).fill(null); 463 for (let i = 0; i < refs.length; i += 1) { 464 const ref = refs[i]; 465 if (ref == null) { 466 continue; 467 } 468 switch (typeof ref) { 469 case "function": { 470 const refCleanup = ref(instance); 471 if (typeof refCleanup === "function") { 472 cleanupCallbacks[i] = refCleanup; 473 } 474 break; 475 } 476 case "object": { 477 ref.current = instance; 478 break; 479 } 480 default: 481 } 482 } 483 forkRef.cleanup = () => { 484 for (let i = 0; i < refs.length; i += 1) { 485 const ref = refs[i]; 486 if (ref == null) { 487 continue; 488 } 489 switch (typeof ref) { 490 case "function": { 491 const cleanupCallback = cleanupCallbacks[i]; 492 if (typeof cleanupCallback === "function") { 493 cleanupCallback(); 494 } else { 495 void ref(null); 496 } 497 break; 498 } 499 case "object": { 500 ref.current = null; 501 break; 502 } 503 default: 504 } 505 } 506 }; 507 } 508 }; 509 } 510 511 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/getReactElementRef.mjs 512 var React3 = __toESM(require_react(), 1); 513 514 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/reactVersion.mjs 515 var React2 = __toESM(require_react(), 1); 516 var majorVersion = parseInt(React2.version, 10); 517 function isReactVersionAtLeast(reactVersionToCheck) { 518 return majorVersion >= reactVersionToCheck; 519 } 520 521 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/getReactElementRef.mjs 522 function getReactElementRef(element) { 523 if (!/* @__PURE__ */ React3.isValidElement(element)) { 524 return null; 525 } 526 const reactElement = element; 527 const propsWithRef = reactElement.props; 528 return (isReactVersionAtLeast(19) ? propsWithRef?.ref : reactElement.ref) ?? null; 529 } 530 531 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/mergeObjects.mjs 532 function mergeObjects(a, b) { 533 if (a && !b) { 534 return a; 535 } 536 if (!a && b) { 537 return b; 538 } 539 if (a || b) { 540 return { 541 ...a, 542 ...b 543 }; 544 } 545 return void 0; 546 } 547 548 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/createLogOnce.mjs 549 var loggedMessages; 550 if (true) { 551 loggedMessages = /* @__PURE__ */ new Set(); 552 } 553 function createLogOnce(severity, prefix) { 554 return function logOnce(...messages) { 555 if (true) { 556 const message = messages.join(" "); 557 const output = prefix ? `$prefix}: $message}` : message; 558 const key = `$severity}:$output}`; 559 if (!loggedMessages.has(key)) { 560 loggedMessages.add(key); 561 if (severity === "warn") { 562 console.warn(output); 563 } else { 564 console.error(output); 565 } 566 } 567 } 568 }; 569 } 570 571 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/warn.mjs 572 var warn = createLogOnce("warn", "Base UI"); 573 574 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/empty.mjs 575 function NOOP() { 576 } 577 var EMPTY_ARRAY = Object.freeze([]); 578 var EMPTY_OBJECT = Object.freeze({}); 579 580 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/getStateAttributesProps.mjs 581 function getStateAttributesProps(state, customMapping) { 582 const props = {}; 583 for (const key in state) { 584 const value = state[key]; 585 if (customMapping?.hasOwnProperty(key)) { 586 const customProps = customMapping[key](value); 587 if (customProps != null) { 588 Object.assign(props, customProps); 589 } 590 continue; 591 } 592 if (value === true) { 593 props[`data-$key.toLowerCase()}`] = ""; 594 } else if (value) { 595 props[`data-$key.toLowerCase()}`] = value.toString(); 596 } 597 } 598 return props; 599 } 600 601 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/resolveClassName.mjs 602 function resolveClassName(className, state) { 603 return typeof className === "function" ? className(state) : className; 604 } 605 606 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/resolveStyle.mjs 607 function resolveStyle(style, state) { 608 return typeof style === "function" ? style(state) : style; 609 } 610 611 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/merge-props/mergeProps.mjs 612 var EMPTY_PROPS = {}; 613 function mergeProps(a, b, c, d, e) { 614 if (!c && !d && !e && !a) { 615 return createInitialMergedProps(b); 616 } 617 let merged = createInitialMergedProps(a); 618 if (b) { 619 merged = mergeInto(merged, b); 620 } 621 if (c) { 622 merged = mergeInto(merged, c); 623 } 624 if (d) { 625 merged = mergeInto(merged, d); 626 } 627 if (e) { 628 merged = mergeInto(merged, e); 629 } 630 return merged; 631 } 632 function mergePropsN(props) { 633 if (props.length === 0) { 634 return EMPTY_PROPS; 635 } 636 if (props.length === 1) { 637 return createInitialMergedProps(props[0]); 638 } 639 let merged = createInitialMergedProps(props[0]); 640 for (let i = 1; i < props.length; i += 1) { 641 merged = mergeInto(merged, props[i]); 642 } 643 return merged; 644 } 645 function createInitialMergedProps(inputProps) { 646 if (isPropsGetter(inputProps)) { 647 return { 648 ...inputProps(EMPTY_PROPS) 649 }; 650 } 651 return copyInitialProps(inputProps); 652 } 653 function mergeInto(merged, inputProps) { 654 if (isPropsGetter(inputProps)) { 655 return inputProps(merged); 656 } 657 return mutablyMergeInto(merged, inputProps); 658 } 659 function copyInitialProps(inputProps) { 660 const copiedProps = { 661 ...inputProps 662 }; 663 for (const propName in copiedProps) { 664 const propValue = copiedProps[propName]; 665 if (isEventHandler(propName, propValue)) { 666 copiedProps[propName] = wrapEventHandler(propValue); 667 } 668 } 669 return copiedProps; 670 } 671 function mutablyMergeInto(mergedProps, externalProps) { 672 if (!externalProps) { 673 return mergedProps; 674 } 675 for (const propName in externalProps) { 676 const externalPropValue = externalProps[propName]; 677 switch (propName) { 678 case "style": { 679 mergedProps[propName] = mergeObjects(mergedProps.style, externalPropValue); 680 break; 681 } 682 case "className": { 683 mergedProps[propName] = mergeClassNames(mergedProps.className, externalPropValue); 684 break; 685 } 686 default: { 687 if (isEventHandler(propName, externalPropValue)) { 688 mergedProps[propName] = mergeEventHandlers(mergedProps[propName], externalPropValue); 689 } else { 690 mergedProps[propName] = externalPropValue; 691 } 692 } 693 } 694 } 695 return mergedProps; 696 } 697 function isEventHandler(key, value) { 698 const code0 = key.charCodeAt(0); 699 const code1 = key.charCodeAt(1); 700 const code2 = key.charCodeAt(2); 701 return code0 === 111 && code1 === 110 && code2 >= 65 && code2 <= 90 && (typeof value === "function" || typeof value === "undefined"); 702 } 703 function isPropsGetter(inputProps) { 704 return typeof inputProps === "function"; 705 } 706 function mergeEventHandlers(ourHandler, theirHandler) { 707 if (!theirHandler) { 708 return ourHandler; 709 } 710 if (!ourHandler) { 711 return wrapEventHandler(theirHandler); 712 } 713 return (...args) => { 714 const event = args[0]; 715 if (isSyntheticEvent(event)) { 716 const baseUIEvent = event; 717 makeEventPreventable(baseUIEvent); 718 const result2 = theirHandler(...args); 719 if (!baseUIEvent.baseUIHandlerPrevented) { 720 ourHandler?.(...args); 721 } 722 return result2; 723 } 724 const result = theirHandler(...args); 725 ourHandler?.(...args); 726 return result; 727 }; 728 } 729 function wrapEventHandler(handler) { 730 if (!handler) { 731 return handler; 732 } 733 return (...args) => { 734 const event = args[0]; 735 if (isSyntheticEvent(event)) { 736 makeEventPreventable(event); 737 } 738 return handler(...args); 739 }; 740 } 741 function makeEventPreventable(event) { 742 event.preventBaseUIHandler = () => { 743 event.baseUIHandlerPrevented = true; 744 }; 745 return event; 746 } 747 function mergeClassNames(ourClassName, theirClassName) { 748 if (theirClassName) { 749 if (ourClassName) { 750 return theirClassName + " " + ourClassName; 751 } 752 return theirClassName; 753 } 754 return ourClassName; 755 } 756 function isSyntheticEvent(event) { 757 return event != null && typeof event === "object" && "nativeEvent" in event; 758 } 759 760 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useRenderElement.mjs 761 var import_react = __toESM(require_react(), 1); 762 function useRenderElement(element, componentProps, params = {}) { 763 let renderProp = componentProps.render; 764 if (params.enabled !== false) { 765 renderProp = unwrapLazyRenderProp(renderProp); 766 } 767 const outProps = useRenderElementProps(componentProps, params, renderProp); 768 if (params.enabled === false) { 769 return null; 770 } 771 const state = params.state ?? EMPTY_OBJECT; 772 return evaluateRenderProp(element, renderProp, outProps, state); 773 } 774 function useRenderElementProps(componentProps, params, renderProp) { 775 const { 776 className: classNameProp, 777 style: styleProp 778 } = componentProps; 779 const { 780 state = EMPTY_OBJECT, 781 ref, 782 props, 783 stateAttributesMapping: stateAttributesMapping6, 784 enabled = true 785 } = params; 786 const className = enabled ? resolveClassName(classNameProp, state) : void 0; 787 const style = enabled ? resolveStyle(styleProp, state) : void 0; 788 const stateProps = enabled ? getStateAttributesProps(state, stateAttributesMapping6) : EMPTY_OBJECT; 789 const resolvedProps = enabled && props ? resolveRenderFunctionProps(props) : void 0; 790 const outProps = enabled ? mergeObjects(stateProps, resolvedProps) ?? {} : EMPTY_OBJECT; 791 if (typeof document !== "undefined") { 792 if (!enabled) { 793 void useMergedRefs(null, null); 794 } else if (Array.isArray(ref)) { 795 outProps.ref = useMergedRefsN([outProps.ref, getReactElementRef(renderProp), ...ref]); 796 } else { 797 outProps.ref = useMergedRefs(outProps.ref, getReactElementRef(renderProp), ref); 798 } 799 } 800 if (!enabled) { 801 return EMPTY_OBJECT; 802 } 803 if (className !== void 0) { 804 outProps.className = mergeClassNames(outProps.className, className); 805 } 806 if (style !== void 0) { 807 outProps.style = mergeObjects(outProps.style, style); 808 } 809 return outProps; 810 } 811 function resolveRenderFunctionProps(props) { 812 if (Array.isArray(props)) { 813 return mergePropsN(props); 814 } 815 return mergeProps(void 0, props); 816 } 817 var REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for("react.lazy"); 818 var COMPONENT_IDENTIFIER_PATTERN = /^[A-Z][A-Za-z0-9$]*$/; 819 var LOWERCASE_CHARACTER_PATTERN = /[a-z]/; 820 function unwrapLazyRenderProp(render) { 821 if (render?.$$typeof !== REACT_LAZY_TYPE) { 822 return render; 823 } 824 const unwrapped = React4.Children.toArray(render)[0]; 825 return /* @__PURE__ */ React4.isValidElement(unwrapped) ? unwrapped : render; 826 } 827 function evaluateRenderProp(element, render, props, state) { 828 if (render) { 829 if (typeof render === "function") { 830 if (true) { 831 warnIfRenderPropLooksLikeComponent(render); 832 } 833 return render(props, state); 834 } 835 const mergedProps = mergeProps(props, render.props); 836 mergedProps.ref = props.ref; 837 if (true) { 838 if (!/* @__PURE__ */ React4.isValidElement(render)) { 839 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")); 840 } 841 } 842 return /* @__PURE__ */ React4.cloneElement(render, mergedProps); 843 } 844 return renderTag(element, props); 845 } 846 function warnIfRenderPropLooksLikeComponent(renderFn) { 847 const functionName = renderFn.name; 848 if (functionName.length === 0) { 849 return; 850 } 851 if (!COMPONENT_IDENTIFIER_PATTERN.test(functionName)) { 852 return; 853 } 854 if (!LOWERCASE_CHARACTER_PATTERN.test(functionName)) { 855 return; 856 } 857 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"); 858 } 859 function renderTag(Tag, props) { 860 if (Tag === "button") { 861 return /* @__PURE__ */ (0, import_react.createElement)("button", { 862 type: "button", 863 ...props, 864 key: props.key 865 }); 866 } 867 if (Tag === "img") { 868 return /* @__PURE__ */ (0, import_react.createElement)("img", { 869 alt: "", 870 ...props, 871 key: props.key 872 }); 873 } 874 return /* @__PURE__ */ React4.createElement(Tag, props); 875 } 876 877 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/safeReact.mjs 878 var React5 = __toESM(require_react(), 1); 879 var SafeReact = { 880 ...React5 881 }; 882 883 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useStableCallback.mjs 884 var useInsertionEffect = SafeReact.useInsertionEffect; 885 var useSafeInsertionEffect = ( 886 // React 17 doesn't have useInsertionEffect. 887 useInsertionEffect && // Preact replaces useInsertionEffect with useLayoutEffect and fires too late. 888 useInsertionEffect !== SafeReact.useLayoutEffect ? useInsertionEffect : (fn) => fn() 889 ); 890 function useStableCallback(callback) { 891 const stable = useRefWithInit(createStableCallback).current; 892 stable.next = callback; 893 useSafeInsertionEffect(stable.effect); 894 return stable.trampoline; 895 } 896 function createStableCallback() { 897 const stable = { 898 next: void 0, 899 callback: assertNotCalled, 900 trampoline: (...args) => stable.callback?.(...args), 901 effect: () => { 902 stable.callback = stable.next; 903 } 904 }; 905 return stable; 906 } 907 function assertNotCalled() { 908 if (true) { 909 throw ( 910 /* minify-error-disabled */ 911 new Error("Base UI: Cannot call an event handler while rendering.") 912 ); 913 } 914 } 915 916 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useIsoLayoutEffect.mjs 917 var React6 = __toESM(require_react(), 1); 918 var noop = () => { 919 }; 920 var useIsoLayoutEffect = typeof document !== "undefined" ? React6.useLayoutEffect : noop; 921 922 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useOpenChangeComplete.mjs 923 var React8 = __toESM(require_react(), 1); 924 925 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useAnimationsFinished.mjs 926 var ReactDOM = __toESM(require_react_dom(), 1); 927 928 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useOnMount.mjs 929 var React7 = __toESM(require_react(), 1); 930 function useOnMount(fn) { 931 React7.useEffect(fn, EMPTY_ARRAY); 932 } 933 934 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useAnimationFrame.mjs 935 var EMPTY = null; 936 var LAST_RAF = globalThis.requestAnimationFrame; 937 var Scheduler = class { 938 /* This implementation uses an array as a backing data-structure for frame callbacks. 939 * It allows `O(1)` callback cancelling by inserting a `null` in the array, though it 940 * never calls the native `cancelAnimationFrame` if there are no frames left. This can 941 * be much more efficient if there is a call pattern that alterns as 942 * "request-cancel-request-cancel-…". 943 * But in the case of "request-request-…-cancel-cancel-…", it leaves the final animation 944 * frame to run anyway. We turn that frame into a `O(1)` no-op via `callbacksCount`. */ 945 callbacks = []; 946 callbacksCount = 0; 947 nextId = 1; 948 startId = 1; 949 isScheduled = false; 950 tick = (timestamp) => { 951 this.isScheduled = false; 952 const currentCallbacks = this.callbacks; 953 const currentCallbacksCount = this.callbacksCount; 954 this.callbacks = []; 955 this.callbacksCount = 0; 956 this.startId = this.nextId; 957 if (currentCallbacksCount > 0) { 958 for (let i = 0; i < currentCallbacks.length; i += 1) { 959 currentCallbacks[i]?.(timestamp); 960 } 961 } 962 }; 963 request(fn) { 964 const id = this.nextId; 965 this.nextId += 1; 966 this.callbacks.push(fn); 967 this.callbacksCount += 1; 968 const didRAFChange = LAST_RAF !== requestAnimationFrame && (LAST_RAF = requestAnimationFrame, true); 969 if (!this.isScheduled || didRAFChange) { 970 requestAnimationFrame(this.tick); 971 this.isScheduled = true; 972 } 973 return id; 974 } 975 cancel(id) { 976 const index2 = id - this.startId; 977 if (index2 < 0 || index2 >= this.callbacks.length) { 978 return; 979 } 980 if (this.callbacks[index2] === null) { 981 return; 982 } 983 this.callbacks[index2] = null; 984 this.callbacksCount -= 1; 985 } 986 }; 987 var scheduler = new Scheduler(); 988 var AnimationFrame = class _AnimationFrame { 989 static create() { 990 return new _AnimationFrame(); 991 } 992 static request(fn) { 993 return scheduler.request(fn); 994 } 995 static cancel(id) { 996 return scheduler.cancel(id); 997 } 998 currentId = EMPTY; 999 /** 1000 * Executes `fn` after `delay`, clearing any previously scheduled call. 1001 */ 1002 request(fn) { 1003 this.cancel(); 1004 this.currentId = scheduler.request(() => { 1005 this.currentId = EMPTY; 1006 fn(); 1007 }); 1008 } 1009 cancel = () => { 1010 if (this.currentId !== EMPTY) { 1011 scheduler.cancel(this.currentId); 1012 this.currentId = EMPTY; 1013 } 1014 }; 1015 disposeEffect = () => { 1016 return this.cancel; 1017 }; 1018 }; 1019 function useAnimationFrame() { 1020 const timeout = useRefWithInit(AnimationFrame.create).current; 1021 useOnMount(timeout.disposeEffect); 1022 return timeout; 1023 } 1024 1025 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/resolveRef.mjs 1026 function resolveRef(maybeRef) { 1027 if (maybeRef == null) { 1028 return maybeRef; 1029 } 1030 return "current" in maybeRef ? maybeRef.current : maybeRef; 1031 } 1032 1033 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/getFiniteAnimations.mjs 1034 function getFiniteAnimations(element, options) { 1035 return element.getAnimations(options).filter((animation) => { 1036 const timing = animation.effect?.getTiming(); 1037 return timing?.duration !== Infinity && timing?.iterations !== Infinity; 1038 }); 1039 } 1040 1041 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/TransitionStatusDataAttributes.mjs 1042 var startingStyle = "data-starting-style"; 1043 var endingStyle = "data-ending-style"; 1044 1045 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useAnimationsFinished.mjs 1046 var pendingCallbacks = null; 1047 function flushBeforePaint(fn) { 1048 if (!pendingCallbacks) { 1049 const callbacks = []; 1050 pendingCallbacks = callbacks; 1051 queueMicrotask(() => { 1052 pendingCallbacks = null; 1053 ReactDOM.flushSync(() => { 1054 for (const callback of callbacks) { 1055 callback(); 1056 } 1057 }); 1058 }); 1059 } 1060 pendingCallbacks.push(fn); 1061 } 1062 function useAnimationsFinished(elementOrRef, waitForStartingStyleRemoved = false, batch = false) { 1063 const frame = useAnimationFrame(); 1064 return useStableCallback((fnToExecute, signal = null) => { 1065 frame.cancel(); 1066 const element = resolveRef(elementOrRef); 1067 if (element == null) { 1068 return; 1069 } 1070 const resolvedElement = element; 1071 const done = () => { 1072 if (!batch) { 1073 ReactDOM.flushSync(fnToExecute); 1074 return; 1075 } 1076 flushBeforePaint(() => { 1077 if (!signal?.aborted) { 1078 fnToExecute(); 1079 } 1080 }); 1081 }; 1082 if (typeof resolvedElement.getAnimations !== "function" || globalThis.BASE_UI_ANIMATIONS_DISABLED) { 1083 fnToExecute(); 1084 return; 1085 } 1086 function exec() { 1087 Promise.all(getFiniteAnimations(resolvedElement).map((animation) => animation.finished.then(NOOP))).then(() => { 1088 if (!signal?.aborted) { 1089 done(); 1090 } 1091 }, () => { 1092 if (signal?.aborted) { 1093 return; 1094 } 1095 const currentAnimations = getFiniteAnimations(resolvedElement); 1096 if (currentAnimations.some((animation) => animation.pending || animation.playState !== "finished")) { 1097 exec(); 1098 return; 1099 } 1100 done(); 1101 }); 1102 } 1103 if (waitForStartingStyleRemoved) { 1104 const startingStyleAttribute = startingStyle; 1105 if (!resolvedElement.hasAttribute(startingStyleAttribute)) { 1106 frame.request(exec); 1107 return; 1108 } 1109 const attributeObserver = new MutationObserver(() => { 1110 if (!resolvedElement.hasAttribute(startingStyleAttribute)) { 1111 attributeObserver.disconnect(); 1112 exec(); 1113 } 1114 }); 1115 attributeObserver.observe(resolvedElement, { 1116 attributes: true, 1117 attributeFilter: [startingStyleAttribute] 1118 }); 1119 signal?.addEventListener("abort", () => attributeObserver.disconnect(), { 1120 once: true 1121 }); 1122 return; 1123 } 1124 frame.request(exec); 1125 }); 1126 } 1127 1128 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useOpenChangeComplete.mjs 1129 function useOpenChangeComplete(parameters) { 1130 const { 1131 enabled = true, 1132 open: open2, 1133 ref, 1134 batch = false, 1135 onComplete: onCompleteParam 1136 } = parameters; 1137 const onComplete = useStableCallback(onCompleteParam); 1138 const runOnceAnimationsFinish = useAnimationsFinished(ref, open2, batch); 1139 React8.useEffect(() => { 1140 if (!enabled) { 1141 return void 0; 1142 } 1143 const abortController = new AbortController(); 1144 runOnceAnimationsFinish(onComplete, abortController.signal); 1145 return () => { 1146 abortController.abort(); 1147 }; 1148 }, [enabled, open2, onComplete, runOnceAnimationsFinish]); 1149 } 1150 1151 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/stateAttributesMapping.mjs 1152 var STARTING_HOOK = { 1153 [startingStyle]: "" 1154 }; 1155 var ENDING_HOOK = { 1156 [endingStyle]: "" 1157 }; 1158 var transitionStatusMapping = { 1159 transitionStatus(value) { 1160 if (value === "starting") { 1161 return STARTING_HOOK; 1162 } 1163 if (value === "ending") { 1164 return ENDING_HOOK; 1165 } 1166 return null; 1167 } 1168 }; 1169 1170 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useTransitionStatus.mjs 1171 var React9 = __toESM(require_react(), 1); 1172 function useTransitionStatus(open2, enableIdleState = false, deferEndingState = false, animateInitialOpen = false) { 1173 const [transitionStatus, setTransitionStatus] = React9.useState(open2 && enableIdleState ? "idle" : void 0); 1174 const [mounted, setMounted] = React9.useState(open2 && !animateInitialOpen); 1175 if (open2 && !mounted) { 1176 setMounted(true); 1177 setTransitionStatus("starting"); 1178 } 1179 if (!open2 && mounted && transitionStatus !== "ending" && !deferEndingState) { 1180 setTransitionStatus("ending"); 1181 } 1182 if (!open2 && !mounted && transitionStatus === "ending") { 1183 setTransitionStatus(void 0); 1184 } 1185 useIsoLayoutEffect(() => { 1186 if (!open2 && mounted && transitionStatus !== "ending" && deferEndingState) { 1187 const frame = AnimationFrame.request(() => { 1188 setTransitionStatus("ending"); 1189 }); 1190 return () => { 1191 AnimationFrame.cancel(frame); 1192 }; 1193 } 1194 return void 0; 1195 }, [open2, mounted, transitionStatus, deferEndingState]); 1196 useIsoLayoutEffect(() => { 1197 if (!open2 || enableIdleState || transitionStatus === void 0) { 1198 return void 0; 1199 } 1200 const frame = AnimationFrame.request(() => { 1201 setTransitionStatus(void 0); 1202 }); 1203 return () => { 1204 AnimationFrame.cancel(frame); 1205 }; 1206 }, [enableIdleState, open2, transitionStatus]); 1207 useIsoLayoutEffect(() => { 1208 if (!open2 || !enableIdleState) { 1209 return void 0; 1210 } 1211 if (open2 && mounted && transitionStatus !== "idle") { 1212 setTransitionStatus("starting"); 1213 } 1214 const frame = AnimationFrame.request(() => { 1215 setTransitionStatus("idle"); 1216 }); 1217 return () => { 1218 AnimationFrame.cancel(frame); 1219 }; 1220 }, [enableIdleState, open2, mounted, transitionStatus]); 1221 return { 1222 mounted, 1223 setMounted, 1224 transitionStatus 1225 }; 1226 } 1227 1228 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useTimeout.mjs 1229 var EMPTY2 = 0; 1230 var Timeout = class _Timeout { 1231 static create() { 1232 return new _Timeout(); 1233 } 1234 currentId = EMPTY2; 1235 /** 1236 * Executes `fn` after `delay`, clearing any previously scheduled call. 1237 */ 1238 start(delay, fn) { 1239 this.clear(); 1240 this.currentId = setTimeout(() => { 1241 this.currentId = EMPTY2; 1242 fn(); 1243 }, delay); 1244 } 1245 isStarted() { 1246 return this.currentId !== EMPTY2; 1247 } 1248 clear = () => { 1249 if (this.currentId !== EMPTY2) { 1250 clearTimeout(this.currentId); 1251 this.currentId = EMPTY2; 1252 } 1253 }; 1254 disposeEffect = () => { 1255 return this.clear; 1256 }; 1257 }; 1258 function useTimeout() { 1259 const timeout = useRefWithInit(Timeout.create).current; 1260 useOnMount(timeout.disposeEffect); 1261 return timeout; 1262 } 1263 1264 // packages/ui/build-module/icon/icon.mjs 1265 var import_element = __toESM(require_element(), 1); 1266 var import_primitives7 = __toESM(require_primitives(), 1); 1267 var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1); 1268 var Icon = (0, import_element.forwardRef)( 1269 function UnforwardedIcon({ icon, size: size4 = 24, style, ...restProps }, ref) { 1270 const mergedStyle = icon.props.style || style ? { ...icon.props.style, ...style } : void 0; 1271 return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( 1272 import_primitives7.SVG, 1273 { 1274 ref, 1275 ...icon.props, 1276 ...restProps, 1277 ...mergedStyle ? { style: mergedStyle } : {}, 1278 width: size4, 1279 height: size4 1280 } 1281 ); 1282 } 1283 ); 1284 1285 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useControlled.mjs 1286 var React10 = __toESM(require_react(), 1); 1287 1288 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/error.mjs 1289 var error = createLogOnce("error", "Base UI"); 1290 1291 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useControlled.mjs 1292 function useControlled({ 1293 controlled, 1294 default: defaultProp, 1295 name: name3, 1296 state = "value" 1297 }) { 1298 const { 1299 current: isControlled 1300 } = React10.useRef(controlled !== void 0); 1301 const [valueState, setValue] = React10.useState(() => defaultProp); 1302 const value = isControlled && controlled !== void 0 ? controlled : valueState; 1303 if (true) { 1304 React10.useEffect(() => { 1305 if (isControlled !== (controlled !== void 0)) { 1306 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")); 1307 } 1308 }, [state, name3, controlled]); 1309 const { 1310 current: defaultValue 1311 } = React10.useRef(defaultProp); 1312 React10.useEffect(() => { 1313 if (!isControlled && serializeToDevModeString(defaultValue) !== serializeToDevModeString(defaultProp)) { 1314 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")); 1315 } 1316 }, [defaultProp]); 1317 } 1318 const setValueIfUncontrolled = React10.useCallback((newValue) => { 1319 if (!isControlled) { 1320 setValue(newValue); 1321 } 1322 }, []); 1323 return [value, setValueIfUncontrolled]; 1324 } 1325 function serializeToDevModeString(input) { 1326 let nextId = 0; 1327 const seen = /* @__PURE__ */ new WeakMap(); 1328 try { 1329 const result = JSON.stringify(input, function replacer(key, value) { 1330 if (key === "_owner" && this != null && typeof this === "object" && "$$typeof" in this) { 1331 return void 0; 1332 } 1333 if (typeof value === "bigint") { 1334 return `__bigint__:$value}`; 1335 } 1336 if (value !== null && typeof value === "object") { 1337 const id = seen.get(value); 1338 if (id !== void 0) { 1339 return `__object__:$id}`; 1340 } 1341 seen.set(value, nextId); 1342 nextId += 1; 1343 } 1344 return value; 1345 }); 1346 return result ?? `__top__:$typeof input}`; 1347 } catch { 1348 return "__unserializable__"; 1349 } 1350 } 1351 1352 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/list/CompositeList.mjs 1353 var React12 = __toESM(require_react(), 1); 1354 1355 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/list/CompositeListContext.mjs 1356 var React11 = __toESM(require_react(), 1); 1357 var CompositeListContext = /* @__PURE__ */ React11.createContext({ 1358 register: () => { 1359 }, 1360 unregister: () => { 1361 }, 1362 subscribeMapChange: () => () => { 1363 }, 1364 nextIndexRef: { 1365 current: 0 1366 } 1367 }); 1368 if (true) CompositeListContext.displayName = "CompositeListContext"; 1369 function useCompositeListContext() { 1370 return React11.useContext(CompositeListContext); 1371 } 1372 1373 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/list/CompositeList.mjs 1374 var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1); 1375 function CompositeList(props) { 1376 const { 1377 children, 1378 elementsRef, 1379 labelsRef, 1380 onMapChange: onMapChangeProp 1381 } = props; 1382 const onMapChange = useStableCallback(onMapChangeProp); 1383 const [, setMapTick] = React12.useState(0); 1384 const listeners = useRefWithInit(createListeners).current; 1385 const map = useRefWithInit(createMap).current; 1386 const nextIndexRef = React12.useRef(0); 1387 const isDirtyRef = React12.useRef(true); 1388 const itemsRef = React12.useRef(null); 1389 const mutationObserverRef = React12.useRef(null); 1390 const scheduleMapUpdate = useStableCallback(() => { 1391 if (isDirtyRef.current) { 1392 return; 1393 } 1394 isDirtyRef.current = true; 1395 setMapTick((tick) => tick + 1); 1396 }); 1397 const register2 = useStableCallback((node, registration) => { 1398 map.set(node, registration); 1399 scheduleMapUpdate(); 1400 }); 1401 const unregister = useStableCallback((node) => { 1402 map.delete(node); 1403 scheduleMapUpdate(); 1404 }); 1405 const syncRefs = useStableCallback((items) => { 1406 const nextMap = /* @__PURE__ */ new Map(); 1407 elementsRef.current.length = 0; 1408 if (labelsRef) { 1409 labelsRef.current.length = 0; 1410 } 1411 items.forEach((item) => { 1412 nextMap.set(item.element, { 1413 ...item.registration.metadata ?? {}, 1414 index: item.index 1415 }); 1416 elementsRef.current[item.index] = item.element; 1417 if (labelsRef) { 1418 labelsRef.current[item.index] = item.registration.label !== void 0 ? item.registration.label : item.registration.textRef?.current?.textContent ?? item.element.textContent; 1419 } 1420 }); 1421 nextIndexRef.current = elementsRef.current.length; 1422 return nextMap; 1423 }); 1424 function observe(sortedNodes) { 1425 mutationObserverRef.current?.disconnect(); 1426 mutationObserverRef.current = null; 1427 if (typeof MutationObserver !== "function" || sortedNodes.length < 2) { 1428 return; 1429 } 1430 const mutationObserver = new MutationObserver((entries) => { 1431 if (!hasMovedNode(entries)) { 1432 return; 1433 } 1434 let previousConnectedNode = null; 1435 for (const node of sortedNodes) { 1436 if (!node.isConnected) { 1437 continue; 1438 } 1439 if (previousConnectedNode && sortByDocumentPosition(previousConnectedNode, node) > 0) { 1440 mutationObserver.disconnect(); 1441 scheduleMapUpdate(); 1442 return; 1443 } 1444 previousConnectedNode = node; 1445 } 1446 }); 1447 mutationObserverRef.current = mutationObserver; 1448 const roots = /* @__PURE__ */ new Set(); 1449 for (let i = 1; i < sortedNodes.length; i += 1) { 1450 const root = getCommonAncestor(sortedNodes[i - 1], sortedNodes[i]); 1451 if (root) { 1452 roots.add(root); 1453 } 1454 } 1455 roots.forEach((root) => mutationObserver.observe(root, { 1456 childList: true 1457 })); 1458 } 1459 const flush = useStableCallback(() => { 1460 const [items, automaticNodes] = getCompositeListSnapshot(map); 1461 const nextMap = syncRefs(items); 1462 const previousItems = itemsRef.current; 1463 const changed = !previousItems || previousItems.length !== items.length || items.some((item, index2) => { 1464 const previousItem = previousItems[index2]; 1465 return item.index !== previousItem.index || item.element !== previousItem.element || item.registration.index !== previousItem.registration.index || item.registration.metadata !== previousItem.registration.metadata; 1466 }); 1467 observe(automaticNodes); 1468 itemsRef.current = items; 1469 isDirtyRef.current = false; 1470 if (!changed) { 1471 return; 1472 } 1473 listeners.forEach((listener) => listener(nextMap)); 1474 onMapChange(nextMap); 1475 }); 1476 useIsoLayoutEffect(() => { 1477 if (!isDirtyRef.current && itemsRef.current) { 1478 syncRefs(itemsRef.current); 1479 } 1480 return () => { 1481 elementsRef.current = []; 1482 if (labelsRef) { 1483 labelsRef.current = []; 1484 } 1485 }; 1486 }, [elementsRef, labelsRef, syncRefs]); 1487 useIsoLayoutEffect(() => { 1488 if (isDirtyRef.current) { 1489 flush(); 1490 } 1491 }); 1492 useIsoLayoutEffect(() => { 1493 return () => { 1494 mutationObserverRef.current?.disconnect(); 1495 isDirtyRef.current = true; 1496 }; 1497 }, []); 1498 const subscribeMapChange = useStableCallback((fn) => { 1499 listeners.add(fn); 1500 return () => { 1501 listeners.delete(fn); 1502 }; 1503 }); 1504 const contextValue = React12.useMemo(() => ({ 1505 register: register2, 1506 unregister, 1507 subscribeMapChange, 1508 nextIndexRef 1509 }), [register2, unregister, subscribeMapChange, nextIndexRef]); 1510 return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(CompositeListContext.Provider, { 1511 value: contextValue, 1512 children 1513 }); 1514 } 1515 function createMap() { 1516 return /* @__PURE__ */ new Map(); 1517 } 1518 function createListeners() { 1519 return /* @__PURE__ */ new Set(); 1520 } 1521 function getCompositeListSnapshot(map) { 1522 const reservedIndices = /* @__PURE__ */ new Set(); 1523 const items = []; 1524 const automaticItems = []; 1525 map.forEach((registration, node) => { 1526 if (!node.isConnected) { 1527 return; 1528 } 1529 const index2 = registration.index; 1530 const item = { 1531 index: index2 ?? -1, 1532 element: node, 1533 registration 1534 }; 1535 if (index2 === null) { 1536 automaticItems.push(item); 1537 } else if (index2 >= 0) { 1538 reservedIndices.add(index2); 1539 items.push(item); 1540 } 1541 }); 1542 let nextAutomaticIndex = 0; 1543 automaticItems.sort((a, b) => sortByDocumentPosition(a.element, b.element)); 1544 automaticItems.forEach((item) => { 1545 while (reservedIndices.has(nextAutomaticIndex)) { 1546 nextAutomaticIndex += 1; 1547 } 1548 item.index = nextAutomaticIndex; 1549 items.push(item); 1550 nextAutomaticIndex += 1; 1551 }); 1552 if (reservedIndices.size > 0) { 1553 items.sort((a, b) => a.index - b.index); 1554 } 1555 return [items, automaticItems.map((item) => item.element)]; 1556 } 1557 function getCommonAncestor(firstNode, lastNode) { 1558 let ancestor = firstNode.parentElement; 1559 while (ancestor && !ancestor.contains(lastNode)) { 1560 ancestor = ancestor.parentElement; 1561 } 1562 return ancestor; 1563 } 1564 function hasMovedNode(entries) { 1565 for (const entry of entries) { 1566 for (let i = 0; i < entry.removedNodes.length; i += 1) { 1567 if (entry.removedNodes[i].isConnected) { 1568 return true; 1569 } 1570 } 1571 } 1572 return false; 1573 } 1574 function sortByDocumentPosition(a, b) { 1575 if (a.nextElementSibling === b) { 1576 return -1; 1577 } 1578 if (b.nextElementSibling === a) { 1579 return 1; 1580 } 1581 return a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1; 1582 } 1583 1584 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useId.mjs 1585 var React14 = __toESM(require_react(), 1); 1586 1587 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useForcedRerendering.mjs 1588 var React13 = __toESM(require_react(), 1); 1589 function useForcedRerendering() { 1590 const [, setState] = React13.useState({}); 1591 return React13.useCallback(() => { 1592 setState({}); 1593 }, []); 1594 } 1595 1596 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useId.mjs 1597 var globalId = 0; 1598 function useGlobalId(idOverride, prefix = "mui") { 1599 const defaultId = React14.useRef(void 0); 1600 const forceRerender = useForcedRerendering(); 1601 const id = idOverride ?? defaultId.current; 1602 React14.useEffect(() => { 1603 if (defaultId.current == null) { 1604 globalId += 1; 1605 defaultId.current = `$prefix}-$globalId}`; 1606 if (idOverride == null) { 1607 forceRerender(); 1608 } 1609 } 1610 }, [idOverride, prefix, forceRerender]); 1611 return id; 1612 } 1613 var maybeReactUseId = SafeReact.useId; 1614 function useId(idOverride, prefix) { 1615 if (maybeReactUseId !== void 0) { 1616 const reactId = maybeReactUseId(); 1617 return idOverride ?? (prefix ? `$prefix}-$reactId}` : reactId); 1618 } 1619 return useGlobalId(idOverride, prefix); 1620 } 1621 1622 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useBaseUiId.mjs 1623 function useBaseUiId(idOverride) { 1624 return useId(idOverride, "base-ui"); 1625 } 1626 1627 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/createBaseUIEventDetails.mjs 1628 function createChangeEventDetails(reason, event, trigger, customProperties) { 1629 let canceled = false; 1630 let allowPropagation = false; 1631 const custom = customProperties ?? EMPTY_OBJECT; 1632 const details = { 1633 reason, 1634 event: event ?? new Event("base-ui"), 1635 cancel() { 1636 canceled = true; 1637 }, 1638 allowPropagation() { 1639 allowPropagation = true; 1640 }, 1641 get isCanceled() { 1642 return canceled; 1643 }, 1644 get isPropagationAllowed() { 1645 return allowPropagation; 1646 }, 1647 trigger, 1648 ...custom 1649 }; 1650 return details; 1651 } 1652 1653 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/reason-parts.mjs 1654 var reason_parts_exports = {}; 1655 __export(reason_parts_exports, { 1656 cancelOpen: () => cancelOpen, 1657 chipRemovePress: () => chipRemovePress, 1658 clearPress: () => clearPress, 1659 closePress: () => closePress, 1660 closeWatcher: () => closeWatcher, 1661 decrementPress: () => decrementPress, 1662 disabled: () => disabled, 1663 drag: () => drag, 1664 escapeKey: () => escapeKey, 1665 focusOut: () => focusOut, 1666 imperativeAction: () => imperativeAction, 1667 incrementPress: () => incrementPress, 1668 initial: () => initial, 1669 inputBlur: () => inputBlur, 1670 inputChange: () => inputChange, 1671 inputClear: () => inputClear, 1672 inputPaste: () => inputPaste, 1673 inputPress: () => inputPress, 1674 itemPress: () => itemPress, 1675 keyboard: () => keyboard, 1676 linkPress: () => linkPress, 1677 listNavigation: () => listNavigation, 1678 missing: () => missing, 1679 none: () => none, 1680 outsidePress: () => outsidePress, 1681 pointer: () => pointer, 1682 popupClose: () => popupClose, 1683 scrub: () => scrub, 1684 siblingOpen: () => siblingOpen, 1685 swipe: () => swipe, 1686 trackPress: () => trackPress, 1687 triggerFocus: () => triggerFocus, 1688 triggerHover: () => triggerHover, 1689 triggerPress: () => triggerPress, 1690 wheel: () => wheel, 1691 windowResize: () => windowResize 1692 }); 1693 var none = "none"; 1694 var triggerPress = "trigger-press"; 1695 var triggerHover = "trigger-hover"; 1696 var triggerFocus = "trigger-focus"; 1697 var outsidePress = "outside-press"; 1698 var itemPress = "item-press"; 1699 var closePress = "close-press"; 1700 var linkPress = "link-press"; 1701 var clearPress = "clear-press"; 1702 var chipRemovePress = "chip-remove-press"; 1703 var trackPress = "track-press"; 1704 var incrementPress = "increment-press"; 1705 var decrementPress = "decrement-press"; 1706 var inputChange = "input-change"; 1707 var inputClear = "input-clear"; 1708 var inputBlur = "input-blur"; 1709 var inputPaste = "input-paste"; 1710 var inputPress = "input-press"; 1711 var focusOut = "focus-out"; 1712 var escapeKey = "escape-key"; 1713 var closeWatcher = "close-watcher"; 1714 var listNavigation = "list-navigation"; 1715 var keyboard = "keyboard"; 1716 var pointer = "pointer"; 1717 var drag = "drag"; 1718 var wheel = "wheel"; 1719 var scrub = "scrub"; 1720 var popupClose = "popup-close"; 1721 var cancelOpen = "cancel-open"; 1722 var siblingOpen = "sibling-open"; 1723 var disabled = "disabled"; 1724 var missing = "missing"; 1725 var initial = "initial"; 1726 var imperativeAction = "imperative-action"; 1727 var swipe = "swipe"; 1728 var windowResize = "window-resize"; 1729 1730 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/list/useCompositeListItem.mjs 1731 var React15 = __toESM(require_react(), 1); 1732 function useCompositeListItem(params = {}) { 1733 const { 1734 guess, 1735 label, 1736 metadata, 1737 textRef, 1738 index: externalIndex 1739 } = params; 1740 const { 1741 register: register2, 1742 unregister, 1743 subscribeMapChange, 1744 nextIndexRef 1745 } = useCompositeListContext(); 1746 const indexRef = React15.useRef(-1); 1747 const [internalIndex, setInternalIndex] = React15.useState(externalIndex == null && guess ? () => { 1748 if (indexRef.current === -1) { 1749 const newIndex = nextIndexRef.current; 1750 nextIndexRef.current += 1; 1751 indexRef.current = newIndex; 1752 } 1753 return indexRef.current; 1754 } : -1); 1755 const index2 = externalIndex ?? internalIndex; 1756 const componentRef = React15.useRef(null); 1757 const ref = React15.useCallback((node) => { 1758 const previousNode = componentRef.current; 1759 if (previousNode) { 1760 unregister(previousNode); 1761 } 1762 componentRef.current = node; 1763 if (node) { 1764 register2(node, { 1765 metadata: metadata ?? null, 1766 index: externalIndex ?? null, 1767 label, 1768 textRef 1769 }); 1770 } 1771 }, [externalIndex, register2, unregister, metadata, label, textRef]); 1772 useIsoLayoutEffect(() => { 1773 if (externalIndex != null) { 1774 return void 0; 1775 } 1776 return subscribeMapChange((map) => { 1777 const i = componentRef.current ? map.get(componentRef.current)?.index : null; 1778 if (i != null) { 1779 setInternalIndex(i); 1780 } 1781 }); 1782 }, [externalIndex, subscribeMapChange]); 1783 return { 1784 ref, 1785 index: index2 1786 }; 1787 } 1788 1789 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/use-button/useButton.mjs 1790 var React18 = __toESM(require_react(), 1); 1791 1792 // node_modules/.store/@floating-ui/utils@0.2.12-gOxTzMf36nCrbeHpEew-rw/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs 1793 function hasWindow() { 1794 return typeof window !== "undefined"; 1795 } 1796 function getNodeName(node) { 1797 if (isNode(node)) { 1798 return (node.nodeName || "").toLowerCase(); 1799 } 1800 return "#document"; 1801 } 1802 function getWindow(node) { 1803 var _node$ownerDocument; 1804 return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window; 1805 } 1806 function getDocumentElement(node) { 1807 var _ref; 1808 return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement; 1809 } 1810 function isNode(value) { 1811 if (!hasWindow()) { 1812 return false; 1813 } 1814 return value instanceof Node || value instanceof getWindow(value).Node; 1815 } 1816 function isElement(value) { 1817 if (!hasWindow()) { 1818 return false; 1819 } 1820 return value instanceof Element || value instanceof getWindow(value).Element; 1821 } 1822 function isHTMLElement(value) { 1823 if (!hasWindow()) { 1824 return false; 1825 } 1826 return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement; 1827 } 1828 function isShadowRoot(value) { 1829 if (!hasWindow() || typeof ShadowRoot === "undefined") { 1830 return false; 1831 } 1832 return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot; 1833 } 1834 function isOverflowElement(element) { 1835 const { 1836 overflow, 1837 overflowX, 1838 overflowY, 1839 display 1840 } = getComputedStyle2(element); 1841 return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== "inline" && display !== "contents"; 1842 } 1843 function isTableElement(element) { 1844 return /^(table|td|th)$/.test(getNodeName(element)); 1845 } 1846 function isTopLayer(element) { 1847 try { 1848 if (element.matches(":popover-open")) { 1849 return true; 1850 } 1851 } catch (_e) { 1852 } 1853 try { 1854 return element.matches(":modal"); 1855 } catch (_e) { 1856 return false; 1857 } 1858 } 1859 var willChangeRe = /transform|translate|scale|rotate|perspective|filter/; 1860 var containRe = /paint|layout|strict|content/; 1861 var isNotNone = (value) => !!value && value !== "none"; 1862 var isWebKitValue; 1863 function isContainingBlock(elementOrCss) { 1864 const css = isElement(elementOrCss) ? getComputedStyle2(elementOrCss) : elementOrCss; 1865 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 || ""); 1866 } 1867 function getContainingBlock(element) { 1868 let currentNode = getParentNode(element); 1869 while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) { 1870 if (isContainingBlock(currentNode)) { 1871 return currentNode; 1872 } else if (isTopLayer(currentNode)) { 1873 return null; 1874 } 1875 currentNode = getParentNode(currentNode); 1876 } 1877 return null; 1878 } 1879 function isWebKit() { 1880 if (isWebKitValue == null) { 1881 isWebKitValue = typeof CSS !== "undefined" && CSS.supports && CSS.supports("-webkit-backdrop-filter", "none"); 1882 } 1883 return isWebKitValue; 1884 } 1885 function isLastTraversableNode(node) { 1886 return /^(html|body|#document)$/.test(getNodeName(node)); 1887 } 1888 function getComputedStyle2(element) { 1889 return getWindow(element).getComputedStyle(element); 1890 } 1891 function getNodeScroll(element) { 1892 if (isElement(element)) { 1893 return { 1894 scrollLeft: element.scrollLeft, 1895 scrollTop: element.scrollTop 1896 }; 1897 } 1898 return { 1899 scrollLeft: element.scrollX, 1900 scrollTop: element.scrollY 1901 }; 1902 } 1903 function getParentNode(node) { 1904 if (getNodeName(node) === "html") { 1905 return node; 1906 } 1907 const result = ( 1908 // Step into the shadow DOM of the parent of a slotted node. 1909 node.assignedSlot || // DOM Element detected. 1910 node.parentNode || // ShadowRoot detected. 1911 isShadowRoot(node) && node.host || // Fallback. 1912 getDocumentElement(node) 1913 ); 1914 return isShadowRoot(result) ? result.host : result; 1915 } 1916 function getNearestOverflowAncestor(node) { 1917 const parentNode = getParentNode(node); 1918 if (isLastTraversableNode(parentNode)) { 1919 return (node.ownerDocument || node).body; 1920 } 1921 if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) { 1922 return parentNode; 1923 } 1924 return getNearestOverflowAncestor(parentNode); 1925 } 1926 function getOverflowAncestors(node, list, traverseIframes) { 1927 var _node$ownerDocument2; 1928 if (list === void 0) { 1929 list = []; 1930 } 1931 if (traverseIframes === void 0) { 1932 traverseIframes = true; 1933 } 1934 const scrollableAncestor = getNearestOverflowAncestor(node); 1935 const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body); 1936 const win = getWindow(scrollableAncestor); 1937 if (isBody) { 1938 const frameElement = getFrameElement(win); 1939 return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []); 1940 } else { 1941 return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes)); 1942 } 1943 } 1944 function getFrameElement(win) { 1945 return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null; 1946 } 1947 1948 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/root/CompositeRootContext.mjs 1949 var React16 = __toESM(require_react(), 1); 1950 var CompositeRootContext = /* @__PURE__ */ React16.createContext(void 0); 1951 if (true) CompositeRootContext.displayName = "CompositeRootContext"; 1952 function useCompositeRootContext(optional = false) { 1953 const context = React16.useContext(CompositeRootContext); 1954 if (context === void 0 && !optional) { 1955 throw new Error(true ? "Base UI: CompositeRootContext is missing. Composite parts must be placed within <Composite.Root>." : formatErrorMessage_default(16)); 1956 } 1957 return context; 1958 } 1959 1960 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/useFocusableWhenDisabled.mjs 1961 var React17 = __toESM(require_react(), 1); 1962 function useFocusableWhenDisabled(parameters) { 1963 const { 1964 focusableWhenDisabled, 1965 disabled: disabled2, 1966 composite = false, 1967 tabIndex: tabIndexProp = 0, 1968 isNativeButton 1969 } = parameters; 1970 const isFocusableComposite = composite && focusableWhenDisabled !== false; 1971 const isNonFocusableComposite = composite && focusableWhenDisabled === false; 1972 const props = React17.useMemo(() => { 1973 const additionalProps = { 1974 // allow Tabbing away from focusableWhenDisabled elements 1975 onKeyDown(event) { 1976 if (disabled2 && focusableWhenDisabled && event.key !== "Tab") { 1977 event.preventDefault(); 1978 } 1979 } 1980 }; 1981 if (!composite) { 1982 additionalProps.tabIndex = tabIndexProp; 1983 if (!isNativeButton && disabled2) { 1984 additionalProps.tabIndex = focusableWhenDisabled ? tabIndexProp : -1; 1985 } 1986 } 1987 if (isNativeButton && (focusableWhenDisabled || isFocusableComposite) || !isNativeButton && disabled2) { 1988 additionalProps["aria-disabled"] = disabled2; 1989 } 1990 if (isNativeButton && (!focusableWhenDisabled || isNonFocusableComposite)) { 1991 additionalProps.disabled = disabled2; 1992 } 1993 return additionalProps; 1994 }, [composite, disabled2, focusableWhenDisabled, isFocusableComposite, isNonFocusableComposite, isNativeButton, tabIndexProp]); 1995 return { 1996 props 1997 }; 1998 } 1999 2000 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/owner.mjs 2001 function ownerDocument(node) { 2002 return node?.ownerDocument || document; 2003 } 2004 2005 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/dispatchClickWithModifiers.mjs 2006 function dispatchClickWithModifiers(target, sourceEvent, { 2007 detail = 0, 2008 pointerType = "" 2009 } = {}) { 2010 target.dispatchEvent(new (getWindow(target)).PointerEvent("click", { 2011 bubbles: true, 2012 cancelable: true, 2013 composed: true, 2014 detail, 2015 pointerType, 2016 shiftKey: sourceEvent.shiftKey, 2017 ctrlKey: sourceEvent.ctrlKey, 2018 altKey: sourceEvent.altKey, 2019 metaKey: sourceEvent.metaKey 2020 })); 2021 } 2022 2023 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/use-button/useButton.mjs 2024 function useButton(parameters = {}) { 2025 const { 2026 disabled: disabled2 = false, 2027 focusableWhenDisabled, 2028 tabIndex = 0, 2029 native: isNativeButton = true, 2030 composite: compositeProp 2031 } = parameters; 2032 const elementRef = React18.useRef(null); 2033 const compositeRootContext = useCompositeRootContext(true); 2034 const isCompositeItem = compositeProp ?? compositeRootContext !== void 0; 2035 const { 2036 props: focusableWhenDisabledProps 2037 } = useFocusableWhenDisabled({ 2038 focusableWhenDisabled, 2039 disabled: disabled2, 2040 composite: isCompositeItem, 2041 tabIndex, 2042 isNativeButton 2043 }); 2044 if (true) { 2045 React18.useEffect(() => { 2046 if (!elementRef.current) { 2047 return; 2048 } 2049 const isButtonTag = isButtonElement(elementRef.current); 2050 if (isNativeButton) { 2051 if (!isButtonTag) { 2052 const ownerStackMessage = SafeReact.captureOwnerStack?.() || ""; 2053 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`."; 2054 error(`$message}$ownerStackMessage}`); 2055 } 2056 } else if (isButtonTag) { 2057 const ownerStackMessage = SafeReact.captureOwnerStack?.() || ""; 2058 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`."; 2059 error(`$message}$ownerStackMessage}`); 2060 } 2061 }, [isNativeButton]); 2062 } 2063 const updateDisabled = React18.useCallback(() => { 2064 const element = elementRef.current; 2065 if (!isButtonElement(element)) { 2066 return; 2067 } 2068 if (isCompositeItem && disabled2 && focusableWhenDisabledProps.disabled === void 0 && element.disabled) { 2069 element.disabled = false; 2070 } 2071 }, [disabled2, focusableWhenDisabledProps.disabled, isCompositeItem]); 2072 useIsoLayoutEffect(updateDisabled, [updateDisabled]); 2073 const getButtonProps = React18.useCallback((externalProps = {}) => { 2074 const { 2075 onClick: externalOnClick, 2076 onMouseDown: externalOnMouseDown, 2077 onKeyUp: externalOnKeyUp, 2078 onKeyDown: externalOnKeyDown, 2079 onPointerDown: externalOnPointerDown, 2080 ...otherExternalProps 2081 } = externalProps; 2082 return mergeProps({ 2083 onClick(event) { 2084 if (disabled2) { 2085 event.preventDefault(); 2086 return; 2087 } 2088 externalOnClick?.(event); 2089 }, 2090 onMouseDown(event) { 2091 if (!disabled2) { 2092 externalOnMouseDown?.(event); 2093 } 2094 }, 2095 onKeyDown(event) { 2096 if (disabled2) { 2097 return; 2098 } 2099 makeEventPreventable(event); 2100 externalOnKeyDown?.(event); 2101 if (event.baseUIHandlerPrevented) { 2102 return; 2103 } 2104 const isCurrentTarget = event.target === event.currentTarget; 2105 const currentTarget = event.currentTarget; 2106 const isButton = isButtonElement(currentTarget); 2107 const isLink = !isNativeButton && isValidLinkElement(currentTarget); 2108 const shouldClick = isCurrentTarget && (isNativeButton ? isButton : !isLink); 2109 const isEnterKey = event.key === "Enter"; 2110 const isSpaceKey = event.key === " "; 2111 const role = currentTarget.getAttribute("role"); 2112 const isTextNavigationRole = role?.startsWith("menuitem") || role === "option" || role === "gridcell"; 2113 if (isCurrentTarget && isCompositeItem && isSpaceKey) { 2114 if (event.defaultPrevented && isTextNavigationRole) { 2115 return; 2116 } 2117 event.preventDefault(); 2118 if (!isNativeButton || isButton) { 2119 event.preventBaseUIHandler(); 2120 dispatchClickWithModifiers(currentTarget, event); 2121 } 2122 return; 2123 } 2124 if (!shouldClick || isNativeButton || !isSpaceKey && !isEnterKey) { 2125 if (isCurrentTarget && isLink && isSpaceKey) { 2126 event.preventDefault(); 2127 } 2128 return; 2129 } 2130 if (event.defaultPrevented) { 2131 return; 2132 } 2133 event.preventDefault(); 2134 if (isEnterKey) { 2135 event.preventBaseUIHandler(); 2136 dispatchClickWithModifiers(currentTarget, event); 2137 } 2138 }, 2139 onKeyUp(event) { 2140 if (disabled2) { 2141 return; 2142 } 2143 makeEventPreventable(event); 2144 externalOnKeyUp?.(event); 2145 if (event.target === event.currentTarget && isNativeButton && isCompositeItem && isButtonElement(event.currentTarget) && event.key === " ") { 2146 event.preventDefault(); 2147 return; 2148 } 2149 if (event.baseUIHandlerPrevented) { 2150 return; 2151 } 2152 if (event.target === event.currentTarget && !isNativeButton && !isCompositeItem && !event.defaultPrevented && event.key === " ") { 2153 event.preventBaseUIHandler(); 2154 dispatchClickWithModifiers(event.currentTarget, event); 2155 } 2156 }, 2157 onPointerDown(event) { 2158 if (disabled2) { 2159 event.preventDefault(); 2160 return; 2161 } 2162 externalOnPointerDown?.(event); 2163 } 2164 }, isNativeButton ? { 2165 type: "button" 2166 } : { 2167 role: "button" 2168 }, focusableWhenDisabledProps, otherExternalProps); 2169 }, [disabled2, focusableWhenDisabledProps, isCompositeItem, isNativeButton]); 2170 const buttonRef = useStableCallback((element) => { 2171 elementRef.current = element; 2172 updateDisabled(); 2173 }); 2174 return { 2175 getButtonProps, 2176 buttonRef 2177 }; 2178 } 2179 function isButtonElement(elem) { 2180 return isHTMLElement(elem) && elem.tagName === "BUTTON"; 2181 } 2182 function isValidLinkElement(elem) { 2183 return isHTMLElement(elem) && elem.tagName === "A" && Boolean(elem.href); 2184 } 2185 2186 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/addEventListener.mjs 2187 function addEventListener(target, type, listener, options) { 2188 target.addEventListener(type, listener, options); 2189 return () => { 2190 target.removeEventListener(type, listener, options); 2191 }; 2192 } 2193 2194 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useValueAsRef.mjs 2195 function useValueAsRef(value) { 2196 const latest = useRefWithInit(createLatestRef, value).current; 2197 latest.next = value; 2198 useIsoLayoutEffect(latest.effect); 2199 return latest; 2200 } 2201 function createLatestRef(value) { 2202 const latest = { 2203 current: value, 2204 next: value, 2205 effect: () => { 2206 latest.current = latest.next; 2207 } 2208 }; 2209 return latest; 2210 } 2211 2212 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/parts.mjs 2213 var parts_exports = {}; 2214 __export(parts_exports, { 2215 engine: () => engine_exports, 2216 env: () => env_exports, 2217 mediaQuery: () => media_query_exports, 2218 os: () => os_exports, 2219 screenReader: () => screen_reader_exports 2220 }); 2221 2222 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/os.mjs 2223 var os_exports = {}; 2224 __export(os_exports, { 2225 android: () => android, 2226 apple: () => apple, 2227 ios: () => ios, 2228 linux: () => linux, 2229 mac: () => mac, 2230 windows: () => windows 2231 }); 2232 2233 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/shared.mjs 2234 function readRawData() { 2235 if (typeof navigator === "undefined") { 2236 return { 2237 userAgent: "", 2238 platform: "", 2239 maxTouchPoints: 0 2240 }; 2241 } 2242 if (true) { 2243 const uaData = navigator.userAgentData; 2244 if (uaData && Array.isArray(uaData.brands)) { 2245 return { 2246 userAgent: uaData.brands.map(({ 2247 brand, 2248 version: version2 2249 }) => `$brand}/$version2}`).join(" "), 2250 platform: uaData.platform ?? navigator.platform ?? "", 2251 maxTouchPoints: navigator.maxTouchPoints ?? 0 2252 }; 2253 } 2254 } 2255 return { 2256 userAgent: navigator.userAgent, 2257 platform: navigator.platform ?? "", 2258 maxTouchPoints: navigator.maxTouchPoints ?? 0 2259 }; 2260 } 2261 var { 2262 userAgent, 2263 platform, 2264 maxTouchPoints 2265 } = readRawData(); 2266 var lowerUserAgent = userAgent.toLowerCase(); 2267 var lowerPlatform = platform.toLowerCase(); 2268 2269 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/os.mjs 2270 var ios = /^i(os$|p)/.test(lowerPlatform) || lowerPlatform === "macintel" && maxTouchPoints > 1; 2271 var ANDROID_STRING = "android"; 2272 var android = lowerPlatform === ANDROID_STRING || lowerUserAgent.includes(ANDROID_STRING); 2273 var mac = !ios && lowerPlatform.startsWith("mac"); 2274 var windows = lowerPlatform.startsWith("win"); 2275 var linux = !android && /^(linux|chrome os)/.test(lowerPlatform); 2276 var apple = mac || ios; 2277 2278 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/engine.mjs 2279 var engine_exports = {}; 2280 __export(engine_exports, { 2281 blink: () => blink, 2282 gecko: () => gecko, 2283 webkit: () => webkit 2284 }); 2285 var webkit = typeof CSS !== "undefined" && !!CSS.supports?.("-webkit-backdrop-filter:none"); 2286 var gecko = !webkit && lowerUserAgent.includes("firefox"); 2287 var blink = !webkit && lowerUserAgent.includes("chrom"); 2288 2289 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/screen-reader.mjs 2290 var screen_reader_exports = {}; 2291 __export(screen_reader_exports, { 2292 voiceOver: () => voiceOver 2293 }); 2294 var voiceOver = apple; 2295 2296 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/env.mjs 2297 var env_exports = {}; 2298 __export(env_exports, { 2299 jsdom: () => jsdom 2300 }); 2301 var jsdom = /jsdom|happydom/.test(lowerUserAgent); 2302 2303 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/media-query.mjs 2304 var media_query_exports = {}; 2305 __export(media_query_exports, { 2306 iOS: () => iOS 2307 }); 2308 var iOS = "@supports (-webkit-touch-callout: none)"; 2309 2310 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useScrollLock.mjs 2311 var originalHtmlStyles = {}; 2312 var originalBodyStyles = {}; 2313 var originalHtmlScrollBehavior = ""; 2314 function getViewportScroller(html, body) { 2315 return isOverflowElement(html) ? html : body; 2316 } 2317 function isPageScrollLocked(win, html, body) { 2318 return /hidden|clip/.test(win.getComputedStyle(getViewportScroller(html, body)).overflowY); 2319 } 2320 function hasInsetScrollbars(referenceElement) { 2321 if (typeof document === "undefined") { 2322 return false; 2323 } 2324 const doc = ownerDocument(referenceElement); 2325 const win = getWindow(doc); 2326 return win.innerWidth - doc.documentElement.clientWidth > 0; 2327 } 2328 function supportsStableScrollbarGutter(referenceElement) { 2329 const supported = typeof CSS !== "undefined" && CSS.supports && CSS.supports("scrollbar-gutter", "stable"); 2330 if (!supported || typeof document === "undefined") { 2331 return false; 2332 } 2333 const doc = ownerDocument(referenceElement); 2334 const html = doc.documentElement; 2335 const body = doc.body; 2336 const scrollContainer = getViewportScroller(html, body); 2337 const originalScrollContainerOverflowY = scrollContainer.style.overflowY; 2338 const originalHtmlStyleGutter = html.style.scrollbarGutter; 2339 html.style.scrollbarGutter = "stable"; 2340 scrollContainer.style.overflowY = "scroll"; 2341 const before = scrollContainer.offsetWidth; 2342 scrollContainer.style.overflowY = "hidden"; 2343 const after = scrollContainer.offsetWidth; 2344 scrollContainer.style.overflowY = originalScrollContainerOverflowY; 2345 html.style.scrollbarGutter = originalHtmlStyleGutter; 2346 return before === after; 2347 } 2348 function preventScrollOverlayScrollbars(referenceElement) { 2349 const doc = ownerDocument(referenceElement); 2350 const html = doc.documentElement; 2351 const body = doc.body; 2352 const elementToLock = getViewportScroller(html, body); 2353 const originalElementToLockStyles = { 2354 overflowY: elementToLock.style.overflowY, 2355 overflowX: elementToLock.style.overflowX 2356 }; 2357 Object.assign(elementToLock.style, { 2358 overflowY: "hidden", 2359 overflowX: "hidden" 2360 }); 2361 return () => { 2362 Object.assign(elementToLock.style, originalElementToLockStyles); 2363 }; 2364 } 2365 function preventScrollInsetScrollbars(referenceElement) { 2366 const doc = ownerDocument(referenceElement); 2367 const html = doc.documentElement; 2368 const body = doc.body; 2369 const win = getWindow(html); 2370 let scrollTop = 0; 2371 let scrollLeft = 0; 2372 let updateGutterOnly = false; 2373 const resizeFrame = AnimationFrame.create(); 2374 if (parts_exports.engine.webkit && (win.visualViewport?.scale ?? 1) !== 1) { 2375 return () => { 2376 }; 2377 } 2378 function lockScroll() { 2379 const htmlStyles = win.getComputedStyle(html); 2380 const bodyStyles = win.getComputedStyle(body); 2381 const htmlScrollbarGutterValue = htmlStyles.scrollbarGutter || ""; 2382 const hasBothEdges = htmlScrollbarGutterValue.includes("both-edges"); 2383 const scrollbarGutterValue = hasBothEdges ? "stable both-edges" : "stable"; 2384 scrollTop = html.scrollTop; 2385 scrollLeft = html.scrollLeft; 2386 originalHtmlStyles = { 2387 scrollbarGutter: html.style.scrollbarGutter, 2388 overflowY: html.style.overflowY, 2389 overflowX: html.style.overflowX 2390 }; 2391 originalHtmlScrollBehavior = html.style.scrollBehavior; 2392 originalBodyStyles = { 2393 position: body.style.position, 2394 height: body.style.height, 2395 width: body.style.width, 2396 boxSizing: body.style.boxSizing, 2397 overflowY: body.style.overflowY, 2398 overflowX: body.style.overflowX, 2399 scrollBehavior: body.style.scrollBehavior 2400 }; 2401 const isScrollableY = html.scrollHeight > html.clientHeight; 2402 const isScrollableX = html.scrollWidth > html.clientWidth; 2403 const hasConstantOverflowY = htmlStyles.overflowY === "scroll" || bodyStyles.overflowY === "scroll"; 2404 const hasConstantOverflowX = htmlStyles.overflowX === "scroll" || bodyStyles.overflowX === "scroll"; 2405 const scrollbarWidth = Math.max(0, win.innerWidth - body.clientWidth); 2406 const scrollbarHeight = Math.max(0, win.innerHeight - body.clientHeight); 2407 const marginY = parseFloat(bodyStyles.marginTop) + parseFloat(bodyStyles.marginBottom); 2408 const marginX = parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight); 2409 const elementToLock = getViewportScroller(html, body); 2410 updateGutterOnly = supportsStableScrollbarGutter(referenceElement); 2411 if (updateGutterOnly) { 2412 html.style.scrollbarGutter = scrollbarGutterValue; 2413 elementToLock.style.overflowY = "hidden"; 2414 elementToLock.style.overflowX = "hidden"; 2415 return; 2416 } 2417 Object.assign(html.style, { 2418 scrollbarGutter: scrollbarGutterValue, 2419 overflowY: "hidden", 2420 overflowX: "hidden" 2421 }); 2422 if (isScrollableY || hasConstantOverflowY) { 2423 html.style.overflowY = "scroll"; 2424 } 2425 if (isScrollableX || hasConstantOverflowX) { 2426 html.style.overflowX = "scroll"; 2427 } 2428 Object.assign(body.style, { 2429 position: "relative", 2430 height: marginY || scrollbarHeight ? `calc(100dvh - $marginY + scrollbarHeight}px)` : "100dvh", 2431 width: marginX || scrollbarWidth ? `calc(100vw - $marginX + scrollbarWidth}px)` : "100vw", 2432 boxSizing: "border-box", 2433 // Assign the longhands that `cleanup` restores, so nothing is left behind. 2434 overflowY: "hidden", 2435 overflowX: "hidden", 2436 scrollBehavior: "unset" 2437 }); 2438 body.scrollTop = scrollTop; 2439 body.scrollLeft = scrollLeft; 2440 html.setAttribute("data-base-ui-scroll-locked", ""); 2441 html.style.scrollBehavior = "unset"; 2442 } 2443 function cleanup() { 2444 Object.assign(html.style, originalHtmlStyles); 2445 Object.assign(body.style, originalBodyStyles); 2446 if (!updateGutterOnly) { 2447 html.scrollTop = scrollTop; 2448 html.scrollLeft = scrollLeft; 2449 html.removeAttribute("data-base-ui-scroll-locked"); 2450 html.style.scrollBehavior = originalHtmlScrollBehavior; 2451 } 2452 } 2453 function handleResize() { 2454 cleanup(); 2455 resizeFrame.request(lockScroll); 2456 } 2457 lockScroll(); 2458 const unsubscribeResize = addEventListener(win, "resize", handleResize); 2459 return () => { 2460 resizeFrame.cancel(); 2461 cleanup(); 2462 if (typeof win.removeEventListener === "function") { 2463 unsubscribeResize(); 2464 } 2465 }; 2466 } 2467 var ScrollLocker = class { 2468 lockCount = 0; 2469 restore = null; 2470 timeoutLock = Timeout.create(); 2471 timeoutUnlock = Timeout.create(); 2472 acquire(referenceElement) { 2473 this.lockCount += 1; 2474 if (this.lockCount === 1 && this.restore === null) { 2475 this.timeoutLock.start(0, () => this.lock(referenceElement)); 2476 } 2477 return this.release; 2478 } 2479 release = () => { 2480 this.lockCount -= 1; 2481 if (this.lockCount === 0 && this.restore) { 2482 this.timeoutUnlock.start(0, this.unlock); 2483 } 2484 }; 2485 unlock = () => { 2486 if (this.lockCount === 0 && this.restore) { 2487 this.restore?.(); 2488 this.restore = null; 2489 } 2490 }; 2491 lock(referenceElement) { 2492 if (this.lockCount === 0 || this.restore !== null) { 2493 return; 2494 } 2495 const doc = ownerDocument(referenceElement); 2496 const html = doc.documentElement; 2497 const body = doc.body; 2498 const win = getWindow(html); 2499 if (isPageScrollLocked(win, html, body)) { 2500 const observer = new win.MutationObserver(() => { 2501 if (isPageScrollLocked(win, html, body)) { 2502 return; 2503 } 2504 observer.disconnect(); 2505 this.restore = null; 2506 this.lock(referenceElement); 2507 }); 2508 const options = { 2509 attributes: true 2510 }; 2511 observer.observe(html, options); 2512 observer.observe(body, options); 2513 this.restore = () => observer.disconnect(); 2514 return; 2515 } 2516 const hasOverlayScrollbars = parts_exports.os.ios || !hasInsetScrollbars(referenceElement); 2517 this.restore = hasOverlayScrollbars ? preventScrollOverlayScrollbars(referenceElement) : preventScrollInsetScrollbars(referenceElement); 2518 } 2519 }; 2520 var SCROLL_LOCKER = new ScrollLocker(); 2521 function useScrollLock(enabled = true, referenceElement = null) { 2522 useIsoLayoutEffect(() => { 2523 if (!enabled) { 2524 return void 0; 2525 } 2526 return SCROLL_LOCKER.acquire(referenceElement); 2527 }, [enabled, referenceElement]); 2528 } 2529 2530 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/event.mjs 2531 function stopEvent(event) { 2532 event.preventDefault(); 2533 event.stopPropagation(); 2534 } 2535 function isReactEvent(event) { 2536 return "nativeEvent" in event; 2537 } 2538 function isVirtualClick(event) { 2539 if (event.pointerType === "" && event.isTrusted) { 2540 return true; 2541 } 2542 if (parts_exports.os.android && event.pointerType) { 2543 return event.type === "click" && event.buttons === 1; 2544 } 2545 return event.detail === 0 && !event.pointerType; 2546 } 2547 function isVirtualPointerEvent(event) { 2548 if (parts_exports.env.jsdom) { 2549 return false; 2550 } 2551 return !parts_exports.os.android && event.width === 0 && event.height === 0 || // Chrome synthesizes a screen reader press (TalkBack, VoiceOver, NVDA) as a 1x1 mouse 2552 // `pointerdown` with no pressure. TalkBack can report a pressed button, while desktop 2553 // mouse presses can report no pressure, so only require no pressed button off Android. 2554 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. 2555 event.width < 1 && event.height < 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === "touch"; 2556 } 2557 function isMouseLikePointerType(pointerType, strict) { 2558 const values = ["mouse", "pen"]; 2559 if (!strict) { 2560 values.push("", void 0); 2561 } 2562 return values.includes(pointerType); 2563 } 2564 function isClickLikeEvent(event) { 2565 const type = event.type; 2566 return type === "click" || type === "mousedown" || type === "keydown" || type === "keyup"; 2567 } 2568 2569 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/shadowDom.mjs 2570 function activeElement(doc) { 2571 let element = doc.activeElement; 2572 while (element?.shadowRoot?.activeElement != null) { 2573 element = element.shadowRoot.activeElement; 2574 } 2575 return element; 2576 } 2577 function contains(parent, child) { 2578 if (!parent || !child) { 2579 return false; 2580 } 2581 const rootNode = child.getRootNode?.(); 2582 if (parent.contains(child)) { 2583 return true; 2584 } 2585 if (rootNode && isShadowRoot(rootNode)) { 2586 let next = child; 2587 while (next) { 2588 if (parent === next) { 2589 return true; 2590 } 2591 next = next.parentNode || next.host; 2592 } 2593 } 2594 return false; 2595 } 2596 function closest(node, selector) { 2597 let current = node; 2598 while (current) { 2599 if (isElement(current) && current.matches(selector)) { 2600 return current; 2601 } 2602 current = current.assignedSlot ?? current.parentNode ?? (isShadowRoot(current) ? current.host : null); 2603 } 2604 return null; 2605 } 2606 function getTarget(event) { 2607 if ("composedPath" in event) { 2608 return event.composedPath()[0] ?? event.target; 2609 } 2610 return event.target; 2611 } 2612 2613 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/constants.mjs 2614 var FOCUSABLE_ATTRIBUTE = "data-base-ui-focusable"; 2615 var TYPEABLE_SELECTOR = "input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])"; 2616 var ARROW_LEFT = "ArrowLeft"; 2617 var ARROW_RIGHT = "ArrowRight"; 2618 var ARROW_UP = "ArrowUp"; 2619 var ARROW_DOWN = "ArrowDown"; 2620 2621 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/CommonPopupDataAttributes.mjs 2622 var open = "data-open"; 2623 var closed = "data-closed"; 2624 var anchorHidden = "data-anchor-hidden"; 2625 2626 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/CommonTriggerDataAttributes.mjs 2627 var CommonTriggerDataAttributes_exports = {}; 2628 __export(CommonTriggerDataAttributes_exports, { 2629 popupOpen: () => popupOpen, 2630 pressed: () => pressed 2631 }); 2632 var popupOpen = "data-popup-open"; 2633 var pressed = "data-pressed"; 2634 2635 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popupStateMapping.mjs 2636 var TRIGGER_HOOK = { 2637 [popupOpen]: "" 2638 }; 2639 var PRESSABLE_TRIGGER_HOOK = { 2640 [popupOpen]: "", 2641 [pressed]: "" 2642 }; 2643 var POPUP_OPEN_HOOK = { 2644 [open]: "" 2645 }; 2646 var POPUP_CLOSED_HOOK = { 2647 [closed]: "" 2648 }; 2649 var ANCHOR_HIDDEN_HOOK = { 2650 [anchorHidden]: "" 2651 }; 2652 var triggerOpenStateMapping = { 2653 open(value) { 2654 if (value) { 2655 return TRIGGER_HOOK; 2656 } 2657 return null; 2658 } 2659 }; 2660 var pressableTriggerOpenStateMapping = { 2661 open(value) { 2662 if (value) { 2663 return PRESSABLE_TRIGGER_HOOK; 2664 } 2665 return null; 2666 } 2667 }; 2668 var popupStateMapping = { 2669 open(value) { 2670 if (value) { 2671 return POPUP_OPEN_HOOK; 2672 } 2673 return POPUP_CLOSED_HOOK; 2674 }, 2675 anchorHidden(value) { 2676 if (value) { 2677 return ANCHOR_HIDDEN_HOOK; 2678 } 2679 return null; 2680 } 2681 }; 2682 var popupTransitionStateMapping = { 2683 ...popupStateMapping, 2684 ...transitionStatusMapping 2685 }; 2686 2687 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/element.mjs 2688 function isEventTargetWithin(event, node) { 2689 if (node == null) { 2690 return false; 2691 } 2692 if ("composedPath" in event) { 2693 return event.composedPath().includes(node); 2694 } 2695 const eventAgain = event; 2696 return eventAgain.target != null && node.contains(eventAgain.target); 2697 } 2698 function isRootElement(element) { 2699 return element.matches("html,body"); 2700 } 2701 function isTypeableElement(element) { 2702 return isHTMLElement(element) && element.matches(TYPEABLE_SELECTOR); 2703 } 2704 function isTypeableCombobox(element) { 2705 if (!element) { 2706 return false; 2707 } 2708 return element.getAttribute("role") === "combobox" && isTypeableElement(element); 2709 } 2710 function getFloatingFocusElement(floatingElement) { 2711 if (!floatingElement) { 2712 return null; 2713 } 2714 return floatingElement.hasAttribute(FOCUSABLE_ATTRIBUTE) ? floatingElement : floatingElement.querySelector(`[$FOCUSABLE_ATTRIBUTE}]`) || floatingElement; 2715 } 2716 2717 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingFocusManager.mjs 2718 var React22 = __toESM(require_react(), 1); 2719 2720 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/mergeCleanups.mjs 2721 function mergeCleanups(...cleanups) { 2722 return () => { 2723 for (let i = 0; i < cleanups.length; i += 1) { 2724 const cleanup = cleanups[i]; 2725 if (cleanup) { 2726 cleanup(); 2727 } 2728 } 2729 }; 2730 } 2731 2732 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/FocusGuard.mjs 2733 var React19 = __toESM(require_react(), 1); 2734 2735 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/visuallyHidden.mjs 2736 var visuallyHiddenBase = { 2737 clipPath: "inset(50%)", 2738 overflow: "hidden", 2739 whiteSpace: "nowrap", 2740 border: 0, 2741 padding: 0, 2742 width: 1, 2743 height: 1, 2744 margin: -1 2745 }; 2746 var visuallyHidden = { 2747 ...visuallyHiddenBase, 2748 position: "fixed", 2749 margin: 0, 2750 top: 0, 2751 left: 0 2752 }; 2753 var visuallyHiddenInput = { 2754 ...visuallyHiddenBase, 2755 position: "absolute" 2756 }; 2757 2758 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/FocusGuard.mjs 2759 var import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1); 2760 var FocusGuard = /* @__PURE__ */ React19.forwardRef(function FocusGuard2(props, ref) { 2761 const [role, setRole] = React19.useState(); 2762 useIsoLayoutEffect(() => { 2763 if (parts_exports.screenReader.voiceOver && parts_exports.engine.webkit) { 2764 setRole("button"); 2765 } 2766 }, []); 2767 const restProps = { 2768 tabIndex: 0, 2769 // Role is only for VoiceOver 2770 role 2771 }; 2772 return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { 2773 ...props, 2774 ref, 2775 style: visuallyHidden, 2776 "aria-hidden": role ? void 0 : true, 2777 ...restProps, 2778 "data-base-ui-focus-guard": "" 2779 }); 2780 }); 2781 if (true) FocusGuard.displayName = "FocusGuard"; 2782 2783 // node_modules/.store/@floating-ui/utils@0.2.12-gOxTzMf36nCrbeHpEew-rw/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs 2784 var min = Math.min; 2785 var max = Math.max; 2786 var round = Math.round; 2787 var floor = Math.floor; 2788 var createCoords = (v) => ({ 2789 x: v, 2790 y: v 2791 }); 2792 var oppositeSideMap = { 2793 left: "right", 2794 right: "left", 2795 bottom: "top", 2796 top: "bottom" 2797 }; 2798 function clamp(start, value, end) { 2799 return max(start, min(value, end)); 2800 } 2801 function evaluate(value, param) { 2802 return typeof value === "function" ? value(param) : value; 2803 } 2804 function getSide(placement) { 2805 return placement.split("-")[0]; 2806 } 2807 function getAlignment(placement) { 2808 return placement.split("-")[1]; 2809 } 2810 function getOppositeAxis(axis) { 2811 return axis === "x" ? "y" : "x"; 2812 } 2813 function getAxisLength(axis) { 2814 return axis === "y" ? "height" : "width"; 2815 } 2816 function getSideAxis(placement) { 2817 const firstChar = placement[0]; 2818 return firstChar === "t" || firstChar === "b" ? "y" : "x"; 2819 } 2820 function getAlignmentAxis(placement) { 2821 return getOppositeAxis(getSideAxis(placement)); 2822 } 2823 function getAlignmentSides(placement, rects, rtl) { 2824 if (rtl === void 0) { 2825 rtl = false; 2826 } 2827 const alignment = getAlignment(placement); 2828 const alignmentAxis = getAlignmentAxis(placement); 2829 const length = getAxisLength(alignmentAxis); 2830 let mainAlignmentSide = alignmentAxis === "x" ? alignment === (rtl ? "end" : "start") ? "right" : "left" : alignment === "start" ? "bottom" : "top"; 2831 if (rects.reference[length] > rects.floating[length]) { 2832 mainAlignmentSide = getOppositePlacement(mainAlignmentSide); 2833 } 2834 return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)]; 2835 } 2836 function getExpandedPlacements(placement) { 2837 const oppositePlacement = getOppositePlacement(placement); 2838 return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)]; 2839 } 2840 function getOppositeAlignmentPlacement(placement) { 2841 return placement.includes("start") ? placement.replace("start", "end") : placement.replace("end", "start"); 2842 } 2843 var lrPlacement = ["left", "right"]; 2844 var rlPlacement = ["right", "left"]; 2845 var tbPlacement = ["top", "bottom"]; 2846 var btPlacement = ["bottom", "top"]; 2847 function getSideList(side, isStart, rtl) { 2848 switch (side) { 2849 case "top": 2850 case "bottom": 2851 if (rtl) return isStart ? rlPlacement : lrPlacement; 2852 return isStart ? lrPlacement : rlPlacement; 2853 case "left": 2854 case "right": 2855 return isStart ? tbPlacement : btPlacement; 2856 default: 2857 return []; 2858 } 2859 } 2860 function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) { 2861 const alignment = getAlignment(placement); 2862 let list = getSideList(getSide(placement), direction === "start", rtl); 2863 if (alignment) { 2864 list = list.map((side) => side + "-" + alignment); 2865 if (flipAlignment) { 2866 list = list.concat(list.map(getOppositeAlignmentPlacement)); 2867 } 2868 } 2869 return list; 2870 } 2871 function getOppositePlacement(placement) { 2872 const side = getSide(placement); 2873 return oppositeSideMap[side] + placement.slice(side.length); 2874 } 2875 function expandPaddingObject(padding) { 2876 var _padding$top, _padding$right, _padding$bottom, _padding$left; 2877 return { 2878 top: (_padding$top = padding.top) != null ? _padding$top : 0, 2879 right: (_padding$right = padding.right) != null ? _padding$right : 0, 2880 bottom: (_padding$bottom = padding.bottom) != null ? _padding$bottom : 0, 2881 left: (_padding$left = padding.left) != null ? _padding$left : 0 2882 }; 2883 } 2884 function getPaddingObject(padding) { 2885 return typeof padding !== "number" ? expandPaddingObject(padding) : { 2886 top: padding, 2887 right: padding, 2888 bottom: padding, 2889 left: padding 2890 }; 2891 } 2892 function rectToClientRect(rect) { 2893 const { 2894 x, 2895 y, 2896 width, 2897 height 2898 } = rect; 2899 return { 2900 width, 2901 height, 2902 top: y, 2903 left: x, 2904 right: x + width, 2905 bottom: y + height, 2906 x, 2907 y 2908 }; 2909 } 2910 2911 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/composite.mjs 2912 function isIndexOutOfListBounds(list, index2) { 2913 return index2 < 0 || index2 >= list.length; 2914 } 2915 function getMinListIndex(listRef, disabledIndices) { 2916 return findNonDisabledListIndex(listRef.current, { 2917 disabledIndices 2918 }); 2919 } 2920 function getMaxListIndex(listRef, disabledIndices) { 2921 return findNonDisabledListIndex(listRef.current, { 2922 decrement: true, 2923 startingIndex: listRef.current.length, 2924 disabledIndices 2925 }); 2926 } 2927 function getNextListIndex(list, currentIndex, options) { 2928 const { 2929 decrement, 2930 loopFocus, 2931 allowEscape, 2932 disabledIndices, 2933 minIndex, 2934 maxIndex 2935 } = options; 2936 const step = () => findNonDisabledListIndex(list, { 2937 startingIndex: currentIndex, 2938 decrement, 2939 disabledIndices 2940 }); 2941 let index2; 2942 let wrapped = false; 2943 if (!loopFocus) { 2944 index2 = decrement ? Math.max(minIndex, step()) : Math.min(maxIndex, step()); 2945 } else if (decrement ? currentIndex <= minIndex : currentIndex >= maxIndex) { 2946 const outside = decrement ? -1 : list.length; 2947 if (allowEscape && currentIndex !== outside) { 2948 index2 = -1; 2949 } else { 2950 index2 = decrement ? maxIndex : minIndex; 2951 wrapped = true; 2952 } 2953 } else { 2954 index2 = step(); 2955 } 2956 return { 2957 index: isIndexOutOfListBounds(list, index2) ? -1 : index2, 2958 wrapped 2959 }; 2960 } 2961 function findNonDisabledListIndex(list, { 2962 startingIndex = -1, 2963 decrement = false, 2964 disabledIndices, 2965 amount = 1 2966 } = {}) { 2967 let index2 = startingIndex; 2968 do { 2969 index2 += decrement ? -amount : amount; 2970 } while (index2 >= 0 && index2 <= list.length - 1 && isListIndexDisabled(list, index2, disabledIndices)); 2971 return index2; 2972 } 2973 function isListIndexDisabled(list, index2, disabledIndices) { 2974 const isExplicitlyDisabled = typeof disabledIndices === "function" ? disabledIndices(index2) : disabledIndices?.includes(index2) ?? false; 2975 if (isExplicitlyDisabled) { 2976 return true; 2977 } 2978 const element = list[index2]; 2979 if (!element) { 2980 return false; 2981 } 2982 if (!isElementVisible(element)) { 2983 return true; 2984 } 2985 if (element.matches(":disabled")) { 2986 return true; 2987 } 2988 return !disabledIndices && (element.hasAttribute("disabled") || element.getAttribute("aria-disabled") === "true"); 2989 } 2990 function isHiddenByStyles(styles) { 2991 return styles.visibility === "hidden" || styles.visibility === "collapse"; 2992 } 2993 function isElementVisible(element, styles = element ? getComputedStyle2(element) : null) { 2994 if (!element || !element.isConnected || !styles || isHiddenByStyles(styles)) { 2995 return false; 2996 } 2997 if (typeof element.checkVisibility === "function") { 2998 return element.checkVisibility(); 2999 } 3000 return styles.display !== "none" && styles.display !== "contents"; 3001 } 3002 3003 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/tabbable.mjs 3004 var CANDIDATE_SELECTOR = 'a[href],button,input,select,textarea,summary,details,iframe,object,embed,[tabindex],[contenteditable]:not([contenteditable="false"]),audio[controls],video[controls]'; 3005 function getParentElement(element) { 3006 const assignedSlot = element.assignedSlot; 3007 if (assignedSlot) { 3008 return assignedSlot; 3009 } 3010 if (element.parentElement) { 3011 return element.parentElement; 3012 } 3013 const rootNode = element.getRootNode(); 3014 return isShadowRoot(rootNode) ? rootNode.host : null; 3015 } 3016 function getDetailsSummary(details) { 3017 for (const child of Array.from(details.children)) { 3018 if (getNodeName(child) === "summary") { 3019 return child; 3020 } 3021 } 3022 return null; 3023 } 3024 function isWithinOpenDetailsSummary(element, details) { 3025 const summary = getDetailsSummary(details); 3026 return !!summary && (element === summary || contains(summary, element)); 3027 } 3028 function isFocusableCandidate(element) { 3029 const nodeName = element ? getNodeName(element) : ""; 3030 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"); 3031 } 3032 function isFocusableElement(element) { 3033 if (!isFocusableCandidate(element) || !element.isConnected || element.matches(":disabled")) { 3034 return false; 3035 } 3036 for (let current = element; current; current = getParentElement(current)) { 3037 const isAncestor = current !== element; 3038 const isSlot = getNodeName(current) === "slot"; 3039 if (current.hasAttribute("inert")) { 3040 return false; 3041 } 3042 if (isAncestor && getNodeName(current) === "details" && !current.open && !isWithinOpenDetailsSummary(element, current) || current.hasAttribute("hidden") || !isSlot && !isVisibleInTabbableTree(current, isAncestor)) { 3043 return false; 3044 } 3045 } 3046 return true; 3047 } 3048 function isVisibleInTabbableTree(element, isAncestor) { 3049 const styles = getComputedStyle2(element); 3050 if (!isAncestor) { 3051 return isElementVisible(element, styles); 3052 } 3053 return styles.display !== "none"; 3054 } 3055 function getTabIndex(element) { 3056 const tabIndex = element.tabIndex; 3057 if (tabIndex < 0) { 3058 const nodeName = getNodeName(element); 3059 if (nodeName === "details" || nodeName === "audio" || nodeName === "video" || isHTMLElement(element) && element.isContentEditable) { 3060 return 0; 3061 } 3062 } 3063 return tabIndex; 3064 } 3065 function getNamedRadioInput(element) { 3066 if (getNodeName(element) !== "input") { 3067 return null; 3068 } 3069 const input = element; 3070 return input.type === "radio" && input.name !== "" ? input : null; 3071 } 3072 function isTabbableRadio(element, candidates) { 3073 const input = getNamedRadioInput(element); 3074 if (!input) { 3075 return true; 3076 } 3077 const checkedRadio = candidates.find((candidate) => { 3078 const radio = getNamedRadioInput(candidate); 3079 return radio?.name === input.name && radio.form === input.form && radio.checked; 3080 }); 3081 if (checkedRadio) { 3082 return checkedRadio === input; 3083 } 3084 return candidates.find((candidate) => { 3085 const radio = getNamedRadioInput(candidate); 3086 return radio?.name === input.name && radio.form === input.form; 3087 }) === input; 3088 } 3089 function getComposedChildren(container) { 3090 if (isHTMLElement(container) && getNodeName(container) === "slot") { 3091 const assignedElements = container.assignedElements({ 3092 flatten: true 3093 }); 3094 if (assignedElements.length > 0) { 3095 return assignedElements; 3096 } 3097 } 3098 if (isHTMLElement(container) && container.shadowRoot) { 3099 return Array.from(container.shadowRoot.children); 3100 } 3101 return Array.from(container.children); 3102 } 3103 function appendCandidates(container, list) { 3104 getComposedChildren(container).forEach((child) => { 3105 if (isFocusableCandidate(child)) { 3106 list.push(child); 3107 } 3108 appendCandidates(child, list); 3109 }); 3110 } 3111 function appendMatchingElements(container, selector, list) { 3112 getComposedChildren(container).forEach((child) => { 3113 if (isHTMLElement(child) && child.matches(selector)) { 3114 list.push(child); 3115 } 3116 appendMatchingElements(child, selector, list); 3117 }); 3118 } 3119 function isTabbable(element) { 3120 return isFocusableElement(element) && getTabIndex(element) >= 0; 3121 } 3122 function focusable(container) { 3123 const candidates = []; 3124 appendCandidates(container, candidates); 3125 return candidates.filter(isFocusableElement); 3126 } 3127 function tabbable(container) { 3128 const candidates = focusable(container); 3129 return candidates.filter((element) => getTabIndex(element) >= 0 && isTabbableRadio(element, candidates)); 3130 } 3131 function getTabbableIn(container, dir) { 3132 const list = tabbable(container); 3133 const len = list.length; 3134 if (len === 0) { 3135 return void 0; 3136 } 3137 const active = activeElement(ownerDocument(container)); 3138 const index2 = list.indexOf(active); 3139 const nextIndex = index2 === -1 ? dir === 1 ? 0 : len - 1 : index2 + dir; 3140 return list[nextIndex]; 3141 } 3142 function getNextTabbable(referenceElement) { 3143 return getTabbableIn(ownerDocument(referenceElement).body, 1) || referenceElement; 3144 } 3145 function getPreviousTabbable(referenceElement) { 3146 return getTabbableIn(ownerDocument(referenceElement).body, -1) || referenceElement; 3147 } 3148 function isOutsideEvent(event, container) { 3149 const containerElement = container || event.currentTarget; 3150 const relatedTarget = event.relatedTarget; 3151 return !relatedTarget || !contains(containerElement, relatedTarget); 3152 } 3153 function disableFocusInside(container) { 3154 const tabbableElements = tabbable(container); 3155 tabbableElements.forEach((element) => { 3156 element.dataset.tabindex = element.getAttribute("tabindex") || ""; 3157 element.setAttribute("tabindex", "-1"); 3158 }); 3159 } 3160 function enableFocusInside(container) { 3161 const elements = []; 3162 appendMatchingElements(container, "[data-tabindex]", elements); 3163 elements.forEach((element) => { 3164 const tabindex = element.dataset.tabindex; 3165 delete element.dataset.tabindex; 3166 if (tabindex) { 3167 element.setAttribute("tabindex", tabindex); 3168 } else { 3169 element.removeAttribute("tabindex"); 3170 } 3171 }); 3172 } 3173 3174 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/nodes.mjs 3175 function getNodeChildren(nodes, id, onlyOpenChildren = true) { 3176 const directChildren = nodes.filter((node) => node.parentId === id); 3177 return directChildren.flatMap((child) => [...!onlyOpenChildren || child.context?.open ? [child] : [], ...getNodeChildren(nodes, child.id, onlyOpenChildren)]); 3178 } 3179 function getNodeAncestors(nodes, id) { 3180 let allAncestors = []; 3181 let currentParentId = nodes.find((node) => node.id === id)?.parentId; 3182 while (currentParentId) { 3183 const currentNode = nodes.find((node) => node.id === currentParentId); 3184 currentParentId = currentNode?.parentId; 3185 if (currentNode) { 3186 allAncestors = allAncestors.concat(currentNode); 3187 } 3188 } 3189 return allAncestors; 3190 } 3191 3192 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/createAttribute.mjs 3193 function createAttribute(name3) { 3194 return `data-base-ui-$name3}`; 3195 } 3196 3197 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/enqueueFocus.mjs 3198 var rafId = 0; 3199 function enqueueFocus(el2, options = {}) { 3200 const { 3201 preventScroll = false, 3202 sync = false, 3203 shouldFocus 3204 } = options; 3205 cancelAnimationFrame(rafId); 3206 function exec() { 3207 if (shouldFocus && !shouldFocus()) { 3208 return; 3209 } 3210 el2?.focus({ 3211 preventScroll 3212 }); 3213 } 3214 if (sync) { 3215 exec(); 3216 return NOOP; 3217 } 3218 const currentRafId = requestAnimationFrame(exec); 3219 rafId = currentRafId; 3220 return () => { 3221 if (rafId === currentRafId) { 3222 cancelAnimationFrame(currentRafId); 3223 rafId = 0; 3224 } 3225 }; 3226 } 3227 3228 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/markOthers.mjs 3229 var markerName = "data-base-ui-inert"; 3230 var ariaHiddenCounterMap = /* @__PURE__ */ new WeakMap(); 3231 var uncontrolledElementsSet = /* @__PURE__ */ new WeakSet(); 3232 var markerCounterMap = /* @__PURE__ */ new WeakMap(); 3233 var lockCount = 0; 3234 function unwrapHost(node) { 3235 if (!node) { 3236 return null; 3237 } 3238 return isShadowRoot(node) ? node.host : unwrapHost(node.parentNode); 3239 } 3240 var correctElements = (parent, targets) => targets.map((target) => { 3241 if (parent.contains(target)) { 3242 return target; 3243 } 3244 const correctedTarget = unwrapHost(target); 3245 if (parent.contains(correctedTarget)) { 3246 return correctedTarget; 3247 } 3248 return null; 3249 }).filter((x) => x != null); 3250 var buildKeepSet = (targets) => { 3251 const keep = /* @__PURE__ */ new Set(); 3252 targets.forEach((target) => { 3253 let node = target; 3254 while (node && !keep.has(node)) { 3255 keep.add(node); 3256 node = node.parentNode; 3257 } 3258 }); 3259 return keep; 3260 }; 3261 var collectOutsideElements = (root, keepElements, stopElements) => { 3262 const outside = []; 3263 const walk = (parent) => { 3264 if (!parent || stopElements.has(parent)) { 3265 return; 3266 } 3267 Array.from(parent.children).forEach((node) => { 3268 if (getNodeName(node) === "script") { 3269 return; 3270 } 3271 if (keepElements.has(node)) { 3272 walk(node); 3273 } else { 3274 outside.push(node); 3275 } 3276 }); 3277 }; 3278 walk(root); 3279 return outside; 3280 }; 3281 function applyAttributeToOthers(uncorrectedAvoidElements, body, ariaHidden, { 3282 mark = true 3283 }) { 3284 const avoidElements = correctElements(body, uncorrectedAvoidElements); 3285 const markerTargets = mark ? collectOutsideElements(body, buildKeepSet(avoidElements), new Set(avoidElements)) : []; 3286 const hiddenElements = []; 3287 const markedElements = []; 3288 if (ariaHidden) { 3289 const ariaLiveElements = correctElements(body, Array.from(body.querySelectorAll("[aria-live]"))); 3290 const controlElements = avoidElements.concat(ariaLiveElements); 3291 const controlTargets = collectOutsideElements(body, buildKeepSet(controlElements), new Set(controlElements)); 3292 controlTargets.forEach((node) => { 3293 const attr2 = node.getAttribute("aria-hidden"); 3294 const alreadyHidden = attr2 !== null && attr2 !== "false"; 3295 const counterValue = (ariaHiddenCounterMap.get(node) || 0) + 1; 3296 ariaHiddenCounterMap.set(node, counterValue); 3297 hiddenElements.push(node); 3298 if (counterValue === 1 && alreadyHidden) { 3299 uncontrolledElementsSet.add(node); 3300 } 3301 if (!alreadyHidden) { 3302 node.setAttribute("aria-hidden", "true"); 3303 } 3304 }); 3305 } 3306 if (mark) { 3307 markerTargets.forEach((node) => { 3308 const markerValue = (markerCounterMap.get(node) || 0) + 1; 3309 markerCounterMap.set(node, markerValue); 3310 markedElements.push(node); 3311 if (markerValue === 1) { 3312 node.setAttribute(markerName, ""); 3313 } 3314 }); 3315 } 3316 lockCount += 1; 3317 return () => { 3318 hiddenElements.forEach((element) => { 3319 const counterValue = (ariaHiddenCounterMap.get(element) || 0) - 1; 3320 ariaHiddenCounterMap.set(element, counterValue); 3321 if (!counterValue) { 3322 if (!uncontrolledElementsSet.has(element)) { 3323 element.removeAttribute("aria-hidden"); 3324 } 3325 uncontrolledElementsSet.delete(element); 3326 } 3327 }); 3328 if (mark) { 3329 markedElements.forEach((element) => { 3330 const markerValue = (markerCounterMap.get(element) || 0) - 1; 3331 markerCounterMap.set(element, markerValue); 3332 if (!markerValue) { 3333 element.removeAttribute(markerName); 3334 } 3335 }); 3336 } 3337 lockCount -= 1; 3338 if (!lockCount) { 3339 ariaHiddenCounterMap = /* @__PURE__ */ new WeakMap(); 3340 uncontrolledElementsSet = /* @__PURE__ */ new WeakSet(); 3341 markerCounterMap = /* @__PURE__ */ new WeakMap(); 3342 } 3343 }; 3344 } 3345 function markOthers(avoidElements, options = {}) { 3346 const { 3347 ariaHidden = false, 3348 mark = true 3349 } = options; 3350 const body = ownerDocument(avoidElements[0]).body; 3351 return applyAttributeToOthers(avoidElements, body, ariaHidden, { 3352 mark 3353 }); 3354 } 3355 3356 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingPortal.mjs 3357 var React20 = __toESM(require_react(), 1); 3358 var ReactDOM2 = __toESM(require_react_dom(), 1); 3359 3360 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/constants.mjs 3361 var DISABLED_TRANSITIONS_STYLE = { 3362 style: { 3363 transition: "none" 3364 } 3365 }; 3366 var CLICK_TRIGGER_IDENTIFIER = "data-base-ui-click-trigger"; 3367 var BASE_UI_SWIPE_IGNORE_ATTRIBUTE = "data-base-ui-swipe-ignore"; 3368 var LEGACY_SWIPE_IGNORE_ATTRIBUTE = "data-swipe-ignore"; 3369 var BASE_UI_SWIPE_IGNORE_SELECTOR = `[$BASE_UI_SWIPE_IGNORE_ATTRIBUTE}]`; 3370 var LEGACY_SWIPE_IGNORE_SELECTOR = `[$LEGACY_SWIPE_IGNORE_ATTRIBUTE}]`; 3371 var DROPDOWN_COLLISION_AVOIDANCE = { 3372 fallbackAxisSide: "none" 3373 }; 3374 var ownerVisuallyHidden = { 3375 clipPath: "inset(50%)", 3376 position: "fixed", 3377 top: 0, 3378 left: 0 3379 }; 3380 3381 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingPortal.mjs 3382 var import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1); 3383 var PortalContext = /* @__PURE__ */ React20.createContext(null); 3384 if (true) PortalContext.displayName = "PortalContext"; 3385 var usePortalContext = () => React20.useContext(PortalContext); 3386 var attr = createAttribute("portal"); 3387 function useFloatingPortalNode(props = {}) { 3388 const { 3389 ref, 3390 container: containerProp, 3391 componentProps = EMPTY_OBJECT, 3392 elementProps 3393 } = props; 3394 const uniqueId = useId(); 3395 const portalContext = usePortalContext(); 3396 const parentPortalNode = portalContext?.portalNode; 3397 const [containerElement, setContainerElement] = React20.useState(null); 3398 const [portalNode, setPortalNode] = React20.useState(null); 3399 const setPortalNodeRef = useStableCallback((node) => { 3400 if (node !== null) { 3401 setPortalNode(node); 3402 } 3403 }); 3404 const containerRef = React20.useRef(null); 3405 useIsoLayoutEffect(() => { 3406 if (containerProp === null) { 3407 if (containerRef.current) { 3408 containerRef.current = null; 3409 setPortalNode(null); 3410 setContainerElement(null); 3411 } 3412 return; 3413 } 3414 const resolvedContainer = (containerProp && (isNode(containerProp) ? containerProp : containerProp.current)) ?? parentPortalNode ?? document.body; 3415 if (resolvedContainer == null) { 3416 if (containerRef.current) { 3417 containerRef.current = null; 3418 setPortalNode(null); 3419 setContainerElement(null); 3420 } 3421 return; 3422 } 3423 if (containerRef.current !== resolvedContainer) { 3424 containerRef.current = resolvedContainer; 3425 setPortalNode(null); 3426 setContainerElement(resolvedContainer); 3427 } 3428 }, [containerProp, parentPortalNode]); 3429 const portalElement = useRenderElement("div", componentProps, { 3430 ref: [ref, setPortalNodeRef], 3431 props: [{ 3432 id: uniqueId, 3433 [attr]: "" 3434 }, elementProps] 3435 }); 3436 const portalSubtree = containerElement && portalElement ? /* @__PURE__ */ ReactDOM2.createPortal(portalElement, containerElement) : null; 3437 return { 3438 node: portalNode, 3439 // `id` and `render` props can override or remove the generated ID. Use the exact 3440 // rendered value so `aria-owns` never points at an ID absent from the DOM. 3441 nodeId: /* @__PURE__ */ React20.isValidElement(portalElement) ? portalElement.props.id : void 0, 3442 subtree: portalSubtree 3443 }; 3444 } 3445 var FloatingPortal = /* @__PURE__ */ React20.forwardRef(function FloatingPortal2(componentProps, forwardedRef) { 3446 const { 3447 render, 3448 className, 3449 style, 3450 children, 3451 container, 3452 portalOwnerRole, 3453 ...elementProps 3454 } = componentProps; 3455 const { 3456 node: portalNode, 3457 nodeId: portalNodeId, 3458 subtree: portalSubtree 3459 } = useFloatingPortalNode({ 3460 container, 3461 ref: forwardedRef, 3462 componentProps, 3463 elementProps 3464 }); 3465 const beforeOutsideRef = React20.useRef(null); 3466 const afterOutsideRef = React20.useRef(null); 3467 const beforeInsideRef = React20.useRef(null); 3468 const afterInsideRef = React20.useRef(null); 3469 const [focusManagerState, setFocusManagerState] = React20.useState(null); 3470 const focusInsideDisabledRef = React20.useRef(false); 3471 const modal = focusManagerState?.modal; 3472 const open2 = focusManagerState?.open; 3473 const shouldRenderGuards = !!focusManagerState && !focusManagerState.modal && focusManagerState.open && !!portalNode; 3474 React20.useEffect(() => { 3475 if (!portalNode || modal) { 3476 return void 0; 3477 } 3478 function onFocus(event) { 3479 if (portalNode && event.relatedTarget && isOutsideEvent(event)) { 3480 if (event.type === "focusin") { 3481 if (focusInsideDisabledRef.current) { 3482 enableFocusInside(portalNode); 3483 focusInsideDisabledRef.current = false; 3484 } 3485 } else { 3486 disableFocusInside(portalNode); 3487 focusInsideDisabledRef.current = true; 3488 } 3489 } 3490 } 3491 return mergeCleanups(addEventListener(portalNode, "focusin", onFocus, true), addEventListener(portalNode, "focusout", onFocus, true)); 3492 }, [portalNode, modal]); 3493 useIsoLayoutEffect(() => { 3494 if (!portalNode || open2 !== true || !focusInsideDisabledRef.current) { 3495 return; 3496 } 3497 enableFocusInside(portalNode); 3498 focusInsideDisabledRef.current = false; 3499 }, [open2, portalNode]); 3500 const portalContextValue = React20.useMemo(() => ({ 3501 beforeOutsideRef, 3502 afterOutsideRef, 3503 beforeInsideRef, 3504 afterInsideRef, 3505 portalNode, 3506 setFocusManagerState 3507 }), [portalNode]); 3508 return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(React20.Fragment, { 3509 children: [portalSubtree, /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(PortalContext.Provider, { 3510 value: portalContextValue, 3511 children: [shouldRenderGuards && portalNode && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(FocusGuard, { 3512 "data-type": "outside", 3513 ref: beforeOutsideRef, 3514 onFocus: (event) => { 3515 if (isOutsideEvent(event, portalNode)) { 3516 beforeInsideRef.current?.focus(); 3517 } else { 3518 const domReference = focusManagerState ? focusManagerState.domReference : null; 3519 const prevTabbable = getPreviousTabbable(domReference); 3520 prevTabbable?.focus(); 3521 } 3522 } 3523 }), shouldRenderGuards && portalNode && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { 3524 role: portalOwnerRole, 3525 "aria-owns": portalNodeId, 3526 style: ownerVisuallyHidden 3527 }), portalNode && /* @__PURE__ */ ReactDOM2.createPortal(children, portalNode), shouldRenderGuards && portalNode && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(FocusGuard, { 3528 "data-type": "outside", 3529 ref: afterOutsideRef, 3530 onFocus: (event) => { 3531 if (isOutsideEvent(event, portalNode)) { 3532 afterInsideRef.current?.focus(); 3533 } else { 3534 const domReference = focusManagerState ? focusManagerState.domReference : null; 3535 const nextTabbable = getNextTabbable(domReference); 3536 nextTabbable?.focus(); 3537 if (focusManagerState?.closeOnFocusOut) { 3538 focusManagerState?.onOpenChange(false, createChangeEventDetails(reason_parts_exports.focusOut, event.nativeEvent)); 3539 } 3540 } 3541 } 3542 })] 3543 })] 3544 }); 3545 }); 3546 if (true) FloatingPortal.displayName = "FloatingPortal"; 3547 3548 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingTree.mjs 3549 var React21 = __toESM(require_react(), 1); 3550 3551 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/createEventEmitter.mjs 3552 function createEventEmitter() { 3553 const map = /* @__PURE__ */ new Map(); 3554 return { 3555 emit(event, data) { 3556 map.get(event)?.forEach((listener) => listener(data)); 3557 }, 3558 on(event, listener) { 3559 if (!map.has(event)) { 3560 map.set(event, /* @__PURE__ */ new Set()); 3561 } 3562 map.get(event).add(listener); 3563 }, 3564 off(event, listener) { 3565 map.get(event)?.delete(listener); 3566 } 3567 }; 3568 } 3569 3570 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingTree.mjs 3571 var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1); 3572 var FloatingNodeContext = /* @__PURE__ */ React21.createContext(null); 3573 if (true) FloatingNodeContext.displayName = "FloatingNodeContext"; 3574 var FloatingTreeContext = /* @__PURE__ */ React21.createContext(null); 3575 if (true) FloatingTreeContext.displayName = "FloatingTreeContext"; 3576 var useFloatingParentNodeId = () => React21.useContext(FloatingNodeContext)?.id || null; 3577 var useFloatingTree = (externalTree) => { 3578 const contextTree = React21.useContext(FloatingTreeContext); 3579 return externalTree ?? contextTree; 3580 }; 3581 3582 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingFocusManager.mjs 3583 var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1); 3584 function getEventType(event, lastInteractionType) { 3585 const win = getWindow(getTarget(event)); 3586 if (event instanceof win.KeyboardEvent) { 3587 return "keyboard"; 3588 } 3589 if (event instanceof win.FocusEvent) { 3590 return lastInteractionType || "keyboard"; 3591 } 3592 if ("pointerType" in event) { 3593 return event.pointerType || (isVirtualClick(event) ? "keyboard" : lastInteractionType || "mouse"); 3594 } 3595 if ("touches" in event) { 3596 return "touch"; 3597 } 3598 if (event instanceof win.MouseEvent) { 3599 return lastInteractionType || (event.detail === 0 ? "keyboard" : "mouse"); 3600 } 3601 return ""; 3602 } 3603 var LIST_LIMIT = 20; 3604 var previouslyFocusedElements = []; 3605 function clearDisconnectedPreviouslyFocusedElements() { 3606 previouslyFocusedElements = previouslyFocusedElements.filter((entry) => { 3607 return entry.deref()?.isConnected; 3608 }); 3609 } 3610 function addPreviouslyFocusedElement(element) { 3611 clearDisconnectedPreviouslyFocusedElements(); 3612 if (element && getNodeName(element) !== "body") { 3613 previouslyFocusedElements.push(new WeakRef(element)); 3614 if (previouslyFocusedElements.length > LIST_LIMIT) { 3615 previouslyFocusedElements = previouslyFocusedElements.slice(-LIST_LIMIT); 3616 } 3617 } 3618 } 3619 function getPreviouslyFocusedElement() { 3620 clearDisconnectedPreviouslyFocusedElements(); 3621 return previouslyFocusedElements[previouslyFocusedElements.length - 1]?.deref(); 3622 } 3623 function getFirstTabbableElement(container) { 3624 if (!container) { 3625 return null; 3626 } 3627 if (isTabbable(container)) { 3628 return container; 3629 } 3630 return tabbable(container)[0] || container; 3631 } 3632 function handleTabIndex(floatingFocusElement) { 3633 if (floatingFocusElement.hasAttribute("tabindex") && !floatingFocusElement.hasAttribute("data-tabindex")) { 3634 return; 3635 } 3636 if (!floatingFocusElement.getAttribute("role")?.includes("dialog")) { 3637 return; 3638 } 3639 const focusableElements = focusable(floatingFocusElement); 3640 const tabbableContent = focusableElements.filter((element) => { 3641 const dataTabIndex = element.getAttribute("data-tabindex") || ""; 3642 return isTabbable(element) || element.hasAttribute("data-tabindex") && !dataTabIndex.startsWith("-"); 3643 }); 3644 const tabIndex = floatingFocusElement.getAttribute("tabindex"); 3645 if (tabbableContent.length === 0) { 3646 if (tabIndex !== "0") { 3647 floatingFocusElement.setAttribute("tabindex", "0"); 3648 floatingFocusElement.setAttribute("data-tabindex", "0"); 3649 } 3650 } else if (tabIndex !== "-1" || floatingFocusElement.hasAttribute("data-tabindex") && floatingFocusElement.getAttribute("data-tabindex") !== "-1") { 3651 floatingFocusElement.setAttribute("tabindex", "-1"); 3652 floatingFocusElement.setAttribute("data-tabindex", "-1"); 3653 } 3654 } 3655 function FloatingFocusManager(props) { 3656 const { 3657 context: store, 3658 children, 3659 disabled: disabled2 = false, 3660 initialFocus = true, 3661 returnFocus = true, 3662 explicitReturnFocus, 3663 restoreFocus = false, 3664 modal = true, 3665 closeOnFocusOut = true, 3666 openInteractionType = "", 3667 nextFocusableElement, 3668 previousFocusableElement, 3669 beforeContentFocusGuardRef, 3670 externalTree, 3671 getInsideElements 3672 } = props; 3673 const open2 = store.useState("open"); 3674 const domReference = store.useState("domReferenceElement"); 3675 const floating = store.useState("floatingElement"); 3676 const { 3677 events, 3678 dataRef 3679 } = store.context; 3680 const getNodeId = useStableCallback(() => dataRef.current.floatingContext?.nodeId); 3681 const ignoreInitialFocus = initialFocus === false; 3682 const isUntrappedTypeableCombobox = isTypeableCombobox(domReference) && ignoreInitialFocus; 3683 const initialFocusRef = useValueAsRef(initialFocus); 3684 const returnFocusRef = useValueAsRef(returnFocus); 3685 const explicitReturnFocusRef = useValueAsRef(explicitReturnFocus); 3686 const openInteractionTypeRef = useValueAsRef(openInteractionType); 3687 const openRef = useValueAsRef(open2); 3688 const tree = useFloatingTree(externalTree); 3689 const portalContext = usePortalContext(); 3690 const preventReturnFocusRef = React22.useRef(false); 3691 const isPointerDownRef = React22.useRef(false); 3692 const pointerDownOutsideRef = React22.useRef(false); 3693 const lastFocusedTabbableRef = React22.useRef(null); 3694 const closeTypeRef = React22.useRef(""); 3695 const lastInteractionTypeRef = React22.useRef(""); 3696 const beforeGuardRef = React22.useRef(null); 3697 const afterGuardRef = React22.useRef(null); 3698 const mergedBeforeGuardRef = useMergedRefs(beforeGuardRef, beforeContentFocusGuardRef, portalContext?.beforeInsideRef); 3699 const mergedAfterGuardRef = useMergedRefs(afterGuardRef, portalContext?.afterInsideRef); 3700 const blurTimeout = useTimeout(); 3701 const pointerDownTimeout = useTimeout(); 3702 const restoreFocusFrame = useAnimationFrame(); 3703 const isInsidePortal = portalContext != null; 3704 const floatingFocusElement = getFloatingFocusElement(floating); 3705 const getTabbableContent = useStableCallback((container = floatingFocusElement) => { 3706 return container ? tabbable(container) : []; 3707 }); 3708 const getResolvedInsideElements = useStableCallback(() => getInsideElements?.().filter((element) => element != null) ?? []); 3709 React22.useEffect(() => { 3710 if (disabled2 || !modal) { 3711 return void 0; 3712 } 3713 function onKeyDown(event) { 3714 if (event.key === "Tab") { 3715 if (contains(floatingFocusElement, activeElement(ownerDocument(floatingFocusElement))) && getTabbableContent().length === 0 && !isUntrappedTypeableCombobox) { 3716 stopEvent(event); 3717 } 3718 } 3719 } 3720 const doc = ownerDocument(floatingFocusElement); 3721 return addEventListener(doc, "keydown", onKeyDown); 3722 }, [disabled2, floatingFocusElement, modal, isUntrappedTypeableCombobox, getTabbableContent]); 3723 React22.useEffect(() => { 3724 if (disabled2 || !open2) { 3725 return void 0; 3726 } 3727 const doc = ownerDocument(floatingFocusElement); 3728 function clearPointerDownOutside() { 3729 pointerDownOutsideRef.current = false; 3730 } 3731 function onPointerDown(event) { 3732 const target = getTarget(event); 3733 const insideElements = getResolvedInsideElements(); 3734 const pointerTargetInside = contains(floating, target) || contains(domReference, target) || contains(portalContext?.portalNode, target) || insideElements.some((element) => element === target || contains(element, target)); 3735 pointerDownOutsideRef.current = !pointerTargetInside; 3736 lastInteractionTypeRef.current = event.pointerType || "keyboard"; 3737 if (closest(target, `[$CLICK_TRIGGER_IDENTIFIER}]`)) { 3738 isPointerDownRef.current = true; 3739 pointerDownTimeout.start(0, () => { 3740 isPointerDownRef.current = false; 3741 }); 3742 } 3743 } 3744 function onKeyDown() { 3745 lastInteractionTypeRef.current = "keyboard"; 3746 } 3747 return mergeCleanups( 3748 addEventListener(doc, "pointerdown", onPointerDown, true), 3749 addEventListener(doc, "pointerup", clearPointerDownOutside, true), 3750 addEventListener(doc, "pointercancel", clearPointerDownOutside, true), 3751 addEventListener(doc, "keydown", onKeyDown, true), 3752 // Avoid a stale `true` leaking into the next open (e.g. keep-mounted popups) 3753 // if the popup dismissed between pointerdown and pointerup. 3754 clearPointerDownOutside 3755 ); 3756 }, [disabled2, floating, domReference, floatingFocusElement, open2, portalContext, pointerDownTimeout, getResolvedInsideElements]); 3757 React22.useEffect(() => { 3758 if (disabled2 || !closeOnFocusOut) { 3759 return void 0; 3760 } 3761 const doc = ownerDocument(floatingFocusElement); 3762 function handlePointerDown() { 3763 isPointerDownRef.current = true; 3764 pointerDownTimeout.start(0, () => { 3765 isPointerDownRef.current = false; 3766 }); 3767 } 3768 function handleFocusIn(event) { 3769 const target = getTarget(event); 3770 if (isTabbable(target)) { 3771 lastFocusedTabbableRef.current = target; 3772 } 3773 } 3774 function handleFocusOutside(event) { 3775 const relatedTarget = event.relatedTarget; 3776 const currentTarget = event.currentTarget; 3777 const target = getTarget(event); 3778 if (modal && relatedTarget == null && target != null && contains(floating, target)) { 3779 addPreviouslyFocusedElement(target); 3780 } 3781 queueMicrotask(() => { 3782 const nodeId = getNodeId(); 3783 const triggers = store.context.triggerElements; 3784 const insideElements = getResolvedInsideElements(); 3785 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); 3786 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))); 3787 if (currentTarget === domReference && floatingFocusElement) { 3788 handleTabIndex(floatingFocusElement); 3789 } 3790 if (restoreFocus && currentTarget !== domReference && !isElementVisible(target) && activeElement(doc) === doc.body) { 3791 if (isHTMLElement(floatingFocusElement)) { 3792 floatingFocusElement.focus(); 3793 if (restoreFocus === "popup") { 3794 restoreFocusFrame.request(() => { 3795 floatingFocusElement.focus(); 3796 }); 3797 return; 3798 } 3799 } 3800 const tabbableContent = getTabbableContent(); 3801 const prevTabbable = lastFocusedTabbableRef.current; 3802 const nodeToFocus = (prevTabbable && tabbableContent.includes(prevTabbable) ? prevTabbable : null) || tabbableContent[tabbableContent.length - 1] || floatingFocusElement; 3803 if (isHTMLElement(nodeToFocus)) { 3804 nodeToFocus.focus(); 3805 } 3806 } 3807 if (dataRef.current.insideReactTree) { 3808 dataRef.current.insideReactTree = false; 3809 return; 3810 } 3811 if ((isUntrappedTypeableCombobox ? true : !modal) && relatedTarget && movedToUnrelatedNode && !isPointerDownRef.current && // Fix React 18 Strict Mode returnFocus due to double rendering. 3812 // For an "untrapped" typeable combobox (input role=combobox with 3813 // initialFocus=false), re-opening the popup and tabbing out should still close it even 3814 // when the previously focused element (e.g. the next tabbable outside the popup) is 3815 // focused again. Otherwise, the popup remains open on the second Tab sequence: 3816 // click input -> Tab (closes) -> click input -> Tab. 3817 // Allow closing when `isUntrappedTypeableCombobox` regardless of the previously focused element. 3818 (isUntrappedTypeableCombobox || relatedTarget !== getPreviouslyFocusedElement())) { 3819 preventReturnFocusRef.current = true; 3820 store.setOpen(false, createChangeEventDetails(reason_parts_exports.focusOut, event)); 3821 } 3822 }); 3823 } 3824 function markInsideReactTree() { 3825 if (pointerDownOutsideRef.current) { 3826 return; 3827 } 3828 dataRef.current.insideReactTree = true; 3829 blurTimeout.start(0, () => { 3830 dataRef.current.insideReactTree = false; 3831 }); 3832 } 3833 const domReferenceElement = isHTMLElement(domReference) ? domReference : null; 3834 if (!floating && !domReferenceElement) { 3835 return void 0; 3836 } 3837 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)); 3838 }, [disabled2, domReference, floating, floatingFocusElement, modal, tree, portalContext, store, closeOnFocusOut, restoreFocus, getTabbableContent, isUntrappedTypeableCombobox, getNodeId, dataRef, blurTimeout, pointerDownTimeout, restoreFocusFrame, nextFocusableElement, previousFocusableElement, getResolvedInsideElements]); 3839 React22.useEffect(() => { 3840 if (disabled2 || !floating || !open2) { 3841 return void 0; 3842 } 3843 const portalNodes = Array.from(portalContext?.portalNode?.querySelectorAll(`[$createAttribute("portal")}]`) || []); 3844 const ancestors = tree ? getNodeAncestors(tree.nodesRef.current, getNodeId()) : []; 3845 const rootAncestorComboboxDomReference = ancestors.find((node) => isTypeableCombobox(node.context?.elements.domReference || null))?.context?.elements.domReference; 3846 const controlInsideElements = [floating, ...portalNodes, beforeGuardRef.current, afterGuardRef.current, portalContext?.beforeOutsideRef.current, portalContext?.afterOutsideRef.current, ...getResolvedInsideElements()]; 3847 const insideElements = [...controlInsideElements, rootAncestorComboboxDomReference, resolveRef(previousFocusableElement), resolveRef(nextFocusableElement), isUntrappedTypeableCombobox ? domReference : null].filter((x) => x != null); 3848 const ariaHiddenCleanup = markOthers(insideElements, { 3849 ariaHidden: modal || isUntrappedTypeableCombobox, 3850 mark: false 3851 }); 3852 const markerInsideElements = [floating, ...portalNodes].filter((x) => x != null); 3853 const markerCleanup = markOthers(markerInsideElements); 3854 return () => { 3855 markerCleanup(); 3856 ariaHiddenCleanup(); 3857 }; 3858 }, [open2, disabled2, domReference, floating, modal, portalContext, isUntrappedTypeableCombobox, tree, getNodeId, nextFocusableElement, previousFocusableElement, getResolvedInsideElements]); 3859 useIsoLayoutEffect(() => { 3860 if (!open2 || disabled2 || !isHTMLElement(floatingFocusElement)) { 3861 return; 3862 } 3863 closeTypeRef.current = ""; 3864 lastInteractionTypeRef.current = ""; 3865 const doc = ownerDocument(floatingFocusElement); 3866 const previouslyFocusedElement = activeElement(doc); 3867 queueMicrotask(() => { 3868 const initialFocusValueOrFn = initialFocusRef.current; 3869 const resolvedInitialFocus = typeof initialFocusValueOrFn === "function" ? initialFocusValueOrFn(openInteractionTypeRef.current || "") : initialFocusValueOrFn; 3870 if (resolvedInitialFocus === void 0 || resolvedInitialFocus === false) { 3871 return; 3872 } 3873 const focusAlreadyInsideFloatingEl = contains(floatingFocusElement, previouslyFocusedElement); 3874 if (focusAlreadyInsideFloatingEl) { 3875 return; 3876 } 3877 let focusableElements = null; 3878 const getDefaultFocusElement = () => { 3879 if (focusableElements == null) { 3880 focusableElements = getTabbableContent(floatingFocusElement); 3881 } 3882 return focusableElements[0] || floatingFocusElement; 3883 }; 3884 let elToFocus; 3885 if (resolvedInitialFocus === true || resolvedInitialFocus === null) { 3886 elToFocus = getDefaultFocusElement(); 3887 } else { 3888 elToFocus = resolveRef(resolvedInitialFocus); 3889 } 3890 elToFocus = elToFocus || getDefaultFocusElement(); 3891 const hadFocusInside = contains(floatingFocusElement, activeElement(doc)); 3892 const openEvent = dataRef.current.openEvent; 3893 const openedByVirtualPress = openEvent?.type === "mousedown" && isVirtualClick(openEvent); 3894 void enqueueFocus(elToFocus, { 3895 sync: openedByVirtualPress, 3896 preventScroll: elToFocus === floatingFocusElement, 3897 shouldFocus() { 3898 if (!openRef.current) { 3899 return false; 3900 } 3901 if (hadFocusInside) { 3902 return true; 3903 } 3904 const currentActiveElement = activeElement(doc); 3905 const focusMovedInside = currentActiveElement !== elToFocus && contains(floatingFocusElement, currentActiveElement); 3906 return !focusMovedInside; 3907 } 3908 }); 3909 }); 3910 }, [disabled2, open2, floatingFocusElement, getTabbableContent, initialFocusRef, openInteractionTypeRef, openRef, dataRef]); 3911 const pendingReturnFocusRef = React22.useRef(null); 3912 useIsoLayoutEffect(() => { 3913 if (disabled2 || !floatingFocusElement) { 3914 pendingReturnFocusRef.current = null; 3915 return void 0; 3916 } 3917 if (pendingReturnFocusRef.current) { 3918 pendingReturnFocusRef.current.cancelled = true; 3919 pendingReturnFocusRef.current = null; 3920 } 3921 const doc = ownerDocument(floatingFocusElement); 3922 const elementFocusedBeforeOpen = activeElement(doc); 3923 const preferPreviousFocus = openInteractionTypeRef.current == null; 3924 addPreviouslyFocusedElement(elementFocusedBeforeOpen); 3925 function onOpenChangeLocal(details) { 3926 if (!details.open) { 3927 closeTypeRef.current = getEventType(details.nativeEvent, lastInteractionTypeRef.current); 3928 } 3929 if (details.reason === reason_parts_exports.focusOut && details.triggerElement?.hasAttribute(createAttribute("focus-guard")) || details.reason === reason_parts_exports.triggerHover && details.nativeEvent.type === "mouseleave") { 3930 preventReturnFocusRef.current = true; 3931 } 3932 if (details.reason !== reason_parts_exports.outsidePress) { 3933 return; 3934 } 3935 if (details.nested) { 3936 preventReturnFocusRef.current = false; 3937 } else if (isVirtualClick(details.nativeEvent) || isVirtualPointerEvent(details.nativeEvent)) { 3938 preventReturnFocusRef.current = false; 3939 } else { 3940 let isPreventScrollSupported = false; 3941 ownerDocument(floatingFocusElement).createElement("div").focus({ 3942 get preventScroll() { 3943 isPreventScrollSupported = true; 3944 return false; 3945 } 3946 }); 3947 if (isPreventScrollSupported) { 3948 preventReturnFocusRef.current = false; 3949 } else { 3950 preventReturnFocusRef.current = true; 3951 } 3952 } 3953 } 3954 events.on("openchange", onOpenChangeLocal); 3955 function getReturnElement(closeType) { 3956 const returnFocusValueOrFn = returnFocusRef.current; 3957 let resolvedReturnFocusValue = typeof returnFocusValueOrFn === "function" ? returnFocusValueOrFn(closeType) : returnFocusValueOrFn; 3958 if (resolvedReturnFocusValue === void 0 || resolvedReturnFocusValue === false) { 3959 return null; 3960 } 3961 if (resolvedReturnFocusValue === null) { 3962 resolvedReturnFocusValue = true; 3963 } 3964 const referenceReturnElement = domReference?.isConnected ? domReference : null; 3965 const previousReturnElement = elementFocusedBeforeOpen?.isConnected && getNodeName(elementFocusedBeforeOpen) !== "body" ? elementFocusedBeforeOpen : null; 3966 let defaultReturnElement = preferPreviousFocus ? previousReturnElement || referenceReturnElement : referenceReturnElement || previousReturnElement; 3967 if (!defaultReturnElement) { 3968 defaultReturnElement = getPreviouslyFocusedElement() || null; 3969 } 3970 if (typeof resolvedReturnFocusValue === "boolean") { 3971 return defaultReturnElement; 3972 } 3973 return resolveRef(resolvedReturnFocusValue) || defaultReturnElement || null; 3974 } 3975 return () => { 3976 events.off("openchange", onOpenChangeLocal); 3977 const activeEl = activeElement(doc); 3978 const insideElements = getResolvedInsideElements(); 3979 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)); 3980 const returnFocusValueOrFn = returnFocusRef.current; 3981 const closeType = closeTypeRef.current; 3982 const returnElement = getReturnElement(closeType); 3983 const job = { 3984 cancelled: false 3985 }; 3986 pendingReturnFocusRef.current = job; 3987 queueMicrotask(() => { 3988 if (pendingReturnFocusRef.current === job) { 3989 pendingReturnFocusRef.current = null; 3990 } 3991 const tabbableReturnElement = getFirstTabbableElement(returnElement); 3992 const hasExplicitReturnFocus = ( 3993 // eslint-disable-next-line react-hooks/exhaustive-deps 3994 explicitReturnFocusRef.current ?? typeof returnFocusValueOrFn !== "boolean" 3995 ); 3996 if (!job.cancelled && returnFocusValueOrFn && !preventReturnFocusRef.current && isHTMLElement(tabbableReturnElement) && // If the focus moved somewhere else after mount, avoid returning focus 3997 // since it likely entered a different element which should be 3998 // respected: https://github.com/floating-ui/floating-ui/issues/2607 3999 (!hasExplicitReturnFocus && tabbableReturnElement !== activeEl && activeEl !== doc.body ? isFocusInsideFloatingTree : true)) { 4000 const focusOptions = { 4001 preventScroll: true 4002 }; 4003 if (closeType === "keyboard") { 4004 focusOptions.focusVisible = true; 4005 } 4006 tabbableReturnElement.focus(focusOptions); 4007 } 4008 preventReturnFocusRef.current = false; 4009 }); 4010 }; 4011 }, [disabled2, floating, floatingFocusElement, returnFocusRef, explicitReturnFocusRef, openInteractionTypeRef, events, tree, domReference, getNodeId, getResolvedInsideElements]); 4012 useIsoLayoutEffect(() => { 4013 if (!parts_exports.engine.webkit || open2 || !floating) { 4014 return; 4015 } 4016 const activeEl = activeElement(ownerDocument(floating)); 4017 if (!isHTMLElement(activeEl) || !isTypeableElement(activeEl)) { 4018 return; 4019 } 4020 if (contains(floating, activeEl)) { 4021 activeEl.blur(); 4022 } 4023 }, [open2, floating]); 4024 useIsoLayoutEffect(() => { 4025 if (disabled2 || !portalContext) { 4026 return void 0; 4027 } 4028 portalContext.setFocusManagerState({ 4029 modal, 4030 closeOnFocusOut, 4031 open: open2, 4032 onOpenChange: store.setOpen, 4033 domReference 4034 }); 4035 return () => { 4036 portalContext.setFocusManagerState(null); 4037 }; 4038 }, [disabled2, portalContext, modal, open2, store, closeOnFocusOut, domReference]); 4039 useIsoLayoutEffect(() => { 4040 if (disabled2 || !floatingFocusElement) { 4041 return void 0; 4042 } 4043 handleTabIndex(floatingFocusElement); 4044 return () => { 4045 queueMicrotask(clearDisconnectedPreviouslyFocusedElements); 4046 }; 4047 }, [disabled2, floatingFocusElement]); 4048 const shouldRenderGuards = !disabled2 && (modal ? !isUntrappedTypeableCombobox : true) && (isInsidePortal || modal); 4049 return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(React22.Fragment, { 4050 children: [shouldRenderGuards && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(FocusGuard, { 4051 "data-type": "inside", 4052 ref: mergedBeforeGuardRef, 4053 onFocus: (event) => { 4054 if (modal) { 4055 const els = getTabbableContent(); 4056 void enqueueFocus(els[els.length - 1]); 4057 } else if (portalContext?.portalNode) { 4058 preventReturnFocusRef.current = false; 4059 if (isOutsideEvent(event, portalContext.portalNode)) { 4060 const nextTabbable = getNextTabbable(domReference); 4061 nextTabbable?.focus(); 4062 } else { 4063 resolveRef(previousFocusableElement ?? portalContext.beforeOutsideRef)?.focus(); 4064 } 4065 } 4066 } 4067 }), children, shouldRenderGuards && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(FocusGuard, { 4068 "data-type": "inside", 4069 ref: mergedAfterGuardRef, 4070 onFocus: (event) => { 4071 if (modal) { 4072 void enqueueFocus(getTabbableContent()[0]); 4073 } else if (portalContext?.portalNode) { 4074 if (closeOnFocusOut) { 4075 preventReturnFocusRef.current = true; 4076 } 4077 if (isOutsideEvent(event, portalContext.portalNode)) { 4078 const prevTabbable = getPreviousTabbable(domReference); 4079 prevTabbable?.focus(); 4080 } else { 4081 resolveRef(nextFocusableElement ?? portalContext.afterOutsideRef)?.focus(); 4082 } 4083 } 4084 } 4085 })] 4086 }); 4087 } 4088 4089 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useClick.mjs 4090 var React23 = __toESM(require_react(), 1); 4091 function useClick(store, props = {}) { 4092 const { 4093 enabled = true, 4094 event: eventOption = "click", 4095 toggle = true, 4096 ignoreMouse = false, 4097 stickIfOpen = true, 4098 touchOpenDelay = 0, 4099 reason = reason_parts_exports.triggerPress 4100 } = props; 4101 const dataRef = store.context.dataRef; 4102 const pointerTypeRef = React23.useRef(void 0); 4103 const frame = useAnimationFrame(); 4104 const touchOpenTimeout = useTimeout(); 4105 const reference = React23.useMemo(() => { 4106 function setOpenWithTouchDelay(nextOpen, nativeEvent, target, pointerType) { 4107 const details = createChangeEventDetails(reason, nativeEvent, target); 4108 if (nextOpen && pointerType === "touch" && touchOpenDelay > 0) { 4109 touchOpenTimeout.start(touchOpenDelay, () => { 4110 store.setOpen(true, details); 4111 }); 4112 } else { 4113 store.setOpen(nextOpen, details); 4114 } 4115 } 4116 function getNextOpen(open2, currentTarget, isClickLikeOpenEvent) { 4117 const openEvent = dataRef.current.openEvent; 4118 const hasClickedOnInactiveTrigger = store.select("domReferenceElement") !== currentTarget; 4119 if (open2 && hasClickedOnInactiveTrigger) { 4120 return true; 4121 } 4122 if (!open2) { 4123 return true; 4124 } 4125 if (!toggle) { 4126 return true; 4127 } 4128 if (openEvent && (typeof stickIfOpen === "function" ? stickIfOpen() : stickIfOpen)) { 4129 return !isClickLikeOpenEvent(openEvent.type); 4130 } 4131 return false; 4132 } 4133 return { 4134 onPointerDown(event) { 4135 pointerTypeRef.current = isMouseLikePointerType(event.pointerType, true) && isVirtualPointerEvent(event.nativeEvent) ? "virtual" : event.pointerType; 4136 }, 4137 onMouseDown(event) { 4138 const pointerType = pointerTypeRef.current; 4139 const nativeEvent = event.nativeEvent; 4140 const open2 = store.select("open"); 4141 if (event.button !== 0 || eventOption === "click" || isMouseLikePointerType(pointerType, true) && ignoreMouse) { 4142 return; 4143 } 4144 const nextOpen = getNextOpen(open2, event.currentTarget, (openEventType) => openEventType === "click" || openEventType === "mousedown"); 4145 const target = getTarget(nativeEvent); 4146 const isTypeable = isTypeableElement(target); 4147 if (isTypeable || pointerType === "virtual") { 4148 setOpenWithTouchDelay(nextOpen, nativeEvent, isTypeable ? target : event.currentTarget, pointerType); 4149 return; 4150 } 4151 const eventCurrentTarget = event.currentTarget; 4152 frame.request(() => { 4153 setOpenWithTouchDelay(nextOpen, nativeEvent, eventCurrentTarget, pointerType); 4154 }); 4155 }, 4156 onClick(event) { 4157 if (eventOption === "mousedown-only") { 4158 return; 4159 } 4160 const pointerType = pointerTypeRef.current; 4161 if (eventOption === "mousedown" && pointerType) { 4162 pointerTypeRef.current = void 0; 4163 return; 4164 } 4165 if (isMouseLikePointerType(pointerType, true) && ignoreMouse) { 4166 return; 4167 } 4168 const open2 = store.select("open"); 4169 const nextOpen = getNextOpen(open2, event.currentTarget, (openEventType) => openEventType === "click" || openEventType === "mousedown" || openEventType === "keydown" || openEventType === "keyup"); 4170 setOpenWithTouchDelay(nextOpen, event.nativeEvent, event.currentTarget, pointerType); 4171 }, 4172 onKeyDown() { 4173 pointerTypeRef.current = void 0; 4174 } 4175 }; 4176 }, [dataRef, eventOption, ignoreMouse, reason, store, stickIfOpen, toggle, frame, touchOpenTimeout, touchOpenDelay]); 4177 return React23.useMemo(() => enabled ? { 4178 reference 4179 } : EMPTY_OBJECT, [enabled, reference]); 4180 } 4181 4182 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useDismiss.mjs 4183 var React24 = __toESM(require_react(), 1); 4184 function alwaysFalse() { 4185 return false; 4186 } 4187 function normalizeProp(normalizable) { 4188 return { 4189 escapeKey: typeof normalizable === "boolean" ? normalizable : normalizable?.escapeKey ?? false, 4190 outsidePress: typeof normalizable === "boolean" ? normalizable : normalizable?.outsidePress ?? true 4191 }; 4192 } 4193 function useDismiss(store, props = {}) { 4194 const { 4195 enabled = true, 4196 escapeKey: escapeKey2 = true, 4197 outsidePress: outsidePressProp = true, 4198 outsidePressEvent = "sloppy", 4199 referencePress = alwaysFalse, 4200 bubbles, 4201 externalTree 4202 } = props; 4203 const open2 = store.useState("open"); 4204 const floatingElement = store.useState("floatingElement"); 4205 const { 4206 dataRef, 4207 events 4208 } = store.context; 4209 const tree = useFloatingTree(externalTree); 4210 const outsidePressFn = useStableCallback(typeof outsidePressProp === "function" ? outsidePressProp : () => false); 4211 const outsidePress2 = typeof outsidePressProp === "function" ? outsidePressFn : outsidePressProp; 4212 const outsidePressEnabled = outsidePress2 !== false; 4213 const getOutsidePressEventProp = useStableCallback(() => outsidePressEvent); 4214 const { 4215 escapeKey: escapeKeyBubbles, 4216 outsidePress: outsidePressBubbles 4217 } = normalizeProp(bubbles); 4218 const pressStartedInsideRef = React24.useRef(false); 4219 const pressStartPreventedRef = React24.useRef(false); 4220 const suppressNextOutsideClickRef = React24.useRef(false); 4221 const sawPressWhileOpenRef = React24.useRef(false); 4222 const isComposingRef = React24.useRef(false); 4223 const currentPointerTypeRef = React24.useRef(""); 4224 const touchStateRef = React24.useRef(null); 4225 const cancelDismissOnEndTimeout = useTimeout(); 4226 const clearInsideReactTreeTimeout = useTimeout(); 4227 const compositionTimeout = useTimeout(); 4228 const clearInsideReactTree = useStableCallback(() => { 4229 clearInsideReactTreeTimeout.clear(); 4230 dataRef.current.insideReactTree = false; 4231 }); 4232 const hasBlockingChild = useStableCallback((bubbleKey) => { 4233 const nodeId = dataRef.current.floatingContext?.nodeId; 4234 const children = tree ? getNodeChildren(tree.nodesRef.current, nodeId) : []; 4235 return children.some((child) => child.context?.open && !child.context.dataRef.current[bubbleKey]); 4236 }); 4237 const isEventWithinOwnElements = useStableCallback((event) => { 4238 return isEventTargetWithin(event, store.select("floatingElement")) || isEventTargetWithin(event, store.select("domReferenceElement")); 4239 }); 4240 const closeOnReferencePress = useStableCallback((event) => { 4241 if (!referencePress()) { 4242 return; 4243 } 4244 store.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerPress, event.nativeEvent)); 4245 }); 4246 const closeOnEscapeKeyDown = useStableCallback((event) => { 4247 if (!open2 || !enabled || !escapeKey2 || event.key !== "Escape") { 4248 return; 4249 } 4250 const native = isReactEvent(event) ? event.nativeEvent : event; 4251 if (isComposingRef.current || native.isComposing) { 4252 return; 4253 } 4254 if (!escapeKeyBubbles && hasBlockingChild("__escapeKeyBubbles")) { 4255 return; 4256 } 4257 const eventDetails = createChangeEventDetails(reason_parts_exports.escapeKey, native); 4258 store.setOpen(false, eventDetails); 4259 if (!eventDetails.isCanceled) { 4260 event.preventDefault(); 4261 } 4262 if (!escapeKeyBubbles && !eventDetails.isPropagationAllowed) { 4263 event.stopPropagation(); 4264 } 4265 }); 4266 const markInsideReactTree = useStableCallback(() => { 4267 dataRef.current.insideReactTree = true; 4268 clearInsideReactTreeTimeout.start(0, clearInsideReactTree); 4269 }); 4270 const markPressStartedInsideReactTree = useStableCallback((event) => { 4271 if (!open2 || !enabled || event.button !== 0) { 4272 return; 4273 } 4274 const target = getTarget(event.nativeEvent); 4275 if (!contains(store.select("floatingElement"), target)) { 4276 return; 4277 } 4278 if (!pressStartedInsideRef.current) { 4279 pressStartedInsideRef.current = true; 4280 pressStartPreventedRef.current = false; 4281 } 4282 }); 4283 const markInsidePressStartPrevented = useStableCallback((event) => { 4284 if (!open2 || !enabled) { 4285 return; 4286 } 4287 if (!(event.defaultPrevented || event.nativeEvent.defaultPrevented)) { 4288 return; 4289 } 4290 if (pressStartedInsideRef.current) { 4291 pressStartPreventedRef.current = true; 4292 } 4293 }); 4294 React24.useEffect(() => { 4295 function handleOpenChange(details) { 4296 if (!details.open) { 4297 sawPressWhileOpenRef.current = false; 4298 } 4299 } 4300 events.on("openchange", handleOpenChange); 4301 return () => { 4302 events.off("openchange", handleOpenChange); 4303 }; 4304 }, [events]); 4305 React24.useEffect(() => clearInsideReactTree, [clearInsideReactTree]); 4306 React24.useEffect(() => { 4307 if (!open2 || !enabled) { 4308 if (!open2) { 4309 sawPressWhileOpenRef.current = false; 4310 isComposingRef.current = false; 4311 currentPointerTypeRef.current = ""; 4312 touchStateRef.current = null; 4313 } 4314 return clearInsideReactTree; 4315 } 4316 dataRef.current.__escapeKeyBubbles = escapeKeyBubbles; 4317 dataRef.current.__outsidePressBubbles = outsidePressBubbles; 4318 const preventedPressSuppressionTimeout = new Timeout(); 4319 const doc = ownerDocument(floatingElement); 4320 function handleCompositionStart() { 4321 compositionTimeout.clear(); 4322 isComposingRef.current = true; 4323 } 4324 function handleCompositionEnd() { 4325 isComposingRef.current = true; 4326 compositionTimeout.start( 4327 // 0ms or 1ms don't work in Safari. 5ms appears to consistently work. 4328 // Only apply to WebKit for the test to remain 0ms. 4329 parts_exports.engine.webkit ? 5 : 0, 4330 () => { 4331 isComposingRef.current = false; 4332 } 4333 ); 4334 } 4335 function suppressImmediateOutsideClickAfterPreventedStart() { 4336 suppressNextOutsideClickRef.current = true; 4337 preventedPressSuppressionTimeout.start(0, () => { 4338 suppressNextOutsideClickRef.current = false; 4339 }); 4340 } 4341 function resetPressStartState() { 4342 pressStartedInsideRef.current = false; 4343 pressStartPreventedRef.current = false; 4344 } 4345 function getOutsidePressEvent() { 4346 const type = currentPointerTypeRef.current; 4347 const computedType = type === "pen" || !type ? "mouse" : type; 4348 const outsidePressEventValue = getOutsidePressEventProp(); 4349 const resolved = typeof outsidePressEventValue === "function" ? outsidePressEventValue() : outsidePressEventValue; 4350 if (typeof resolved === "string") { 4351 return resolved; 4352 } 4353 return resolved[computedType]; 4354 } 4355 function shouldIgnoreEvent(event) { 4356 const computedOutsidePressEvent = getOutsidePressEvent(); 4357 return computedOutsidePressEvent === "intentional" && event.type !== "click" || computedOutsidePressEvent === "sloppy" && event.type === "click"; 4358 } 4359 function isEventWithinFloatingTree(event) { 4360 const nodeId = dataRef.current.floatingContext?.nodeId; 4361 const targetIsInsideChildren = tree && getNodeChildren(tree.nodesRef.current, nodeId).some((node) => isEventTargetWithin(event, node.context?.elements.floating)); 4362 return isEventWithinOwnElements(event) || targetIsInsideChildren; 4363 } 4364 function closeOnPressOutside(event) { 4365 if (shouldIgnoreEvent(event)) { 4366 if (event.type !== "click" && !isEventWithinOwnElements(event)) { 4367 preventedPressSuppressionTimeout.clear(); 4368 suppressNextOutsideClickRef.current = false; 4369 } 4370 clearInsideReactTree(); 4371 return; 4372 } 4373 if (dataRef.current.insideReactTree) { 4374 clearInsideReactTree(); 4375 return; 4376 } 4377 const target = getTarget(event); 4378 const inertSelector = `[$createAttribute("inert")}]`; 4379 const targetRoot = isElement(target) ? target.getRootNode() : null; 4380 const markers = Array.from((isShadowRoot(targetRoot) ? targetRoot : ownerDocument(store.select("floatingElement"))).querySelectorAll(inertSelector)); 4381 const triggers = store.context.triggerElements; 4382 if (target && (triggers.hasElement(target) || triggers.hasMatchingElement((trigger) => contains(trigger, target)))) { 4383 return; 4384 } 4385 let targetRootAncestor = isElement(target) ? target : null; 4386 while (targetRootAncestor && !isLastTraversableNode(targetRootAncestor)) { 4387 const nextParent = getParentNode(targetRootAncestor); 4388 if (isLastTraversableNode(nextParent) || !isElement(nextParent)) { 4389 break; 4390 } 4391 targetRootAncestor = nextParent; 4392 } 4393 if (markers.length && isElement(target) && !isRootElement(target) && // Clicked on a direct ancestor (e.g. FloatingOverlay). 4394 !contains(target, store.select("floatingElement")) && // If the target root element contains none of the markers, then the 4395 // element was injected after the floating element rendered. 4396 markers.every((marker) => !contains(targetRootAncestor, marker))) { 4397 return; 4398 } 4399 if (isHTMLElement(target) && !("touches" in event)) { 4400 const lastTraversableNode = isLastTraversableNode(target); 4401 const style = getComputedStyle2(target); 4402 const scrollRe = /auto|scroll/; 4403 const isScrollableX = lastTraversableNode || scrollRe.test(style.overflowX); 4404 const isScrollableY = lastTraversableNode || scrollRe.test(style.overflowY); 4405 const canScrollX = isScrollableX && target.clientWidth > 0 && target.scrollWidth > target.clientWidth; 4406 const canScrollY = isScrollableY && target.clientHeight > 0 && target.scrollHeight > target.clientHeight; 4407 const isRTL3 = style.direction === "rtl"; 4408 const pressedVerticalScrollbar = canScrollY && (isRTL3 ? event.offsetX <= target.offsetWidth - target.clientWidth : event.offsetX > target.clientWidth); 4409 const pressedHorizontalScrollbar = canScrollX && event.offsetY > target.clientHeight; 4410 if (pressedVerticalScrollbar || pressedHorizontalScrollbar) { 4411 return; 4412 } 4413 } 4414 if (isEventWithinFloatingTree(event)) { 4415 return; 4416 } 4417 if (getOutsidePressEvent() === "intentional") { 4418 if (event.detail !== 0 && !isVirtualClick(event) && !sawPressWhileOpenRef.current) { 4419 return; 4420 } 4421 if (suppressNextOutsideClickRef.current) { 4422 preventedPressSuppressionTimeout.clear(); 4423 suppressNextOutsideClickRef.current = false; 4424 return; 4425 } 4426 } 4427 if (typeof outsidePress2 === "function" && !outsidePress2(event)) { 4428 return; 4429 } 4430 if (hasBlockingChild("__outsidePressBubbles")) { 4431 return; 4432 } 4433 store.setOpen(false, createChangeEventDetails(reason_parts_exports.outsidePress, event)); 4434 clearInsideReactTree(); 4435 } 4436 function handlePointerDown(event) { 4437 if (getOutsidePressEvent() !== "sloppy" || event.pointerType === "touch" || !store.select("open") || !enabled || isEventWithinOwnElements(event)) { 4438 return; 4439 } 4440 closeOnPressOutside(event); 4441 } 4442 function handleTouchStart(event) { 4443 if (getOutsidePressEvent() !== "sloppy" || !store.select("open") || !enabled || isEventWithinOwnElements(event)) { 4444 return; 4445 } 4446 const touch = event.touches[0]; 4447 if (touch) { 4448 touchStateRef.current = { 4449 startTime: Date.now(), 4450 startX: touch.clientX, 4451 startY: touch.clientY, 4452 dismissOnTouchEnd: false, 4453 dismissOnMouseDown: true 4454 }; 4455 cancelDismissOnEndTimeout.start(1e3, () => { 4456 if (touchStateRef.current) { 4457 touchStateRef.current.dismissOnTouchEnd = false; 4458 touchStateRef.current.dismissOnMouseDown = false; 4459 } 4460 }); 4461 } 4462 } 4463 function addTargetEventListenerOnce(event, listener) { 4464 const target = getTarget(event); 4465 if (!target) { 4466 return; 4467 } 4468 const unsubscribe2 = addEventListener(target, event.type, () => { 4469 listener(event); 4470 unsubscribe2(); 4471 }); 4472 } 4473 function handleTouchStartCapture(event) { 4474 currentPointerTypeRef.current = "touch"; 4475 addTargetEventListenerOnce(event, handleTouchStart); 4476 } 4477 function closeOnPressOutsideCapture(event) { 4478 cancelDismissOnEndTimeout.clear(); 4479 if (event.type === "pointerdown") { 4480 if (event.button === 0) { 4481 sawPressWhileOpenRef.current = true; 4482 } 4483 currentPointerTypeRef.current = event.pointerType; 4484 } 4485 if (event.type === "mousedown" && touchStateRef.current && !touchStateRef.current.dismissOnMouseDown) { 4486 return; 4487 } 4488 addTargetEventListenerOnce(event, (targetEvent) => { 4489 if (targetEvent.type === "pointerdown") { 4490 handlePointerDown(targetEvent); 4491 } else { 4492 closeOnPressOutside(targetEvent); 4493 } 4494 }); 4495 } 4496 function handlePressEndCapture(event) { 4497 if (event.type === "pointercancel") { 4498 sawPressWhileOpenRef.current = false; 4499 } 4500 if (!pressStartedInsideRef.current) { 4501 return; 4502 } 4503 const pressStartedInsideDefaultPrevented = pressStartPreventedRef.current; 4504 resetPressStartState(); 4505 if (getOutsidePressEvent() !== "intentional") { 4506 return; 4507 } 4508 if (event.type === "pointercancel") { 4509 if (pressStartedInsideDefaultPrevented) { 4510 suppressImmediateOutsideClickAfterPreventedStart(); 4511 } 4512 return; 4513 } 4514 if (isEventWithinFloatingTree(event)) { 4515 return; 4516 } 4517 if (pressStartedInsideDefaultPrevented) { 4518 suppressImmediateOutsideClickAfterPreventedStart(); 4519 return; 4520 } 4521 if (typeof outsidePress2 === "function" && !outsidePress2(event)) { 4522 return; 4523 } 4524 preventedPressSuppressionTimeout.clear(); 4525 suppressNextOutsideClickRef.current = true; 4526 clearInsideReactTree(); 4527 } 4528 function handleTouchMove(event) { 4529 if (getOutsidePressEvent() !== "sloppy" || !touchStateRef.current || isEventWithinOwnElements(event)) { 4530 return; 4531 } 4532 const touch = event.touches[0]; 4533 if (!touch) { 4534 return; 4535 } 4536 const deltaX = Math.abs(touch.clientX - touchStateRef.current.startX); 4537 const deltaY = Math.abs(touch.clientY - touchStateRef.current.startY); 4538 const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY); 4539 if (distance > 5) { 4540 touchStateRef.current.dismissOnTouchEnd = true; 4541 } 4542 if (distance > 10) { 4543 closeOnPressOutside(event); 4544 cancelDismissOnEndTimeout.clear(); 4545 touchStateRef.current = null; 4546 } 4547 } 4548 function handleTouchMoveCapture(event) { 4549 addTargetEventListenerOnce(event, handleTouchMove); 4550 } 4551 function handleTouchEnd(event) { 4552 if (getOutsidePressEvent() !== "sloppy" || !touchStateRef.current || isEventWithinOwnElements(event)) { 4553 return; 4554 } 4555 if (touchStateRef.current.dismissOnTouchEnd) { 4556 closeOnPressOutside(event); 4557 } 4558 cancelDismissOnEndTimeout.clear(); 4559 touchStateRef.current = null; 4560 } 4561 function handleTouchEndCapture(event) { 4562 addTargetEventListenerOnce(event, handleTouchEnd); 4563 } 4564 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, { 4565 capture: true, 4566 passive: true 4567 }), addEventListener(doc, "touchmove", handleTouchMoveCapture, { 4568 capture: true, 4569 passive: true 4570 }), addEventListener(doc, "touchend", handleTouchEndCapture, { 4571 capture: true, 4572 passive: true 4573 }))); 4574 return () => { 4575 unsubscribe(); 4576 preventedPressSuppressionTimeout.clear(); 4577 resetPressStartState(); 4578 suppressNextOutsideClickRef.current = false; 4579 }; 4580 }, [dataRef, floatingElement, escapeKey2, outsidePressEnabled, outsidePress2, open2, enabled, escapeKeyBubbles, outsidePressBubbles, closeOnEscapeKeyDown, clearInsideReactTree, getOutsidePressEventProp, hasBlockingChild, isEventWithinOwnElements, tree, store, cancelDismissOnEndTimeout, compositionTimeout]); 4581 const reference = React24.useMemo(() => ({ 4582 onKeyDown: closeOnEscapeKeyDown, 4583 onPointerDown: closeOnReferencePress, 4584 onClick: closeOnReferencePress 4585 }), [closeOnEscapeKeyDown, closeOnReferencePress]); 4586 const floating = React24.useMemo(() => ({ 4587 onKeyDown: closeOnEscapeKeyDown, 4588 // `onMouseDown` may be blocked if `event.preventDefault()` is called in 4589 // `onPointerDown`, such as with <NumberField.ScrubArea>. 4590 // See https://github.com/mui/base-ui/pull/3379 4591 onPointerDown: markInsidePressStartPrevented, 4592 onMouseDown: markInsidePressStartPrevented, 4593 onClickCapture: markInsideReactTree, 4594 onMouseDownCapture(event) { 4595 markInsideReactTree(); 4596 markPressStartedInsideReactTree(event); 4597 }, 4598 onPointerDownCapture(event) { 4599 markInsideReactTree(); 4600 markPressStartedInsideReactTree(event); 4601 }, 4602 onMouseUpCapture: markInsideReactTree, 4603 onTouchEndCapture: markInsideReactTree, 4604 onTouchMoveCapture: markInsideReactTree 4605 }), [closeOnEscapeKeyDown, markInsideReactTree, markPressStartedInsideReactTree, markInsidePressStartPrevented]); 4606 return React24.useMemo(() => enabled ? { 4607 reference, 4608 floating, 4609 trigger: reference 4610 } : {}, [enabled, reference, floating]); 4611 } 4612 4613 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popups/popupStoreUtils.mjs 4614 var React26 = __toESM(require_react(), 1); 4615 var ReactDOM3 = __toESM(require_react_dom(), 1); 4616 4617 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useUnmountAfterClose.mjs 4618 var React25 = __toESM(require_react(), 1); 4619 function useUnmountAfterClose(parameters) { 4620 const { 4621 open: open2, 4622 ref, 4623 preventUnmountOnClose, 4624 setPreventUnmountOnClose: setPreventUnmountOnCloseParam, 4625 onUnmount, 4626 animateInitialOpen 4627 } = parameters; 4628 const setPreventUnmountOnClose = useStableCallback(setPreventUnmountOnCloseParam); 4629 const { 4630 mounted, 4631 setMounted, 4632 transitionStatus 4633 } = useTransitionStatus(open2, false, false, animateInitialOpen); 4634 const preventUnmountingOnClose = open2 ? false : preventUnmountOnClose; 4635 useIsoLayoutEffect(() => { 4636 if (open2) { 4637 setPreventUnmountOnClose(false); 4638 } 4639 }, [open2, setPreventUnmountOnClose]); 4640 const mountedRef = React25.useRef(mounted); 4641 const pendingUnmountRef = React25.useRef(false); 4642 const rerender = useForcedRerendering(); 4643 const unmount = () => { 4644 mountedRef.current = false; 4645 setMounted(false); 4646 onUnmount(); 4647 }; 4648 useIsoLayoutEffect(() => { 4649 mountedRef.current = mounted; 4650 if (pendingUnmountRef.current) { 4651 pendingUnmountRef.current = false; 4652 if (!open2 && mounted) { 4653 unmount(); 4654 } 4655 } 4656 }); 4657 const forceUnmount = useStableCallback(() => { 4658 if (!mountedRef.current) { 4659 return; 4660 } 4661 if (open2) { 4662 pendingUnmountRef.current = true; 4663 rerender(); 4664 return; 4665 } 4666 unmount(); 4667 }); 4668 useOpenChangeComplete({ 4669 enabled: mounted && !open2 && !preventUnmountingOnClose, 4670 open: open2, 4671 ref, 4672 onComplete() { 4673 if (!open2) { 4674 forceUnmount(); 4675 } 4676 } 4677 }); 4678 return { 4679 mounted, 4680 transitionStatus, 4681 preventUnmountingOnClose, 4682 forceUnmount 4683 }; 4684 } 4685 4686 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popups/popupStoreUtils.mjs 4687 var FOCUSABLE_POPUP_PROPS = { 4688 tabIndex: -1, 4689 [FOCUSABLE_ATTRIBUTE]: "" 4690 }; 4691 function attachPreventUnmountOnClose(eventDetails) { 4692 let preventUnmountOnClose = false; 4693 eventDetails.preventUnmountOnClose = () => { 4694 preventUnmountOnClose = true; 4695 }; 4696 return () => preventUnmountOnClose; 4697 } 4698 4699 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popups/popupTriggerMap.mjs 4700 var devElementIdsByMap; 4701 function getDevElementIds(map) { 4702 devElementIdsByMap ??= /* @__PURE__ */ new WeakMap(); 4703 let elementIds = devElementIdsByMap.get(map); 4704 if (!elementIds) { 4705 elementIds = /* @__PURE__ */ new WeakMap(); 4706 devElementIdsByMap.set(map, elementIds); 4707 } 4708 return elementIds; 4709 } 4710 var PopupTriggerMap = class { 4711 idMap = /* @__PURE__ */ new Map(); 4712 /** 4713 * Adds a trigger element with the given ID. 4714 * 4715 * Note: The provided element is assumed to not be registered under multiple IDs. 4716 */ 4717 add(id, element) { 4718 if (true) { 4719 const elementIds = getDevElementIds(this); 4720 const existingId = elementIds.get(element); 4721 if (existingId !== void 0 && existingId !== id) { 4722 throw new Error("Base UI: A trigger element cannot be registered under multiple IDs in PopupTriggerMap."); 4723 } 4724 const previousElement = this.idMap.get(id); 4725 if (previousElement !== void 0 && previousElement !== element) { 4726 elementIds.delete(previousElement); 4727 } 4728 elementIds.set(element, id); 4729 } 4730 this.idMap.set(id, element); 4731 } 4732 /** 4733 * Removes the trigger element with the given ID. 4734 */ 4735 delete(id) { 4736 if (true) { 4737 const element = this.idMap.get(id); 4738 if (element !== void 0) { 4739 devElementIdsByMap?.get(this)?.delete(element); 4740 } 4741 } 4742 this.idMap.delete(id); 4743 } 4744 /** 4745 * Whether the given element is registered as a trigger. 4746 */ 4747 hasElement(element) { 4748 for (const registered of this.idMap.values()) { 4749 if (registered === element) { 4750 return true; 4751 } 4752 } 4753 return false; 4754 } 4755 /** 4756 * Whether there is a registered trigger element matching the given predicate. 4757 */ 4758 hasMatchingElement(predicate) { 4759 for (const element of this.idMap.values()) { 4760 if (predicate(element)) { 4761 return true; 4762 } 4763 } 4764 return false; 4765 } 4766 /** 4767 * Returns the trigger element associated with the given ID, or undefined if no such element exists. 4768 */ 4769 getById(id) { 4770 return this.idMap.get(id); 4771 } 4772 /** 4773 * Returns an iterable of all registered trigger entries, where each entry is a tuple of [id, element]. 4774 */ 4775 entries() { 4776 return this.idMap.entries(); 4777 } 4778 /** 4779 * Returns an iterable of all registered trigger elements. 4780 */ 4781 elements() { 4782 return this.idMap.values(); 4783 } 4784 /** 4785 * Returns the number of registered trigger elements. 4786 */ 4787 get size() { 4788 return this.idMap.size; 4789 } 4790 }; 4791 4792 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/store/useStore.mjs 4793 var React28 = __toESM(require_react(), 1); 4794 var import_shim = __toESM(require_shim(), 1); 4795 var import_with_selector = __toESM(require_with_selector(), 1); 4796 4797 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/fastHooks.mjs 4798 var React27 = __toESM(require_react(), 1); 4799 var hooks = []; 4800 var currentInstance = void 0; 4801 function getInstance() { 4802 return currentInstance; 4803 } 4804 function register(hook) { 4805 hooks.push(hook); 4806 } 4807 4808 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/store/useStore.mjs 4809 var canUseRawUseSyncExternalStore = isReactVersionAtLeast(19); 4810 var useStoreImplementation = canUseRawUseSyncExternalStore ? useStoreFast : useStoreLegacy; 4811 function useStore(store, selector, a1, a2, a3) { 4812 return useStoreImplementation(store, selector, a1, a2, a3); 4813 } 4814 function useStoreR19(store, selector, a1, a2, a3) { 4815 const getSelection = React28.useCallback(() => selector(store.getSnapshot(), a1, a2, a3), [store, selector, a1, a2, a3]); 4816 return (0, import_shim.useSyncExternalStore)(store.subscribe, getSelection, getSelection); 4817 } 4818 register({ 4819 before(instance) { 4820 instance.syncIndex = 0; 4821 if (!instance.didInitialize) { 4822 instance.syncTick = 1; 4823 instance.syncHooks = []; 4824 instance.didChangeStore = true; 4825 instance.getSnapshot = () => { 4826 let didChange2 = false; 4827 for (let i = 0; i < instance.syncHooks.length; i += 1) { 4828 const hook = instance.syncHooks[i]; 4829 const value = hook.selector(hook.store.state, hook.a1, hook.a2, hook.a3); 4830 if (!Object.is(hook.value, value)) { 4831 didChange2 = true; 4832 hook.value = value; 4833 } 4834 } 4835 if (didChange2) { 4836 instance.syncTick += 1; 4837 } 4838 return instance.syncTick; 4839 }; 4840 } 4841 }, 4842 after(instance) { 4843 if (instance.syncHooks.length > 0) { 4844 if (instance.didChangeStore) { 4845 instance.didChangeStore = false; 4846 instance.subscribe = (onStoreChange) => { 4847 const stores = /* @__PURE__ */ new Set(); 4848 for (const hook of instance.syncHooks) { 4849 stores.add(hook.store); 4850 } 4851 const unsubscribes = []; 4852 for (const store of stores) { 4853 unsubscribes.push(store.subscribe(onStoreChange)); 4854 } 4855 return () => { 4856 for (const unsubscribe of unsubscribes) { 4857 unsubscribe(); 4858 } 4859 }; 4860 }; 4861 } 4862 (0, import_shim.useSyncExternalStore)(instance.subscribe, instance.getSnapshot, instance.getSnapshot); 4863 } 4864 } 4865 }); 4866 function useStoreFast(store, selector, a1, a2, a3) { 4867 const instance = getInstance(); 4868 if (!instance) { 4869 return useStoreR19(store, selector, a1, a2, a3); 4870 } 4871 const index2 = instance.syncIndex; 4872 instance.syncIndex += 1; 4873 let hook; 4874 if (!instance.didInitialize) { 4875 hook = { 4876 store, 4877 selector, 4878 a1, 4879 a2, 4880 a3, 4881 value: selector(store.getSnapshot(), a1, a2, a3) 4882 }; 4883 instance.syncHooks.push(hook); 4884 } else { 4885 hook = instance.syncHooks[index2]; 4886 if (hook.store !== store || hook.selector !== selector || !Object.is(hook.a1, a1) || !Object.is(hook.a2, a2) || !Object.is(hook.a3, a3)) { 4887 if (hook.store !== store) { 4888 instance.didChangeStore = true; 4889 } 4890 hook.store = store; 4891 hook.selector = selector; 4892 hook.a1 = a1; 4893 hook.a2 = a2; 4894 hook.a3 = a3; 4895 hook.value = selector(store.getSnapshot(), a1, a2, a3); 4896 } 4897 } 4898 return hook.value; 4899 } 4900 function useStoreLegacy(store, selector, a1, a2, a3) { 4901 return (0, import_with_selector.useSyncExternalStoreWithSelector)(store.subscribe, store.getSnapshot, store.getSnapshot, (state) => selector(state, a1, a2, a3)); 4902 } 4903 4904 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/store/Store.mjs 4905 var Store = class { 4906 /** 4907 * Creates a store with the given initial state, constructing the class it is called on. 4908 * Calling it on a generic base class (e.g. `ReactStore.create(...)`) constructs that 4909 * class but degrades the inferred instance type to `Store`; use `new` there instead. 4910 */ 4911 static create(state) { 4912 return new this(state); 4913 } 4914 /** 4915 * The current state of the store. 4916 * This property is updated immediately when the state changes as a result of calling {@link setState}, {@link update}, or {@link set}. 4917 * 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). 4918 * The values can be used directly (to avoid subscribing to the store) in effects or event handlers. 4919 * 4920 * Do not modify properties in state directly. Instead, use the provided methods to ensure proper state management and listener notification. 4921 */ 4922 // Internal state to handle recursive `setState()` calls 4923 constructor(state) { 4924 this.state = state; 4925 this.listeners = /* @__PURE__ */ new Set(); 4926 this.updateTick = 0; 4927 } 4928 /** 4929 * Registers a listener that will be called whenever the store's state changes. 4930 * 4931 * @param fn The listener function to be called on state changes. 4932 * @returns A function to unsubscribe the listener. 4933 */ 4934 subscribe = (fn) => { 4935 this.listeners.add(fn); 4936 return () => { 4937 this.listeners.delete(fn); 4938 }; 4939 }; 4940 /** 4941 * Returns the current state of the store. 4942 */ 4943 getSnapshot = () => { 4944 return this.state; 4945 }; 4946 /** 4947 * Updates the entire store's state and notifies all registered listeners. 4948 * 4949 * @param newState The new state to set for the store. 4950 */ 4951 setState(newState) { 4952 if (this.state === newState) { 4953 return; 4954 } 4955 this.state = newState; 4956 this.updateTick += 1; 4957 const currentTick = this.updateTick; 4958 for (const listener of this.listeners) { 4959 if (currentTick !== this.updateTick) { 4960 return; 4961 } 4962 listener(newState); 4963 } 4964 } 4965 /** 4966 * Merges the provided changes into the current state and notifies listeners if there are changes. 4967 * Each value must match its state key. Pass an exact known subset rather than a broad 4968 * `Partial<State>`, which may contain `undefined` for required state fields. 4969 * 4970 * @param changes An object containing the changes to apply to the current state. 4971 */ 4972 update(changes) { 4973 for (const key in changes) { 4974 if (!Object.is(this.state[key], changes[key])) { 4975 this.setState({ 4976 ...this.state, 4977 ...changes 4978 }); 4979 return; 4980 } 4981 } 4982 } 4983 /** 4984 * Sets a specific key in the store's state to a new value and notifies listeners if the value has changed. 4985 * 4986 * @param key The key in the store's state to update. 4987 * @param value The new value to set for the specified key. 4988 */ 4989 set(key, value) { 4990 if (!Object.is(this.state[key], value)) { 4991 this.setState({ 4992 ...this.state, 4993 [key]: value 4994 }); 4995 } 4996 } 4997 /** 4998 * Gives the state a new reference and updates all registered listeners. 4999 */ 5000 notifyAll() { 5001 const newState = { 5002 ...this.state 5003 }; 5004 this.setState(newState); 5005 } 5006 use(selector, a1, a2, a3) { 5007 return useStore(this, selector, a1, a2, a3); 5008 } 5009 }; 5010 5011 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/store/ReactStore.mjs 5012 var React29 = __toESM(require_react(), 1); 5013 var ReactStore = class extends Store { 5014 /** 5015 * Creates a new ReactStore instance. 5016 * 5017 * @param state Initial state of the store. 5018 * @param context Non-reactive context values. 5019 * @param selectors Optional selectors for use with `useState`. 5020 */ 5021 constructor(state, context = {}, selectors3) { 5022 super(state); 5023 this.context = context; 5024 this.selectors = selectors3; 5025 } 5026 /** 5027 * Non-reactive values such as refs, callbacks, etc. 5028 */ 5029 /** 5030 * Synchronizes a single external value into the store. 5031 * 5032 * Note that the while the value in `state` is updated immediately, the value returned 5033 * by `useState` is updated before the next render (similarly to React's `useState`). 5034 */ 5035 useSyncedValue(key, value) { 5036 React29.useDebugValue(key); 5037 const store = this; 5038 useIsoLayoutEffect(() => { 5039 if (store.state[key] !== value) { 5040 store.set(key, value); 5041 } 5042 }, [store, key, value]); 5043 } 5044 /** 5045 * Synchronizes a single external value into the store and 5046 * cleans it up (sets to `undefined`) on unmount. 5047 * 5048 * Note that the while the value in `state` is updated immediately, the value returned 5049 * by `useState` is updated before the next render (similarly to React's `useState`). 5050 */ 5051 useSyncedValueWithCleanup(key, value) { 5052 const store = this; 5053 useIsoLayoutEffect(() => { 5054 if (store.state[key] !== value) { 5055 store.set(key, value); 5056 } 5057 return () => { 5058 store.set(key, void 0); 5059 }; 5060 }, [store, key, value]); 5061 } 5062 /** 5063 * Synchronizes multiple external values into the store. 5064 * Each value must match its state key. Pass an exact known subset rather than a broad 5065 * `Partial<State>`, which may contain `undefined` for required state fields. 5066 * 5067 * Note that the while the values in `state` are updated immediately, the values returned 5068 * by `useState` are updated before the next render (similarly to React's `useState`). 5069 * 5070 * @param statePart An exact subset of state fields to synchronize. Unknown keys are not accepted. 5071 */ 5072 useSyncedValues(statePart) { 5073 const store = this; 5074 if (true) { 5075 React29.useDebugValue(statePart, (p) => Object.keys(p)); 5076 const keys = React29.useRef(Object.keys(statePart)).current; 5077 const nextKeys = Object.keys(statePart); 5078 if (keys.length !== nextKeys.length || keys.some((key, index2) => key !== nextKeys[index2])) { 5079 console.error("ReactStore.useSyncedValues expects the same prop keys on every render. Keys should be stable."); 5080 } 5081 } 5082 const dependencies = Object.values(statePart); 5083 useIsoLayoutEffect(() => { 5084 store.update(statePart); 5085 }, [store, ...dependencies]); 5086 } 5087 /** 5088 * Registers a controllable prop pair (`controlled`, `defaultValue`) for a specific key. If `controlled` 5089 * is non-undefined, the store's state at `key` is updated to match `controlled`. 5090 */ 5091 useControlledProp(key, controlled) { 5092 React29.useDebugValue(key); 5093 const store = this; 5094 const isControlled = controlled !== void 0; 5095 useIsoLayoutEffect(() => { 5096 if (isControlled && !Object.is(store.state[key], controlled)) { 5097 store.setState({ 5098 ...store.state, 5099 [key]: controlled 5100 }); 5101 } 5102 }, [store, key, controlled, isControlled]); 5103 if (true) { 5104 const cache = this.controlledValues ??= /* @__PURE__ */ new Map(); 5105 if (!cache.has(key)) { 5106 cache.set(key, isControlled); 5107 } 5108 const previouslyControlled = cache.get(key); 5109 if (previouslyControlled !== void 0 && previouslyControlled !== isControlled) { 5110 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).`); 5111 } 5112 } 5113 } 5114 /** Gets the current value from the store using a selector with the provided key. 5115 * 5116 * @param key Key of the selector to use. 5117 */ 5118 select(key, a1, a2, a3) { 5119 const selector = this.selectors[key]; 5120 return selector(this.state, a1, a2, a3); 5121 } 5122 /** 5123 * Returns a value from the store's state using a selector function. 5124 * Used to subscribe to specific parts of the state. 5125 * This methods causes a rerender whenever the selected state changes. 5126 * 5127 * @param key Key of the selector to use. 5128 */ 5129 useState(key, a1, a2, a3) { 5130 React29.useDebugValue(key); 5131 return useStore(this, this.selectors[key], a1, a2, a3); 5132 } 5133 /** 5134 * Wraps a function with `useStableCallback` to ensure it has a stable reference 5135 * and assigns it to the context. 5136 * 5137 * @param key Key of the event callback. Must be a function in the context. 5138 * @param fn Function to assign. 5139 */ 5140 useContextCallback(key, fn) { 5141 React29.useDebugValue(key); 5142 const stableFunction = useStableCallback(fn ?? NOOP); 5143 this.context[key] = stableFunction; 5144 } 5145 /** 5146 * Returns a stable setter function for a specific key in the store's state. 5147 * It's commonly used to pass as a ref callback to React elements. 5148 * 5149 * @param key Key of the state to set. 5150 */ 5151 useStateSetter(key) { 5152 const ref = React29.useRef(void 0); 5153 if (ref.current === void 0) { 5154 ref.current = (value) => { 5155 this.set(key, value); 5156 }; 5157 } 5158 return ref.current; 5159 } 5160 /** 5161 * Observes changes derived from the store's selectors and calls the listener when the selected value changes. 5162 * 5163 * @param key Key of the selector to observe. 5164 * @param listener Listener function called when the selector result changes. 5165 */ 5166 observe(selector, listener) { 5167 let selectFn; 5168 if (typeof selector === "function") { 5169 selectFn = selector; 5170 } else { 5171 selectFn = this.selectors[selector]; 5172 } 5173 let prevValue = selectFn(this.state); 5174 listener(prevValue, prevValue, this); 5175 return this.subscribe((nextState) => { 5176 const nextValue = selectFn(nextState); 5177 if (!Object.is(prevValue, nextValue)) { 5178 const oldValue = prevValue; 5179 prevValue = nextValue; 5180 listener(nextValue, oldValue, this); 5181 } 5182 }); 5183 } 5184 }; 5185 5186 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingRootStore.mjs 5187 var selectors = { 5188 open: (state) => state.open, 5189 transitionStatus: (state) => state.transitionStatus, 5190 domReferenceElement: (state) => state.domReferenceElement, 5191 referenceElement: (state) => state.positionReference ?? state.referenceElement, 5192 floatingElement: (state) => state.floatingElement, 5193 floatingId: (state) => state.floatingId 5194 }; 5195 var FloatingRootStore = class extends ReactStore { 5196 constructor(options) { 5197 const { 5198 syncOnly, 5199 nested, 5200 onOpenChange, 5201 triggerElements, 5202 ...initialState 5203 } = options; 5204 super({ 5205 ...initialState, 5206 positionReference: initialState.referenceElement, 5207 domReferenceElement: initialState.referenceElement 5208 }, { 5209 onOpenChange, 5210 dataRef: { 5211 current: {} 5212 }, 5213 events: createEventEmitter(), 5214 nested, 5215 triggerElements 5216 }, selectors); 5217 this.syncOnly = syncOnly; 5218 } 5219 /** 5220 * Syncs the event used by hover logic to distinguish hover-open from click-like interaction. 5221 */ 5222 syncOpenEvent = (newOpen, event) => { 5223 if (!newOpen || !this.state.open || // Prevent a pending hover-open from overwriting a click-open event, while allowing 5224 // click events to upgrade a hover-open. 5225 event != null && isClickLikeEvent(event)) { 5226 this.context.dataRef.current.openEvent = newOpen ? event : void 0; 5227 } 5228 }; 5229 /** 5230 * Runs the root-owned side effects for an open state change. 5231 */ 5232 dispatchOpenChange = (newOpen, eventDetails) => { 5233 this.syncOpenEvent(newOpen, eventDetails.event); 5234 const details = { 5235 open: newOpen, 5236 reason: eventDetails.reason, 5237 nativeEvent: eventDetails.event, 5238 nested: this.context.nested, 5239 triggerElement: eventDetails.trigger 5240 }; 5241 this.context.events.emit("openchange", details); 5242 }; 5243 /** 5244 * Emits the `openchange` event through the internal event emitter and calls the `onOpenChange` handler with the provided arguments. 5245 * 5246 * @param newOpen The new open state. 5247 * @param eventDetails Details about the event that triggered the open state change. 5248 */ 5249 setOpen = (newOpen, eventDetails) => { 5250 if (this.syncOnly) { 5251 this.context.onOpenChange?.(newOpen, eventDetails); 5252 return; 5253 } 5254 this.dispatchOpenChange(newOpen, eventDetails); 5255 this.context.onOpenChange?.(newOpen, eventDetails); 5256 }; 5257 }; 5258 5259 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useFloatingRootContext.mjs 5260 function useFloatingRootContext(options) { 5261 const { 5262 open: open2 = false, 5263 onOpenChange, 5264 elements = {} 5265 } = options; 5266 const floatingId = useId(); 5267 const nested = useFloatingParentNodeId() != null; 5268 if (true) { 5269 const optionDomReference = elements.reference; 5270 if (optionDomReference && !isElement(optionDomReference)) { 5271 console.error("Cannot pass a virtual element to the `elements.reference` option,", "as it must be a real DOM element. Use `context.setPositionReference()`", "instead."); 5272 } 5273 } 5274 const store = useRefWithInit(() => new FloatingRootStore({ 5275 open: open2, 5276 transitionStatus: void 0, 5277 onOpenChange, 5278 referenceElement: elements.reference ?? null, 5279 floatingElement: elements.floating ?? null, 5280 triggerElements: new PopupTriggerMap(), 5281 floatingId, 5282 syncOnly: false, 5283 nested 5284 })).current; 5285 useIsoLayoutEffect(() => { 5286 const valuesToSync = { 5287 open: open2, 5288 floatingId 5289 }; 5290 if (elements.reference !== void 0) { 5291 valuesToSync.referenceElement = elements.reference; 5292 valuesToSync.domReferenceElement = isElement(elements.reference) ? elements.reference : null; 5293 } 5294 if (elements.floating !== void 0) { 5295 valuesToSync.floatingElement = elements.floating; 5296 } 5297 store.update(valuesToSync); 5298 }, [open2, floatingId, elements.reference, elements.floating, store]); 5299 store.context.onOpenChange = onOpenChange; 5300 store.context.nested = nested; 5301 return store; 5302 } 5303 5304 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useListNavigation.mjs 5305 var React30 = __toESM(require_react(), 1); 5306 function isStationaryWebKitPointer(event) { 5307 return parts_exports.engine.webkit && event.movementX === 0 && event.movementY === 0; 5308 } 5309 function doSwitch(orientation, vertical, horizontal) { 5310 switch (orientation) { 5311 case "vertical": 5312 return vertical; 5313 case "horizontal": 5314 return horizontal; 5315 default: 5316 return vertical || horizontal; 5317 } 5318 } 5319 function isMainOrientationKey(key, orientation) { 5320 const vertical = key === ARROW_UP || key === ARROW_DOWN; 5321 const horizontal = key === ARROW_LEFT || key === ARROW_RIGHT; 5322 return doSwitch(orientation, vertical, horizontal); 5323 } 5324 function isMainOrientationToEndKey(key, orientation, rtl) { 5325 const vertical = key === ARROW_DOWN; 5326 const horizontal = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT; 5327 return doSwitch(orientation, vertical, horizontal) || key === "Enter" || key === " " || key === ""; 5328 } 5329 function isCrossOrientationOpenKey(key, orientation, rtl) { 5330 const vertical = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT; 5331 const horizontal = key === ARROW_DOWN; 5332 return doSwitch(orientation, vertical, horizontal); 5333 } 5334 function isCrossOrientationCloseKey(key, orientation, rtl, grid) { 5335 const vertical = rtl ? key === ARROW_RIGHT : key === ARROW_LEFT; 5336 const horizontal = key === ARROW_UP; 5337 if (orientation === "both" || orientation === "horizontal" && grid) { 5338 return key === "Escape"; 5339 } 5340 return doSwitch(orientation, vertical, horizontal); 5341 } 5342 function useListNavigation(store, props) { 5343 const { 5344 listRef, 5345 activeIndex, 5346 onNavigate: onNavigateProp = () => { 5347 }, 5348 enabled = true, 5349 selectedIndex = null, 5350 allowEscape = false, 5351 loopFocus = false, 5352 nested = false, 5353 rtl = false, 5354 virtual = false, 5355 focusItemOnOpen = "auto", 5356 focusItemOnHover = true, 5357 openOnArrowKeyDown = true, 5358 disabledIndices = void 0, 5359 orientation = "vertical", 5360 triggerOrientation = orientation, 5361 parentOrientation, 5362 id, 5363 resetOnPointerLeave = true, 5364 externalTree, 5365 nestedReturnFocusRef, 5366 grid: navigateGrid 5367 } = props; 5368 const isGrid = navigateGrid != null; 5369 if (true) { 5370 if (allowEscape) { 5371 if (!loopFocus) { 5372 console.warn("`useListNavigation` looping must be enabled to allow escaping."); 5373 } 5374 if (!virtual) { 5375 console.warn("`useListNavigation` must be virtual to allow escaping."); 5376 } 5377 } 5378 if (orientation === "vertical" && isGrid) { 5379 console.warn("In grid list navigation mode, the `orientation` should", 'be either "horizontal" or "both".'); 5380 } 5381 } 5382 const open2 = store.useState("open"); 5383 const floatingElement = store.useState("floatingElement"); 5384 const domReferenceElement = store.useState("domReferenceElement"); 5385 const dataRef = store.context.dataRef; 5386 const floatingFocusElement = getFloatingFocusElement(floatingElement); 5387 const typeableComboboxReference = isTypeableCombobox(domReferenceElement); 5388 const floatingFocusElementRef = useValueAsRef(floatingFocusElement); 5389 const parentId = useFloatingParentNodeId(); 5390 const tree = useFloatingTree(externalTree); 5391 const focusItemOnOpenRef = React30.useRef(focusItemOnOpen); 5392 const indexRef = React30.useRef(selectedIndex ?? -1); 5393 const keyRef = React30.useRef(null); 5394 const isPointerModalityRef = React30.useRef(true); 5395 const onNavigate = useStableCallback((event) => { 5396 onNavigateProp(indexRef.current === -1 ? null : indexRef.current, event); 5397 }); 5398 const previousMountedRef = React30.useRef(!!floatingElement); 5399 const previousOpenRef = React30.useRef(open2); 5400 const forceSyncFocusRef = React30.useRef(false); 5401 const forceScrollIntoViewRef = React30.useRef(false); 5402 const cancelQueuedFocusRef = React30.useRef(null); 5403 const disabledIndicesRef = useValueAsRef(disabledIndices); 5404 const latestOpenRef = useValueAsRef(open2); 5405 const selectedIndexRef = useValueAsRef(selectedIndex); 5406 const resetOnPointerLeaveRef = useValueAsRef(resetOnPointerLeave); 5407 const focusFrame = useAnimationFrame(); 5408 const waitForListPopulatedFrame = useAnimationFrame(); 5409 const focusItem = useStableCallback(() => { 5410 focusFrame.cancel(); 5411 function runFocus(item2) { 5412 if (!virtual) { 5413 cancelQueuedFocusRef.current = enqueueFocus(item2, { 5414 sync: forceSyncFocusRef.current, 5415 preventScroll: true 5416 }); 5417 } 5418 } 5419 const initialItem = listRef.current[indexRef.current]; 5420 const forceScrollIntoView = forceScrollIntoViewRef.current; 5421 if (initialItem) { 5422 runFocus(initialItem); 5423 } 5424 const scheduler2 = forceSyncFocusRef.current ? (callback) => callback() : (callback) => focusFrame.request(callback); 5425 scheduler2(() => { 5426 const waitedItem = listRef.current[indexRef.current] || initialItem; 5427 if (!waitedItem) { 5428 return; 5429 } 5430 if (!initialItem) { 5431 runFocus(waitedItem); 5432 } 5433 const shouldScrollIntoView = ( 5434 // eslint-disable-next-line @typescript-eslint/no-use-before-define 5435 item && (forceScrollIntoView || !isPointerModalityRef.current) 5436 ); 5437 if (shouldScrollIntoView) { 5438 waitedItem.scrollIntoView?.({ 5439 block: "nearest", 5440 inline: "nearest" 5441 }); 5442 } 5443 }); 5444 }); 5445 useIsoLayoutEffect(() => { 5446 dataRef.current.orientation = orientation; 5447 }, [dataRef, orientation]); 5448 useIsoLayoutEffect(() => { 5449 if (!open2) { 5450 keyRef.current = null; 5451 } 5452 if (!open2 || focusItemOnOpen !== "auto") { 5453 focusItemOnOpenRef.current = focusItemOnOpen; 5454 } 5455 }, [open2, focusItemOnOpen]); 5456 useIsoLayoutEffect(() => { 5457 if (!enabled) { 5458 return; 5459 } 5460 if (open2 && floatingElement) { 5461 indexRef.current = selectedIndex ?? -1; 5462 if (focusItemOnOpenRef.current && selectedIndex != null) { 5463 forceScrollIntoViewRef.current = true; 5464 onNavigate(); 5465 } 5466 } else if (previousMountedRef.current) { 5467 indexRef.current = -1; 5468 onNavigate(); 5469 } 5470 }, [enabled, open2, floatingElement, selectedIndex, onNavigate]); 5471 useIsoLayoutEffect(() => { 5472 if (!enabled) { 5473 return; 5474 } 5475 if (!open2) { 5476 forceSyncFocusRef.current = false; 5477 return; 5478 } 5479 if (!floatingElement) { 5480 return; 5481 } 5482 if (activeIndex == null) { 5483 forceSyncFocusRef.current = false; 5484 if (selectedIndexRef.current != null) { 5485 return; 5486 } 5487 if (previousMountedRef.current) { 5488 indexRef.current = -1; 5489 focusItem(); 5490 } 5491 if ((!previousOpenRef.current || !previousMountedRef.current) && focusItemOnOpenRef.current && (keyRef.current != null || focusItemOnOpenRef.current === true && keyRef.current == null)) { 5492 let runs = 0; 5493 const waitForListPopulated = () => { 5494 if (listRef.current[0] == null) { 5495 if (runs < 2) { 5496 const scheduler2 = runs ? (callback) => waitForListPopulatedFrame.request(callback) : queueMicrotask; 5497 scheduler2(waitForListPopulated); 5498 } 5499 runs += 1; 5500 } else { 5501 indexRef.current = keyRef.current == null || isMainOrientationToEndKey(keyRef.current, triggerOrientation, rtl) || nested ? getMinListIndex(listRef) : getMaxListIndex(listRef); 5502 keyRef.current = null; 5503 onNavigate(); 5504 } 5505 }; 5506 waitForListPopulated(); 5507 } 5508 } else if (!isIndexOutOfListBounds(listRef.current, activeIndex)) { 5509 indexRef.current = activeIndex; 5510 focusItem(); 5511 forceScrollIntoViewRef.current = false; 5512 } 5513 }, [enabled, open2, floatingElement, activeIndex, selectedIndexRef, nested, listRef, triggerOrientation, rtl, onNavigate, focusItem, waitForListPopulatedFrame]); 5514 useIsoLayoutEffect(() => { 5515 if (!enabled || floatingElement || !tree || virtual || !previousMountedRef.current) { 5516 return; 5517 } 5518 const nodes = tree.nodesRef.current; 5519 const parent = nodes.find((node) => node.id === parentId)?.context?.elements.floating; 5520 const activeEl = activeElement(ownerDocument(domReferenceElement ?? parent ?? null)); 5521 const treeContainsActiveEl = nodes.some((node) => node.context && contains(node.context.elements.floating, activeEl)); 5522 if (parent && !treeContainsActiveEl && isPointerModalityRef.current) { 5523 parent.focus({ 5524 preventScroll: true 5525 }); 5526 } 5527 }, [enabled, floatingElement, domReferenceElement, tree, parentId, virtual]); 5528 useIsoLayoutEffect(() => { 5529 previousOpenRef.current = open2; 5530 previousMountedRef.current = !!floatingElement; 5531 }); 5532 const hasActiveIndex = activeIndex != null; 5533 const syncCurrentTarget = useStableCallback((event) => { 5534 if (!latestOpenRef.current) { 5535 return; 5536 } 5537 const index2 = listRef.current.indexOf(event.currentTarget); 5538 if (index2 !== -1 && (indexRef.current !== index2 || activeIndex !== index2)) { 5539 indexRef.current = index2; 5540 onNavigate(event); 5541 } 5542 }); 5543 const getParentOrientation = useStableCallback(() => { 5544 return parentOrientation ?? tree?.nodesRef.current.find((node) => node.id === parentId)?.context?.dataRef?.current.orientation; 5545 }); 5546 const getMinEnabledIndex = useStableCallback(() => { 5547 return getMinListIndex(listRef, disabledIndicesRef.current); 5548 }); 5549 const commonOnKeyDown = useStableCallback((event) => { 5550 isPointerModalityRef.current = false; 5551 forceSyncFocusRef.current = true; 5552 if (event.which === 229) { 5553 return; 5554 } 5555 if (!latestOpenRef.current && event.currentTarget === floatingFocusElementRef.current) { 5556 return; 5557 } 5558 if (nested && isCrossOrientationCloseKey(event.key, orientation, rtl, isGrid)) { 5559 if (!isMainOrientationKey(event.key, getParentOrientation())) { 5560 stopEvent(event); 5561 } 5562 store.setOpen(false, createChangeEventDetails(reason_parts_exports.listNavigation, event.nativeEvent)); 5563 const returnElement = nestedReturnFocusRef?.current ?? domReferenceElement; 5564 if (isHTMLElement(returnElement)) { 5565 returnElement.focus(); 5566 } 5567 return; 5568 } 5569 if (activeIndex != null && activeIndex !== indexRef.current && !isIndexOutOfListBounds(listRef.current, activeIndex)) { 5570 indexRef.current = activeIndex; 5571 } 5572 const currentIndex = indexRef.current; 5573 const minIndex = getMinListIndex(listRef, disabledIndices); 5574 const maxIndex = getMaxListIndex(listRef, disabledIndices); 5575 if (!typeableComboboxReference) { 5576 if (event.key === "Home") { 5577 stopEvent(event); 5578 indexRef.current = minIndex; 5579 onNavigate(event); 5580 } 5581 if (event.key === "End") { 5582 stopEvent(event); 5583 indexRef.current = maxIndex; 5584 onNavigate(event); 5585 } 5586 } 5587 if (navigateGrid != null) { 5588 const index2 = navigateGrid(event, indexRef.current, listRef, orientation, loopFocus, rtl, disabledIndices, minIndex, maxIndex); 5589 if (index2 != null && index2 !== indexRef.current) { 5590 indexRef.current = index2; 5591 onNavigate(event); 5592 } 5593 if (orientation === "both") { 5594 return; 5595 } 5596 } 5597 if (isMainOrientationKey(event.key, orientation)) { 5598 stopEvent(event); 5599 const focusedElement = activeElement(event.currentTarget.ownerDocument); 5600 if (open2 && !virtual && contains(event.currentTarget, focusedElement) && !listRef.current.some((item2) => item2 != null && contains(item2, focusedElement))) { 5601 indexRef.current = isMainOrientationToEndKey(event.key, orientation, rtl) ? minIndex : maxIndex; 5602 onNavigate(event); 5603 if (activeIndex === indexRef.current) { 5604 focusItem(); 5605 } 5606 return; 5607 } 5608 const { 5609 index: index2, 5610 wrapped 5611 } = getNextListIndex(listRef.current, currentIndex, { 5612 decrement: !isMainOrientationToEndKey(event.key, orientation, rtl), 5613 loopFocus, 5614 allowEscape, 5615 disabledIndices, 5616 minIndex, 5617 maxIndex 5618 }); 5619 if (wrapped) { 5620 forceSyncFocusRef.current = false; 5621 } 5622 indexRef.current = index2; 5623 onNavigate(event); 5624 } 5625 }); 5626 const item = React30.useMemo(() => { 5627 const itemProps = { 5628 onFocus(event) { 5629 forceSyncFocusRef.current = true; 5630 syncCurrentTarget(event); 5631 }, 5632 onClick({ 5633 currentTarget 5634 }) { 5635 if (!virtual) { 5636 currentTarget.focus({ 5637 preventScroll: true 5638 }); 5639 } 5640 }, 5641 onMouseMove(event) { 5642 if (isStationaryWebKitPointer(event)) { 5643 return; 5644 } 5645 forceSyncFocusRef.current = true; 5646 forceScrollIntoViewRef.current = false; 5647 if (focusItemOnHover) { 5648 syncCurrentTarget(event); 5649 } 5650 }, 5651 onPointerLeave(event) { 5652 if (!latestOpenRef.current || !isPointerModalityRef.current || event.pointerType === "touch") { 5653 return; 5654 } 5655 forceSyncFocusRef.current = true; 5656 const relatedTarget = event.relatedTarget; 5657 if (!focusItemOnHover || listRef.current.includes(relatedTarget)) { 5658 return; 5659 } 5660 if (!resetOnPointerLeaveRef.current) { 5661 return; 5662 } 5663 cancelQueuedFocusRef.current?.(); 5664 cancelQueuedFocusRef.current = null; 5665 indexRef.current = -1; 5666 onNavigate(event); 5667 if (!virtual) { 5668 const floatingFocusEl = floatingFocusElementRef.current; 5669 const activeEl = activeElement(ownerDocument(floatingFocusEl)); 5670 if (floatingFocusEl && contains(floatingFocusEl, activeEl)) { 5671 floatingFocusEl.focus({ 5672 preventScroll: true 5673 }); 5674 } 5675 } 5676 } 5677 }; 5678 return itemProps; 5679 }, [syncCurrentTarget, latestOpenRef, floatingFocusElementRef, focusItemOnHover, listRef, onNavigate, resetOnPointerLeaveRef, virtual]); 5680 const ariaActiveDescendantProp = React30.useMemo(() => { 5681 return virtual && open2 && hasActiveIndex && { 5682 "aria-activedescendant": `$id}-$activeIndex}` 5683 }; 5684 }, [virtual, open2, hasActiveIndex, id, activeIndex]); 5685 const floating = React30.useMemo(() => { 5686 return { 5687 ...!typeableComboboxReference ? ariaActiveDescendantProp : {}, 5688 onKeyDown(event) { 5689 if (event.key === "Tab" && event.shiftKey && open2 && !virtual) { 5690 const target = getTarget(event.nativeEvent); 5691 if (target && !contains(floatingFocusElementRef.current, target)) { 5692 return; 5693 } 5694 stopEvent(event); 5695 const details = createChangeEventDetails(reason_parts_exports.focusOut, event.nativeEvent); 5696 store.setOpen(false, details); 5697 const returnElement = nestedReturnFocusRef?.current ?? domReferenceElement; 5698 if (!details.isCanceled && isHTMLElement(returnElement)) { 5699 returnElement.focus(); 5700 } 5701 return; 5702 } 5703 commonOnKeyDown(event); 5704 }, 5705 onPointerMove(event) { 5706 if (isStationaryWebKitPointer(event)) { 5707 return; 5708 } 5709 isPointerModalityRef.current = true; 5710 } 5711 }; 5712 }, [ariaActiveDescendantProp, commonOnKeyDown, floatingFocusElementRef, typeableComboboxReference, store, open2, virtual, domReferenceElement, nestedReturnFocusRef]); 5713 const trigger = React30.useMemo(() => { 5714 function openOnNavigationKeyDown(event) { 5715 store.setOpen(true, createChangeEventDetails(reason_parts_exports.listNavigation, event.nativeEvent, event.currentTarget)); 5716 } 5717 function checkVirtualMouse(event) { 5718 if (focusItemOnOpen === "auto" && isVirtualClick(event.nativeEvent)) { 5719 focusItemOnOpenRef.current = !virtual; 5720 } 5721 } 5722 function checkVirtualPointer(event) { 5723 focusItemOnOpenRef.current = focusItemOnOpen; 5724 if (focusItemOnOpen === "auto" && isVirtualPointerEvent(event.nativeEvent)) { 5725 focusItemOnOpenRef.current = true; 5726 } 5727 } 5728 return { 5729 onKeyDown(event) { 5730 const currentOpen = store.select("open"); 5731 isPointerModalityRef.current = false; 5732 const isArrowKey = event.key.startsWith("Arrow"); 5733 const isParentCrossOpenKey = isCrossOrientationOpenKey(event.key, getParentOrientation(), rtl); 5734 const isMainKey = isMainOrientationKey(event.key, currentOpen ? orientation : triggerOrientation); 5735 const isNavigationKey = (nested ? isParentCrossOpenKey : isMainKey) || event.key === "Enter" || event.key.trim() === ""; 5736 if (virtual && currentOpen && (!nested || isTypeableElement(event.currentTarget))) { 5737 return commonOnKeyDown(event); 5738 } 5739 if (!currentOpen && !openOnArrowKeyDown && isArrowKey) { 5740 return void 0; 5741 } 5742 if (isNavigationKey) { 5743 const isParentMainKey = isMainOrientationKey(event.key, getParentOrientation()); 5744 keyRef.current = nested && isParentMainKey ? null : event.key; 5745 } 5746 if (nested) { 5747 if (isParentCrossOpenKey) { 5748 stopEvent(event); 5749 if (currentOpen) { 5750 indexRef.current = getMinEnabledIndex(); 5751 onNavigate(event); 5752 if (virtual) { 5753 floatingFocusElementRef.current?.focus(); 5754 } 5755 } else { 5756 openOnNavigationKeyDown(event); 5757 } 5758 } 5759 return void 0; 5760 } 5761 if (isMainKey) { 5762 if (selectedIndexRef.current != null) { 5763 indexRef.current = selectedIndexRef.current; 5764 } 5765 stopEvent(event); 5766 if (!currentOpen && openOnArrowKeyDown) { 5767 openOnNavigationKeyDown(event); 5768 } else { 5769 commonOnKeyDown(event); 5770 } 5771 if (currentOpen) { 5772 onNavigate(event); 5773 } 5774 } 5775 return void 0; 5776 }, 5777 onFocus(event) { 5778 if (event.target !== event.currentTarget) { 5779 return; 5780 } 5781 if (store.select("open") && !virtual) { 5782 indexRef.current = -1; 5783 onNavigate(event); 5784 } 5785 }, 5786 onPointerDown: checkVirtualPointer, 5787 onPointerEnter: checkVirtualPointer, 5788 onMouseDown: checkVirtualMouse, 5789 onClick: checkVirtualMouse 5790 }; 5791 }, [commonOnKeyDown, focusItemOnOpen, getMinEnabledIndex, nested, onNavigate, store, openOnArrowKeyDown, orientation, triggerOrientation, getParentOrientation, rtl, selectedIndexRef, virtual, floatingFocusElementRef]); 5792 const reference = React30.useMemo(() => { 5793 return { 5794 ...ariaActiveDescendantProp, 5795 ...trigger 5796 }; 5797 }, [ariaActiveDescendantProp, trigger]); 5798 return React30.useMemo(() => enabled ? { 5799 reference, 5800 floating, 5801 item, 5802 trigger 5803 } : {}, [enabled, reference, floating, trigger, item]); 5804 } 5805 5806 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useTypeahead.mjs 5807 var React31 = __toESM(require_react(), 1); 5808 function useTypeahead(store, props) { 5809 const { 5810 listRef, 5811 elementsRef, 5812 activeIndex, 5813 onMatch: onMatchProp, 5814 disabledIndices, 5815 onTyping: onTypingProp, 5816 enabled = true, 5817 resetMs = 750, 5818 selectedIndex = null 5819 } = props; 5820 const onTyping = useStableCallback(onTypingProp); 5821 const open2 = store.useState("open"); 5822 const timeout = useTimeout(); 5823 const stringRef = React31.useRef(""); 5824 const prevIndexRef = React31.useRef(selectedIndex ?? activeIndex ?? -1); 5825 const matchIndexRef = React31.useRef(null); 5826 const onKeyDown = useStableCallback((event) => { 5827 function getElement(index3) { 5828 return elementsRef?.current[index3]; 5829 } 5830 function isItemAvailable(index3) { 5831 const element = getElement(index3); 5832 if (element && !isElementVisible(element) || element?.matches(":disabled")) { 5833 return false; 5834 } 5835 return disabledIndices == null || !isListIndexDisabled(EMPTY_ARRAY, index3, disabledIndices); 5836 } 5837 function getMatchingIndex(list, string, startIndex2 = 0) { 5838 if (list.length === 0) { 5839 return -1; 5840 } 5841 const normalizedStartIndex = (startIndex2 % list.length + list.length) % list.length; 5842 const lowerString = string.toLowerCase(); 5843 for (let offset4 = 0; offset4 < list.length; offset4 += 1) { 5844 const index3 = (normalizedStartIndex + offset4) % list.length; 5845 const text = list[index3]; 5846 if (!text?.toLowerCase().startsWith(lowerString) || !isItemAvailable(index3)) { 5847 continue; 5848 } 5849 return index3; 5850 } 5851 return -1; 5852 } 5853 const listContent = listRef.current; 5854 if (stringRef.current.length > 0 && event.key === " ") { 5855 stopEvent(event); 5856 onTyping?.(true); 5857 } 5858 if (stringRef.current.length > 0 && stringRef.current[0] !== " ") { 5859 if (getMatchingIndex(listContent, stringRef.current) === -1 && event.key !== " ") { 5860 onTyping?.(false); 5861 } 5862 } 5863 if (listContent == null || // Character key. 5864 event.key.length !== 1 || // Modifier key. 5865 event.ctrlKey || event.metaKey || event.altKey) { 5866 return; 5867 } 5868 if (open2 && event.key !== " ") { 5869 stopEvent(event); 5870 onTyping?.(true); 5871 } 5872 const isNewSession = stringRef.current === ""; 5873 if (isNewSession) { 5874 prevIndexRef.current = selectedIndex ?? activeIndex ?? -1; 5875 } 5876 const allowRapidSuccessionOfFirstLetter = listContent.every((text, index3) => text && isItemAvailable(index3) ? text[0]?.toLowerCase() !== text[1]?.toLowerCase() : true); 5877 if (allowRapidSuccessionOfFirstLetter && stringRef.current === event.key) { 5878 stringRef.current = ""; 5879 prevIndexRef.current = matchIndexRef.current; 5880 } 5881 stringRef.current += event.key; 5882 timeout.start(resetMs, () => { 5883 stringRef.current = ""; 5884 prevIndexRef.current = matchIndexRef.current; 5885 onTyping?.(false); 5886 }); 5887 const prevIndex = isNewSession ? selectedIndex ?? activeIndex ?? -1 : prevIndexRef.current; 5888 const startIndex = (prevIndex ?? 0) + 1; 5889 const index2 = getMatchingIndex(listContent, stringRef.current, startIndex); 5890 if (index2 !== -1) { 5891 onMatchProp?.(index2, event); 5892 matchIndexRef.current = index2; 5893 } else if (event.key !== " ") { 5894 stringRef.current = ""; 5895 onTyping?.(false); 5896 } 5897 }); 5898 const onBlur = useStableCallback((event) => { 5899 const next = event.relatedTarget; 5900 const currentDomReferenceElement = store.select("domReferenceElement"); 5901 const currentFloatingElement = store.select("floatingElement"); 5902 const withinComposite = contains(currentDomReferenceElement, next) || contains(currentFloatingElement, next); 5903 if (withinComposite) { 5904 return; 5905 } 5906 timeout.clear(); 5907 stringRef.current = ""; 5908 prevIndexRef.current = matchIndexRef.current; 5909 onTyping?.(false); 5910 }); 5911 useIsoLayoutEffect(() => { 5912 if (!open2 && selectedIndex !== null) { 5913 return; 5914 } 5915 timeout.clear(); 5916 matchIndexRef.current = null; 5917 if (stringRef.current !== "") { 5918 stringRef.current = ""; 5919 onTyping?.(false); 5920 } 5921 }, [open2, selectedIndex, timeout, onTyping]); 5922 const sharedProps = React31.useMemo(() => ({ 5923 onKeyDown, 5924 onBlur 5925 }), [onKeyDown, onBlur]); 5926 return React31.useMemo(() => enabled ? { 5927 reference: sharedProps, 5928 floating: sharedProps 5929 } : {}, [enabled, sharedProps]); 5930 } 5931 5932 // node_modules/.store/@floating-ui/core@1.8.0-3V8aS7jJHHGcsCINjP9-5A/node_modules/@floating-ui/core/dist/floating-ui.core.mjs 5933 function computeCoordsFromPlacement(_ref, placement, rtl) { 5934 let { 5935 reference, 5936 floating 5937 } = _ref; 5938 const sideAxis = getSideAxis(placement); 5939 const alignmentAxis = getAlignmentAxis(placement); 5940 const alignLength = getAxisLength(alignmentAxis); 5941 const side = getSide(placement); 5942 const isVertical = sideAxis === "y"; 5943 const commonX = reference.x + reference.width / 2 - floating.width / 2; 5944 const commonY = reference.y + reference.height / 2 - floating.height / 2; 5945 const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2; 5946 let coords; 5947 switch (side) { 5948 case "top": 5949 coords = { 5950 x: commonX, 5951 y: reference.y - floating.height 5952 }; 5953 break; 5954 case "bottom": 5955 coords = { 5956 x: commonX, 5957 y: reference.y + reference.height 5958 }; 5959 break; 5960 case "right": 5961 coords = { 5962 x: reference.x + reference.width, 5963 y: commonY 5964 }; 5965 break; 5966 case "left": 5967 coords = { 5968 x: reference.x - floating.width, 5969 y: commonY 5970 }; 5971 break; 5972 default: 5973 coords = { 5974 x: reference.x, 5975 y: reference.y 5976 }; 5977 } 5978 const alignment = getAlignment(placement); 5979 if (alignment) { 5980 coords[alignmentAxis] += commonAlign * (alignment === "end" ? 1 : -1) * (rtl && isVertical ? -1 : 1); 5981 } 5982 return coords; 5983 } 5984 async function detectOverflow(state, options) { 5985 var _await$platform$isEle; 5986 if (options === void 0) { 5987 options = {}; 5988 } 5989 const { 5990 x, 5991 y, 5992 platform: platform3, 5993 rects, 5994 elements, 5995 strategy 5996 } = state; 5997 const { 5998 boundary = "clippingAncestors", 5999 rootBoundary = "viewport", 6000 elementContext = "floating", 6001 altBoundary = false, 6002 padding = 0 6003 } = evaluate(options, state); 6004 const paddingObject = getPaddingObject(padding); 6005 const altContext = elementContext === "floating" ? "reference" : "floating"; 6006 const element = elements[altBoundary ? altContext : elementContext]; 6007 const clippingClientRect = rectToClientRect(await platform3.getClippingRect({ 6008 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)), 6009 boundary, 6010 rootBoundary, 6011 strategy 6012 })); 6013 const rect = elementContext === "floating" ? { 6014 x, 6015 y, 6016 width: rects.floating.width, 6017 height: rects.floating.height 6018 } : rects.reference; 6019 const offsetParent = await (platform3.getOffsetParent == null ? void 0 : platform3.getOffsetParent(elements.floating)); 6020 const offsetScale = await (platform3.isElement == null ? void 0 : platform3.isElement(offsetParent)) && await (platform3.getScale == null ? void 0 : platform3.getScale(offsetParent)) || { 6021 x: 1, 6022 y: 1 6023 }; 6024 const elementClientRect = rectToClientRect(platform3.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform3.convertOffsetParentRelativeRectToViewportRelativeRect({ 6025 elements, 6026 rect, 6027 offsetParent, 6028 strategy 6029 }) : rect); 6030 return { 6031 top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y, 6032 bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y, 6033 left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x, 6034 right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x 6035 }; 6036 } 6037 var MAX_RESET_COUNT = 50; 6038 var computePosition = async (reference, floating, config) => { 6039 const { 6040 placement = "bottom", 6041 strategy = "absolute", 6042 middleware = [], 6043 platform: platform3 6044 } = config; 6045 const platformWithDetectOverflow = platform3.detectOverflow ? platform3 : { 6046 ...platform3, 6047 detectOverflow 6048 }; 6049 const rtl = await (platform3.isRTL == null ? void 0 : platform3.isRTL(floating)); 6050 let rects = await platform3.getElementRects({ 6051 reference, 6052 floating, 6053 strategy 6054 }); 6055 let { 6056 x, 6057 y 6058 } = computeCoordsFromPlacement(rects, placement, rtl); 6059 let statefulPlacement = placement; 6060 let resetCount = 0; 6061 const middlewareData = {}; 6062 for (let i = 0; i < middleware.length; i++) { 6063 const currentMiddleware = middleware[i]; 6064 if (!currentMiddleware) { 6065 continue; 6066 } 6067 const { 6068 name: name3, 6069 fn 6070 } = currentMiddleware; 6071 const { 6072 x: nextX, 6073 y: nextY, 6074 data, 6075 reset 6076 } = await fn({ 6077 x, 6078 y, 6079 initialPlacement: placement, 6080 placement: statefulPlacement, 6081 strategy, 6082 middlewareData, 6083 rects, 6084 platform: platformWithDetectOverflow, 6085 elements: { 6086 reference, 6087 floating 6088 } 6089 }); 6090 x = nextX != null ? nextX : x; 6091 y = nextY != null ? nextY : y; 6092 middlewareData[name3] = { 6093 ...middlewareData[name3], 6094 ...data 6095 }; 6096 if (reset && resetCount < MAX_RESET_COUNT) { 6097 resetCount++; 6098 if (typeof reset === "object") { 6099 if (reset.placement) { 6100 statefulPlacement = reset.placement; 6101 } 6102 if (reset.rects) { 6103 rects = reset.rects === true ? await platform3.getElementRects({ 6104 reference, 6105 floating, 6106 strategy 6107 }) : reset.rects; 6108 } 6109 ({ 6110 x, 6111 y 6112 } = computeCoordsFromPlacement(rects, statefulPlacement, rtl)); 6113 } 6114 i = -1; 6115 } 6116 } 6117 return { 6118 x, 6119 y, 6120 placement: statefulPlacement, 6121 strategy, 6122 middlewareData 6123 }; 6124 }; 6125 var flip = function(options) { 6126 if (options === void 0) { 6127 options = {}; 6128 } 6129 return { 6130 name: "flip", 6131 options, 6132 async fn(state) { 6133 var _middlewareData$arrow, _middlewareData$flip; 6134 const { 6135 placement, 6136 middlewareData, 6137 rects, 6138 initialPlacement, 6139 platform: platform3, 6140 elements 6141 } = state; 6142 const { 6143 mainAxis: checkMainAxis = true, 6144 crossAxis: checkCrossAxis = true, 6145 fallbackPlacements: specifiedFallbackPlacements, 6146 fallbackStrategy = "bestFit", 6147 fallbackAxisSideDirection = "none", 6148 flipAlignment = true, 6149 ...detectOverflowOptions 6150 } = evaluate(options, state); 6151 if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) { 6152 return {}; 6153 } 6154 const side = getSide(placement); 6155 const initialSideAxis = getSideAxis(initialPlacement); 6156 const isBasePlacement = getSide(initialPlacement) === initialPlacement; 6157 const rtl = await (platform3.isRTL == null ? void 0 : platform3.isRTL(elements.floating)); 6158 const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement)); 6159 const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== "none"; 6160 if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) { 6161 fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl)); 6162 } 6163 const placements2 = [initialPlacement, ...fallbackPlacements]; 6164 const overflow = await platform3.detectOverflow(state, detectOverflowOptions); 6165 const overflows = []; 6166 let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || []; 6167 if (checkMainAxis) { 6168 overflows.push(overflow[side]); 6169 } 6170 if (checkCrossAxis) { 6171 const sides2 = getAlignmentSides(placement, rects, rtl); 6172 overflows.push(overflow[sides2[0]], overflow[sides2[1]]); 6173 } 6174 overflowsData = [...overflowsData, { 6175 placement, 6176 overflows 6177 }]; 6178 if (!overflows.every((side2) => side2 <= 0)) { 6179 var _middlewareData$flip2, _overflowsData$filter; 6180 const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1; 6181 const nextPlacement = placements2[nextIndex]; 6182 if (nextPlacement) { 6183 const ignoreCrossAxisOverflow = checkCrossAxis === "alignment" ? initialSideAxis !== getSideAxis(nextPlacement) : false; 6184 if (!ignoreCrossAxisOverflow || // We leave the current main axis only if every placement on that axis 6185 // overflows the main axis. 6186 overflowsData.every((d) => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) { 6187 return { 6188 data: { 6189 index: nextIndex, 6190 overflows: overflowsData 6191 }, 6192 reset: { 6193 placement: nextPlacement 6194 } 6195 }; 6196 } 6197 } 6198 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; 6199 if (!resetPlacement) { 6200 switch (fallbackStrategy) { 6201 case "bestFit": { 6202 var _overflowsData$filter2; 6203 const placement2 = (_overflowsData$filter2 = overflowsData.filter((d) => { 6204 if (hasFallbackAxisSideDirection) { 6205 const currentSideAxis = getSideAxis(d.placement); 6206 return currentSideAxis === initialSideAxis || // Create a bias to the `y` side axis due to horizontal 6207 // reading directions favoring greater width. 6208 currentSideAxis === "y"; 6209 } 6210 return true; 6211 }).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]; 6212 if (placement2) { 6213 resetPlacement = placement2; 6214 } 6215 break; 6216 } 6217 case "initialPlacement": 6218 resetPlacement = initialPlacement; 6219 break; 6220 } 6221 } 6222 if (placement !== resetPlacement) { 6223 return { 6224 reset: { 6225 placement: resetPlacement 6226 } 6227 }; 6228 } 6229 } 6230 return {}; 6231 } 6232 }; 6233 }; 6234 var originSides = /* @__PURE__ */ new Set(["left", "top"]); 6235 async function convertValueToCoords(state, options) { 6236 const { 6237 placement, 6238 platform: platform3, 6239 elements 6240 } = state; 6241 const rtl = await (platform3.isRTL == null ? void 0 : platform3.isRTL(elements.floating)); 6242 const side = getSide(placement); 6243 const alignment = getAlignment(placement); 6244 const isVertical = getSideAxis(placement) === "y"; 6245 const mainAxisMulti = originSides.has(side) ? -1 : 1; 6246 const crossAxisMulti = rtl && isVertical ? -1 : 1; 6247 const rawValue = evaluate(options, state); 6248 let { 6249 mainAxis, 6250 crossAxis, 6251 alignmentAxis 6252 } = typeof rawValue === "number" ? { 6253 mainAxis: rawValue, 6254 crossAxis: 0, 6255 alignmentAxis: null 6256 } : { 6257 mainAxis: rawValue.mainAxis || 0, 6258 crossAxis: rawValue.crossAxis || 0, 6259 alignmentAxis: rawValue.alignmentAxis 6260 }; 6261 if (alignment && typeof alignmentAxis === "number") { 6262 crossAxis = alignment === "end" ? alignmentAxis * -1 : alignmentAxis; 6263 } 6264 return isVertical ? { 6265 x: crossAxis * crossAxisMulti, 6266 y: mainAxis * mainAxisMulti 6267 } : { 6268 x: mainAxis * mainAxisMulti, 6269 y: crossAxis * crossAxisMulti 6270 }; 6271 } 6272 var offset = function(options) { 6273 if (options === void 0) { 6274 options = 0; 6275 } 6276 return { 6277 name: "offset", 6278 options, 6279 async fn(state) { 6280 var _middlewareData$offse, _middlewareData$arrow; 6281 const { 6282 x, 6283 y, 6284 placement, 6285 middlewareData 6286 } = state; 6287 const diffCoords = await convertValueToCoords(state, options); 6288 if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) { 6289 return {}; 6290 } 6291 return { 6292 x: x + diffCoords.x, 6293 y: y + diffCoords.y, 6294 data: { 6295 ...diffCoords, 6296 placement 6297 } 6298 }; 6299 } 6300 }; 6301 }; 6302 var shift = function(options) { 6303 if (options === void 0) { 6304 options = {}; 6305 } 6306 return { 6307 name: "shift", 6308 options, 6309 async fn(state) { 6310 const { 6311 x, 6312 y, 6313 placement, 6314 platform: platform3 6315 } = state; 6316 const { 6317 mainAxis: checkMainAxis = true, 6318 crossAxis: checkCrossAxis = false, 6319 limiter = { 6320 fn: (_ref) => { 6321 let { 6322 x: x2, 6323 y: y2 6324 } = _ref; 6325 return { 6326 x: x2, 6327 y: y2 6328 }; 6329 } 6330 }, 6331 ...detectOverflowOptions 6332 } = evaluate(options, state); 6333 const coords = { 6334 x, 6335 y 6336 }; 6337 const overflow = await platform3.detectOverflow(state, detectOverflowOptions); 6338 const crossAxis = getSideAxis(placement); 6339 const mainAxis = getOppositeAxis(crossAxis); 6340 let mainAxisCoord = coords[mainAxis]; 6341 let crossAxisCoord = coords[crossAxis]; 6342 const clampCoord = (axis, coord) => clamp(coord + overflow[axis === "y" ? "top" : "left"], coord, coord - overflow[axis === "y" ? "bottom" : "right"]); 6343 if (checkMainAxis) { 6344 mainAxisCoord = clampCoord(mainAxis, mainAxisCoord); 6345 } 6346 if (checkCrossAxis) { 6347 crossAxisCoord = clampCoord(crossAxis, crossAxisCoord); 6348 } 6349 const limitedCoords = limiter.fn({ 6350 ...state, 6351 [mainAxis]: mainAxisCoord, 6352 [crossAxis]: crossAxisCoord 6353 }); 6354 return { 6355 ...limitedCoords, 6356 data: { 6357 x: limitedCoords.x - x, 6358 y: limitedCoords.y - y, 6359 enabled: { 6360 [mainAxis]: checkMainAxis, 6361 [crossAxis]: checkCrossAxis 6362 } 6363 } 6364 }; 6365 } 6366 }; 6367 }; 6368 var limitShift = function(options) { 6369 if (options === void 0) { 6370 options = {}; 6371 } 6372 return { 6373 options, 6374 fn(state) { 6375 var _rawOffset$mainAxis, _rawOffset$crossAxis; 6376 const { 6377 x, 6378 y, 6379 placement, 6380 rects, 6381 middlewareData 6382 } = state; 6383 const { 6384 offset: offset4 = 0, 6385 mainAxis: checkMainAxis = true, 6386 crossAxis: checkCrossAxis = true 6387 } = evaluate(options, state); 6388 const coords = { 6389 x, 6390 y 6391 }; 6392 const crossAxis = getSideAxis(placement); 6393 const mainAxis = getOppositeAxis(crossAxis); 6394 let mainAxisCoord = coords[mainAxis]; 6395 let crossAxisCoord = coords[crossAxis]; 6396 const rawOffset = evaluate(offset4, state); 6397 const computedOffset = typeof rawOffset === "number" ? { 6398 mainAxis: rawOffset, 6399 crossAxis: 0 6400 } : { 6401 mainAxis: (_rawOffset$mainAxis = rawOffset.mainAxis) != null ? _rawOffset$mainAxis : 0, 6402 crossAxis: (_rawOffset$crossAxis = rawOffset.crossAxis) != null ? _rawOffset$crossAxis : 0 6403 }; 6404 if (checkMainAxis) { 6405 const len = mainAxis === "y" ? "height" : "width"; 6406 const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis; 6407 const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis; 6408 if (mainAxisCoord < limitMin) { 6409 mainAxisCoord = limitMin; 6410 } else if (mainAxisCoord > limitMax) { 6411 mainAxisCoord = limitMax; 6412 } 6413 } 6414 if (checkCrossAxis) { 6415 var _middlewareData$offse, _middlewareData$offse2; 6416 const len = mainAxis === "y" ? "width" : "height"; 6417 const isOriginSide = originSides.has(getSide(placement)); 6418 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); 6419 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); 6420 if (crossAxisCoord < limitMin) { 6421 crossAxisCoord = limitMin; 6422 } else if (crossAxisCoord > limitMax) { 6423 crossAxisCoord = limitMax; 6424 } 6425 } 6426 return { 6427 [mainAxis]: mainAxisCoord, 6428 [crossAxis]: crossAxisCoord 6429 }; 6430 } 6431 }; 6432 }; 6433 var size = function(options) { 6434 if (options === void 0) { 6435 options = {}; 6436 } 6437 return { 6438 name: "size", 6439 options, 6440 async fn(state) { 6441 const { 6442 placement, 6443 rects, 6444 platform: platform3, 6445 elements 6446 } = state; 6447 const { 6448 apply = () => { 6449 }, 6450 ...detectOverflowOptions 6451 } = evaluate(options, state); 6452 const overflow = await platform3.detectOverflow(state, detectOverflowOptions); 6453 const side = getSide(placement); 6454 const alignment = getAlignment(placement); 6455 const isYAxis = getSideAxis(placement) === "y"; 6456 const { 6457 width, 6458 height 6459 } = rects.floating; 6460 let heightSide; 6461 let widthSide; 6462 if (side === "top" || side === "bottom") { 6463 heightSide = side; 6464 widthSide = alignment === (await (platform3.isRTL == null ? void 0 : platform3.isRTL(elements.floating)) ? "start" : "end") ? "left" : "right"; 6465 } else { 6466 widthSide = side; 6467 heightSide = alignment === "end" ? "top" : "bottom"; 6468 } 6469 const maximumClippingHeight = height - overflow.top - overflow.bottom; 6470 const maximumClippingWidth = width - overflow.left - overflow.right; 6471 const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight); 6472 const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth); 6473 const shiftData = state.middlewareData.shift; 6474 const noShift = !shiftData; 6475 let availableHeight2 = overflowAvailableHeight; 6476 let availableWidth2 = overflowAvailableWidth; 6477 if (shiftData != null && shiftData.enabled.x) { 6478 availableWidth2 = maximumClippingWidth; 6479 } 6480 if (shiftData != null && shiftData.enabled.y) { 6481 availableHeight2 = maximumClippingHeight; 6482 } 6483 if (noShift && !alignment) { 6484 if (isYAxis) { 6485 availableWidth2 = width - 2 * max(overflow.left, overflow.right); 6486 } else { 6487 availableHeight2 = height - 2 * max(overflow.top, overflow.bottom); 6488 } 6489 } 6490 await apply({ 6491 ...state, 6492 availableWidth: availableWidth2, 6493 availableHeight: availableHeight2 6494 }); 6495 const nextDimensions = await platform3.getDimensions(elements.floating); 6496 if (width !== nextDimensions.width || height !== nextDimensions.height) { 6497 return { 6498 reset: { 6499 rects: true 6500 } 6501 }; 6502 } 6503 return {}; 6504 } 6505 }; 6506 }; 6507 6508 // node_modules/.store/@floating-ui/dom@1.8.0-vHXcr4FgWneV0cgwFw-d7A/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs 6509 function getCssDimensions(element) { 6510 const css = getComputedStyle2(element); 6511 let width = parseFloat(css.width) || 0; 6512 let height = parseFloat(css.height) || 0; 6513 const hasOffset = isHTMLElement(element); 6514 const offsetWidth = hasOffset ? element.offsetWidth : width; 6515 const offsetHeight = hasOffset ? element.offsetHeight : height; 6516 const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight; 6517 if (shouldFallback) { 6518 width = offsetWidth; 6519 height = offsetHeight; 6520 } 6521 return { 6522 width, 6523 height, 6524 $: shouldFallback 6525 }; 6526 } 6527 function unwrapElement(element) { 6528 return !isElement(element) ? element.contextElement : element; 6529 } 6530 function getScale(element) { 6531 const domElement = unwrapElement(element); 6532 if (!isHTMLElement(domElement)) { 6533 return createCoords(1); 6534 } 6535 const rect = domElement.getBoundingClientRect(); 6536 const { 6537 width, 6538 height, 6539 $ 6540 } = getCssDimensions(domElement); 6541 let x = ($ ? round(rect.width) : rect.width) / width; 6542 let y = ($ ? round(rect.height) : rect.height) / height; 6543 if (!x || !Number.isFinite(x)) { 6544 x = 1; 6545 } 6546 if (!y || !Number.isFinite(y)) { 6547 y = 1; 6548 } 6549 return { 6550 x, 6551 y 6552 }; 6553 } 6554 var noOffsets = /* @__PURE__ */ createCoords(0); 6555 function getVisualOffsets(element) { 6556 const win = getWindow(element); 6557 if (!isWebKit() || !win.visualViewport) { 6558 return noOffsets; 6559 } 6560 return { 6561 x: win.visualViewport.offsetLeft, 6562 y: win.visualViewport.offsetTop 6563 }; 6564 } 6565 function shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) { 6566 if (isFixed === void 0) { 6567 isFixed = false; 6568 } 6569 return !!floatingOffsetParent && isFixed && floatingOffsetParent === getWindow(element); 6570 } 6571 function getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) { 6572 if (includeScale === void 0) { 6573 includeScale = false; 6574 } 6575 if (isFixedStrategy === void 0) { 6576 isFixedStrategy = false; 6577 } 6578 const clientRect = element.getBoundingClientRect(); 6579 const domElement = unwrapElement(element); 6580 let scale = createCoords(1); 6581 if (includeScale) { 6582 if (offsetParent) { 6583 if (isElement(offsetParent)) { 6584 scale = getScale(offsetParent); 6585 } 6586 } else { 6587 scale = getScale(element); 6588 } 6589 } 6590 const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0); 6591 let x = (clientRect.left + visualOffsets.x) / scale.x; 6592 let y = (clientRect.top + visualOffsets.y) / scale.y; 6593 let width = clientRect.width / scale.x; 6594 let height = clientRect.height / scale.y; 6595 if (domElement && offsetParent) { 6596 const win = getWindow(domElement); 6597 const offsetWin = isElement(offsetParent) ? getWindow(offsetParent) : offsetParent; 6598 let currentWin = win; 6599 let currentIFrame = getFrameElement(currentWin); 6600 while (currentIFrame && offsetWin !== currentWin) { 6601 const iframeScale = getScale(currentIFrame); 6602 const iframeRect = currentIFrame.getBoundingClientRect(); 6603 const css = getComputedStyle2(currentIFrame); 6604 const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x; 6605 const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y; 6606 x *= iframeScale.x; 6607 y *= iframeScale.y; 6608 width *= iframeScale.x; 6609 height *= iframeScale.y; 6610 x += left; 6611 y += top; 6612 currentWin = getWindow(currentIFrame); 6613 currentIFrame = getFrameElement(currentWin); 6614 } 6615 } 6616 return rectToClientRect({ 6617 width, 6618 height, 6619 x, 6620 y 6621 }); 6622 } 6623 function getWindowScrollBarX(element, rect) { 6624 const leftScroll = getNodeScroll(element).scrollLeft; 6625 if (!rect) { 6626 return getBoundingClientRect(getDocumentElement(element)).left + leftScroll; 6627 } 6628 return rect.left + leftScroll; 6629 } 6630 function getHTMLOffset(documentElement, scroll) { 6631 const htmlRect = documentElement.getBoundingClientRect(); 6632 const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect); 6633 const y = htmlRect.top + scroll.scrollTop; 6634 return { 6635 x, 6636 y 6637 }; 6638 } 6639 function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) { 6640 let { 6641 elements, 6642 rect, 6643 offsetParent, 6644 strategy 6645 } = _ref; 6646 const isFixed = strategy === "fixed"; 6647 const documentElement = getDocumentElement(offsetParent); 6648 const topLayer = elements ? isTopLayer(elements.floating) : false; 6649 if (offsetParent === documentElement || topLayer && isFixed) { 6650 return rect; 6651 } 6652 let scroll = { 6653 scrollLeft: 0, 6654 scrollTop: 0 6655 }; 6656 let scale = createCoords(1); 6657 const offsets = createCoords(0); 6658 const isOffsetParentAnElement = isHTMLElement(offsetParent); 6659 if (isOffsetParentAnElement || !isFixed) { 6660 if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) { 6661 scroll = getNodeScroll(offsetParent); 6662 } 6663 if (isOffsetParentAnElement) { 6664 const offsetRect = getBoundingClientRect(offsetParent); 6665 scale = getScale(offsetParent); 6666 offsets.x = offsetRect.x + offsetParent.clientLeft; 6667 offsets.y = offsetRect.y + offsetParent.clientTop; 6668 } 6669 } 6670 const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0); 6671 return { 6672 width: rect.width * scale.x, 6673 height: rect.height * scale.y, 6674 x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x, 6675 y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y 6676 }; 6677 } 6678 function getClientRects(element) { 6679 return element.getClientRects ? Array.from(element.getClientRects()) : []; 6680 } 6681 function getDocumentRect(html) { 6682 const scroll = getNodeScroll(html); 6683 const body = html.ownerDocument.body; 6684 const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth); 6685 const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight); 6686 let x = -scroll.scrollLeft + getWindowScrollBarX(html); 6687 const y = -scroll.scrollTop; 6688 if (getComputedStyle2(body).direction === "rtl") { 6689 x += max(html.clientWidth, body.clientWidth) - width; 6690 } 6691 return { 6692 width, 6693 height, 6694 x, 6695 y 6696 }; 6697 } 6698 var SCROLLBAR_MAX = 25; 6699 function getViewportRect(element, strategy, rootBoundary) { 6700 if (rootBoundary === void 0) { 6701 rootBoundary = "viewport"; 6702 } 6703 const isLayoutViewport = rootBoundary === "layoutViewport"; 6704 const win = getWindow(element); 6705 const html = getDocumentElement(element); 6706 const visualViewport = win.visualViewport; 6707 let width = html.clientWidth; 6708 let height = html.clientHeight; 6709 let x = 0; 6710 let y = 0; 6711 if (visualViewport) { 6712 const layoutRelativeClientCoords = !isWebKit() || strategy === "fixed"; 6713 if (isLayoutViewport) { 6714 if (!layoutRelativeClientCoords) { 6715 x = -visualViewport.offsetLeft; 6716 y = -visualViewport.offsetTop; 6717 } 6718 } else { 6719 width = visualViewport.width; 6720 height = visualViewport.height; 6721 if (layoutRelativeClientCoords) { 6722 x = visualViewport.offsetLeft; 6723 y = visualViewport.offsetTop; 6724 } 6725 } 6726 } 6727 const windowScrollbarX = getWindowScrollBarX(html); 6728 if (windowScrollbarX <= 0) { 6729 const doc = html.ownerDocument; 6730 const body = doc.body; 6731 const bodyStyles = getComputedStyle(body); 6732 const bodyMarginInline = doc.compatMode === "CSS1Compat" ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0; 6733 const reservedWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline); 6734 const gutter = getComputedStyle(html).scrollbarGutter === "stable both-edges" ? reservedWidth / 2 : reservedWidth; 6735 if (gutter <= SCROLLBAR_MAX) { 6736 width -= gutter; 6737 } 6738 } 6739 return { 6740 width, 6741 height, 6742 x, 6743 y 6744 }; 6745 } 6746 function getInnerBoundingClientRect(element, strategy) { 6747 const clientRect = getBoundingClientRect(element, true, strategy === "fixed"); 6748 const top = clientRect.top + element.clientTop; 6749 const left = clientRect.left + element.clientLeft; 6750 const scale = getScale(element); 6751 const width = element.clientWidth * scale.x; 6752 const height = element.clientHeight * scale.y; 6753 const x = left * scale.x; 6754 const y = top * scale.y; 6755 return { 6756 width, 6757 height, 6758 x, 6759 y 6760 }; 6761 } 6762 function getClientRectFromClippingAncestor(element, clippingAncestor, strategy) { 6763 let rect; 6764 if (clippingAncestor === "viewport" || clippingAncestor === "layoutViewport") { 6765 rect = getViewportRect(element, strategy, clippingAncestor); 6766 } else if (clippingAncestor === "document") { 6767 rect = getDocumentRect(getDocumentElement(element)); 6768 } else if (isElement(clippingAncestor)) { 6769 rect = getInnerBoundingClientRect(clippingAncestor, strategy); 6770 } else { 6771 const visualOffsets = getVisualOffsets(element); 6772 rect = { 6773 x: clippingAncestor.x - visualOffsets.x, 6774 y: clippingAncestor.y - visualOffsets.y, 6775 width: clippingAncestor.width, 6776 height: clippingAncestor.height 6777 }; 6778 } 6779 return rectToClientRect(rect); 6780 } 6781 function getClippingElementAncestors(element, cache) { 6782 const cachedResult = cache.get(element); 6783 if (cachedResult) { 6784 return cachedResult; 6785 } 6786 let result = getOverflowAncestors(element, [], false).filter((el2) => isElement(el2) && getNodeName(el2) !== "body"); 6787 let lastKeptComputedStyle = null; 6788 const elementIsFixed = getComputedStyle2(element).position === "fixed"; 6789 let currentNode = elementIsFixed ? getParentNode(element) : element; 6790 while (isElement(currentNode) && !isLastTraversableNode(currentNode)) { 6791 const computedStyle = getComputedStyle2(currentNode); 6792 const currentNodeIsContaining = isContainingBlock(currentNode); 6793 const lastPosition = lastKeptComputedStyle ? lastKeptComputedStyle.position : elementIsFixed ? "fixed" : ""; 6794 const shouldDropCurrentNode = !currentNodeIsContaining && (lastPosition === "fixed" || lastPosition === "absolute" && computedStyle.position === "static"); 6795 if (shouldDropCurrentNode) { 6796 result = result.filter((ancestor) => ancestor !== currentNode); 6797 } else { 6798 lastKeptComputedStyle = computedStyle; 6799 } 6800 currentNode = getParentNode(currentNode); 6801 } 6802 cache.set(element, result); 6803 return result; 6804 } 6805 function getClippingRect(_ref) { 6806 let { 6807 element, 6808 boundary, 6809 rootBoundary, 6810 strategy 6811 } = _ref; 6812 const elementClippingAncestors = boundary === "clippingAncestors" ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary); 6813 const clippingAncestors = [...elementClippingAncestors, rootBoundary]; 6814 const firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy); 6815 let top = firstRect.top; 6816 let right = firstRect.right; 6817 let bottom = firstRect.bottom; 6818 let left = firstRect.left; 6819 for (let i = 1; i < clippingAncestors.length; i++) { 6820 const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i], strategy); 6821 top = max(rect.top, top); 6822 right = min(rect.right, right); 6823 bottom = min(rect.bottom, bottom); 6824 left = max(rect.left, left); 6825 } 6826 return { 6827 width: right - left, 6828 height: bottom - top, 6829 x: left, 6830 y: top 6831 }; 6832 } 6833 function getDimensions(element) { 6834 const { 6835 width, 6836 height 6837 } = getCssDimensions(element); 6838 return { 6839 width, 6840 height 6841 }; 6842 } 6843 function getRectRelativeToOffsetParent(element, offsetParent, strategy) { 6844 const isOffsetParentAnElement = isHTMLElement(offsetParent); 6845 const documentElement = getDocumentElement(offsetParent); 6846 const isFixed = strategy === "fixed"; 6847 const rect = getBoundingClientRect(element, true, isFixed, offsetParent); 6848 let scroll = { 6849 scrollLeft: 0, 6850 scrollTop: 0 6851 }; 6852 const offsets = createCoords(0); 6853 if (isOffsetParentAnElement || !isFixed) { 6854 if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) { 6855 scroll = getNodeScroll(offsetParent); 6856 } 6857 if (isOffsetParentAnElement) { 6858 const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent); 6859 offsets.x = offsetRect.x + offsetParent.clientLeft; 6860 offsets.y = offsetRect.y + offsetParent.clientTop; 6861 } 6862 } 6863 if (!isOffsetParentAnElement && documentElement) { 6864 offsets.x = getWindowScrollBarX(documentElement); 6865 } 6866 const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0); 6867 const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x; 6868 const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y; 6869 return { 6870 x, 6871 y, 6872 width: rect.width, 6873 height: rect.height 6874 }; 6875 } 6876 function isStaticPositioned(element) { 6877 return getComputedStyle2(element).position === "static"; 6878 } 6879 function getTrueOffsetParent(element, polyfill) { 6880 if (!isHTMLElement(element) || getComputedStyle2(element).position === "fixed") { 6881 return null; 6882 } 6883 if (polyfill) { 6884 return polyfill(element); 6885 } 6886 let rawOffsetParent = element.offsetParent; 6887 if (getDocumentElement(element) === rawOffsetParent) { 6888 rawOffsetParent = rawOffsetParent.ownerDocument.body; 6889 } 6890 return rawOffsetParent; 6891 } 6892 function getOffsetParent(element, polyfill) { 6893 const win = getWindow(element); 6894 if (isTopLayer(element)) { 6895 return win; 6896 } 6897 if (!isHTMLElement(element)) { 6898 let svgOffsetParent = getParentNode(element); 6899 while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) { 6900 if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) { 6901 return svgOffsetParent; 6902 } 6903 svgOffsetParent = getParentNode(svgOffsetParent); 6904 } 6905 return win; 6906 } 6907 let offsetParent = getTrueOffsetParent(element, polyfill); 6908 while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) { 6909 offsetParent = getTrueOffsetParent(offsetParent, polyfill); 6910 } 6911 if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) { 6912 return win; 6913 } 6914 return offsetParent || getContainingBlock(element) || win; 6915 } 6916 var getElementRects = async function(data) { 6917 const getOffsetParentFn = this.getOffsetParent || getOffsetParent; 6918 const getDimensionsFn = this.getDimensions; 6919 const floatingDimensions = await getDimensionsFn(data.floating); 6920 return { 6921 reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy), 6922 floating: { 6923 x: 0, 6924 y: 0, 6925 width: floatingDimensions.width, 6926 height: floatingDimensions.height 6927 } 6928 }; 6929 }; 6930 function isRTL(element) { 6931 return getComputedStyle2(element).direction === "rtl"; 6932 } 6933 var platform2 = { 6934 convertOffsetParentRelativeRectToViewportRelativeRect, 6935 getDocumentElement, 6936 getClippingRect, 6937 getOffsetParent, 6938 getElementRects, 6939 getClientRects, 6940 getDimensions, 6941 getScale, 6942 isElement, 6943 isRTL 6944 }; 6945 function rectsAreEqual(a, b) { 6946 return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height; 6947 } 6948 function observeMove(element, onMove, ancestorResize) { 6949 let io = null; 6950 let timeoutId; 6951 const root = getDocumentElement(element); 6952 function cleanup() { 6953 var _io; 6954 clearTimeout(timeoutId); 6955 (_io = io) == null || _io.disconnect(); 6956 io = null; 6957 } 6958 function refresh(skip, threshold) { 6959 if (skip === void 0) { 6960 skip = false; 6961 } 6962 if (threshold === void 0) { 6963 threshold = 1; 6964 } 6965 cleanup(); 6966 const elementRectForRootMargin = element.getBoundingClientRect(); 6967 const { 6968 left, 6969 top, 6970 width, 6971 height 6972 } = elementRectForRootMargin; 6973 if (!skip) { 6974 onMove(); 6975 } 6976 if (!width || !height) { 6977 return; 6978 } 6979 const insetTop = floor(top); 6980 const insetRight = floor(root.clientWidth - (left + width)); 6981 const insetBottom = floor(root.clientHeight - (top + height)); 6982 const insetLeft = floor(left); 6983 const rootMargin = -insetTop + "px " + -insetRight + "px " + -insetBottom + "px " + -insetLeft + "px"; 6984 const options = { 6985 rootMargin, 6986 threshold: max(0, min(1, threshold)) || 1 6987 }; 6988 let isFirstUpdate = true; 6989 function handleObserve(entries) { 6990 const ratio = entries[0].intersectionRatio; 6991 if (!rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) { 6992 return refresh(); 6993 } 6994 if (ratio !== threshold) { 6995 if (!isFirstUpdate) { 6996 return refresh(); 6997 } 6998 if (!ratio) { 6999 timeoutId = setTimeout(() => { 7000 refresh(false, 1e-7); 7001 }, 1e3); 7002 } else { 7003 refresh(false, ratio); 7004 } 7005 } 7006 isFirstUpdate = false; 7007 } 7008 try { 7009 io = new IntersectionObserver(handleObserve, { 7010 ...options, 7011 // Handle <iframe>s 7012 root: root.ownerDocument 7013 }); 7014 } catch (_e) { 7015 io = new IntersectionObserver(handleObserve, options); 7016 } 7017 io.observe(element); 7018 } 7019 const win = getWindow(element); 7020 const handleResize = () => refresh(ancestorResize); 7021 win.addEventListener("resize", handleResize); 7022 refresh(true); 7023 return () => { 7024 win.removeEventListener("resize", handleResize); 7025 cleanup(); 7026 }; 7027 } 7028 function autoUpdate(reference, floating, update2, options) { 7029 if (options === void 0) { 7030 options = {}; 7031 } 7032 const { 7033 ancestorScroll = true, 7034 ancestorResize = true, 7035 elementResize = typeof ResizeObserver === "function", 7036 layoutShift = typeof IntersectionObserver === "function", 7037 animationFrame = false 7038 } = options; 7039 const referenceEl = unwrapElement(reference); 7040 const ancestors = ancestorScroll || ancestorResize ? [...referenceEl ? getOverflowAncestors(referenceEl) : [], ...floating ? getOverflowAncestors(floating) : []] : []; 7041 ancestors.forEach((ancestor) => { 7042 ancestorScroll && ancestor.addEventListener("scroll", update2); 7043 ancestorResize && ancestor.addEventListener("resize", update2); 7044 }); 7045 const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update2, ancestorResize) : null; 7046 let reobserveFrame = -1; 7047 let resizeObserver = null; 7048 if (elementResize) { 7049 resizeObserver = new ResizeObserver((_ref) => { 7050 let [firstEntry] = _ref; 7051 if (firstEntry && firstEntry.target === referenceEl && resizeObserver && floating) { 7052 resizeObserver.unobserve(floating); 7053 cancelAnimationFrame(reobserveFrame); 7054 reobserveFrame = requestAnimationFrame(() => { 7055 var _resizeObserver; 7056 (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating); 7057 }); 7058 } 7059 update2(); 7060 }); 7061 if (referenceEl && !animationFrame) { 7062 resizeObserver.observe(referenceEl); 7063 } 7064 if (floating) { 7065 resizeObserver.observe(floating); 7066 } 7067 } 7068 let frameId; 7069 let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null; 7070 if (animationFrame) { 7071 frameLoop(); 7072 } 7073 function frameLoop() { 7074 const nextRefRect = getBoundingClientRect(reference); 7075 if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) { 7076 update2(); 7077 } 7078 prevRefRect = nextRefRect; 7079 frameId = requestAnimationFrame(frameLoop); 7080 } 7081 update2(); 7082 return () => { 7083 var _resizeObserver2; 7084 ancestors.forEach((ancestor) => { 7085 ancestorScroll && ancestor.removeEventListener("scroll", update2); 7086 ancestorResize && ancestor.removeEventListener("resize", update2); 7087 }); 7088 cleanupIo == null || cleanupIo(); 7089 (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect(); 7090 resizeObserver = null; 7091 if (animationFrame) { 7092 cancelAnimationFrame(frameId); 7093 } 7094 }; 7095 } 7096 var offset2 = offset; 7097 var shift2 = shift; 7098 var flip2 = flip; 7099 var size2 = size; 7100 var limitShift2 = limitShift; 7101 var computePosition2 = (reference, floating, options) => { 7102 const cache = /* @__PURE__ */ new Map(); 7103 const mergedOptions = options != null ? options : {}; 7104 const platformWithCache = { 7105 ...platform2, 7106 ...mergedOptions.platform, 7107 _c: cache 7108 }; 7109 return computePosition(reference, floating, { 7110 ...mergedOptions, 7111 platform: platformWithCache 7112 }); 7113 }; 7114 7115 // node_modules/.store/@floating-ui/react-dom@2.1.9-AxWcAwqlMfOrAFOinFKSVg/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs 7116 var React32 = __toESM(require_react(), 1); 7117 var import_react2 = __toESM(require_react(), 1); 7118 var ReactDOM4 = __toESM(require_react_dom(), 1); 7119 var isClient = typeof document !== "undefined"; 7120 var noop2 = function noop3() { 7121 }; 7122 var index = isClient ? import_react2.useLayoutEffect : noop2; 7123 function deepEqual(a, b) { 7124 if (a === b) { 7125 return true; 7126 } 7127 if (typeof a !== typeof b) { 7128 return false; 7129 } 7130 if (typeof a === "function" && a.toString() === b.toString()) { 7131 return true; 7132 } 7133 let length; 7134 let i; 7135 let keys; 7136 if (a && b && typeof a === "object") { 7137 if (Array.isArray(a)) { 7138 length = a.length; 7139 if (length !== b.length) return false; 7140 for (i = length; i-- !== 0; ) { 7141 if (!deepEqual(a[i], b[i])) { 7142 return false; 7143 } 7144 } 7145 return true; 7146 } 7147 keys = Object.keys(a); 7148 length = keys.length; 7149 if (length !== Object.keys(b).length) { 7150 return false; 7151 } 7152 for (i = length; i-- !== 0; ) { 7153 if (!{}.hasOwnProperty.call(b, keys[i])) { 7154 return false; 7155 } 7156 } 7157 for (i = length; i-- !== 0; ) { 7158 const key = keys[i]; 7159 if (key === "_owner" && a.$$typeof) { 7160 continue; 7161 } 7162 if (!deepEqual(a[key], b[key])) { 7163 return false; 7164 } 7165 } 7166 return true; 7167 } 7168 return a !== a && b !== b; 7169 } 7170 function getDPR(element) { 7171 if (typeof window === "undefined") { 7172 return 1; 7173 } 7174 const win = element.ownerDocument.defaultView || window; 7175 return win.devicePixelRatio || 1; 7176 } 7177 function roundByDPR(element, value) { 7178 const dpr = getDPR(element); 7179 return Math.round(value * dpr) / dpr; 7180 } 7181 function useLatestRef(value) { 7182 const ref = React32.useRef(value); 7183 index(() => { 7184 ref.current = value; 7185 }); 7186 return ref; 7187 } 7188 function useFloating(options) { 7189 if (options === void 0) { 7190 options = {}; 7191 } 7192 const { 7193 placement = "bottom", 7194 strategy = "absolute", 7195 middleware = [], 7196 platform: platform3, 7197 elements: { 7198 reference: externalReference, 7199 floating: externalFloating 7200 } = {}, 7201 transform = true, 7202 whileElementsMounted, 7203 open: open2 7204 } = options; 7205 const [data, setData] = React32.useState({ 7206 x: 0, 7207 y: 0, 7208 strategy, 7209 placement, 7210 middlewareData: {}, 7211 isPositioned: false 7212 }); 7213 const [latestMiddleware, setLatestMiddleware] = React32.useState(middleware); 7214 if (!deepEqual(latestMiddleware, middleware)) { 7215 setLatestMiddleware(middleware); 7216 } 7217 const [_reference, _setReference] = React32.useState(null); 7218 const [_floating, _setFloating] = React32.useState(null); 7219 const setReference = React32.useCallback((node) => { 7220 if (node !== referenceRef.current) { 7221 referenceRef.current = node; 7222 _setReference(node); 7223 } 7224 }, []); 7225 const setFloating = React32.useCallback((node) => { 7226 if (node !== floatingRef.current) { 7227 floatingRef.current = node; 7228 _setFloating(node); 7229 } 7230 }, []); 7231 const referenceEl = externalReference || _reference; 7232 const floatingEl = externalFloating || _floating; 7233 const referenceRef = React32.useRef(null); 7234 const floatingRef = React32.useRef(null); 7235 const dataRef = React32.useRef(data); 7236 const hasWhileElementsMounted = whileElementsMounted != null; 7237 const whileElementsMountedRef = useLatestRef(whileElementsMounted); 7238 const platformRef = useLatestRef(platform3); 7239 const openRef = useLatestRef(open2); 7240 const update2 = React32.useCallback(() => { 7241 if (!referenceRef.current || !floatingRef.current) { 7242 return; 7243 } 7244 const config = { 7245 placement, 7246 strategy, 7247 middleware: latestMiddleware 7248 }; 7249 if (platformRef.current) { 7250 config.platform = platformRef.current; 7251 } 7252 computePosition2(referenceRef.current, floatingRef.current, config).then((data2) => { 7253 const fullData = { 7254 ...data2, 7255 // The floating element's position may be recomputed while it's closed 7256 // but still mounted (such as when transitioning out). To ensure 7257 // `isPositioned` will be `false` initially on the next open, avoid 7258 // setting it to `true` when `open === false` (must be specified). 7259 isPositioned: openRef.current !== false 7260 }; 7261 if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) { 7262 dataRef.current = fullData; 7263 ReactDOM4.flushSync(() => { 7264 setData(fullData); 7265 }); 7266 } 7267 }); 7268 }, [latestMiddleware, placement, strategy, platformRef, openRef]); 7269 index(() => { 7270 if (open2 === false && dataRef.current.isPositioned) { 7271 dataRef.current.isPositioned = false; 7272 setData((data2) => ({ 7273 ...data2, 7274 isPositioned: false 7275 })); 7276 } 7277 }, [open2]); 7278 const isMountedRef = React32.useRef(false); 7279 index(() => { 7280 isMountedRef.current = true; 7281 return () => { 7282 isMountedRef.current = false; 7283 }; 7284 }, []); 7285 index(() => { 7286 if (referenceEl) referenceRef.current = referenceEl; 7287 if (floatingEl) floatingRef.current = floatingEl; 7288 if (referenceEl && floatingEl) { 7289 if (whileElementsMountedRef.current) { 7290 return whileElementsMountedRef.current(referenceEl, floatingEl, update2); 7291 } 7292 update2(); 7293 } 7294 }, [referenceEl, floatingEl, update2, whileElementsMountedRef, hasWhileElementsMounted]); 7295 const refs = React32.useMemo(() => ({ 7296 reference: referenceRef, 7297 floating: floatingRef, 7298 setReference, 7299 setFloating 7300 }), [setReference, setFloating]); 7301 const elements = React32.useMemo(() => ({ 7302 reference: referenceEl, 7303 floating: floatingEl 7304 }), [referenceEl, floatingEl]); 7305 const floatingStyles = React32.useMemo(() => { 7306 const initialStyles = { 7307 position: strategy, 7308 left: 0, 7309 top: 0 7310 }; 7311 if (!elements.floating) { 7312 return initialStyles; 7313 } 7314 const x = roundByDPR(elements.floating, data.x); 7315 const y = roundByDPR(elements.floating, data.y); 7316 if (transform) { 7317 return { 7318 ...initialStyles, 7319 transform: "translate(" + x + "px, " + y + "px)", 7320 ...getDPR(elements.floating) >= 1.5 && { 7321 willChange: "transform" 7322 } 7323 }; 7324 } 7325 return { 7326 position: strategy, 7327 left: x, 7328 top: y 7329 }; 7330 }, [strategy, transform, elements.floating, data.x, data.y]); 7331 return React32.useMemo(() => ({ 7332 ...data, 7333 update: update2, 7334 refs, 7335 elements, 7336 floatingStyles 7337 }), [data, update2, refs, elements, floatingStyles]); 7338 } 7339 var offset3 = (options, deps) => { 7340 const result = offset2(options); 7341 return { 7342 name: result.name, 7343 fn: result.fn, 7344 options: [options, deps] 7345 }; 7346 }; 7347 var shift3 = (options, deps) => { 7348 const result = shift2(options); 7349 return { 7350 name: result.name, 7351 fn: result.fn, 7352 options: [options, deps] 7353 }; 7354 }; 7355 var limitShift3 = (options, deps) => { 7356 const result = limitShift2(options); 7357 return { 7358 fn: result.fn, 7359 options: [options, deps] 7360 }; 7361 }; 7362 var flip3 = (options, deps) => { 7363 const result = flip2(options); 7364 return { 7365 name: result.name, 7366 fn: result.fn, 7367 options: [options, deps] 7368 }; 7369 }; 7370 var size3 = (options, deps) => { 7371 const result = size2(options); 7372 return { 7373 name: result.name, 7374 fn: result.fn, 7375 options: [options, deps] 7376 }; 7377 }; 7378 7379 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/composite.mjs 7380 var ARROW_UP2 = "ArrowUp"; 7381 var ARROW_DOWN2 = "ArrowDown"; 7382 var ARROW_LEFT2 = "ArrowLeft"; 7383 var ARROW_RIGHT2 = "ArrowRight"; 7384 var HOME = "Home"; 7385 var END = "End"; 7386 var COMPOSITE_KEYS = /* @__PURE__ */ new Set([ARROW_UP2, ARROW_DOWN2, ARROW_LEFT2, ARROW_RIGHT2, HOME, END]); 7387 7388 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/inertValue.mjs 7389 function inertValue(value) { 7390 if (isReactVersionAtLeast(19)) { 7391 return value; 7392 } 7393 return value ? "true" : void 0; 7394 } 7395 7396 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/InternalBackdrop.mjs 7397 var React33 = __toESM(require_react(), 1); 7398 var import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1); 7399 var InternalBackdrop = /* @__PURE__ */ React33.forwardRef(function InternalBackdrop2(props, ref) { 7400 const { 7401 cutout, 7402 ...otherProps 7403 } = props; 7404 let clipPath; 7405 if (cutout) { 7406 const rect = cutout.getBoundingClientRect(); 7407 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)`; 7408 } 7409 return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { 7410 ref, 7411 role: "presentation", 7412 "data-base-ui-inert": "", 7413 ...otherProps, 7414 style: { 7415 position: "fixed", 7416 inset: 0, 7417 userSelect: "none", 7418 WebkitUserSelect: "none", 7419 clipPath 7420 } 7421 }); 7422 }); 7423 if (true) InternalBackdrop.displayName = "InternalBackdrop"; 7424 7425 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/useOpenInteractionType.mjs 7426 var React36 = __toESM(require_react(), 1); 7427 7428 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useEnhancedClickHandler.mjs 7429 var React34 = __toESM(require_react(), 1); 7430 function useEnhancedClickHandler(handler) { 7431 const lastClickInteractionTypeRef = React34.useRef(""); 7432 const handlePointerDown = React34.useCallback((event) => { 7433 if (event.defaultPrevented) { 7434 return; 7435 } 7436 lastClickInteractionTypeRef.current = event.pointerType; 7437 handler(event, event.pointerType); 7438 }, [handler]); 7439 const handleClick = React34.useCallback((event) => { 7440 if (event.detail === 0) { 7441 handler(event, "keyboard"); 7442 return; 7443 } 7444 if ("pointerType" in event) { 7445 handler(event, event.pointerType); 7446 } else { 7447 handler(event, lastClickInteractionTypeRef.current); 7448 } 7449 lastClickInteractionTypeRef.current = ""; 7450 }, [handler]); 7451 return { 7452 onClick: handleClick, 7453 onPointerDown: handlePointerDown 7454 }; 7455 } 7456 7457 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useValueChanged.mjs 7458 var React35 = __toESM(require_react(), 1); 7459 function useValueChanged(value, onChange) { 7460 const valueRef = React35.useRef(value); 7461 const onChangeCallback = useStableCallback(onChange); 7462 useIsoLayoutEffect(() => { 7463 if (valueRef.current !== value) { 7464 onChangeCallback(valueRef.current); 7465 } 7466 valueRef.current = value; 7467 }, [value, onChangeCallback]); 7468 } 7469 7470 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/useOpenInteractionType.mjs 7471 function useOpenMethodTriggerProps(open2, setOpenMethod) { 7472 const handleTriggerClick = useStableCallback((_, interactionType) => { 7473 const isOpen = typeof open2 === "function" ? open2() : open2; 7474 if (!isOpen) { 7475 setOpenMethod(interactionType || // On iOS Safari, the hitslop around touch targets means tapping outside an element's 7476 // bounds does not fire `pointerdown` but does fire `mousedown`. The `interactionType` 7477 // will be "" in that case. 7478 (parts_exports.os.ios ? "touch" : "")); 7479 } 7480 }); 7481 const { 7482 onClick, 7483 onPointerDown 7484 } = useEnhancedClickHandler(handleTriggerClick); 7485 return React36.useMemo(() => ({ 7486 onClick, 7487 onPointerDown 7488 }), [onClick, onPointerDown]); 7489 } 7490 function useOpenInteractionType(open2) { 7491 const [openMethod, setOpenMethod] = React36.useState(null); 7492 const triggerProps = useOpenMethodTriggerProps(open2, setOpenMethod); 7493 useValueChanged(open2, (previousOpen) => { 7494 if (previousOpen && !open2) { 7495 setOpenMethod(null); 7496 } 7497 }); 7498 return React36.useMemo(() => ({ 7499 openMethod, 7500 triggerProps 7501 }), [openMethod, triggerProps]); 7502 } 7503 7504 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useOnFirstRender.mjs 7505 var React37 = __toESM(require_react(), 1); 7506 function useOnFirstRender(fn) { 7507 const ref = React37.useRef(true); 7508 if (ref.current) { 7509 ref.current = false; 7510 fn(); 7511 } 7512 } 7513 7514 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/areArraysEqual.mjs 7515 function areArraysEqual(array1, array2, itemComparer = Object.is) { 7516 const { 7517 length 7518 } = array1; 7519 if (length !== array2.length) { 7520 return false; 7521 } 7522 for (let i = 0; i < length; i += 1) { 7523 if (!itemComparer(array1[i], array2[i])) { 7524 return false; 7525 } 7526 } 7527 return true; 7528 } 7529 7530 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/itemEquality.mjs 7531 var defaultItemEquality = (itemValue, selectedValue) => Object.is(itemValue, selectedValue); 7532 function compareItemEquality(itemValue, selectedValue, comparer) { 7533 if (itemValue == null || selectedValue == null) { 7534 return Object.is(itemValue, selectedValue); 7535 } 7536 return comparer(itemValue, selectedValue); 7537 } 7538 function isSelectedValueDirty(currentValue, initialValue, comparer) { 7539 if (Array.isArray(currentValue) && Array.isArray(initialValue)) { 7540 return !areArraysEqual(currentValue, initialValue, (itemValue, initialItemValue) => compareItemEquality(itemValue, initialItemValue, comparer)); 7541 } 7542 return currentValue !== initialValue; 7543 } 7544 function selectedValueIncludes(selectedValues, itemValue, comparer) { 7545 if (!selectedValues) { 7546 return false; 7547 } 7548 return selectedValues.some((selectedValue) => { 7549 if (selectedValue === void 0) { 7550 return false; 7551 } 7552 return compareItemEquality(itemValue, selectedValue, comparer); 7553 }); 7554 } 7555 function findItemIndex(itemValues, selectedValue, comparer) { 7556 if (!itemValues) { 7557 return -1; 7558 } 7559 return itemValues.findIndex((itemValue) => { 7560 if (itemValue === void 0) { 7561 return false; 7562 } 7563 return compareItemEquality(itemValue, selectedValue, comparer); 7564 }); 7565 } 7566 function createSelectionMatcher(selectedValues, comparer) { 7567 if (comparer !== defaultItemEquality) { 7568 return (itemValue) => selectedValueIncludes(selectedValues, itemValue, comparer); 7569 } 7570 const index2 = new Set(selectedValues); 7571 index2.delete(void 0); 7572 return (itemValue) => index2.has(itemValue) && (itemValue !== 0 || selectedValues.some((v) => Object.is(itemValue, v))); 7573 } 7574 function findSelectionIndex(itemValues, selectedValue, comparer, multiple) { 7575 const index2 = multiple && Array.isArray(selectedValue) ? ( 7576 // Anchor to the first selected item in rendered order so the index does not depend 7577 // on the order in which the values were added to the array. 7578 itemValues.findIndex(createSelectionMatcher(selectedValue, comparer)) 7579 ) : findItemIndex(itemValues, selectedValue, comparer); 7580 return index2 === -1 ? null : index2; 7581 } 7582 function resolveSelectedIndex(index2, itemValue, registry, selectedValues, comparer, currentIndex) { 7583 if (selectedValueIncludes(selectedValues, itemValue, comparer)) { 7584 return currentIndex != null && index2 > currentIndex && selectedValueIncludes(selectedValues, registry[currentIndex], comparer) ? currentIndex : index2; 7585 } 7586 return index2 === currentIndex ? findSelectionIndex(registry, selectedValues, comparer, true) : currentIndex; 7587 } 7588 function removeItem(selectedValues, itemValue, comparer) { 7589 return selectedValues.filter((selectedValue) => !compareItemEquality(itemValue, selectedValue, comparer)); 7590 } 7591 7592 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/resolveValueLabel.mjs 7593 var React38 = __toESM(require_react(), 1); 7594 7595 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/serializeValue.mjs 7596 function serializeValue(value) { 7597 if (value == null) { 7598 return ""; 7599 } 7600 if (typeof value === "string") { 7601 return value; 7602 } 7603 try { 7604 return JSON.stringify(value); 7605 } catch { 7606 return String(value); 7607 } 7608 } 7609 7610 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/resolveValueLabel.mjs 7611 var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1); 7612 function isGroup(item) { 7613 return typeof item === "object" && item != null && Array.isArray(item.items); 7614 } 7615 function isGroupedItems(items) { 7616 return isGroup(items?.[0]); 7617 } 7618 function flattenLeafItems(items) { 7619 return isGroupedItems(items) ? items.flatMap((group) => group.items) : items; 7620 } 7621 function hasNullItemLabel(items) { 7622 if (!Array.isArray(items)) { 7623 return items != null && "null" in items; 7624 } 7625 const arrayItems = items; 7626 if (isGroupedItems(arrayItems)) { 7627 for (const group of arrayItems) { 7628 for (const item of group.items) { 7629 if (item && item.value == null && item.label != null) { 7630 return true; 7631 } 7632 } 7633 } 7634 return false; 7635 } 7636 for (const item of arrayItems) { 7637 if (item && item.value == null && item.label != null) { 7638 return true; 7639 } 7640 } 7641 return false; 7642 } 7643 function stringifyAsLabel(item, itemToStringLabel) { 7644 if (itemToStringLabel && item != null) { 7645 return itemToStringLabel(item) ?? ""; 7646 } 7647 if (item && typeof item === "object") { 7648 if ("label" in item && item.label != null) { 7649 return String(item.label); 7650 } 7651 if ("value" in item) { 7652 return String(item.value); 7653 } 7654 } 7655 return serializeValue(item); 7656 } 7657 function stringifyAsValue(item, itemToStringValue) { 7658 if (itemToStringValue && item != null) { 7659 return itemToStringValue(item) ?? ""; 7660 } 7661 if (item && typeof item === "object" && "value" in item && "label" in item) { 7662 return serializeValue(item.value); 7663 } 7664 return serializeValue(item); 7665 } 7666 function resolveSelectedLabel(value, items, itemToStringLabel) { 7667 function fallback() { 7668 return stringifyAsLabel(value, itemToStringLabel); 7669 } 7670 if (itemToStringLabel && value != null) { 7671 return itemToStringLabel(value); 7672 } 7673 if (value && typeof value === "object" && "label" in value && value.label != null) { 7674 return value.label; 7675 } 7676 if (items && !Array.isArray(items)) { 7677 const label = Object.hasOwn(items, value) ? items[value] : void 0; 7678 return label ?? fallback(); 7679 } 7680 if (Array.isArray(items)) { 7681 const arrayItems = items; 7682 const flatItems = flattenLeafItems(arrayItems); 7683 if (value == null || typeof value !== "object") { 7684 const match = flatItems.find((item) => item.value === value); 7685 if (match && match.label != null) { 7686 return match.label; 7687 } 7688 return fallback(); 7689 } 7690 if ("value" in value) { 7691 const match = flatItems.find((item) => item && item.value === value.value); 7692 if (match && match.label != null) { 7693 return match.label; 7694 } 7695 } 7696 } 7697 return fallback(); 7698 } 7699 function resolveMultipleLabels(values, items, itemToStringLabel) { 7700 return values.reduce((acc, value, index2) => { 7701 if (index2 > 0) { 7702 acc.push(", "); 7703 } 7704 acc.push(/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(React38.Fragment, { 7705 children: resolveSelectedLabel(value, items, itemToStringLabel) 7706 }, index2)); 7707 return acc; 7708 }, []); 7709 } 7710 7711 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/field-root-context/FieldRootContext.mjs 7712 var React39 = __toESM(require_react(), 1); 7713 7714 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/control/FieldControlDataAttributes.mjs 7715 var valid = "data-valid"; 7716 var invalid = "data-invalid"; 7717 7718 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/field-constants/constants.mjs 7719 var DEFAULT_VALIDITY_STATE = { 7720 badInput: false, 7721 customError: false, 7722 patternMismatch: false, 7723 rangeOverflow: false, 7724 rangeUnderflow: false, 7725 stepMismatch: false, 7726 tooLong: false, 7727 tooShort: false, 7728 typeMismatch: false, 7729 valid: null, 7730 valueMissing: false 7731 }; 7732 var DEFAULT_FIELD_STATE_ATTRIBUTES = { 7733 valid: null, 7734 touched: false, 7735 dirty: false, 7736 filled: false, 7737 focused: false 7738 }; 7739 var DEFAULT_FIELD_ROOT_STATE = { 7740 disabled: false, 7741 ...DEFAULT_FIELD_STATE_ATTRIBUTES 7742 }; 7743 var fieldValidityMapping = { 7744 valid(value) { 7745 if (value === null) { 7746 return null; 7747 } 7748 if (value) { 7749 return { 7750 [valid]: "" 7751 }; 7752 } 7753 return { 7754 [invalid]: "" 7755 }; 7756 } 7757 }; 7758 7759 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/field-root-context/FieldRootContext.mjs 7760 var DEFAULT_FIELD_ROOT_CONTEXT = { 7761 invalid: void 0, 7762 name: void 0, 7763 validityData: { 7764 state: DEFAULT_VALIDITY_STATE, 7765 errors: [], 7766 error: "", 7767 value: "", 7768 initialValue: null 7769 }, 7770 setValidityData: NOOP, 7771 disabled: void 0, 7772 setTouched: NOOP, 7773 setDirty: NOOP, 7774 setFilled: NOOP, 7775 setFocused: NOOP, 7776 focusOwnerRef: { 7777 current: void 0 7778 }, 7779 validationMode: "onSubmit", 7780 shouldValidateOnChange: () => false, 7781 state: DEFAULT_FIELD_ROOT_STATE, 7782 registerFieldControl: NOOP, 7783 validation: { 7784 getValidationProps: (_disabled, props = EMPTY_OBJECT) => props, 7785 inputRef: { 7786 current: null 7787 }, 7788 registeredInputs: /* @__PURE__ */ new Map(), 7789 registerInput: NOOP, 7790 getInputControl: () => null, 7791 commit: async () => { 7792 }, 7793 change: NOOP 7794 } 7795 }; 7796 var FieldRootContext = /* @__PURE__ */ React39.createContext(DEFAULT_FIELD_ROOT_CONTEXT); 7797 if (true) FieldRootContext.displayName = "FieldRootContext"; 7798 function useFieldRootContext(optional = true) { 7799 const context = React39.useContext(FieldRootContext); 7800 if (context.setValidityData === NOOP && !optional) { 7801 throw new Error(true ? "Base UI: FieldRootContext is missing. Field parts must be placed within <Field.Root>." : formatErrorMessage_default(28)); 7802 } 7803 return context; 7804 } 7805 7806 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/field-register-control/useRegisterFieldControl.mjs 7807 function useRegisterFieldControl(controlRef, id, value, getFormValueOverride, enabled = true, name3) { 7808 const { 7809 registerFieldControl 7810 } = useFieldRootContext(); 7811 const sourceRef = useRefWithInit(() => /* @__PURE__ */ Symbol()); 7812 useIsoLayoutEffect(() => { 7813 const source = sourceRef.current; 7814 if (!enabled) { 7815 registerFieldControl(source, void 0); 7816 return; 7817 } 7818 const registration = { 7819 controlRef, 7820 getValue: getFormValueOverride, 7821 id, 7822 name: name3, 7823 value 7824 }; 7825 registerFieldControl(source, registration); 7826 }, [controlRef, enabled, getFormValueOverride, id, name3, registerFieldControl, sourceRef, value]); 7827 useIsoLayoutEffect(() => { 7828 const source = sourceRef.current; 7829 return () => { 7830 registerFieldControl(source, void 0); 7831 }; 7832 }, [registerFieldControl, sourceRef]); 7833 } 7834 7835 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/form-context/FormContext.mjs 7836 var React40 = __toESM(require_react(), 1); 7837 var FormContext = /* @__PURE__ */ React40.createContext({ 7838 elementRef: { 7839 current: null 7840 }, 7841 formRef: { 7842 current: { 7843 fields: /* @__PURE__ */ new Map() 7844 } 7845 }, 7846 errors: {}, 7847 clearErrors: NOOP, 7848 validationMode: "onSubmit", 7849 submitCountRef: { 7850 current: 0 7851 } 7852 }); 7853 if (true) FormContext.displayName = "FormContext"; 7854 function useFormContext() { 7855 return React40.useContext(FormContext); 7856 } 7857 7858 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/labelable-provider/useLabelableId.mjs 7859 var React42 = __toESM(require_react(), 1); 7860 7861 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/labelable-provider/LabelableContext.mjs 7862 var React41 = __toESM(require_react(), 1); 7863 var LabelableContext = /* @__PURE__ */ React41.createContext({ 7864 controlId: void 0, 7865 registerControlId: NOOP, 7866 resetControlId: NOOP, 7867 labelId: void 0, 7868 setLabelId: NOOP, 7869 messageIds: [], 7870 setMessageIds: NOOP, 7871 getDescriptionProps: (externalProps) => externalProps 7872 }); 7873 if (true) LabelableContext.displayName = "LabelableContext"; 7874 function useLabelableContext() { 7875 return React41.useContext(LabelableContext); 7876 } 7877 7878 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/labelable-provider/useLabelableId.mjs 7879 function useLabelableId(params = {}) { 7880 const { 7881 id, 7882 enabled = true 7883 } = params; 7884 const { 7885 controlId, 7886 registerControlId, 7887 resetControlId 7888 } = useLabelableContext(); 7889 const defaultId = useBaseUiId(); 7890 const controlSourceRef = useRefWithInit(() => /* @__PURE__ */ Symbol()); 7891 const hasRegisteredRef = React42.useRef(false); 7892 const hadExplicitIdRef = React42.useRef(false); 7893 const unregisterControlId = useStableCallback(() => { 7894 if (!hasRegisteredRef.current || registerControlId === NOOP) { 7895 return; 7896 } 7897 hasRegisteredRef.current = false; 7898 registerControlId(controlSourceRef.current, void 0); 7899 }); 7900 useIsoLayoutEffect(() => { 7901 if (!enabled || registerControlId === NOOP) { 7902 unregisterControlId(); 7903 return void 0; 7904 } 7905 let nextId; 7906 if (id !== void 0) { 7907 hadExplicitIdRef.current = true; 7908 nextId = id; 7909 } else if (hadExplicitIdRef.current) { 7910 nextId = defaultId; 7911 } else { 7912 resetControlId(); 7913 return void 0; 7914 } 7915 if (nextId === void 0) { 7916 unregisterControlId(); 7917 return void 0; 7918 } 7919 hasRegisteredRef.current = true; 7920 registerControlId(controlSourceRef.current, nextId); 7921 return void 0; 7922 }, [id, enabled, registerControlId, resetControlId, defaultId, controlSourceRef, unregisterControlId]); 7923 useIsoLayoutEffect(() => { 7924 return unregisterControlId; 7925 }, [unregisterControlId]); 7926 return (enabled ? controlId : void 0) ?? id ?? defaultId; 7927 } 7928 7929 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/direction-context/DirectionContext.mjs 7930 var React43 = __toESM(require_react(), 1); 7931 var DirectionContext = /* @__PURE__ */ React43.createContext(void 0); 7932 if (true) DirectionContext.displayName = "DirectionContext"; 7933 function useDirection() { 7934 const context = React43.useContext(DirectionContext); 7935 return context?.direction ?? "ltr"; 7936 } 7937 7938 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/field-root-context/useSetFieldFocused.mjs 7939 function useSetFieldFocused(disabled2, focusTargetRef, onFocusedChange) { 7940 const { 7941 setFocused, 7942 focusOwnerRef 7943 } = useFieldRootContext(); 7944 const setFieldFocused = useStableCallback((focused) => { 7945 if (focused ? !disabled2 : focusOwnerRef.current === setFieldFocused) { 7946 focusOwnerRef.current = focused && setFieldFocused; 7947 onFocusedChange?.(focused); 7948 setFocused(focused); 7949 } 7950 }); 7951 useIsoLayoutEffect(() => { 7952 const el2 = focusTargetRef.current; 7953 const root = el2?.getRootNode(); 7954 if (root?.activeElement === el2) { 7955 setFieldFocused(true); 7956 } 7957 return () => setFieldFocused(false); 7958 }, [disabled2, focusTargetRef, setFieldFocused]); 7959 return setFieldFocused; 7960 } 7961 7962 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/getPseudoElementBounds.mjs 7963 var BOUNDARY_OFFSET = 5; 7964 function isMouseWithinBounds(event, element) { 7965 const bounds = getPseudoElementBounds(element); 7966 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; 7967 } 7968 function getPseudoElementBounds(element) { 7969 const elementRect = element.getBoundingClientRect(); 7970 const win = getWindow(element); 7971 if (parts_exports.env.jsdom) { 7972 return elementRect; 7973 } 7974 const beforeStyles = win.getComputedStyle(element, "::before"); 7975 const afterStyles = win.getComputedStyle(element, "::after"); 7976 const hasPseudoElements = beforeStyles.content !== "none" || afterStyles.content !== "none"; 7977 if (!hasPseudoElements) { 7978 return elementRect; 7979 } 7980 const beforeWidth = parseFloat(beforeStyles.width) || 0; 7981 const beforeHeight = parseFloat(beforeStyles.height) || 0; 7982 const afterWidth = parseFloat(afterStyles.width) || 0; 7983 const afterHeight = parseFloat(afterStyles.height) || 0; 7984 const totalWidth = Math.max(elementRect.width, beforeWidth, afterWidth); 7985 const totalHeight = Math.max(elementRect.height, beforeHeight, afterHeight); 7986 const widthDiff = totalWidth - elementRect.width; 7987 const heightDiff = totalHeight - elementRect.height; 7988 return { 7989 left: elementRect.left - widthDiff / 2, 7990 right: elementRect.right + widthDiff / 2, 7991 top: elementRect.top - heightDiff / 2, 7992 bottom: elementRect.bottom + heightDiff / 2 7993 }; 7994 } 7995 7996 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/resolveAriaLabelledBy.mjs 7997 function getDefaultLabelId(id) { 7998 return id == null ? void 0 : `$id}-label`; 7999 } 8000 function resolveAriaLabelledBy(fieldLabelId, localLabelId) { 8001 return fieldLabelId ?? localLabelId; 8002 } 8003 8004 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useAnchorPositioning.mjs 8005 var React45 = __toESM(require_react(), 1); 8006 8007 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useFloating.mjs 8008 var React44 = __toESM(require_react(), 1); 8009 function useBaseUIFloating(options) { 8010 const { 8011 nodeId, 8012 externalTree, 8013 rootContext: store 8014 } = options; 8015 const referenceElement = store.useState("referenceElement"); 8016 const floatingElement = store.useState("floatingElement"); 8017 const domReferenceElement = store.useState("domReferenceElement"); 8018 const open2 = store.useState("open"); 8019 const floatingId = store.useState("floatingId"); 8020 const [positionReference, setPositionReferenceRaw] = React44.useState(null); 8021 const domReferenceRef = React44.useRef(null); 8022 const tree = useFloatingTree(externalTree); 8023 const storeElements = React44.useMemo(() => ({ 8024 reference: referenceElement, 8025 floating: floatingElement, 8026 domReference: domReferenceElement 8027 }), [referenceElement, floatingElement, domReferenceElement]); 8028 const position = useFloating({ 8029 ...options, 8030 elements: { 8031 ...storeElements, 8032 ...positionReference && { 8033 reference: positionReference 8034 } 8035 } 8036 }); 8037 const setPositionReference = React44.useCallback((node) => { 8038 const computedPositionReference = isElement(node) ? { 8039 getBoundingClientRect: () => node.getBoundingClientRect(), 8040 getClientRects: () => node.getClientRects(), 8041 contextElement: node 8042 } : node; 8043 setPositionReferenceRaw(computedPositionReference); 8044 position.refs.setReference(computedPositionReference); 8045 }, [position.refs]); 8046 const refs = React44.useMemo(() => ({ 8047 ...position.refs, 8048 setPositionReference, 8049 domReference: domReferenceRef 8050 }), [position.refs, setPositionReference]); 8051 const elements = React44.useMemo(() => ({ 8052 ...position.elements, 8053 domReference: domReferenceElement 8054 }), [position.elements, domReferenceElement]); 8055 const context = React44.useMemo(() => ({ 8056 ...position, 8057 dataRef: store.context.dataRef, 8058 open: open2, 8059 onOpenChange: store.setOpen, 8060 events: store.context.events, 8061 floatingId, 8062 refs, 8063 elements, 8064 nodeId, 8065 rootStore: store 8066 }), [position, refs, elements, nodeId, store, open2, floatingId]); 8067 useIsoLayoutEffect(() => { 8068 if (domReferenceElement) { 8069 domReferenceRef.current = domReferenceElement; 8070 } 8071 }, [domReferenceElement]); 8072 useIsoLayoutEffect(() => { 8073 store.context.dataRef.current.floatingContext = context; 8074 const node = tree?.nodesRef.current.find((n) => n.id === nodeId); 8075 if (node) { 8076 node.context = context; 8077 } 8078 }); 8079 return React44.useMemo(() => ({ 8080 ...position, 8081 context, 8082 refs, 8083 elements, 8084 rootStore: store 8085 }), [position, refs, elements, context, store]); 8086 } 8087 8088 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/middleware/arrow.mjs 8089 var baseArrow = (options) => ({ 8090 name: "arrow", 8091 options, 8092 async fn(state) { 8093 const { 8094 x, 8095 y, 8096 placement, 8097 rects, 8098 platform: platform3, 8099 elements, 8100 middlewareData 8101 } = state; 8102 const { 8103 element, 8104 padding = 0 8105 } = evaluate(options, state) || {}; 8106 if (element == null) { 8107 return {}; 8108 } 8109 const paddingObject = getPaddingObject(padding); 8110 const coords = { 8111 x, 8112 y 8113 }; 8114 const axis = getAlignmentAxis(placement); 8115 const length = getAxisLength(axis); 8116 const arrowDimensions = await platform3.getDimensions(element); 8117 const isYAxis = axis === "y"; 8118 const minProp = isYAxis ? "top" : "left"; 8119 const maxProp = isYAxis ? "bottom" : "right"; 8120 const clientProp = isYAxis ? "clientHeight" : "clientWidth"; 8121 const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length]; 8122 const startDiff = coords[axis] - rects.reference[axis]; 8123 const clientSize = elements.floating[clientProp] || rects.floating[length]; 8124 const centerToReference = endDiff / 2 - startDiff / 2; 8125 const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1; 8126 const minPadding = Math.min(paddingObject[minProp], largestPossiblePadding); 8127 const maxPadding = Math.min(paddingObject[maxProp], largestPossiblePadding); 8128 const min2 = minPadding; 8129 const max2 = clientSize - arrowDimensions[length] - maxPadding; 8130 const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference; 8131 const offset4 = clamp(min2, center, max2); 8132 const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset4 && rects.reference[length] / 2 - (center < min2 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0; 8133 const alignmentOffset = shouldAddOffset ? center < min2 ? center - min2 : center - max2 : 0; 8134 return { 8135 [axis]: coords[axis] + alignmentOffset, 8136 data: { 8137 [axis]: offset4, 8138 centerOffset: center - offset4 - alignmentOffset, 8139 ...shouldAddOffset && { 8140 alignmentOffset 8141 } 8142 }, 8143 reset: shouldAddOffset 8144 }; 8145 } 8146 }); 8147 var arrow4 = (options, deps) => { 8148 const { 8149 name: name3, 8150 fn 8151 } = baseArrow(options); 8152 return { 8153 name: name3, 8154 fn, 8155 options: [options, deps] 8156 }; 8157 }; 8158 8159 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/hideMiddleware.mjs 8160 var hide4 = { 8161 name: "hide", 8162 async fn(state) { 8163 const { 8164 width, 8165 height, 8166 x, 8167 y 8168 } = state.rects.reference; 8169 const anchorHidden2 = width === 0 && height === 0 && x === 0 && y === 0; 8170 const overflow = await state.platform.detectOverflow(state, { 8171 elementContext: "reference" 8172 }); 8173 const referenceHidden = overflow.top - height >= 0 || overflow.right - width >= 0 || overflow.bottom - height >= 0 || overflow.left - width >= 0; 8174 return { 8175 data: { 8176 referenceHidden: referenceHidden || anchorHidden2 8177 } 8178 }; 8179 } 8180 }; 8181 8182 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/adaptiveOriginConstants.mjs 8183 var DEFAULT_SIDES = { 8184 sideX: "left", 8185 sideY: "top" 8186 }; 8187 8188 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/CommonPositionerCssVars.mjs 8189 var availableWidth = "--available-width"; 8190 var availableHeight = "--available-height"; 8191 var anchorWidth = "--anchor-width"; 8192 var anchorHeight = "--anchor-height"; 8193 var transformOrigin = "--transform-origin"; 8194 8195 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useAnchorPositioning.mjs 8196 var AVAILABLE_WIDTH_VAR = availableWidth; 8197 var AVAILABLE_HEIGHT_VAR = availableHeight; 8198 function getLogicalSide(sideParam, renderedSide, isRtl) { 8199 const isLogicalSideParam = sideParam === "inline-start" || sideParam === "inline-end"; 8200 const logicalRight = isRtl ? "inline-start" : "inline-end"; 8201 const logicalLeft = isRtl ? "inline-end" : "inline-start"; 8202 return { 8203 top: "top", 8204 right: isLogicalSideParam ? logicalRight : "right", 8205 bottom: "bottom", 8206 left: isLogicalSideParam ? logicalLeft : "left" 8207 }[renderedSide]; 8208 } 8209 function getOffsetData(state, sideParam, isRtl) { 8210 const { 8211 rects, 8212 placement 8213 } = state; 8214 const data = { 8215 side: getLogicalSide(sideParam, getSide(placement), isRtl), 8216 align: getAlignment(placement) || "center", 8217 anchor: { 8218 width: rects.reference.width, 8219 height: rects.reference.height 8220 }, 8221 positioner: { 8222 width: rects.floating.width, 8223 height: rects.floating.height 8224 } 8225 }; 8226 return data; 8227 } 8228 function useAnchorPositioning(params) { 8229 return useAnchorPositioningWithHook(params, useBaseUIFloating); 8230 } 8231 function useAnchorPositioningWithHook(params, useFloatingHook) { 8232 const { 8233 // Public parameters 8234 anchor, 8235 positionMethod = "absolute", 8236 side: sideParam = "bottom", 8237 sideOffset = 0, 8238 align = "center", 8239 alignOffset = 0, 8240 collisionBoundary, 8241 collisionPadding: collisionPaddingParam = 5, 8242 sticky = false, 8243 arrowPadding = 5, 8244 disableAnchorTracking = false, 8245 inline: inlineMiddleware, 8246 // Private parameters 8247 keepMounted = false, 8248 floatingRootContext, 8249 mounted, 8250 collisionAvoidance, 8251 shift: shift4, 8252 nodeId, 8253 adaptiveOrigin, 8254 lazyFlip = false, 8255 externalTree 8256 } = params; 8257 const collisionAvoidanceSide = collisionAvoidance.side || "flip"; 8258 const collisionAvoidanceAlign = collisionAvoidance.align || "flip"; 8259 const collisionAvoidanceFallbackAxisSide = collisionAvoidance.fallbackAxisSide || "end"; 8260 const shiftCrossAxis = shift4?.crossAxis ?? false; 8261 const shiftRootBoundary = shift4?.rootBoundary; 8262 const anchorFn = typeof anchor === "function" ? anchor : void 0; 8263 const anchorFnCallback = useStableCallback(anchorFn); 8264 const anchorDep = anchorFn ? anchorFnCallback : anchor; 8265 const anchorValueRef = useValueAsRef(anchor); 8266 const mountedRef = useValueAsRef(mounted); 8267 const direction = useDirection(); 8268 const isRtl = direction === "rtl"; 8269 const [mountPlacement, setMountPlacement] = React45.useState(null); 8270 if (!mounted && mountPlacement !== null) { 8271 setMountPlacement(null); 8272 } 8273 const lockAlign = lazyFlip === "placement"; 8274 const mountSide = mountPlacement ? getSide(mountPlacement) : null; 8275 const mountAlign = mountPlacement && lockAlign ? getAlignment(mountPlacement) || "center" : null; 8276 const side = mountSide || { 8277 top: "top", 8278 right: "right", 8279 bottom: "bottom", 8280 left: "left", 8281 "inline-end": isRtl ? "left" : "right", 8282 "inline-start": isRtl ? "right" : "left" 8283 }[sideParam]; 8284 const placementAlign = mountAlign || align; 8285 const placement = placementAlign === "center" ? side : `$side}-$placementAlign}`; 8286 let collisionPadding = collisionPaddingParam; 8287 if (typeof collisionPadding === "number") { 8288 collisionPadding = { 8289 top: collisionPadding, 8290 right: collisionPadding, 8291 bottom: collisionPadding, 8292 left: collisionPadding 8293 }; 8294 } else if (collisionPadding) { 8295 collisionPadding = { 8296 top: collisionPadding.top || 0, 8297 right: collisionPadding.right || 0, 8298 bottom: collisionPadding.bottom || 0, 8299 left: collisionPadding.left || 0 8300 }; 8301 } 8302 const bias = 1; 8303 const biasTop = sideParam === "bottom" ? bias : 0; 8304 const biasBottom = sideParam === "top" ? bias : 0; 8305 const biasLeft = sideParam === "right" ? bias : 0; 8306 const biasRight = sideParam === "left" ? bias : 0; 8307 const commonCollisionProps = { 8308 boundary: collisionBoundary === "clipping-ancestors" ? "clippingAncestors" : collisionBoundary, 8309 padding: collisionPadding 8310 }; 8311 const arrowRef = React45.useRef(null); 8312 const sideOffsetRef = useValueAsRef(sideOffset); 8313 const alignOffsetRef = useValueAsRef(alignOffset); 8314 const sideOffsetDep = typeof sideOffset !== "function" ? sideOffset : 0; 8315 const alignOffsetDep = typeof alignOffset !== "function" ? alignOffset : 0; 8316 const middleware = []; 8317 if (inlineMiddleware) { 8318 middleware.push(inlineMiddleware); 8319 } 8320 middleware.push(offset3((state) => { 8321 const data = getOffsetData(state, sideParam, isRtl); 8322 const sideAxis = typeof sideOffsetRef.current === "function" ? sideOffsetRef.current(data) : sideOffsetRef.current; 8323 const alignAxis = typeof alignOffsetRef.current === "function" ? alignOffsetRef.current(data) : alignOffsetRef.current; 8324 return { 8325 mainAxis: sideAxis, 8326 crossAxis: alignAxis, 8327 alignmentAxis: alignAxis 8328 }; 8329 }, [sideOffsetDep, alignOffsetDep, isRtl, sideParam])); 8330 const shiftDisabled = collisionAvoidanceAlign === "none" && collisionAvoidanceSide !== "shift"; 8331 const crossAxisShiftEnabled = !shiftDisabled && (sticky || shiftCrossAxis || collisionAvoidanceSide === "shift"); 8332 const flipMiddleware = collisionAvoidanceSide === "none" ? null : flip3({ 8333 ...commonCollisionProps, 8334 // Ensure the popup flips if it's been limited by its --available-height and it resizes. 8335 // Since the size() padding is smaller than the flip() padding, flip() will take precedence. 8336 padding: { 8337 top: collisionPadding.top + bias + biasTop, 8338 right: collisionPadding.right + bias + biasRight, 8339 bottom: collisionPadding.bottom + bias + biasBottom, 8340 left: collisionPadding.left + bias + biasLeft 8341 }, 8342 mainAxis: !shiftCrossAxis && collisionAvoidanceSide === "flip", 8343 crossAxis: collisionAvoidanceAlign === "flip" ? "alignment" : false, 8344 fallbackAxisSideDirection: collisionAvoidanceFallbackAxisSide 8345 }); 8346 const shiftMiddleware = shiftDisabled ? null : shift3({ 8347 ...commonCollisionProps, 8348 // Use the Layout Viewport to avoid shifting around when pinch-zooming. 8349 rootBoundary: shiftRootBoundary, 8350 mainAxis: collisionAvoidanceAlign !== "none", 8351 crossAxis: crossAxisShiftEnabled, 8352 limiter: sticky || shiftCrossAxis ? void 0 : limitShift3((limitData) => { 8353 if (!arrowRef.current) { 8354 return {}; 8355 } 8356 const { 8357 width, 8358 height 8359 } = arrowRef.current.getBoundingClientRect(); 8360 const sideAxis = getSideAxis(getSide(limitData.placement)); 8361 const arrowSize = sideAxis === "y" ? width : height; 8362 const offsetAmount = sideAxis === "y" ? collisionPadding.left + collisionPadding.right : collisionPadding.top + collisionPadding.bottom; 8363 return { 8364 offset: arrowSize / 2 + offsetAmount / 2 8365 }; 8366 }) 8367 }, [commonCollisionProps, sticky, shiftCrossAxis, shiftRootBoundary, collisionPadding, collisionAvoidanceAlign]); 8368 if (collisionAvoidanceSide === "shift" || collisionAvoidanceAlign === "shift" || placementAlign === "center") { 8369 middleware.push(shiftMiddleware, flipMiddleware); 8370 } else { 8371 middleware.push(flipMiddleware, shiftMiddleware); 8372 } 8373 middleware.push(size3({ 8374 ...commonCollisionProps, 8375 apply({ 8376 elements: { 8377 floating 8378 }, 8379 availableWidth: availableWidth2, 8380 availableHeight: availableHeight2, 8381 rects 8382 }) { 8383 if (!mountedRef.current) { 8384 return; 8385 } 8386 const floatingStyle = floating.style; 8387 floatingStyle.setProperty(AVAILABLE_WIDTH_VAR, `$availableWidth2}px`); 8388 floatingStyle.setProperty(AVAILABLE_HEIGHT_VAR, `$availableHeight2}px`); 8389 const dpr = getWindow(floating).devicePixelRatio || 1; 8390 const { 8391 x: x2, 8392 y: y2, 8393 width, 8394 height 8395 } = rects.reference; 8396 const anchorWidth2 = (Math.round((x2 + width) * dpr) - Math.round(x2 * dpr)) / dpr; 8397 const anchorHeight2 = (Math.round((y2 + height) * dpr) - Math.round(y2 * dpr)) / dpr; 8398 floatingStyle.setProperty(anchorWidth, `$anchorWidth2}px`); 8399 floatingStyle.setProperty(anchorHeight, `$anchorHeight2}px`); 8400 } 8401 }), arrow4((state) => ({ 8402 // `transform-origin` calculations rely on an element existing. If the arrow hasn't been set, 8403 // we'll create a fake element. 8404 element: arrowRef.current || ownerDocument(state.elements.floating).createElement("div"), 8405 // No padding for the fake arrow: it would displace aligned popups on narrow anchors. 8406 padding: arrowRef.current ? arrowPadding : 0 8407 }), [arrowPadding]), { 8408 name: "transformOrigin", 8409 fn(state) { 8410 const { 8411 elements: { 8412 floating 8413 }, 8414 middlewareData: middlewareData2, 8415 placement: renderedPlacement2, 8416 platform: platform3, 8417 rects, 8418 y: y2 8419 } = state; 8420 const renderedSide2 = getSide(renderedPlacement2); 8421 const renderedAlign2 = getAlignment(renderedPlacement2); 8422 const isVertical = getSideAxis(renderedSide2) === "y"; 8423 const arrowEl = arrowRef.current; 8424 const sideOffsetValue = typeof sideOffset === "function" ? sideOffset(getOffsetData(state, sideParam, isRtl)) : sideOffset; 8425 let crossOrigin; 8426 if (!arrowEl && renderedAlign2 && Math.abs(isVertical ? middlewareData2.shift?.x || 0 : middlewareData2.shift?.y || 0) <= 1) { 8427 crossOrigin = renderedAlign2 === "start" === (isVertical && platform3.isRTL?.(floating) === true) ? "100%" : "0%"; 8428 } else { 8429 const arrowOffset = isVertical ? middlewareData2.arrow?.x || 0 : middlewareData2.arrow?.y || 0; 8430 const arrowSize = isVertical ? arrowEl?.clientWidth || 0 : arrowEl?.clientHeight || 0; 8431 crossOrigin = `$arrowOffset + arrowSize / 2}px`; 8432 } 8433 let sideOrigin = renderedSide2 === "top" || renderedSide2 === "left" ? `calc(100% + $sideOffsetValue}px)` : `${-sideOffsetValue}px`; 8434 if (crossAxisShiftEnabled && isVertical && Math.abs(middlewareData2.shift?.y || 0) > sideOffsetValue) { 8435 sideOrigin = `$rects.reference.y + rects.reference.height / 2 - y2}px`; 8436 } 8437 floating.style.setProperty(transformOrigin, isVertical ? `$crossOrigin} $sideOrigin}` : `$sideOrigin} $crossOrigin}`); 8438 return {}; 8439 } 8440 }, hide4, adaptiveOrigin); 8441 useIsoLayoutEffect(() => { 8442 if (!mounted && floatingRootContext) { 8443 floatingRootContext.update({ 8444 referenceElement: null, 8445 floatingElement: null, 8446 domReferenceElement: null, 8447 positionReference: null 8448 }); 8449 } 8450 }, [mounted, floatingRootContext]); 8451 const autoUpdateOptions = React45.useMemo(() => ({ 8452 ancestorScroll: !disableAnchorTracking, 8453 elementResize: !disableAnchorTracking && typeof ResizeObserver !== "undefined", 8454 layoutShift: !disableAnchorTracking && typeof IntersectionObserver !== "undefined" 8455 }), [disableAnchorTracking]); 8456 const { 8457 refs, 8458 elements, 8459 x, 8460 y, 8461 middlewareData, 8462 update: update2, 8463 placement: renderedPlacement, 8464 context, 8465 isPositioned, 8466 floatingStyles: originalFloatingStyles 8467 } = useFloatingHook({ 8468 rootContext: floatingRootContext, 8469 open: keepMounted ? mounted : void 0, 8470 placement, 8471 middleware, 8472 strategy: positionMethod, 8473 whileElementsMounted: keepMounted ? void 0 : (...args) => autoUpdate(...args, autoUpdateOptions), 8474 nodeId, 8475 externalTree 8476 }); 8477 const { 8478 sideX, 8479 sideY 8480 } = middlewareData.adaptiveOrigin || DEFAULT_SIDES; 8481 const resolvedPosition = isPositioned ? positionMethod : "fixed"; 8482 const floatingStyles = React45.useMemo(() => { 8483 let base; 8484 if (!isPositioned) { 8485 base = { 8486 position: resolvedPosition, 8487 top: 0, 8488 left: 0 8489 }; 8490 } else if (adaptiveOrigin) { 8491 base = { 8492 position: resolvedPosition, 8493 [sideX]: x, 8494 [sideY]: y 8495 }; 8496 } else { 8497 base = { 8498 ...originalFloatingStyles, 8499 position: resolvedPosition 8500 }; 8501 } 8502 base[AVAILABLE_WIDTH_VAR] = "100vw"; 8503 base[AVAILABLE_HEIGHT_VAR] = "100vh"; 8504 if (!isPositioned) { 8505 base.opacity = 0; 8506 } 8507 return base; 8508 }, [adaptiveOrigin, resolvedPosition, sideX, x, sideY, y, originalFloatingStyles, isPositioned]); 8509 const registeredPositionReferenceRef = React45.useRef(null); 8510 useIsoLayoutEffect(() => { 8511 if (!mounted) { 8512 return; 8513 } 8514 const anchorValue = anchorValueRef.current; 8515 const resolvedAnchor = typeof anchorValue === "function" ? anchorValue() : anchorValue; 8516 const unwrappedElement = (isRef(resolvedAnchor) ? resolvedAnchor.current : resolvedAnchor) || null; 8517 const finalAnchor = unwrappedElement || null; 8518 if (finalAnchor !== registeredPositionReferenceRef.current) { 8519 refs.setPositionReference(finalAnchor); 8520 registeredPositionReferenceRef.current = finalAnchor; 8521 } 8522 }, [mounted, refs, anchorDep, anchorValueRef]); 8523 React45.useEffect(() => { 8524 if (!mounted) { 8525 return; 8526 } 8527 const anchorValue = anchorValueRef.current; 8528 if (typeof anchorValue === "function") { 8529 return; 8530 } 8531 if (isRef(anchorValue) && anchorValue.current !== registeredPositionReferenceRef.current) { 8532 refs.setPositionReference(anchorValue.current); 8533 registeredPositionReferenceRef.current = anchorValue.current; 8534 } 8535 }, [mounted, refs, anchorDep, anchorValueRef]); 8536 React45.useEffect(() => { 8537 if (keepMounted && mounted && elements.reference && elements.floating) { 8538 return autoUpdate(elements.reference, elements.floating, update2, autoUpdateOptions); 8539 } 8540 return void 0; 8541 }, [keepMounted, mounted, elements, update2, autoUpdateOptions]); 8542 const renderedSide = getSide(renderedPlacement); 8543 const logicalRenderedSide = getLogicalSide(sideParam, renderedSide, isRtl); 8544 const renderedAlign = getAlignment(renderedPlacement) || "center"; 8545 const anchorHidden2 = Boolean(middlewareData.hide?.referenceHidden); 8546 useIsoLayoutEffect(() => { 8547 if (lazyFlip && mounted && isPositioned && (renderedSide !== side || lockAlign && renderedAlign !== placementAlign)) { 8548 setMountPlacement(renderedPlacement); 8549 } 8550 }, [lazyFlip, lockAlign, mounted, isPositioned, renderedPlacement, renderedSide, renderedAlign, side, placementAlign]); 8551 const arrowStyles = React45.useMemo(() => ({ 8552 position: "absolute", 8553 top: middlewareData.arrow?.y, 8554 left: middlewareData.arrow?.x 8555 }), [middlewareData.arrow]); 8556 const arrowUncentered = middlewareData.arrow?.centerOffset !== 0; 8557 return React45.useMemo(() => ({ 8558 positionerStyles: floatingStyles, 8559 arrowStyles, 8560 arrowRef, 8561 arrowUncentered, 8562 side: logicalRenderedSide, 8563 align: renderedAlign, 8564 physicalSide: renderedSide, 8565 anchorHidden: anchorHidden2, 8566 refs, 8567 context, 8568 isPositioned, 8569 update: update2 8570 }), [floatingStyles, arrowStyles, arrowRef, arrowUncentered, logicalRenderedSide, renderedAlign, renderedSide, anchorHidden2, refs, context, isPositioned, update2]); 8571 } 8572 function isRef(param) { 8573 return param != null && "current" in param; 8574 } 8575 8576 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/getDisabledMountTransitionStyles.mjs 8577 function getDisabledMountTransitionStyles(transitionStatus) { 8578 return transitionStatus === "starting" ? DISABLED_TRANSITIONS_STYLE : EMPTY_OBJECT; 8579 } 8580 8581 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/usePositioner.mjs 8582 function usePositioner(componentProps, state, { 8583 styles, 8584 transitionStatus, 8585 props, 8586 refs, 8587 hidden, 8588 inert = false 8589 }) { 8590 const style = { 8591 ...styles 8592 }; 8593 if (inert) { 8594 style.pointerEvents = "none"; 8595 } 8596 return useRenderElement("div", componentProps, { 8597 state, 8598 ref: refs, 8599 props: [{ 8600 role: "presentation", 8601 hidden, 8602 style 8603 }, getDisabledMountTransitionStyles(transitionStatus), props], 8604 stateAttributesMapping: popupStateMapping 8605 }); 8606 } 8607 8608 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/useAnchoredPopupScrollLock.mjs 8609 var React46 = __toESM(require_react(), 1); 8610 var VIEWPORT_WIDTH_TOLERANCE_PX = 20; 8611 function useAnchoredPopupScrollLock(enabled, touchOpen, positionerElement, referenceElement) { 8612 const [touchOpenShouldLockScroll, setTouchOpenShouldLockScroll] = React46.useState(false); 8613 useIsoLayoutEffect(() => { 8614 if (!enabled || !touchOpen || positionerElement == null) { 8615 setTouchOpenShouldLockScroll(false); 8616 return; 8617 } 8618 const viewportWidth = ownerDocument(positionerElement).documentElement.clientWidth; 8619 const popupWidth = positionerElement.offsetWidth; 8620 setTouchOpenShouldLockScroll(viewportWidth > 0 && popupWidth > 0 && popupWidth >= viewportWidth - VIEWPORT_WIDTH_TOLERANCE_PX); 8621 }, [enabled, touchOpen, positionerElement]); 8622 useScrollLock(enabled && (!touchOpen || touchOpenShouldLockScroll), referenceElement); 8623 } 8624 8625 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/listbox-separator/ListboxSeparator.mjs 8626 var React47 = __toESM(require_react(), 1); 8627 var ListboxSeparator = /* @__PURE__ */ React47.forwardRef(function ListboxSeparator2(componentProps, forwardedRef) { 8628 const { 8629 className, 8630 render, 8631 orientation = "horizontal", 8632 style, 8633 ...elementProps 8634 } = componentProps; 8635 const state = { 8636 orientation 8637 }; 8638 return useRenderElement("div", componentProps, { 8639 state, 8640 ref: forwardedRef, 8641 props: [{ 8642 role: "presentation" 8643 }, elementProps] 8644 }); 8645 }); 8646 if (true) ListboxSeparator.displayName = "ListboxSeparator"; 8647 8648 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/item/FieldItemContext.mjs 8649 var React48 = __toESM(require_react(), 1); 8650 var FieldItemContext = /* @__PURE__ */ React48.createContext({ 8651 disabled: false 8652 }); 8653 if (true) FieldItemContext.displayName = "FieldItemContext"; 8654 function useFieldItemContext() { 8655 const context = React48.useContext(FieldItemContext); 8656 return context; 8657 } 8658 8659 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/root/useFieldValidation.mjs 8660 var React49 = __toESM(require_react(), 1); 8661 8662 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/utils/getCombinedFieldValidityData.mjs 8663 function getCombinedFieldValidityData(validityData, invalid2) { 8664 return { 8665 ...validityData, 8666 state: { 8667 ...validityData.state, 8668 valid: !invalid2 && validityData.state.valid 8669 } 8670 }; 8671 } 8672 8673 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/root/useFieldValidation.mjs 8674 var validityKeys = Object.keys(DEFAULT_VALIDITY_STATE); 8675 function isEligibleInput(input, formElement) { 8676 if (input.matches(":disabled")) { 8677 return false; 8678 } 8679 if (!formElement || input.form === formElement) { 8680 return true; 8681 } 8682 return input.form === null && !input.hasAttribute("form"); 8683 } 8684 function findRepresentativeInput(inputs, formElement) { 8685 let fallback = null; 8686 for (const input of inputs.keys()) { 8687 if (!isEligibleInput(input, formElement)) { 8688 continue; 8689 } 8690 if (!input.validity.valid) { 8691 return input; 8692 } 8693 fallback ??= input; 8694 } 8695 return fallback; 8696 } 8697 function makeState(customError) { 8698 return { 8699 ...DEFAULT_VALIDITY_STATE, 8700 valid: !customError, 8701 customError 8702 }; 8703 } 8704 function getNativeErrors(element) { 8705 return element && element.validationMessage ? [element.validationMessage] : []; 8706 } 8707 function useFieldValidation(params) { 8708 const { 8709 elementRef, 8710 formRef 8711 } = useFormContext(); 8712 const { 8713 setValidityData, 8714 validate, 8715 validityData, 8716 validationDebounceTime, 8717 invalid: invalid2, 8718 markedDirtyRef, 8719 state, 8720 shouldValidateOnChange, 8721 validationMode, 8722 registeredFieldIdRef 8723 } = params; 8724 const { 8725 controlId, 8726 getDescriptionProps 8727 } = useLabelableContext(); 8728 const timeout = useTimeout(); 8729 const inputRef = React49.useRef(null); 8730 const registeredInputs = useRefWithInit(() => /* @__PURE__ */ new Map()).current; 8731 const validationCommitIdRef = React49.useRef(0); 8732 const customValidityRef = React49.useRef(null); 8733 const registerInput = React49.useCallback((element, registration) => { 8734 registeredInputs.set(element, registration); 8735 return () => { 8736 registeredInputs.delete(element); 8737 }; 8738 }, [registeredInputs]); 8739 const getInputControl = useStableCallback(() => { 8740 const element = findRepresentativeInput(registeredInputs, elementRef.current); 8741 return element && registeredInputs.get(element)?.controlRef.current || null; 8742 }); 8743 const commit = useStableCallback(async (value, revalidate = false) => { 8744 validationCommitIdRef.current += 1; 8745 const validationCommitId = validationCommitIdRef.current; 8746 function updateRegisteredFieldValidity(nextValidityData, externalInvalid = invalid2) { 8747 const fieldId = registeredFieldIdRef.current ?? controlId; 8748 if (fieldId == null) { 8749 return; 8750 } 8751 const currentFieldData = formRef.current.fields.get(fieldId); 8752 if (!currentFieldData) { 8753 return; 8754 } 8755 const validityDataWithFormErrors = getCombinedFieldValidityData(nextValidityData, externalInvalid); 8756 formRef.current.fields.set(fieldId, { 8757 ...currentFieldData, 8758 validityData: validityDataWithFormErrors 8759 }); 8760 } 8761 function makeValidityData(validityState, errorMessages) { 8762 const errors = validityState.valid === false ? errorMessages : []; 8763 return { 8764 value, 8765 state: validityState, 8766 error: errors[0] ?? "", 8767 errors, 8768 initialValue: validityData.initialValue 8769 }; 8770 } 8771 function setCustomValidity(element2, message) { 8772 const displaced = element2.validity.customError ? element2.validationMessage : ""; 8773 const ownedMessage = message.replace(/\r\n?/g, "\n"); 8774 element2.setCustomValidity(ownedMessage); 8775 customValidityRef.current = [element2, ownedMessage, displaced]; 8776 } 8777 function clearCustomValidity() { 8778 const record = customValidityRef.current; 8779 customValidityRef.current = null; 8780 if (record && (!record[0].willValidate || record[0].validationMessage === record[1])) { 8781 record[0].setCustomValidity(record[2]); 8782 } 8783 } 8784 function publish(validityState, errorMessages, externalInvalid) { 8785 const nextValidityData = makeValidityData(validityState, errorMessages); 8786 updateRegisteredFieldValidity(nextValidityData, externalInvalid); 8787 setValidityData(nextValidityData); 8788 } 8789 function getState(el2) { 8790 const computedState = validityKeys.reduce((acc, key) => { 8791 acc[key] = el2.validity[key]; 8792 return acc; 8793 }, {}); 8794 let hasOnlyValueMissingError = false; 8795 for (const key of validityKeys) { 8796 if (key === "valid") { 8797 continue; 8798 } 8799 if (key === "valueMissing" && computedState[key]) { 8800 hasOnlyValueMissingError = true; 8801 } else if (computedState[key]) { 8802 return computedState; 8803 } 8804 } 8805 if (hasOnlyValueMissingError && !markedDirtyRef.current) { 8806 computedState.valid = true; 8807 computedState.valueMissing = false; 8808 } 8809 return computedState; 8810 } 8811 function resolveRepresentativeInput() { 8812 return registeredInputs.size > 0 ? findRepresentativeInput(registeredInputs, elementRef.current) : inputRef.current; 8813 } 8814 let element = resolveRepresentativeInput(); 8815 function refreshState() { 8816 element = resolveRepresentativeInput(); 8817 return element?.willValidate ? getState(element) : makeState(false); 8818 } 8819 if (revalidate) { 8820 if (state.valid !== false || !element) { 8821 return; 8822 } 8823 if (!element.validity.valueMissing) { 8824 clearCustomValidity(); 8825 const currentElement = resolveRepresentativeInput(); 8826 const foreign = currentElement?.validity.customError ? getNativeErrors(currentElement) : []; 8827 publish(makeState(foreign.length > 0), foreign, false); 8828 return; 8829 } 8830 for (const key of validityKeys) { 8831 if (key !== "valid" && key !== "valueMissing" && key !== "customError" && element.validity[key]) { 8832 return; 8833 } 8834 } 8835 } 8836 timeout.clear(); 8837 clearCustomValidity(); 8838 let nextState = refreshState(); 8839 let validationErrors = getNativeErrors(element); 8840 const isValidatingOnChange = shouldValidateOnChange(); 8841 if (validationErrors.length === 0 || isValidatingOnChange) { 8842 const formValues = Array.from(formRef.current.fields.values()).reduce((acc, field) => { 8843 if (field.name) { 8844 acc[field.name] = field.getValue(); 8845 } 8846 return acc; 8847 }, {}); 8848 const resultOrPromise = validate(value, formValues); 8849 let result; 8850 if (typeof resultOrPromise === "object" && resultOrPromise !== null && "then" in resultOrPromise) { 8851 if (nextState.valid === false) { 8852 publish(nextState, validationErrors); 8853 } else if (validationMode === "onSubmit" || !validityData.state.customError) { 8854 nextState.valid = null; 8855 publish(nextState, validationErrors); 8856 } 8857 result = await resultOrPromise; 8858 if (validationCommitId !== validationCommitIdRef.current) { 8859 return; 8860 } 8861 nextState = refreshState(); 8862 } else { 8863 result = resultOrPromise; 8864 } 8865 validationErrors = result ? [].concat(result).filter(Boolean) : []; 8866 if (validationErrors.length > 0) { 8867 nextState.valid = false; 8868 nextState.customError = true; 8869 if (element?.willValidate) { 8870 setCustomValidity(element, validationErrors.join("\n")); 8871 } 8872 } else { 8873 validationErrors = getNativeErrors(element); 8874 } 8875 } 8876 publish(nextState, validationErrors); 8877 }); 8878 const change = useStableCallback((value, cancelPending = false) => { 8879 timeout.clear(); 8880 validationCommitIdRef.current += 1; 8881 if (cancelPending) { 8882 return; 8883 } 8884 const validateOnChange = shouldValidateOnChange(); 8885 if (validateOnChange && value !== "" && validationDebounceTime) { 8886 timeout.start(validationDebounceTime, () => { 8887 commit(value); 8888 }); 8889 } else { 8890 commit(value, !validateOnChange); 8891 } 8892 }); 8893 const getValidationProps = React49.useCallback((disabled2, externalProps = {}) => mergeProps(getDescriptionProps(externalProps), state.valid === false && !state.disabled && !disabled2 ? { 8894 "aria-invalid": true 8895 } : EMPTY_OBJECT), [getDescriptionProps, state.disabled, state.valid]); 8896 return React49.useMemo(() => ({ 8897 getValidationProps, 8898 inputRef, 8899 registeredInputs, 8900 registerInput, 8901 getInputControl, 8902 commit, 8903 change 8904 }), [getValidationProps, registeredInputs, registerInput, getInputControl, commit, change]); 8905 } 8906 8907 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/useRegisteredLabelId.mjs 8908 function useRegisteredLabelId(idProp, setLabelId) { 8909 const id = useBaseUiId(idProp); 8910 useIsoLayoutEffect(() => { 8911 setLabelId(id); 8912 return () => { 8913 setLabelId((currentId) => currentId === id ? void 0 : currentId); 8914 }; 8915 }, [id, setLabelId]); 8916 return id; 8917 } 8918 8919 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/labelable-provider/useLabel.mjs 8920 function useLabel(params = {}) { 8921 const { 8922 id: idProp, 8923 fallbackControlId, 8924 native = false, 8925 setLabelId: setLabelIdProp, 8926 focusControl: focusControlProp 8927 } = params; 8928 const { 8929 controlId: contextControlId, 8930 setLabelId: setContextLabelId 8931 } = useLabelableContext(); 8932 const syncLabelId = useStableCallback((nextLabelId) => { 8933 setContextLabelId(nextLabelId); 8934 setLabelIdProp?.(nextLabelId); 8935 }); 8936 const id = useRegisteredLabelId(idProp, syncLabelId); 8937 const resolvedControlId = contextControlId ?? fallbackControlId; 8938 function focusControl(event) { 8939 if (focusControlProp) { 8940 focusControlProp(event, resolvedControlId); 8941 return; 8942 } 8943 if (!resolvedControlId) { 8944 return; 8945 } 8946 const controlElement = getControlById(event.currentTarget, resolvedControlId); 8947 if (isHTMLElement(controlElement)) { 8948 focusElementWithVisible(controlElement); 8949 } 8950 } 8951 function handleInteraction(event) { 8952 const target = getTarget(event.nativeEvent); 8953 if (closest(target, "button,input,select,textarea")) { 8954 return; 8955 } 8956 if (!event.defaultPrevented && event.detail > 1) { 8957 event.preventDefault(); 8958 } 8959 if (native) { 8960 return; 8961 } 8962 focusControl(event); 8963 } 8964 return native ? { 8965 id, 8966 htmlFor: resolvedControlId, 8967 onMouseDown: handleInteraction 8968 } : { 8969 id, 8970 onClick: handleInteraction, 8971 onPointerDown(event) { 8972 event.preventDefault(); 8973 } 8974 }; 8975 } 8976 function getControlById(label, id) { 8977 let root = label.getRootNode(); 8978 while (isShadowRoot(root)) { 8979 const element = root.getElementById(id); 8980 if (element) { 8981 return element; 8982 } 8983 root = root.host.getRootNode(); 8984 } 8985 return ownerDocument(label).getElementById(id); 8986 } 8987 function focusElementWithVisible(element) { 8988 element.focus({ 8989 // Available from Chrome 144+ (January 2026). 8990 // Safari and Firefox already support it. 8991 focusVisible: true 8992 }); 8993 } 8994 8995 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/ItemIndicator.mjs 8996 var React50 = __toESM(require_react(), 1); 8997 var ItemIndicator = /* @__PURE__ */ React50.memo(/* @__PURE__ */ React50.forwardRef(function ItemIndicator2(componentProps, forwardedRef) { 8998 const { 8999 render, 9000 className, 9001 style, 9002 keepMounted, 9003 selected, 9004 ...elementProps 9005 } = componentProps; 9006 const indicatorRef = React50.useRef(null); 9007 const { 9008 transitionStatus, 9009 setMounted 9010 } = useTransitionStatus(selected); 9011 const state = { 9012 selected, 9013 transitionStatus 9014 }; 9015 const element = useRenderElement("span", componentProps, { 9016 ref: [forwardedRef, indicatorRef], 9017 state, 9018 props: [{ 9019 "aria-hidden": true, 9020 children: "\u2714\uFE0F" 9021 }, elementProps], 9022 stateAttributesMapping: transitionStatusMapping 9023 }); 9024 useOpenChangeComplete({ 9025 batch: true, 9026 enabled: !selected, 9027 open: selected, 9028 ref: indicatorRef, 9029 onComplete() { 9030 if (!selected) { 9031 setMounted(false); 9032 } 9033 } 9034 }); 9035 return element; 9036 })); 9037 if (true) ItemIndicator.displayName = "ItemIndicator"; 9038 9039 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/toolbar/root/ToolbarRootContext.mjs 9040 var React51 = __toESM(require_react(), 1); 9041 var ToolbarRootContext = /* @__PURE__ */ React51.createContext(void 0); 9042 if (true) ToolbarRootContext.displayName = "ToolbarRootContext"; 9043 function useToolbarRootContext(optional) { 9044 const context = React51.useContext(ToolbarRootContext); 9045 if (context === void 0 && !optional) { 9046 throw new Error(true ? "Base UI: ToolbarRootContext is missing. Toolbar parts must be placed within <Toolbar.Root>." : formatErrorMessage_default(69)); 9047 } 9048 return context; 9049 } 9050 9051 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/usePreviousValue.mjs 9052 var React52 = __toESM(require_react(), 1); 9053 function usePreviousValue(value) { 9054 const [state, setState] = React52.useState({ 9055 current: value, 9056 previous: null 9057 }); 9058 if (!Object.is(value, state.current)) { 9059 setState({ 9060 current: value, 9061 previous: state.current 9062 }); 9063 } 9064 return state.previous; 9065 } 9066 9067 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/direction-provider/DirectionProvider.mjs 9068 var React53 = __toESM(require_react(), 1); 9069 var import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1); 9070 var DirectionProvider = function DirectionProvider2(props) { 9071 const { 9072 direction = "ltr" 9073 } = props; 9074 const contextValue = React53.useMemo(() => ({ 9075 direction 9076 }), [direction]); 9077 return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(DirectionContext.Provider, { 9078 value: contextValue, 9079 children: props.children 9080 }); 9081 }; 9082 if (true) DirectionProvider.displayName = "DirectionProvider"; 9083 9084 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/isElementDisabled.mjs 9085 function isElementDisabled(element) { 9086 return element == null || element.hasAttribute("disabled") || element.getAttribute("aria-disabled") === "true"; 9087 } 9088 9089 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/csp-context/CSPContext.mjs 9090 var React54 = __toESM(require_react(), 1); 9091 var CSPContext = /* @__PURE__ */ React54.createContext(void 0); 9092 if (true) CSPContext.displayName = "CSPContext"; 9093 var DEFAULT_CSP_CONTEXT_VALUE = { 9094 disableStyleElements: false 9095 }; 9096 function useCSPContext() { 9097 return React54.useContext(CSPContext) ?? DEFAULT_CSP_CONTEXT_VALUE; 9098 } 9099 9100 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/clamp.mjs 9101 function clamp2(val, min2 = Number.MIN_SAFE_INTEGER, max2 = Number.MAX_SAFE_INTEGER) { 9102 return Math.max(min2, Math.min(val, max2)); 9103 } 9104 9105 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/index.parts.mjs 9106 var index_parts_exports = {}; 9107 __export(index_parts_exports, { 9108 Control: () => FieldControl, 9109 Description: () => FieldDescription, 9110 Error: () => FieldError, 9111 Item: () => FieldItem, 9112 Label: () => FieldLabel, 9113 Root: () => FieldRoot, 9114 Validity: () => FieldValidity 9115 }); 9116 9117 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/root/FieldRoot.mjs 9118 var React58 = __toESM(require_react(), 1); 9119 9120 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/fieldset/root/FieldsetRootContext.mjs 9121 var React55 = __toESM(require_react(), 1); 9122 var FieldsetRootContext = /* @__PURE__ */ React55.createContext(void 0); 9123 if (true) FieldsetRootContext.displayName = "FieldsetRootContext"; 9124 function useFieldsetRootContext(optional = false) { 9125 const context = React55.useContext(FieldsetRootContext); 9126 if (!context && !optional) { 9127 throw new Error(true ? "Base UI: FieldsetRootContext is missing. Fieldset parts must be placed within <Fieldset.Root>." : formatErrorMessage_default(86)); 9128 } 9129 return context; 9130 } 9131 9132 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/labelable-provider/LabelableProvider.mjs 9133 var React56 = __toESM(require_react(), 1); 9134 var import_jsx_runtime16 = __toESM(require_jsx_runtime(), 1); 9135 var LabelableProvider = function LabelableProvider2(props) { 9136 const defaultId = useBaseUiId(); 9137 const [controlIdState, setControlIdState] = React56.useState(defaultId); 9138 const [labelId, setLabelId] = React56.useState(); 9139 const [messageIds, setMessageIds] = React56.useState([]); 9140 const controlId = controlIdState === void 0 ? defaultId : controlIdState; 9141 const registrationsRef = useRefWithInit(() => /* @__PURE__ */ new Map()); 9142 const { 9143 messageIds: parentMessageIds 9144 } = useLabelableContext(); 9145 const registerControlId = useStableCallback((source, nextId) => { 9146 const registrations = registrationsRef.current; 9147 if (nextId === void 0) { 9148 registrations.delete(source); 9149 } else { 9150 registrations.set(source, nextId); 9151 } 9152 setControlIdState((prev) => { 9153 if (registrations.size === 0) { 9154 return prev; 9155 } 9156 let nextControlId; 9157 for (const id of registrations.values()) { 9158 if (id === prev) { 9159 return prev; 9160 } 9161 if (nextControlId === void 0) { 9162 nextControlId = id; 9163 } 9164 } 9165 return nextControlId; 9166 }); 9167 }); 9168 const resetControlId = useStableCallback(() => { 9169 if (registrationsRef.current.size === 0) { 9170 setControlIdState(defaultId); 9171 } 9172 }); 9173 const getDescriptionProps = React56.useCallback((externalProps) => { 9174 const ids = externalProps["aria-describedby"] ? externalProps["aria-describedby"].split(" ") : []; 9175 ids.push(...parentMessageIds, ...messageIds); 9176 return { 9177 ...externalProps, 9178 "aria-describedby": Array.from(new Set(ids)).join(" ") || void 0 9179 }; 9180 }, [parentMessageIds, messageIds]); 9181 const contextValue = React56.useMemo(() => ({ 9182 controlId, 9183 registerControlId, 9184 resetControlId, 9185 labelId, 9186 setLabelId, 9187 messageIds, 9188 setMessageIds, 9189 getDescriptionProps 9190 }), [controlId, registerControlId, resetControlId, labelId, setLabelId, messageIds, setMessageIds, getDescriptionProps]); 9191 return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(LabelableContext.Provider, { 9192 value: contextValue, 9193 children: props.children 9194 }); 9195 }; 9196 if (true) LabelableProvider.displayName = "LabelableProvider"; 9197 9198 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/field-register-control/useFieldControlRegistration.mjs 9199 var React57 = __toESM(require_react(), 1); 9200 function useFieldControlRegistration(params) { 9201 const { 9202 change, 9203 commit, 9204 invalid: invalid2, 9205 markedDirtyRef, 9206 name: name3, 9207 setRegisteredFieldName, 9208 registeredFieldIdRef, 9209 setValidityData, 9210 validityData 9211 } = params; 9212 const { 9213 formRef 9214 } = useFormContext(); 9215 const activeFieldControlSourceRef = React57.useRef(null); 9216 const registrationRef = React57.useRef(null); 9217 const initialValueCapturedRef = React57.useRef(false); 9218 const getValueForForm = useStableCallback(() => { 9219 const registration = registrationRef.current; 9220 if (!registration) { 9221 return void 0; 9222 } 9223 if (registration.getValue) { 9224 return registration.getValue(); 9225 } 9226 return registration.value; 9227 }); 9228 function getRegistrationValue(registration) { 9229 return registration.value === void 0 ? getValueForForm() : registration.value; 9230 } 9231 const validate = useStableCallback(() => { 9232 const registration = registrationRef.current; 9233 markedDirtyRef.current = true; 9234 if (!registration) { 9235 commit(validityData.value); 9236 return; 9237 } 9238 commit(getRegistrationValue(registration)); 9239 }); 9240 function refreshRegistration() { 9241 const registration = registrationRef.current; 9242 if (!registration || !registration.id) { 9243 return; 9244 } 9245 formRef.current.fields.set(registration.id, { 9246 getValue: getValueForForm, 9247 name: name3 ?? registration.name, 9248 controlRef: registration.controlRef, 9249 validityData: getCombinedFieldValidityData(validityData, invalid2), 9250 validate 9251 }); 9252 } 9253 function deleteRegistration(id = registrationRef.current?.id) { 9254 if (id) { 9255 formRef.current.fields.delete(id); 9256 } 9257 } 9258 function captureInitialValue(registration) { 9259 if (initialValueCapturedRef.current) { 9260 return; 9261 } 9262 initialValueCapturedRef.current = true; 9263 const initialValue = getRegistrationValue(registration); 9264 setValidityData((prev) => prev.initialValue === initialValue ? prev : { 9265 ...prev, 9266 initialValue 9267 }); 9268 } 9269 useIsoLayoutEffect(() => { 9270 const registration = registrationRef.current; 9271 if (!registration || !registration.id) { 9272 return; 9273 } 9274 setRegisteredFieldName(name3 ? void 0 : registration.name); 9275 formRef.current.fields.set(registration.id, { 9276 getValue: getValueForForm, 9277 name: name3 ?? registration.name, 9278 controlRef: registration.controlRef, 9279 validityData: getCombinedFieldValidityData(validityData, invalid2), 9280 validate 9281 }); 9282 }, [formRef, getValueForForm, invalid2, name3, setRegisteredFieldName, validate, validityData]); 9283 useIsoLayoutEffect(() => { 9284 const fields = formRef.current.fields; 9285 return () => { 9286 const id = registrationRef.current?.id; 9287 if (id) { 9288 fields.delete(id); 9289 } 9290 }; 9291 }, [formRef]); 9292 const register2 = useStableCallback((source, registration) => { 9293 if (!registration) { 9294 if (activeFieldControlSourceRef.current === source) { 9295 activeFieldControlSourceRef.current = null; 9296 change(void 0, true); 9297 deleteRegistration(); 9298 registrationRef.current = null; 9299 setRegisteredFieldName(void 0); 9300 registeredFieldIdRef.current = void 0; 9301 } 9302 return; 9303 } 9304 const previousId = registrationRef.current?.id; 9305 const previousSource = activeFieldControlSourceRef.current; 9306 if (previousSource && previousSource !== source) { 9307 change(void 0, true); 9308 } 9309 activeFieldControlSourceRef.current = source; 9310 registrationRef.current = registration; 9311 if (!name3) { 9312 setRegisteredFieldName(registration.name); 9313 } 9314 registeredFieldIdRef.current = registration.id; 9315 if (previousId && previousId !== registration.id) { 9316 deleteRegistration(previousId); 9317 } 9318 captureInitialValue(registration); 9319 refreshRegistration(); 9320 }); 9321 return [validate, register2]; 9322 } 9323 9324 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/root/FieldRoot.mjs 9325 var import_jsx_runtime17 = __toESM(require_jsx_runtime(), 1); 9326 var FieldRootInner = /* @__PURE__ */ React58.forwardRef(function FieldRootInner2(componentProps, forwardedRef) { 9327 const { 9328 errors, 9329 validationMode: formValidationMode, 9330 submitCountRef 9331 } = useFormContext(); 9332 const { 9333 render, 9334 className, 9335 validate: validateProp, 9336 validationDebounceTime = 0, 9337 validationMode = formValidationMode, 9338 name: name3, 9339 disabled: disabledProp = false, 9340 invalid: invalidProp, 9341 dirty: dirtyProp, 9342 touched: touchedProp, 9343 actionsRef, 9344 style, 9345 ...elementProps 9346 } = componentProps; 9347 const disabledFieldset = useFieldsetRootContext(true)?.disabled; 9348 const validate = useStableCallback(validateProp || (() => null)); 9349 const disabled2 = disabledFieldset || disabledProp; 9350 const [touchedState, setTouchedUnwrapped] = React58.useState(false); 9351 const [dirtyState, setDirtyUnwrapped] = React58.useState(false); 9352 const [filled, setFilled] = React58.useState(false); 9353 const [focused, setFocused] = React58.useState(false); 9354 const focusOwnerRef = React58.useRef(void 0); 9355 const dirty = dirtyProp ?? dirtyState; 9356 const touched = touchedProp ?? touchedState; 9357 const markedDirtyRef = React58.useRef(dirty); 9358 const registeredFieldIdRef = React58.useRef(void 0); 9359 const [registeredFieldName, setRegisteredFieldName] = React58.useState(); 9360 const effectiveName = name3 ?? registeredFieldName; 9361 useIsoLayoutEffect(() => { 9362 if (dirtyProp !== void 0) { 9363 markedDirtyRef.current = dirtyProp; 9364 } 9365 }, [dirtyProp]); 9366 const setDirty = useStableCallback((value) => { 9367 if (dirtyProp !== void 0) { 9368 return; 9369 } 9370 if (value) { 9371 markedDirtyRef.current = true; 9372 } 9373 setDirtyUnwrapped(value); 9374 }); 9375 const setTouched = useStableCallback((value) => { 9376 if (touchedProp !== void 0) { 9377 return; 9378 } 9379 setTouchedUnwrapped(value); 9380 }); 9381 const shouldValidateOnChange = useStableCallback(() => validationMode === "onChange" || validationMode === "onSubmit" && submitCountRef.current > 0); 9382 const formError = effectiveName && Object.hasOwn(errors, effectiveName) ? errors[effectiveName] : null; 9383 const hasFormError = !!(Array.isArray(formError) ? formError.length : formError); 9384 const invalid2 = invalidProp === true || hasFormError; 9385 const [validityData, setValidityData] = React58.useState({ 9386 state: DEFAULT_VALIDITY_STATE, 9387 error: "", 9388 errors: [], 9389 value: null, 9390 initialValue: null 9391 }); 9392 const valid2 = !invalid2 && (disabled2 ? null : validityData.state.valid); 9393 const state = React58.useMemo(() => ({ 9394 disabled: disabled2, 9395 touched, 9396 dirty, 9397 valid: valid2, 9398 filled, 9399 focused 9400 }), [disabled2, touched, dirty, valid2, filled, focused]); 9401 const validation = useFieldValidation({ 9402 setValidityData, 9403 validate, 9404 validityData, 9405 validationDebounceTime, 9406 invalid: invalid2, 9407 markedDirtyRef, 9408 state, 9409 shouldValidateOnChange, 9410 validationMode, 9411 registeredFieldIdRef 9412 }); 9413 const [validateFieldControl, registerFieldControl] = useFieldControlRegistration({ 9414 change: validation.change, 9415 commit: validation.commit, 9416 invalid: invalid2, 9417 markedDirtyRef, 9418 name: name3, 9419 setRegisteredFieldName, 9420 registeredFieldIdRef, 9421 setValidityData, 9422 validityData 9423 }); 9424 React58.useImperativeHandle(actionsRef, () => ({ 9425 validate: validateFieldControl 9426 }), [validateFieldControl]); 9427 const contextValue = React58.useMemo(() => ({ 9428 invalid: invalid2, 9429 name: effectiveName, 9430 validityData, 9431 setValidityData, 9432 disabled: disabled2, 9433 setTouched, 9434 setDirty, 9435 setFilled, 9436 setFocused, 9437 focusOwnerRef, 9438 validationMode, 9439 shouldValidateOnChange, 9440 state, 9441 registerFieldControl, 9442 validation 9443 }), [invalid2, effectiveName, validityData, disabled2, setTouched, setDirty, setFilled, setFocused, validationMode, shouldValidateOnChange, state, registerFieldControl, validation]); 9444 const element = useRenderElement("div", componentProps, { 9445 ref: forwardedRef, 9446 state, 9447 props: elementProps, 9448 stateAttributesMapping: fieldValidityMapping 9449 }); 9450 return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(FieldRootContext.Provider, { 9451 value: contextValue, 9452 children: element 9453 }); 9454 }); 9455 if (true) FieldRootInner.displayName = "FieldRootInner"; 9456 var FieldRoot = /* @__PURE__ */ React58.forwardRef(function FieldRoot2(componentProps, forwardedRef) { 9457 return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(LabelableProvider, { 9458 children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(FieldRootInner, { 9459 ...componentProps, 9460 ref: forwardedRef 9461 }) 9462 }); 9463 }); 9464 if (true) FieldRoot.displayName = "FieldRoot"; 9465 9466 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/label/FieldLabel.mjs 9467 var React59 = __toESM(require_react(), 1); 9468 var FieldLabel = /* @__PURE__ */ React59.forwardRef(function FieldLabel2(componentProps, forwardedRef) { 9469 const { 9470 render, 9471 className, 9472 style, 9473 id: idProp, 9474 nativeLabel = true, 9475 ...elementProps 9476 } = componentProps; 9477 const fieldRootContext = useFieldRootContext(false); 9478 const fieldItemContext = useFieldItemContext(); 9479 const { 9480 labelId 9481 } = useLabelableContext(); 9482 const state = { 9483 ...fieldRootContext.state, 9484 disabled: fieldRootContext.disabled || fieldItemContext.disabled 9485 }; 9486 const labelRef = React59.useRef(null); 9487 const labelProps = useLabel({ 9488 id: labelId ?? idProp, 9489 native: nativeLabel 9490 }); 9491 if (true) { 9492 React59.useEffect(() => { 9493 if (!labelRef.current) { 9494 return; 9495 } 9496 const isLabelTag = labelRef.current.tagName === "LABEL"; 9497 if (nativeLabel) { 9498 if (!isLabelTag) { 9499 const ownerStackMessage = SafeReact.captureOwnerStack?.() || ""; 9500 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`."; 9501 error(`$message}$ownerStackMessage}`); 9502 } 9503 } else if (isLabelTag) { 9504 const ownerStackMessage = SafeReact.captureOwnerStack?.() || ""; 9505 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`."; 9506 error(`$message}$ownerStackMessage}`); 9507 } 9508 }, [nativeLabel]); 9509 } 9510 const element = useRenderElement("label", componentProps, { 9511 ref: [forwardedRef, labelRef], 9512 state, 9513 props: [labelProps, elementProps], 9514 stateAttributesMapping: fieldValidityMapping 9515 }); 9516 return element; 9517 }); 9518 if (true) FieldLabel.displayName = "FieldLabel"; 9519 9520 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/error/FieldError.mjs 9521 var React60 = __toESM(require_react(), 1); 9522 var import_jsx_runtime18 = __toESM(require_jsx_runtime(), 1); 9523 var stateAttributesMapping = { 9524 ...fieldValidityMapping, 9525 ...transitionStatusMapping 9526 }; 9527 var FieldError = /* @__PURE__ */ React60.forwardRef(function FieldError2(componentProps, forwardedRef) { 9528 const { 9529 render, 9530 id: idProp, 9531 className, 9532 match, 9533 style, 9534 ...elementProps 9535 } = componentProps; 9536 const id = useBaseUiId(idProp); 9537 const { 9538 validityData, 9539 state: fieldState, 9540 name: name3 9541 } = useFieldRootContext(false); 9542 const { 9543 setMessageIds 9544 } = useLabelableContext(); 9545 const { 9546 errors 9547 } = useFormContext(); 9548 const formError = name3 && Object.hasOwn(errors, name3) ? errors[name3] : null; 9549 const hasFormError = !!(Array.isArray(formError) ? formError.length : formError); 9550 const hasSpecificMatch = typeof match === "string"; 9551 let rendered = false; 9552 if (match === true) { 9553 rendered = true; 9554 } else if (fieldState.disabled) { 9555 rendered = false; 9556 } else if (hasSpecificMatch) { 9557 rendered = Boolean(validityData.state[match]); 9558 } else { 9559 rendered = hasFormError || validityData.state.valid === false; 9560 } 9561 const { 9562 mounted, 9563 transitionStatus, 9564 setMounted 9565 } = useTransitionStatus(rendered); 9566 useIsoLayoutEffect(() => { 9567 if (!rendered || !id) { 9568 return void 0; 9569 } 9570 setMessageIds((v) => v.concat(id)); 9571 return () => { 9572 setMessageIds((v) => v.filter((item) => item !== id)); 9573 }; 9574 }, [rendered, id, setMessageIds]); 9575 const errorRef = React60.useRef(null); 9576 const [lastRenderedMessage, setLastRenderedMessage] = React60.useState(null); 9577 const [lastRenderedMessageKey, setLastRenderedMessageKey] = React60.useState(null); 9578 let error2 = validityData.error; 9579 if (!hasSpecificMatch && hasFormError) { 9580 error2 = formError; 9581 } else if (validityData.errors.length > 1) { 9582 error2 = validityData.errors; 9583 } 9584 let errorMessage = error2; 9585 if (Array.isArray(error2)) { 9586 errorMessage = error2.length > 1 ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("ul", { 9587 children: error2.map((message) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("li", { 9588 children: message 9589 }, message)) 9590 }) : error2[0]; 9591 } 9592 const errorKey = Array.isArray(error2) ? JSON.stringify(error2) : error2; 9593 if (rendered && errorKey !== lastRenderedMessageKey) { 9594 setLastRenderedMessageKey(errorKey); 9595 setLastRenderedMessage(errorMessage); 9596 } 9597 useOpenChangeComplete({ 9598 open: rendered, 9599 ref: errorRef, 9600 onComplete() { 9601 if (!rendered) { 9602 setMounted(false); 9603 } 9604 } 9605 }); 9606 const state = { 9607 ...fieldState, 9608 transitionStatus 9609 }; 9610 const element = useRenderElement("div", componentProps, { 9611 ref: [forwardedRef, errorRef], 9612 state, 9613 props: [{ 9614 id, 9615 children: rendered ? errorMessage : lastRenderedMessage 9616 }, elementProps], 9617 stateAttributesMapping, 9618 enabled: mounted 9619 }); 9620 if (!mounted) { 9621 return null; 9622 } 9623 return element; 9624 }); 9625 if (true) FieldError.displayName = "FieldError"; 9626 9627 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/description/FieldDescription.mjs 9628 var React61 = __toESM(require_react(), 1); 9629 var FieldDescription = /* @__PURE__ */ React61.forwardRef(function FieldDescription2(componentProps, forwardedRef) { 9630 const { 9631 render, 9632 id: idProp, 9633 className, 9634 style, 9635 ...elementProps 9636 } = componentProps; 9637 const id = useBaseUiId(idProp); 9638 const fieldRootContext = useFieldRootContext(false); 9639 const fieldItemContext = useFieldItemContext(); 9640 const { 9641 setMessageIds 9642 } = useLabelableContext(); 9643 const state = { 9644 ...fieldRootContext.state, 9645 disabled: fieldRootContext.disabled || fieldItemContext.disabled 9646 }; 9647 useIsoLayoutEffect(() => { 9648 if (!id) { 9649 return void 0; 9650 } 9651 setMessageIds((v) => v.concat(id)); 9652 return () => { 9653 setMessageIds((v) => v.filter((item) => item !== id)); 9654 }; 9655 }, [id, setMessageIds]); 9656 const element = useRenderElement("p", componentProps, { 9657 ref: forwardedRef, 9658 state, 9659 props: [{ 9660 id 9661 }, elementProps], 9662 stateAttributesMapping: fieldValidityMapping 9663 }); 9664 return element; 9665 }); 9666 if (true) FieldDescription.displayName = "FieldDescription"; 9667 9668 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/control/FieldControl.mjs 9669 var React62 = __toESM(require_react(), 1); 9670 var FieldControl = /* @__PURE__ */ React62.forwardRef(function FieldControl2(componentProps, forwardedRef) { 9671 const { 9672 render, 9673 className, 9674 id: idProp, 9675 name: nameProp, 9676 value, 9677 disabled: disabledProp = false, 9678 onValueChange, 9679 defaultValue, 9680 autoFocus = false, 9681 style, 9682 ...elementProps 9683 } = componentProps; 9684 const { 9685 state: fieldState, 9686 name: fieldName, 9687 disabled: fieldDisabled, 9688 setTouched, 9689 setDirty, 9690 validityData, 9691 setFilled, 9692 validationMode, 9693 validation 9694 } = useFieldRootContext(); 9695 const { 9696 clearErrors, 9697 elementRef: formElementRef, 9698 submitCountRef 9699 } = useFormContext(); 9700 const disabled2 = fieldDisabled || disabledProp; 9701 const name3 = fieldName ?? nameProp; 9702 const state = { 9703 ...fieldState, 9704 disabled: disabled2 9705 }; 9706 const { 9707 labelId 9708 } = useLabelableContext(); 9709 const id = useLabelableId({ 9710 id: idProp 9711 }); 9712 const isControlled = value !== void 0; 9713 const serializedValue = value == null ? void 0 : String(value); 9714 const getValueFromInput = useStableCallback(() => validation.inputRef.current?.value); 9715 useRegisterFieldControl(validation.inputRef, id, serializedValue, getValueFromInput, !disabled2, nameProp); 9716 useIsoLayoutEffect(() => { 9717 const currentValue = serializedValue ?? validation.inputRef.current?.value; 9718 if (currentValue !== void 0) { 9719 setFilled(currentValue !== ""); 9720 } 9721 }, [serializedValue, defaultValue, validation.inputRef, setFilled]); 9722 useValueChanged(serializedValue, () => { 9723 if (serializedValue === void 0) { 9724 return; 9725 } 9726 clearErrors(name3); 9727 setDirty(serializedValue !== (validityData.initialValue ?? "")); 9728 validation.change(serializedValue); 9729 }); 9730 const inputRef = React62.useRef(null); 9731 const setFocused = useSetFieldFocused(disabled2, inputRef); 9732 const enterValidationTimeout = useTimeout(); 9733 const element = useRenderElement("input", componentProps, { 9734 ref: [forwardedRef, inputRef], 9735 state, 9736 props: [{ 9737 id, 9738 disabled: disabled2, 9739 name: name3, 9740 ref: validation.inputRef, 9741 "aria-labelledby": labelId, 9742 autoFocus, 9743 ...isControlled ? { 9744 value 9745 } : { 9746 defaultValue 9747 }, 9748 onChange(event) { 9749 const inputValue = event.currentTarget.value; 9750 const details = createChangeEventDetails(reason_parts_exports.none, event.nativeEvent); 9751 onValueChange?.(inputValue, details); 9752 if (isControlled) { 9753 return; 9754 } 9755 setDirty(inputValue !== (validityData.initialValue ?? "")); 9756 setFilled(inputValue !== ""); 9757 if (!event.nativeEvent.defaultPrevented && !details.isCanceled) { 9758 clearErrors(name3); 9759 validation.change(inputValue); 9760 } 9761 }, 9762 onFocus() { 9763 setFocused(true); 9764 }, 9765 onBlur(event) { 9766 setTouched(true); 9767 setFocused(false); 9768 if (validationMode === "onBlur") { 9769 const inputValue = event.currentTarget.value; 9770 validation.commit(inputValue); 9771 if (isControlled) { 9772 queueMicrotask(() => { 9773 const nextValue = validation.inputRef.current?.value; 9774 if (nextValue !== void 0 && nextValue !== inputValue && nextValue !== (validityData.initialValue ?? "")) { 9775 validation.commit(nextValue); 9776 } 9777 }); 9778 } 9779 } 9780 }, 9781 onKeyDown(event) { 9782 if (event.currentTarget.tagName === "INPUT" && event.key === "Enter") { 9783 setTouched(true); 9784 const value2 = event.currentTarget.value; 9785 const form = event.currentTarget.form; 9786 if (form && form === formElementRef.current && !event.defaultPrevented) { 9787 const input = event.currentTarget; 9788 const submitCount = submitCountRef.current; 9789 enterValidationTimeout.start(0, () => { 9790 if (submitCountRef.current === submitCount) { 9791 validation.commit(input.value); 9792 } 9793 }); 9794 } else { 9795 validation.commit(value2); 9796 } 9797 } 9798 } 9799 }, elementProps, (props) => validation.getValidationProps(disabled2, props)], 9800 stateAttributesMapping: fieldValidityMapping 9801 }); 9802 return element; 9803 }); 9804 if (true) FieldControl.displayName = "FieldControl"; 9805 9806 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/validity/FieldValidity.mjs 9807 var React63 = __toESM(require_react(), 1); 9808 var import_jsx_runtime19 = __toESM(require_jsx_runtime(), 1); 9809 var FieldValidity = function FieldValidity2(props) { 9810 const { 9811 children 9812 } = props; 9813 const { 9814 validityData, 9815 invalid: invalid2 9816 } = useFieldRootContext(false); 9817 const combinedFieldValidityData = React63.useMemo(() => getCombinedFieldValidityData(validityData, invalid2), [validityData, invalid2]); 9818 const isInvalid = combinedFieldValidityData.state.valid === false; 9819 const { 9820 transitionStatus 9821 } = useTransitionStatus(isInvalid); 9822 const fieldValidityState = React63.useMemo(() => { 9823 return { 9824 ...combinedFieldValidityData, 9825 validity: combinedFieldValidityData.state, 9826 transitionStatus 9827 }; 9828 }, [combinedFieldValidityData, transitionStatus]); 9829 return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(React63.Fragment, { 9830 children: children(fieldValidityState) 9831 }); 9832 }; 9833 if (true) FieldValidity.displayName = "FieldValidity"; 9834 9835 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/item/FieldItem.mjs 9836 var React64 = __toESM(require_react(), 1); 9837 var import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1); 9838 var FieldItem = /* @__PURE__ */ React64.forwardRef(function FieldItem2(componentProps, forwardedRef) { 9839 const { 9840 render, 9841 className, 9842 style, 9843 disabled: disabledProp = false, 9844 ...elementProps 9845 } = componentProps; 9846 const { 9847 state: fieldState, 9848 disabled: rootDisabled 9849 } = useFieldRootContext(false); 9850 const disabled2 = rootDisabled || disabledProp; 9851 const state = { 9852 ...fieldState, 9853 disabled: disabled2 9854 }; 9855 const fieldItemContext = React64.useMemo(() => ({ 9856 disabled: disabled2 9857 }), [disabled2]); 9858 const element = useRenderElement("div", componentProps, { 9859 ref: forwardedRef, 9860 state, 9861 props: elementProps, 9862 stateAttributesMapping: fieldValidityMapping 9863 }); 9864 return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(LabelableProvider, { 9865 children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(FieldItemContext.Provider, { 9866 value: fieldItemContext, 9867 children: element 9868 }) 9869 }); 9870 }); 9871 if (true) FieldItem.displayName = "FieldItem"; 9872 9873 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/styles.mjs 9874 var import_jsx_runtime21 = __toESM(require_jsx_runtime(), 1); 9875 var DISABLE_SCROLLBAR_CLASS_NAME = "base-ui-disable-scrollbar"; 9876 var styleDisableScrollbar = { 9877 className: DISABLE_SCROLLBAR_CLASS_NAME, 9878 getElement(nonce) { 9879 return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("style", { 9880 nonce, 9881 href: DISABLE_SCROLLBAR_CLASS_NAME, 9882 precedence: "base-ui:low", 9883 children: `.$DISABLE_SCROLLBAR_CLASS_NAME}{scrollbar-width:none}.$DISABLE_SCROLLBAR_CLASS_NAME}::-webkit-scrollbar{display:none}` 9884 }); 9885 } 9886 }; 9887 if (true) styleDisableScrollbar.getElement.displayName = "styleDisableScrollbar.getElement"; 9888 9889 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/scrollEdges.mjs 9890 var SCROLL_EDGE_TOLERANCE_PX = 1; 9891 function getMaxScrollOffset(scrollSize, clientSize) { 9892 return Math.max(0, scrollSize - clientSize); 9893 } 9894 function normalizeScrollOffset(value, max2) { 9895 if (max2 <= 0) { 9896 return 0; 9897 } 9898 const clamped = clamp2(value, 0, max2); 9899 const startDistance = clamped; 9900 const endDistance = max2 - clamped; 9901 const withinStartTolerance = startDistance <= SCROLL_EDGE_TOLERANCE_PX; 9902 const withinEndTolerance = endDistance <= SCROLL_EDGE_TOLERANCE_PX; 9903 if (withinStartTolerance && withinEndTolerance) { 9904 return startDistance <= endDistance ? 0 : max2; 9905 } 9906 if (withinStartTolerance) { 9907 return 0; 9908 } 9909 if (withinEndTolerance) { 9910 return max2; 9911 } 9912 return clamped; 9913 } 9914 9915 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/index.parts.mjs 9916 var index_parts_exports2 = {}; 9917 __export(index_parts_exports2, { 9918 Arrow: () => SelectArrow, 9919 Backdrop: () => SelectBackdrop, 9920 Group: () => SelectGroup, 9921 GroupLabel: () => SelectGroupLabel, 9922 Icon: () => SelectIcon, 9923 Item: () => SelectItem, 9924 ItemIndicator: () => SelectItemIndicator, 9925 ItemText: () => SelectItemText, 9926 Label: () => SelectLabel, 9927 List: () => SelectList, 9928 Popup: () => SelectPopup, 9929 Portal: () => SelectPortal, 9930 Positioner: () => SelectPositioner, 9931 Root: () => SelectRoot, 9932 ScrollDownArrow: () => SelectScrollDownArrow, 9933 ScrollUpArrow: () => SelectScrollUpArrow, 9934 Separator: () => SelectSeparator, 9935 Trigger: () => SelectTrigger, 9936 Value: () => SelectValue 9937 }); 9938 9939 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/root/SelectRoot.mjs 9940 var React66 = __toESM(require_react(), 1); 9941 9942 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/root/SelectRootContext.mjs 9943 var React65 = __toESM(require_react(), 1); 9944 var SelectRootContext = /* @__PURE__ */ React65.createContext(void 0); 9945 if (true) SelectRootContext.displayName = "SelectRootContext"; 9946 var SelectFloatingContext = /* @__PURE__ */ React65.createContext(void 0); 9947 if (true) SelectFloatingContext.displayName = "SelectFloatingContext"; 9948 function useSelectRootContext() { 9949 const store = React65.useContext(SelectRootContext); 9950 if (store === void 0) { 9951 throw new Error(true ? "Base UI: SelectRootContext is missing. Select parts must be placed within <Select.Root>." : formatErrorMessage_default(60)); 9952 } 9953 return store; 9954 } 9955 function useSelectFloatingContext() { 9956 const context = React65.useContext(SelectFloatingContext); 9957 if (context === void 0) { 9958 throw new Error(true ? "Base UI: SelectFloatingContext is missing. Select parts must be placed within <Select.Root>." : formatErrorMessage_default(61)); 9959 } 9960 return context; 9961 } 9962 9963 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/store.mjs 9964 var selectors2 = { 9965 id: (state) => state.id, 9966 labelId: (state) => state.labelId, 9967 modal: (state) => state.modal, 9968 multiple: (state) => state.multiple, 9969 disabled: (state) => state.disabled, 9970 readOnly: (state) => state.readOnly, 9971 required: (state) => state.required, 9972 highlightItemOnHover: (state) => state.highlightItemOnHover, 9973 items: (state) => state.items, 9974 itemToStringLabel: (state) => state.itemToStringLabel, 9975 isItemEqualToValue: (state) => state.isItemEqualToValue, 9976 value: (state) => state.value, 9977 hasSelectedValue: (state) => { 9978 const { 9979 value, 9980 multiple, 9981 itemToStringValue 9982 } = state; 9983 if (value == null) { 9984 return false; 9985 } 9986 if (multiple && Array.isArray(value)) { 9987 return value.length > 0; 9988 } 9989 return stringifyAsValue(value, itemToStringValue) !== ""; 9990 }, 9991 hasNullItemLabel: (state, enabled) => { 9992 return enabled ? hasNullItemLabel(state.items) : false; 9993 }, 9994 open: (state) => state.open, 9995 mounted: (state) => state.mounted, 9996 forceMount: (state) => state.forceMount, 9997 transitionStatus: (state) => state.transitionStatus, 9998 openMethod: (state) => state.openMethod, 9999 activeIndex: (state) => state.activeIndex, 10000 selectedIndex: (state) => state.selectedIndex, 10001 isActive: (state, index2) => state.activeIndex === index2, 10002 isSelected: (state, itemValue) => { 10003 const comparer = state.isItemEqualToValue; 10004 const storeValue = state.value; 10005 if (state.multiple) { 10006 return Array.isArray(storeValue) && storeValue.some((selectedItem) => compareItemEquality(itemValue, selectedItem, comparer)); 10007 } 10008 return compareItemEquality(itemValue, storeValue, comparer); 10009 }, 10010 isSelectedByFocus: (state, index2) => { 10011 return state.selectedIndex === index2; 10012 }, 10013 popupProps: (state) => state.popupProps, 10014 triggerProps: (state) => state.triggerProps, 10015 itemRoot: (state) => state.itemRoot, 10016 triggerElement: (state) => state.triggerElement, 10017 positionerElement: (state) => state.positionerElement, 10018 listElement: (state) => state.listElement, 10019 popupSide: (state) => state.popupSide, 10020 scrollUpArrowVisible: (state) => state.scrollUpArrowVisible, 10021 scrollDownArrowVisible: (state) => state.scrollDownArrowVisible, 10022 hasScrollArrows: (state) => state.hasScrollArrows 10023 }; 10024 10025 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/root/SelectRoot.mjs 10026 var import_jsx_runtime22 = __toESM(require_jsx_runtime(), 1); 10027 function SelectRoot(props) { 10028 const { 10029 id, 10030 value: valueProp, 10031 defaultValue = null, 10032 onValueChange, 10033 open: openProp, 10034 defaultOpen = false, 10035 onOpenChange, 10036 name: nameProp, 10037 form, 10038 autoComplete, 10039 disabled: disabledProp = false, 10040 readOnly = false, 10041 required = false, 10042 modal = true, 10043 actionsRef, 10044 inputRef, 10045 onOpenChangeComplete, 10046 items, 10047 multiple = false, 10048 itemToStringLabel, 10049 itemToStringValue, 10050 isItemEqualToValue = defaultItemEquality, 10051 highlightItemOnHover = true, 10052 children 10053 } = props; 10054 const { 10055 clearErrors 10056 } = useFormContext(); 10057 const { 10058 setDirty, 10059 setTouched, 10060 setFocused, 10061 validityData, 10062 setFilled, 10063 name: fieldName, 10064 disabled: fieldDisabled, 10065 validation, 10066 validationMode 10067 } = useFieldRootContext(); 10068 const generatedId = useLabelableId({ 10069 id 10070 }); 10071 const disabled2 = fieldDisabled || disabledProp; 10072 const name3 = fieldName ?? nameProp; 10073 const [value, setValueUnwrapped] = useControlled({ 10074 controlled: valueProp, 10075 default: multiple ? defaultValue ?? EMPTY_ARRAY : defaultValue, 10076 name: "Select", 10077 state: "value" 10078 }); 10079 const [open2, setOpenUnwrapped] = useControlled({ 10080 controlled: openProp, 10081 default: defaultOpen, 10082 name: "Select", 10083 state: "open" 10084 }); 10085 const listRef = React66.useRef([]); 10086 const labelsRef = React66.useRef([]); 10087 const popupRef = React66.useRef(null); 10088 const scrollHandlerRef = React66.useRef(null); 10089 const scrollArrowsMountedCountRef = React66.useRef(0); 10090 const valueRef = React66.useRef(null); 10091 const valuesRef = React66.useRef([]); 10092 const typingRef = React66.useRef(false); 10093 const firstItemTextRef = React66.useRef(null); 10094 const selectedItemTextRef = React66.useRef(null); 10095 const selectionRef = React66.useRef({ 10096 allowSelectedMouseUp: false, 10097 allowUnselectedMouseUp: false, 10098 dragY: 0 10099 }); 10100 const alignItemWithTriggerActiveRef = React66.useRef(false); 10101 const initialValueRef = React66.useRef(value); 10102 const { 10103 openMethod, 10104 triggerProps: interactionTypeProps 10105 } = useOpenInteractionType(open2); 10106 const store = useRefWithInit(() => new ReactStore({ 10107 id: generatedId, 10108 labelId: void 0, 10109 modal, 10110 multiple, 10111 disabled: disabled2, 10112 readOnly, 10113 required, 10114 highlightItemOnHover, 10115 itemToStringLabel, 10116 itemToStringValue, 10117 isItemEqualToValue, 10118 value, 10119 open: open2, 10120 // Seeded with the initial values of `useUnmountAfterClose`, which is called after the 10121 // store because its unmount cleanup writes to it. `useSyncedValues` keeps them in sync. 10122 mounted: open2, 10123 transitionStatus: void 0, 10124 items, 10125 forceMount: false, 10126 openMethod: null, 10127 activeIndex: null, 10128 selectedIndex: null, 10129 popupProps: EMPTY_OBJECT, 10130 triggerProps: EMPTY_OBJECT, 10131 itemRoot: { 10132 props: EMPTY_OBJECT, 10133 multiple, 10134 disabled: disabled2, 10135 readOnly, 10136 isItemEqualToValue 10137 }, 10138 triggerElement: null, 10139 positionerElement: null, 10140 listElement: null, 10141 popupSide: null, 10142 scrollUpArrowVisible: false, 10143 scrollDownArrowVisible: false, 10144 hasScrollArrows: false 10145 }, { 10146 setValue: NOOP, 10147 setOpen: NOOP, 10148 handleScrollArrowVisibility: NOOP, 10149 onOpenChangeComplete: NOOP, 10150 listRef, 10151 popupRef, 10152 scrollHandlerRef, 10153 scrollArrowsMountedCountRef, 10154 valueRef, 10155 valuesRef, 10156 labelsRef, 10157 typingRef, 10158 selectionRef, 10159 firstItemTextRef, 10160 selectedItemTextRef, 10161 alignItemWithTriggerActiveRef, 10162 initialValueRef 10163 }, selectors2)).current; 10164 const [preventUnmountOnClose, setPreventUnmountOnClose] = React66.useState(false); 10165 const { 10166 mounted, 10167 transitionStatus, 10168 forceUnmount: handleUnmount 10169 } = useUnmountAfterClose({ 10170 open: open2, 10171 ref: popupRef, 10172 preventUnmountOnClose, 10173 setPreventUnmountOnClose, 10174 onUnmount() { 10175 store.update({ 10176 activeIndex: null, 10177 openMethod: null, 10178 scrollUpArrowVisible: false, 10179 scrollDownArrowVisible: false 10180 }); 10181 onOpenChangeComplete?.(false); 10182 } 10183 }); 10184 const activeIndex = store.useState("activeIndex"); 10185 const selectedIndex = store.useState("selectedIndex"); 10186 const triggerElement = store.useState("triggerElement"); 10187 const positionerElement = store.useState("positionerElement"); 10188 const previousOpenMethod = usePreviousValue(openMethod); 10189 const renderedOpenMethod = openMethod ?? previousOpenMethod; 10190 const serializedValue = React66.useMemo(() => { 10191 if (multiple) { 10192 return ""; 10193 } 10194 return stringifyAsValue(value, itemToStringValue); 10195 }, [multiple, value, itemToStringValue]); 10196 const fieldStringValue = React66.useMemo(() => { 10197 if (multiple && Array.isArray(value)) { 10198 return value.map((currentValue) => stringifyAsValue(currentValue, itemToStringValue)); 10199 } 10200 return stringifyAsValue(value, itemToStringValue); 10201 }, [multiple, value, itemToStringValue]); 10202 const controlRef = useValueAsRef(triggerElement); 10203 const getStringifiedValueForForm = useStableCallback(() => fieldStringValue); 10204 useRegisterFieldControl(controlRef, generatedId, value, getStringifiedValueForForm, !disabled2, nameProp); 10205 const hasSelectedValue = multiple ? Array.isArray(value) && value.length > 0 : value != null && serializedValue !== ""; 10206 useIsoLayoutEffect(() => { 10207 setFilled(hasSelectedValue); 10208 }, [hasSelectedValue, setFilled]); 10209 useIsoLayoutEffect(function syncSelectedIndex() { 10210 const nextIndex = findSelectionIndex(valuesRef.current, value, isItemEqualToValue, multiple); 10211 if (nextIndex === null) { 10212 selectedItemTextRef.current = null; 10213 } 10214 if (open2) { 10215 return; 10216 } 10217 store.set("selectedIndex", nextIndex); 10218 }, [multiple, open2, value, isItemEqualToValue, store]); 10219 useValueChanged(value, () => { 10220 clearErrors(name3); 10221 setDirty(isSelectedValueDirty(value, validityData.initialValue, isItemEqualToValue)); 10222 validation.change(value); 10223 }); 10224 const setOpen = useStableCallback((nextOpen, eventDetails) => { 10225 const openEventDetails = eventDetails; 10226 const shouldPreventUnmountOnClose = attachPreventUnmountOnClose(openEventDetails); 10227 onOpenChange?.(nextOpen, openEventDetails); 10228 if (eventDetails.isCanceled) { 10229 return; 10230 } 10231 if (!nextOpen) { 10232 setPreventUnmountOnClose(shouldPreventUnmountOnClose()); 10233 } 10234 setOpenUnwrapped(nextOpen); 10235 if (!nextOpen && (eventDetails.reason === reason_parts_exports.focusOut || eventDetails.reason === reason_parts_exports.outsidePress)) { 10236 setTouched(true); 10237 setFocused(false); 10238 if (validationMode === "onBlur") { 10239 validation.commit(value); 10240 } 10241 } 10242 }); 10243 React66.useImperativeHandle(actionsRef, () => ({ 10244 unmount: handleUnmount, 10245 close: () => { 10246 if (store.state.open) { 10247 setOpen(false, createChangeEventDetails(reason_parts_exports.imperativeAction)); 10248 } 10249 } 10250 }), [handleUnmount, setOpen, store]); 10251 const setValue = useStableCallback((nextValue, eventDetails) => { 10252 onValueChange?.(nextValue, eventDetails); 10253 if (eventDetails.isCanceled) { 10254 return; 10255 } 10256 setValueUnwrapped(nextValue); 10257 }); 10258 const handleScrollArrowVisibility = useStableCallback((scroller) => { 10259 const maxScrollTop = getMaxScrollOffset(scroller.scrollHeight, scroller.clientHeight); 10260 const scrollTop = normalizeScrollOffset(scroller.scrollTop, maxScrollTop); 10261 const shouldShowUp = scrollTop > 0; 10262 const shouldShowDown = scrollTop < maxScrollTop; 10263 store.set("scrollUpArrowVisible", shouldShowUp); 10264 store.set("scrollDownArrowVisible", shouldShowDown); 10265 }); 10266 const floatingContext = useFloatingRootContext({ 10267 open: open2, 10268 onOpenChange: setOpen, 10269 elements: { 10270 reference: triggerElement, 10271 floating: positionerElement 10272 } 10273 }); 10274 const click = useClick(floatingContext, { 10275 enabled: !disabled2, 10276 event: "mousedown" 10277 }); 10278 const dismiss = useDismiss(floatingContext); 10279 const listNavigation2 = useListNavigation(floatingContext, { 10280 enabled: !disabled2, 10281 listRef, 10282 activeIndex, 10283 selectedIndex, 10284 disabledIndices: EMPTY_ARRAY, 10285 onNavigate(nextActiveIndex) { 10286 if (nextActiveIndex === null && !open2) { 10287 return; 10288 } 10289 store.set("activeIndex", nextActiveIndex); 10290 }, 10291 focusItemOnHover: highlightItemOnHover 10292 }); 10293 const typeahead = useTypeahead(floatingContext, { 10294 // Typeahead on an open popup only moves the highlight, so it remains available while 10295 // `readOnly`. The closed-trigger variant commits a value instead, so it doesn't. 10296 enabled: !disabled2 && (open2 || !readOnly && !multiple), 10297 listRef: labelsRef, 10298 activeIndex, 10299 selectedIndex, 10300 // Skip disabled items while matching so typeahead advances to the next selectable item 10301 // (a click can never select a disabled item and native `<select>` skips them too). Resolve 10302 // the disabled state from the element via the attribute-only `isElementDisabled` so the 10303 // hidden, force-mounted items used for closed-trigger typeahead aren't dropped by the 10304 // `elementsRef`/visibility filter that `disabledIndices` deliberately sidesteps. 10305 disabledIndices: (index2) => isElementDisabled(listRef.current[index2]), 10306 onMatch(index2) { 10307 if (open2) { 10308 store.set("activeIndex", index2); 10309 } else { 10310 setValue(valuesRef.current[index2], createChangeEventDetails(reason_parts_exports.none)); 10311 } 10312 }, 10313 onTyping(typing) { 10314 typingRef.current = typing; 10315 } 10316 }); 10317 const mergedTriggerProps = React66.useMemo(() => mergeProps(typeahead.reference, listNavigation2.reference, dismiss.reference, click.reference, interactionTypeProps), [click.reference, typeahead.reference, listNavigation2.reference, dismiss.reference, interactionTypeProps]); 10318 const popupProps = React66.useMemo(() => mergeProps(FOCUSABLE_POPUP_PROPS, typeahead.floating, listNavigation2.floating, dismiss.floating), [typeahead.floating, listNavigation2.floating, dismiss.floating]); 10319 const itemProps = listNavigation2.item ?? EMPTY_OBJECT; 10320 const itemRoot = React66.useMemo(() => ({ 10321 props: itemProps, 10322 multiple, 10323 disabled: disabled2, 10324 readOnly, 10325 isItemEqualToValue 10326 }), [itemProps, multiple, disabled2, readOnly, isItemEqualToValue]); 10327 store.useContextCallback("setValue", setValue); 10328 store.useContextCallback("setOpen", setOpen); 10329 store.useContextCallback("handleScrollArrowVisibility", handleScrollArrowVisibility); 10330 store.useContextCallback("onOpenChangeComplete", onOpenChangeComplete); 10331 useOnFirstRender(() => { 10332 store.update({ 10333 popupProps, 10334 triggerProps: mergedTriggerProps, 10335 itemRoot 10336 }); 10337 }); 10338 store.useSyncedValues({ 10339 id: generatedId, 10340 modal, 10341 multiple, 10342 disabled: disabled2, 10343 readOnly, 10344 required, 10345 highlightItemOnHover, 10346 value, 10347 open: open2, 10348 mounted, 10349 transitionStatus, 10350 popupProps, 10351 triggerProps: mergedTriggerProps, 10352 itemRoot, 10353 items, 10354 itemToStringLabel, 10355 itemToStringValue, 10356 isItemEqualToValue, 10357 openMethod: renderedOpenMethod 10358 }); 10359 const ref = useMergedRefs(inputRef, validation.inputRef); 10360 const hiddenInputName = multiple ? void 0 : name3; 10361 const hiddenInputs = React66.useMemo(() => { 10362 if (!multiple || !Array.isArray(value) || !name3) { 10363 return null; 10364 } 10365 return value.map((v) => { 10366 const currentSerializedValue = stringifyAsValue(v, itemToStringValue); 10367 return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("input", { 10368 type: "hidden", 10369 form, 10370 name: name3, 10371 value: currentSerializedValue, 10372 disabled: disabled2 10373 }, currentSerializedValue); 10374 }); 10375 }, [multiple, value, form, name3, itemToStringValue, disabled2]); 10376 return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(SelectRootContext.Provider, { 10377 value: store, 10378 children: [/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(SelectFloatingContext.Provider, { 10379 value: floatingContext, 10380 children 10381 }), /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("input", { 10382 ...validation.getValidationProps(disabled2, { 10383 onFocus() { 10384 store.state.triggerElement?.focus({ 10385 // Supported in Chrome from 144 (January 2026) 10386 focusVisible: true 10387 }); 10388 }, 10389 // Handle browser autofill. 10390 onChange(event) { 10391 if (event.nativeEvent.defaultPrevented || disabled2 || readOnly) { 10392 return; 10393 } 10394 const nextValue = event.currentTarget.value; 10395 const details = createChangeEventDetails(reason_parts_exports.none, event.nativeEvent); 10396 function handleChange() { 10397 if (multiple) { 10398 return; 10399 } 10400 const nextValueLower = nextValue.toLowerCase(); 10401 let matchingIndex = valuesRef.current.findIndex((candidate) => stringifyAsValue(candidate, itemToStringValue).toLowerCase() === nextValueLower || stringifyAsLabel(candidate, itemToStringLabel).toLowerCase() === nextValueLower); 10402 if (matchingIndex === -1) { 10403 matchingIndex = valuesRef.current.findIndex((_, index2) => { 10404 const renderedLabel = labelsRef.current[index2]; 10405 return renderedLabel != null && renderedLabel.toLowerCase() === nextValueLower; 10406 }); 10407 } 10408 const matchingValue = valuesRef.current[matchingIndex]; 10409 if (matchingValue != null) { 10410 setValue(matchingValue, details); 10411 } 10412 } 10413 store.set("forceMount", true); 10414 queueMicrotask(handleChange); 10415 } 10416 }), 10417 id: generatedId && hiddenInputName == null ? `$generatedId}-hidden-input` : void 0, 10418 form, 10419 name: hiddenInputName, 10420 autoComplete, 10421 value: serializedValue, 10422 disabled: disabled2, 10423 required: required && !(multiple && hasSelectedValue), 10424 readOnly, 10425 ref, 10426 style: name3 ? visuallyHiddenInput : visuallyHidden, 10427 tabIndex: -1, 10428 "aria-hidden": true, 10429 suppressHydrationWarning: true 10430 }), hiddenInputs] 10431 }); 10432 } 10433 10434 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/label/SelectLabel.mjs 10435 var React67 = __toESM(require_react(), 1); 10436 var SelectLabel = /* @__PURE__ */ React67.forwardRef(function SelectLabel2(componentProps, forwardedRef) { 10437 const { 10438 render, 10439 className, 10440 style, 10441 ...elementProps 10442 } = componentProps; 10443 const elementPropsWithoutId = elementProps; 10444 delete elementPropsWithoutId.id; 10445 const fieldRootContext = useFieldRootContext(); 10446 const store = useSelectRootContext(); 10447 const triggerElement = store.useState("triggerElement"); 10448 const rootId = store.useState("id"); 10449 const defaultLabelId = getDefaultLabelId(rootId); 10450 const labelProps = useLabel({ 10451 id: defaultLabelId, 10452 fallbackControlId: triggerElement?.id ?? rootId, 10453 setLabelId(nextLabelId) { 10454 const resolvedLabelId = typeof nextLabelId === "function" ? nextLabelId(store.state.labelId) : nextLabelId; 10455 store.set("labelId", resolvedLabelId); 10456 } 10457 }); 10458 return useRenderElement("div", componentProps, { 10459 ref: forwardedRef, 10460 state: fieldRootContext.state, 10461 props: [labelProps, elementProps], 10462 stateAttributesMapping: fieldValidityMapping 10463 }); 10464 }); 10465 if (true) SelectLabel.displayName = "SelectLabel"; 10466 10467 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/trigger/SelectTrigger.mjs 10468 var React68 = __toESM(require_react(), 1); 10469 10470 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/trigger/SelectTriggerDataAttributes.mjs 10471 var popupOpen2 = CommonTriggerDataAttributes_exports.popupOpen; 10472 var pressed2 = CommonTriggerDataAttributes_exports.pressed; 10473 var popupSide = "data-popup-side"; 10474 10475 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/trigger/SelectTrigger.mjs 10476 var SELECTED_DELAY = 400; 10477 var stateAttributesMapping2 = { 10478 ...pressableTriggerOpenStateMapping, 10479 ...fieldValidityMapping, 10480 popupSide: (side) => side ? { 10481 [popupSide]: side 10482 } : null, 10483 value: () => null 10484 }; 10485 var SelectTrigger = /* @__PURE__ */ React68.forwardRef(function SelectTrigger2(componentProps, forwardedRef) { 10486 const { 10487 render, 10488 className, 10489 id: idProp, 10490 disabled: disabledProp = false, 10491 nativeButton = true, 10492 style, 10493 ...elementProps 10494 } = componentProps; 10495 const { 10496 setTouched, 10497 validationMode, 10498 validation, 10499 state: fieldState, 10500 disabled: fieldDisabled 10501 } = useFieldRootContext(); 10502 const { 10503 labelId: fieldLabelId 10504 } = useLabelableContext(); 10505 const store = useSelectRootContext(); 10506 const readOnly = store.useState("readOnly"); 10507 const required = store.useState("required"); 10508 const selectDisabled = store.useState("disabled"); 10509 const disabled2 = fieldDisabled || selectDisabled || disabledProp; 10510 const open2 = store.useState("open"); 10511 const mounted = store.useState("mounted"); 10512 const value = store.useState("value"); 10513 const triggerProps = store.useState("triggerProps"); 10514 const positionerElement = store.useState("positionerElement"); 10515 const listElement = store.useState("listElement"); 10516 const popupSideValue = store.useState("popupSide"); 10517 const rootId = store.useState("id"); 10518 const selectLabelId = store.useState("labelId"); 10519 const hasSelectedValue = store.useState("hasSelectedValue"); 10520 const popupSide2 = mounted && positionerElement ? popupSideValue : null; 10521 const id = idProp ?? rootId; 10522 const ariaLabelledBy = resolveAriaLabelledBy(fieldLabelId, selectLabelId); 10523 useLabelableId({ 10524 id: idProp 10525 }); 10526 const positionerRef = useValueAsRef(positionerElement); 10527 const triggerRef = React68.useRef(null); 10528 const setFocused = useSetFieldFocused(disabled2, triggerRef); 10529 const { 10530 getButtonProps, 10531 buttonRef 10532 } = useButton({ 10533 disabled: disabled2, 10534 native: nativeButton 10535 }); 10536 const setTriggerElement = store.useStateSetter("triggerElement"); 10537 const timeoutFocus = useTimeout(); 10538 const timeoutMouseDown = useTimeout(); 10539 const selectedDelayTimeout = useTimeout(); 10540 React68.useEffect(() => { 10541 if (open2) { 10542 selectedDelayTimeout.start(SELECTED_DELAY, () => { 10543 store.context.selectionRef.current.allowUnselectedMouseUp = true; 10544 store.context.selectionRef.current.allowSelectedMouseUp = true; 10545 }); 10546 return () => { 10547 selectedDelayTimeout.clear(); 10548 }; 10549 } 10550 store.context.selectionRef.current = { 10551 allowSelectedMouseUp: false, 10552 allowUnselectedMouseUp: false, 10553 dragY: 0 10554 }; 10555 timeoutMouseDown.clear(); 10556 return void 0; 10557 }, [open2, store, timeoutMouseDown, selectedDelayTimeout]); 10558 const mergedProps = mergeProps(triggerProps, { 10559 id, 10560 role: "combobox", 10561 "aria-expanded": open2, 10562 "aria-haspopup": "listbox", 10563 "aria-controls": open2 ? listElement?.id ?? getFloatingFocusElement(positionerElement)?.id : void 0, 10564 "aria-labelledby": ariaLabelledBy, 10565 "aria-readonly": readOnly || void 0, 10566 "aria-required": required || void 0, 10567 tabIndex: disabled2 ? -1 : 0, 10568 onFocus(event) { 10569 setFocused(true); 10570 if (open2 && store.context.alignItemWithTriggerActiveRef.current) { 10571 store.context.setOpen(false, createChangeEventDetails(reason_parts_exports.none, event.nativeEvent)); 10572 } 10573 timeoutFocus.start(0, () => { 10574 store.set("forceMount", true); 10575 }); 10576 }, 10577 onBlur(event) { 10578 if (contains(positionerElement, event.relatedTarget)) { 10579 return; 10580 } 10581 setTouched(true); 10582 setFocused(false); 10583 if (validationMode === "onBlur") { 10584 validation.commit(value); 10585 } 10586 }, 10587 onMouseDown(event) { 10588 if (open2) { 10589 return; 10590 } 10591 const doc = ownerDocument(event.currentTarget); 10592 function handleMouseUp(mouseEvent) { 10593 if (!triggerRef.current) { 10594 return; 10595 } 10596 const mouseUpTarget = mouseEvent.target; 10597 if (contains(triggerRef.current, mouseUpTarget) || contains(positionerRef.current, mouseUpTarget)) { 10598 return; 10599 } 10600 if (isMouseWithinBounds(mouseEvent, triggerRef.current)) { 10601 return; 10602 } 10603 store.context.setOpen(false, createChangeEventDetails(reason_parts_exports.cancelOpen, mouseEvent)); 10604 } 10605 timeoutMouseDown.start(0, () => { 10606 doc.addEventListener("mouseup", handleMouseUp, { 10607 once: true 10608 }); 10609 }); 10610 } 10611 }, elementProps, getButtonProps); 10612 const props = validation.getValidationProps(disabled2, mergedProps); 10613 props.role = "combobox"; 10614 const state = { 10615 ...fieldState, 10616 open: open2, 10617 disabled: disabled2, 10618 value, 10619 readOnly, 10620 popupSide: popupSide2, 10621 placeholder: !hasSelectedValue 10622 }; 10623 return useRenderElement("button", componentProps, { 10624 ref: [forwardedRef, triggerRef, buttonRef, setTriggerElement], 10625 state, 10626 stateAttributesMapping: stateAttributesMapping2, 10627 props 10628 }); 10629 }); 10630 if (true) SelectTrigger.displayName = "SelectTrigger"; 10631 10632 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/value/SelectValue.mjs 10633 var React69 = __toESM(require_react(), 1); 10634 var stateAttributesMapping3 = { 10635 value: () => null 10636 }; 10637 var SelectValue = /* @__PURE__ */ React69.forwardRef(function SelectValue2(componentProps, forwardedRef) { 10638 const { 10639 className, 10640 render, 10641 children: childrenProp, 10642 placeholder, 10643 style, 10644 ...elementProps 10645 } = componentProps; 10646 const store = useSelectRootContext(); 10647 const value = store.useState("value"); 10648 const items = store.useState("items"); 10649 const itemToStringLabel = store.useState("itemToStringLabel"); 10650 const hasSelectedValue = store.useState("hasSelectedValue"); 10651 const shouldCheckNullItemLabel = !hasSelectedValue && placeholder != null && childrenProp == null; 10652 const hasNullLabel = store.useState("hasNullItemLabel", shouldCheckNullItemLabel); 10653 const state = { 10654 value, 10655 placeholder: !hasSelectedValue 10656 }; 10657 let children = null; 10658 if (typeof childrenProp === "function") { 10659 children = childrenProp(value); 10660 } else if (childrenProp != null) { 10661 children = childrenProp; 10662 } else if (shouldCheckNullItemLabel && !hasNullLabel) { 10663 children = placeholder; 10664 } else if (Array.isArray(value)) { 10665 children = resolveMultipleLabels(value, items, itemToStringLabel); 10666 } else { 10667 children = resolveSelectedLabel(value, items, itemToStringLabel); 10668 } 10669 const element = useRenderElement("span", componentProps, { 10670 state, 10671 ref: [forwardedRef, store.context.valueRef], 10672 props: [{ 10673 children 10674 }, elementProps], 10675 stateAttributesMapping: stateAttributesMapping3 10676 }); 10677 return element; 10678 }); 10679 if (true) SelectValue.displayName = "SelectValue"; 10680 10681 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/icon/SelectIcon.mjs 10682 var React70 = __toESM(require_react(), 1); 10683 var SelectIcon = /* @__PURE__ */ React70.forwardRef(function SelectIcon2(componentProps, forwardedRef) { 10684 const { 10685 render, 10686 className, 10687 style, 10688 ...elementProps 10689 } = componentProps; 10690 const store = useSelectRootContext(); 10691 const open2 = store.useState("open"); 10692 const state = { 10693 open: open2 10694 }; 10695 const element = useRenderElement("span", componentProps, { 10696 state, 10697 ref: forwardedRef, 10698 props: [{ 10699 "aria-hidden": true, 10700 children: "\u25BC" 10701 }, elementProps], 10702 stateAttributesMapping: triggerOpenStateMapping 10703 }); 10704 return element; 10705 }); 10706 if (true) SelectIcon.displayName = "SelectIcon"; 10707 10708 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/portal/SelectPortal.mjs 10709 var React71 = __toESM(require_react(), 1); 10710 var import_jsx_runtime23 = __toESM(require_jsx_runtime(), 1); 10711 var SelectPortal = /* @__PURE__ */ React71.forwardRef(function SelectPortal2(portalProps, forwardedRef) { 10712 const store = useSelectRootContext(); 10713 const mounted = store.useState("mounted"); 10714 const forceMount = store.useState("forceMount"); 10715 const shouldRender = mounted || forceMount; 10716 if (!shouldRender) { 10717 return null; 10718 } 10719 return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(FloatingPortal, { 10720 ref: forwardedRef, 10721 ...portalProps 10722 }); 10723 }); 10724 if (true) SelectPortal.displayName = "SelectPortal"; 10725 10726 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/backdrop/SelectBackdrop.mjs 10727 var React72 = __toESM(require_react(), 1); 10728 var stateAttributesMapping4 = { 10729 ...popupStateMapping, 10730 ...transitionStatusMapping 10731 }; 10732 var SelectBackdrop = /* @__PURE__ */ React72.forwardRef(function SelectBackdrop2(componentProps, forwardedRef) { 10733 const { 10734 render, 10735 className, 10736 style, 10737 ...elementProps 10738 } = componentProps; 10739 const store = useSelectRootContext(); 10740 const open2 = store.useState("open"); 10741 const mounted = store.useState("mounted"); 10742 const transitionStatus = store.useState("transitionStatus"); 10743 const state = { 10744 open: open2, 10745 transitionStatus 10746 }; 10747 const element = useRenderElement("div", componentProps, { 10748 state, 10749 ref: forwardedRef, 10750 props: [{ 10751 role: "presentation", 10752 hidden: !mounted, 10753 style: { 10754 userSelect: "none", 10755 WebkitUserSelect: "none" 10756 } 10757 }, elementProps], 10758 stateAttributesMapping: stateAttributesMapping4 10759 }); 10760 return element; 10761 }); 10762 if (true) SelectBackdrop.displayName = "SelectBackdrop"; 10763 10764 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/positioner/SelectPositioner.mjs 10765 var React74 = __toESM(require_react(), 1); 10766 10767 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/positioner/SelectPositionerContext.mjs 10768 var React73 = __toESM(require_react(), 1); 10769 var SelectPositionerContext = /* @__PURE__ */ React73.createContext(void 0); 10770 if (true) SelectPositionerContext.displayName = "SelectPositionerContext"; 10771 function useSelectPositionerContext() { 10772 const context = React73.useContext(SelectPositionerContext); 10773 if (!context) { 10774 throw new Error(true ? "Base UI: SelectPositionerContext is missing. SelectPositioner parts must be placed within <Select.Positioner>." : formatErrorMessage_default(59)); 10775 } 10776 return context; 10777 } 10778 10779 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/popup/utils.mjs 10780 function clearStyles(element, originalStyles) { 10781 if (element) { 10782 Object.assign(element.style, originalStyles); 10783 } 10784 } 10785 var LIST_FUNCTIONAL_STYLES = { 10786 position: "relative", 10787 maxHeight: "100%", 10788 overflowX: "hidden", 10789 overflowY: "auto" 10790 }; 10791 10792 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/positioner/SelectPositioner.mjs 10793 var import_jsx_runtime24 = __toESM(require_jsx_runtime(), 1); 10794 var FIXED = { 10795 position: "fixed" 10796 }; 10797 var SelectPositioner = /* @__PURE__ */ React74.forwardRef(function SelectPositioner2(componentProps, forwardedRef) { 10798 const { 10799 anchor, 10800 className, 10801 render, 10802 // `useAnchorPositioning` applies the same defaults to the undefined values; the names 10803 // remain destructured to exclude the props from `elementProps`. 10804 positionMethod, 10805 side, 10806 align, 10807 sideOffset, 10808 alignOffset, 10809 collisionBoundary = "clipping-ancestors", 10810 collisionPadding, 10811 arrowPadding, 10812 sticky, 10813 disableAnchorTracking, 10814 alignItemWithTrigger = true, 10815 collisionAvoidance = DROPDOWN_COLLISION_AVOIDANCE, 10816 style, 10817 ...elementProps 10818 } = componentProps; 10819 const store = useSelectRootContext(); 10820 const floatingRootContext = useSelectFloatingContext(); 10821 const open2 = store.useState("open"); 10822 const mounted = store.useState("mounted"); 10823 const modal = store.useState("modal"); 10824 const value = store.useState("value"); 10825 const openMethod = store.useState("openMethod"); 10826 const positionerElement = store.useState("positionerElement"); 10827 const triggerElement = store.useState("triggerElement"); 10828 const isItemEqualToValue = store.useState("isItemEqualToValue"); 10829 const transitionStatus = store.useState("transitionStatus"); 10830 const scrollUpArrowRef = React74.useRef(null); 10831 const scrollDownArrowRef = React74.useRef(null); 10832 const [controlledAlignItemWithTrigger, setControlledAlignItemWithTrigger] = React74.useState(alignItemWithTrigger); 10833 const alignItemWithTriggerActive = mounted && controlledAlignItemWithTrigger && openMethod !== "touch"; 10834 if (!mounted && controlledAlignItemWithTrigger !== alignItemWithTrigger) { 10835 setControlledAlignItemWithTrigger(alignItemWithTrigger); 10836 } 10837 React74.useImperativeHandle(store.context.alignItemWithTriggerActiveRef, () => alignItemWithTriggerActive); 10838 useAnchoredPopupScrollLock((alignItemWithTriggerActive || modal) && open2, openMethod === "touch", positionerElement, triggerElement); 10839 const positioning = useAnchorPositioning({ 10840 anchor, 10841 floatingRootContext, 10842 positionMethod, 10843 mounted, 10844 side, 10845 sideOffset, 10846 align, 10847 alignOffset, 10848 arrowPadding, 10849 collisionBoundary, 10850 collisionPadding, 10851 sticky, 10852 disableAnchorTracking: disableAnchorTracking ?? alignItemWithTriggerActive, 10853 collisionAvoidance, 10854 keepMounted: true 10855 }); 10856 const renderedSide = alignItemWithTriggerActive ? "none" : positioning.side; 10857 const positionerStyles = alignItemWithTriggerActive ? FIXED : positioning.positionerStyles; 10858 const state = { 10859 open: open2, 10860 side: renderedSide, 10861 align: positioning.align, 10862 anchorHidden: positioning.anchorHidden 10863 }; 10864 useIsoLayoutEffect(() => { 10865 store.set("popupSide", positioning.side); 10866 }, [store, positioning.side]); 10867 const setPositionerElement = store.useStateSetter("positionerElement"); 10868 const element = usePositioner(componentProps, state, { 10869 styles: positionerStyles, 10870 transitionStatus, 10871 props: elementProps, 10872 refs: [forwardedRef, setPositionerElement], 10873 hidden: !mounted, 10874 inert: !open2 10875 }); 10876 const prevMapSizeRef = React74.useRef(0); 10877 const onMapChange = useStableCallback((map) => { 10878 if (store.context.valuesRef.current.length === 0) { 10879 return; 10880 } 10881 const prevSize = prevMapSizeRef.current; 10882 prevMapSizeRef.current = map.size; 10883 const eventDetails = createChangeEventDetails(reason_parts_exports.none); 10884 if (prevSize !== 0 && !store.state.multiple && value !== null) { 10885 const selectedValueIndex = findItemIndex(store.context.valuesRef.current, value, isItemEqualToValue); 10886 if (selectedValueIndex === -1) { 10887 const initialSelectedValue = store.context.initialValueRef.current; 10888 const hasInitial = initialSelectedValue != null && findItemIndex(store.context.valuesRef.current, initialSelectedValue, isItemEqualToValue) !== -1; 10889 const nextValue = hasInitial ? initialSelectedValue : null; 10890 store.context.setValue(nextValue, eventDetails); 10891 if (nextValue === null) { 10892 store.set("selectedIndex", null); 10893 store.context.selectedItemTextRef.current = null; 10894 } 10895 } 10896 } 10897 if (prevSize !== 0 && store.state.multiple && Array.isArray(value)) { 10898 const nextValue = value.filter((selectedItemValue) => findItemIndex(store.context.valuesRef.current, selectedItemValue, isItemEqualToValue) !== -1); 10899 if (nextValue.length !== value.length) { 10900 store.context.setValue(nextValue, eventDetails); 10901 if (nextValue.length === 0) { 10902 store.set("selectedIndex", null); 10903 store.context.selectedItemTextRef.current = null; 10904 } 10905 } 10906 } 10907 if (open2 && alignItemWithTriggerActive) { 10908 store.update({ 10909 scrollUpArrowVisible: false, 10910 scrollDownArrowVisible: false 10911 }); 10912 const stylesToClear = { 10913 height: "" 10914 }; 10915 clearStyles(positionerElement, stylesToClear); 10916 clearStyles(store.context.popupRef.current, stylesToClear); 10917 } 10918 }); 10919 const contextValue = React74.useMemo(() => ({ 10920 ...positioning, 10921 side: renderedSide, 10922 alignItemWithTriggerActive, 10923 setControlledAlignItemWithTrigger, 10924 scrollUpArrowRef, 10925 scrollDownArrowRef 10926 }), [positioning, renderedSide, alignItemWithTriggerActive, setControlledAlignItemWithTrigger]); 10927 return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(CompositeList, { 10928 elementsRef: store.context.listRef, 10929 labelsRef: store.context.labelsRef, 10930 onMapChange, 10931 children: /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(SelectPositionerContext.Provider, { 10932 value: contextValue, 10933 children: [mounted && modal && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(InternalBackdrop, { 10934 inert: inertValue(!open2), 10935 cutout: triggerElement 10936 }), element] 10937 }) 10938 }); 10939 }); 10940 if (true) SelectPositioner.displayName = "SelectPositioner"; 10941 10942 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/popup/SelectPopup.mjs 10943 var React75 = __toESM(require_react(), 1); 10944 10945 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/positioner/SelectPositionerCssVars.mjs 10946 var transformOrigin2 = "--transform-origin"; 10947 10948 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/popup/SelectPopup.mjs 10949 var import_jsx_runtime25 = __toESM(require_jsx_runtime(), 1); 10950 var stateAttributesMapping5 = { 10951 ...popupStateMapping, 10952 ...transitionStatusMapping 10953 }; 10954 var SelectPopup = /* @__PURE__ */ React75.forwardRef(function SelectPopup2(componentProps, forwardedRef) { 10955 const { 10956 render, 10957 className, 10958 style, 10959 finalFocus, 10960 ...elementProps 10961 } = componentProps; 10962 const store = useSelectRootContext(); 10963 const multiple = store.useState("multiple"); 10964 const readOnly = store.useState("readOnly"); 10965 const highlightItemOnHover = store.useState("highlightItemOnHover"); 10966 const floatingRootContext = useSelectFloatingContext(); 10967 const { 10968 side, 10969 align, 10970 alignItemWithTriggerActive, 10971 isPositioned, 10972 setControlledAlignItemWithTrigger 10973 } = useSelectPositionerContext(); 10974 const insideToolbar = useToolbarRootContext(true) != null; 10975 const direction = useDirection(); 10976 const { 10977 nonce, 10978 disableStyleElements 10979 } = useCSPContext(); 10980 const id = store.useState("id"); 10981 const open2 = store.useState("open"); 10982 const openMethod = store.useState("openMethod"); 10983 const mounted = store.useState("mounted"); 10984 const popupProps = store.useState("popupProps"); 10985 const transitionStatus = store.useState("transitionStatus"); 10986 const triggerElement = store.useState("triggerElement"); 10987 const positionerElement = store.useState("positionerElement"); 10988 const listElement = store.useState("listElement"); 10989 const reachedMaxHeightRef = React75.useRef(false); 10990 const initialPlacedRef = React75.useRef(false); 10991 const originalPositionerStylesRef = React75.useRef({}); 10992 const scrollArrowFrame = useAnimationFrame(); 10993 const handleScroll = useStableCallback((scroller) => { 10994 if (!positionerElement || !store.context.popupRef.current || !initialPlacedRef.current) { 10995 return; 10996 } 10997 const isTopPositioned = positionerElement.style.top === "0px"; 10998 const isBottomPositioned = positionerElement.style.bottom === "0px"; 10999 if (reachedMaxHeightRef.current || !alignItemWithTriggerActive || !isTopPositioned && !isBottomPositioned) { 11000 store.context.handleScrollArrowVisibility(scroller); 11001 return; 11002 } 11003 const scale = getScale2(positionerElement); 11004 const currentHeight = normalizeSize(positionerElement.getBoundingClientRect().height, "y", scale); 11005 const doc = ownerDocument(positionerElement); 11006 const win = getWindow(positionerElement); 11007 const positionerStyles = win.getComputedStyle(positionerElement); 11008 const marginTop = parseFloat(positionerStyles.marginTop); 11009 const marginBottom = parseFloat(positionerStyles.marginBottom); 11010 const maxPopupHeight = getMaxPopupHeight(win.getComputedStyle(store.context.popupRef.current)); 11011 const maxAvailableHeight = Math.min(doc.documentElement.clientHeight - marginTop - marginBottom, maxPopupHeight); 11012 const scrollTop = scroller.scrollTop; 11013 const maxScrollTop = getMaxScrollTop(scroller); 11014 let nextScrollTop = null; 11015 const setHeight = (height) => { 11016 positionerElement.style.height = `$height}px`; 11017 }; 11018 const diff = isTopPositioned ? maxScrollTop - scrollTop : scrollTop; 11019 const nextHeight = Math.min(currentHeight + diff, maxAvailableHeight); 11020 if (diff <= SCROLL_EDGE_TOLERANCE_PX) { 11021 const heightDelta = clamp2(diff, 0, maxAvailableHeight - currentHeight); 11022 if (heightDelta > 0) { 11023 setHeight(currentHeight + heightDelta); 11024 } 11025 scroller.scrollTop = isTopPositioned ? maxScrollTop : 0; 11026 if (maxAvailableHeight - (currentHeight + heightDelta) <= SCROLL_EDGE_TOLERANCE_PX) { 11027 reachedMaxHeightRef.current = true; 11028 } 11029 store.context.handleScrollArrowVisibility(scroller); 11030 return; 11031 } 11032 if (maxAvailableHeight - nextHeight > SCROLL_EDGE_TOLERANCE_PX) { 11033 nextScrollTop = isTopPositioned ? Infinity : 0; 11034 } else if (isBottomPositioned && scrollTop < maxScrollTop) { 11035 const overshoot = currentHeight + diff - maxAvailableHeight; 11036 nextScrollTop = scrollTop - (diff - overshoot); 11037 } 11038 const nextPositionerHeight = Math.ceil(nextHeight); 11039 if (nextPositionerHeight !== 0) { 11040 setHeight(nextPositionerHeight); 11041 } 11042 if (nextScrollTop != null) { 11043 const target = clamp2(nextScrollTop, 0, getMaxScrollTop(scroller)); 11044 if (Math.abs(scroller.scrollTop - target) > SCROLL_EDGE_TOLERANCE_PX) { 11045 scroller.scrollTop = target; 11046 } 11047 } 11048 if (nextPositionerHeight >= maxAvailableHeight - SCROLL_EDGE_TOLERANCE_PX) { 11049 reachedMaxHeightRef.current = true; 11050 } 11051 store.context.handleScrollArrowVisibility(scroller); 11052 }); 11053 React75.useImperativeHandle(store.context.scrollHandlerRef, () => handleScroll, [handleScroll]); 11054 useOpenChangeComplete({ 11055 open: open2, 11056 ref: store.context.popupRef, 11057 onComplete() { 11058 if (open2) { 11059 store.context.onOpenChangeComplete(true); 11060 } 11061 } 11062 }); 11063 const state = { 11064 open: open2, 11065 transitionStatus, 11066 side, 11067 align 11068 }; 11069 useIsoLayoutEffect(() => { 11070 if (!positionerElement || !store.context.popupRef.current || Object.keys(originalPositionerStylesRef.current).length) { 11071 return; 11072 } 11073 originalPositionerStylesRef.current = { 11074 top: positionerElement.style.top || "0", 11075 left: positionerElement.style.left || "0", 11076 right: positionerElement.style.right, 11077 height: positionerElement.style.height, 11078 bottom: positionerElement.style.bottom, 11079 minHeight: positionerElement.style.minHeight, 11080 maxHeight: positionerElement.style.maxHeight, 11081 marginTop: positionerElement.style.marginTop, 11082 marginBottom: positionerElement.style.marginBottom 11083 }; 11084 }, [store, positionerElement]); 11085 useIsoLayoutEffect(() => { 11086 if (open2 || alignItemWithTriggerActive) { 11087 return; 11088 } 11089 initialPlacedRef.current = false; 11090 reachedMaxHeightRef.current = false; 11091 clearStyles(positionerElement, originalPositionerStylesRef.current); 11092 }, [open2, alignItemWithTriggerActive, positionerElement]); 11093 useIsoLayoutEffect(() => { 11094 const popupElement = store.context.popupRef.current; 11095 if (!open2 || !triggerElement || !positionerElement || !popupElement || alignItemWithTriggerActive && !isPositioned || store.state.transitionStatus === "ending") { 11096 return; 11097 } 11098 initialPlacedRef.current = true; 11099 popupElement.style.removeProperty(transformOrigin2); 11100 if (!alignItemWithTriggerActive) { 11101 scrollArrowFrame.request(() => store.context.handleScrollArrowVisibility(listElement || popupElement)); 11102 return; 11103 } 11104 const restoreTransformStyles = unsetTransformStyles(popupElement); 11105 try { 11106 let textElement = store.context.selectedItemTextRef.current; 11107 if (!textElement?.isConnected) { 11108 const hasSelectedValue = store.select("hasSelectedValue"); 11109 textElement = !hasSelectedValue && store.context.firstItemTextRef.current?.isConnected ? store.context.firstItemTextRef.current : null; 11110 } 11111 const valueElement = store.context.valueRef.current; 11112 const win = getWindow(positionerElement); 11113 const positionerStyles = win.getComputedStyle(positionerElement); 11114 const popupStyles = win.getComputedStyle(popupElement); 11115 const doc = ownerDocument(triggerElement); 11116 const scale = getScale2(triggerElement); 11117 const triggerRect = normalizeRect(triggerElement.getBoundingClientRect(), scale); 11118 const positionerRect = normalizeRect(positionerElement.getBoundingClientRect(), scale); 11119 const triggerHeight = triggerRect.height; 11120 const scroller = listElement || popupElement; 11121 const scrollHeight = scroller.scrollHeight; 11122 const borderBottom = parseFloat(popupStyles.borderBottomWidth); 11123 const marginTop = parseFloat(positionerStyles.marginTop) || 10; 11124 const marginBottom = parseFloat(positionerStyles.marginBottom) || 10; 11125 const minHeight = parseFloat(positionerStyles.minHeight) || 100; 11126 const maxPopupHeight = getMaxPopupHeight(popupStyles); 11127 const paddingLeft = 5; 11128 const paddingRight = 5; 11129 const triggerCollisionThreshold = 20; 11130 const viewportHeight = doc.documentElement.clientHeight - marginTop - marginBottom; 11131 const viewportWidth = doc.documentElement.clientWidth; 11132 const availableSpaceBeneathTrigger = viewportHeight - triggerRect.bottom + triggerHeight; 11133 let textRect; 11134 let alignedLeft = direction === "rtl" ? triggerRect.right - positionerRect.width : triggerRect.left; 11135 let offsetY = 0; 11136 if (textElement && valueElement) { 11137 const valueRect = normalizeRect(valueElement.getBoundingClientRect(), scale); 11138 textRect = normalizeRect(textElement.getBoundingClientRect(), scale); 11139 alignedLeft = positionerRect.left + (direction === "rtl" ? valueRect.right - textRect.right : valueRect.left - textRect.left); 11140 const valueCenterFromTriggerTop = valueRect.top - triggerRect.top + valueRect.height / 2; 11141 const textCenterFromPositionerTop = textRect.top - positionerRect.top + textRect.height / 2; 11142 offsetY = textCenterFromPositionerTop - valueCenterFromTriggerTop; 11143 } 11144 const idealHeight = availableSpaceBeneathTrigger + offsetY + marginBottom + borderBottom; 11145 let height = Math.min(viewportHeight, idealHeight); 11146 const maxHeight = viewportHeight - marginTop - marginBottom; 11147 const scrollTop = idealHeight - height; 11148 const maxRight = viewportWidth - paddingRight; 11149 positionerElement.style.left = `$clamp2(alignedLeft, paddingLeft, maxRight - positionerRect.width)}px`; 11150 positionerElement.style.height = `$height}px`; 11151 positionerElement.style.maxHeight = "none"; 11152 positionerElement.style.marginTop = `$marginTop}px`; 11153 positionerElement.style.marginBottom = `$marginBottom}px`; 11154 popupElement.style.height = "100%"; 11155 const maxScrollTop = getMaxScrollTop(scroller); 11156 const isTopPositioned = scrollTop >= maxScrollTop - SCROLL_EDGE_TOLERANCE_PX; 11157 if (isTopPositioned) { 11158 height = Math.min(viewportHeight, positionerRect.height) - (scrollTop - maxScrollTop); 11159 } 11160 const fallbackToAlignPopupToTrigger = triggerRect.top < triggerCollisionThreshold || triggerRect.bottom > viewportHeight - triggerCollisionThreshold || Math.ceil(height) + SCROLL_EDGE_TOLERANCE_PX < Math.min(scrollHeight, minHeight); 11161 const isPinchZoomed = (win.visualViewport?.scale ?? 1) !== 1 && parts_exports.engine.webkit; 11162 if (fallbackToAlignPopupToTrigger || isPinchZoomed) { 11163 clearStyles(positionerElement, originalPositionerStylesRef.current); 11164 setControlledAlignItemWithTrigger(false); 11165 return; 11166 } 11167 const initialHeight = Math.max(minHeight, height); 11168 if (isTopPositioned) { 11169 const topOffset = Math.max(0, viewportHeight - idealHeight); 11170 positionerElement.style.top = positionerRect.height >= maxHeight ? "0" : `$topOffset}px`; 11171 positionerElement.style.height = `$height}px`; 11172 scroller.scrollTop = getMaxScrollTop(scroller); 11173 } else { 11174 positionerElement.style.bottom = "0"; 11175 scroller.scrollTop = scrollTop; 11176 } 11177 if (textRect) { 11178 const popupTop = positionerRect.top; 11179 const popupHeight = positionerRect.height; 11180 const textCenterY = textRect.top + textRect.height / 2; 11181 const clampedY = clamp2(popupHeight > 0 ? (textCenterY - popupTop) / popupHeight * 100 : 50, 0, 100); 11182 popupElement.style.setProperty(transformOrigin2, `50% $clampedY}%`); 11183 } 11184 if (initialHeight === viewportHeight || height >= maxPopupHeight) { 11185 reachedMaxHeightRef.current = true; 11186 } 11187 store.context.handleScrollArrowVisibility(scroller); 11188 if (highlightItemOnHover && store.state.selectedIndex === null && store.state.activeIndex === null && store.context.listRef.current[0] != null) { 11189 store.set("activeIndex", 0); 11190 } 11191 } finally { 11192 restoreTransformStyles(); 11193 } 11194 }, [store, open2, positionerElement, triggerElement, alignItemWithTriggerActive, setControlledAlignItemWithTrigger, scrollArrowFrame, listElement, highlightItemOnHover, direction, isPositioned]); 11195 React75.useEffect(() => { 11196 if (!alignItemWithTriggerActive || !positionerElement || !open2) { 11197 return void 0; 11198 } 11199 const win = getWindow(positionerElement); 11200 function handleResize(event) { 11201 store.context.setOpen(false, createChangeEventDetails(reason_parts_exports.windowResize, event)); 11202 } 11203 return addEventListener(win, "resize", handleResize); 11204 }, [store, alignItemWithTriggerActive, positionerElement, open2]); 11205 const defaultProps = { 11206 ...listElement ? { 11207 role: "presentation" 11208 } : { 11209 role: "listbox", 11210 "aria-multiselectable": multiple || void 0, 11211 "aria-readonly": readOnly || void 0, 11212 id: `$id}-list` 11213 }, 11214 onKeyDown(event) { 11215 if (insideToolbar && COMPOSITE_KEYS.has(event.key)) { 11216 event.stopPropagation(); 11217 } 11218 }, 11219 onScroll(event) { 11220 if (listElement) { 11221 return; 11222 } 11223 handleScroll(event.currentTarget); 11224 }, 11225 ...alignItemWithTriggerActive && { 11226 style: listElement ? { 11227 height: "100%" 11228 } : LIST_FUNCTIONAL_STYLES 11229 }, 11230 className: !listElement && alignItemWithTriggerActive ? styleDisableScrollbar.className : void 0 11231 }; 11232 const element = useRenderElement("div", componentProps, { 11233 ref: [forwardedRef, store.context.popupRef], 11234 state, 11235 stateAttributesMapping: stateAttributesMapping5, 11236 props: [popupProps, defaultProps, getDisabledMountTransitionStyles(transitionStatus), elementProps] 11237 }); 11238 return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(React75.Fragment, { 11239 children: [!disableStyleElements && styleDisableScrollbar.getElement(nonce), /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(FloatingFocusManager, { 11240 context: floatingRootContext, 11241 modal: false, 11242 disabled: !mounted, 11243 openInteractionType: openMethod, 11244 returnFocus: finalFocus, 11245 restoreFocus: true, 11246 children: element 11247 })] 11248 }); 11249 }); 11250 if (true) SelectPopup.displayName = "SelectPopup"; 11251 function getMaxPopupHeight(popupStyles) { 11252 const maxHeightStyle = popupStyles.maxHeight; 11253 return maxHeightStyle.endsWith("px") ? parseFloat(maxHeightStyle) || Infinity : Infinity; 11254 } 11255 function getMaxScrollTop(scroller) { 11256 return getMaxScrollOffset(scroller.scrollHeight, scroller.clientHeight); 11257 } 11258 function getScale2(element) { 11259 return platform2.getScale(element); 11260 } 11261 function normalizeSize(size4, axis, scale) { 11262 return size4 / scale[axis]; 11263 } 11264 function normalizeRect(rect, scale) { 11265 return rectToClientRect({ 11266 x: normalizeSize(rect.x, "x", scale), 11267 y: normalizeSize(rect.y, "y", scale), 11268 width: normalizeSize(rect.width, "x", scale), 11269 height: normalizeSize(rect.height, "y", scale) 11270 }); 11271 } 11272 var TRANSFORM_STYLE_RESETS = [["transform", "none"], ["scale", "1"], ["translate", "0 0"]]; 11273 function unsetTransformStyles(popupElement) { 11274 const { 11275 style 11276 } = popupElement; 11277 const originalStyles = {}; 11278 for (const [property, value] of TRANSFORM_STYLE_RESETS) { 11279 originalStyles[property] = style.getPropertyValue(property); 11280 style.setProperty(property, value, "important"); 11281 } 11282 return () => { 11283 for (const [property] of TRANSFORM_STYLE_RESETS) { 11284 const originalValue = originalStyles[property]; 11285 if (originalValue) { 11286 style.setProperty(property, originalValue); 11287 } else { 11288 style.removeProperty(property); 11289 } 11290 } 11291 }; 11292 } 11293 11294 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/list/SelectList.mjs 11295 var React76 = __toESM(require_react(), 1); 11296 var SelectList = /* @__PURE__ */ React76.forwardRef(function SelectList2(componentProps, forwardedRef) { 11297 const { 11298 render, 11299 className, 11300 style, 11301 ...elementProps 11302 } = componentProps; 11303 const store = useSelectRootContext(); 11304 const multiple = store.useState("multiple"); 11305 const readOnly = store.useState("readOnly"); 11306 const { 11307 alignItemWithTriggerActive 11308 } = useSelectPositionerContext(); 11309 const hasScrollArrows = store.useState("hasScrollArrows"); 11310 const openMethod = store.useState("openMethod"); 11311 const id = store.useState("id"); 11312 const defaultProps = { 11313 id: `$id}-list`, 11314 role: "listbox", 11315 "aria-multiselectable": multiple || void 0, 11316 "aria-readonly": readOnly || void 0, 11317 onScroll(event) { 11318 store.context.scrollHandlerRef.current?.(event.currentTarget); 11319 }, 11320 ...alignItemWithTriggerActive && { 11321 style: LIST_FUNCTIONAL_STYLES 11322 }, 11323 className: hasScrollArrows && openMethod !== "touch" ? styleDisableScrollbar.className : void 0 11324 }; 11325 const setListElement = store.useStateSetter("listElement"); 11326 return useRenderElement("div", componentProps, { 11327 ref: [forwardedRef, setListElement], 11328 props: [defaultProps, elementProps] 11329 }); 11330 }); 11331 if (true) SelectList.displayName = "SelectList"; 11332 11333 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/item/SelectItem.mjs 11334 var React78 = __toESM(require_react(), 1); 11335 11336 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/item/SelectItemContext.mjs 11337 var React77 = __toESM(require_react(), 1); 11338 var SelectItemContext = /* @__PURE__ */ React77.createContext(void 0); 11339 if (true) SelectItemContext.displayName = "SelectItemContext"; 11340 function useSelectItemContext() { 11341 const context = React77.useContext(SelectItemContext); 11342 if (!context) { 11343 throw new Error(true ? "Base UI: SelectItemContext is missing. SelectItem parts must be placed within <Select.Item>." : formatErrorMessage_default(57)); 11344 } 11345 return context; 11346 } 11347 11348 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/item/SelectItem.mjs 11349 var import_jsx_runtime26 = __toESM(require_jsx_runtime(), 1); 11350 var SelectItem = /* @__PURE__ */ React78.memo(/* @__PURE__ */ React78.forwardRef(function SelectItem2(componentProps, forwardedRef) { 11351 const { 11352 render, 11353 className, 11354 style, 11355 value: itemValue = null, 11356 label, 11357 disabled: disabledProp = false, 11358 nativeButton = false, 11359 ...elementProps 11360 } = componentProps; 11361 const textRef = React78.useRef(null); 11362 const listItem = useCompositeListItem({ 11363 guess: true, 11364 label, 11365 textRef 11366 }); 11367 const store = useSelectRootContext(); 11368 const { 11369 props: itemProps, 11370 multiple, 11371 disabled: selectDisabled, 11372 readOnly, 11373 isItemEqualToValue 11374 } = store.useState("itemRoot"); 11375 const disabled2 = selectDisabled || disabledProp; 11376 const highlighted = store.useState("isActive", listItem.index); 11377 const open2 = store.useState("open"); 11378 const selected = store.useState("isSelected", itemValue); 11379 const selectedByFocus = store.useState("isSelectedByFocus", listItem.index); 11380 const index2 = listItem.index; 11381 const itemRef = React78.useRef(null); 11382 useIsoLayoutEffect(() => { 11383 const values = store.context.valuesRef.current; 11384 values[index2] = itemValue; 11385 return () => { 11386 delete values[index2]; 11387 }; 11388 }, [index2, itemValue, store]); 11389 useIsoLayoutEffect(() => { 11390 const selectedValue = store.state.value; 11391 const currentIndex = store.state.selectedIndex; 11392 let nextIndex = currentIndex; 11393 let claims; 11394 if (multiple && Array.isArray(selectedValue)) { 11395 nextIndex = resolveSelectedIndex(index2, itemValue, store.context.valuesRef.current, selectedValue, isItemEqualToValue, currentIndex); 11396 claims = nextIndex === index2; 11397 if (index2 === currentIndex && !claims) { 11398 store.context.selectedItemTextRef.current = null; 11399 } 11400 } else { 11401 claims = selectedValue !== void 0 && compareItemEquality(itemValue, selectedValue, isItemEqualToValue); 11402 if (claims) { 11403 nextIndex = index2; 11404 } 11405 } 11406 store.set("selectedIndex", nextIndex); 11407 if (claims && textRef.current) { 11408 store.context.selectedItemTextRef.current = textRef.current; 11409 } 11410 }, [index2, multiple, isItemEqualToValue, store, itemValue]); 11411 const pointerTypeRef = React78.useRef("mouse"); 11412 const allowMouseSelectionRef = React78.useRef(false); 11413 const { 11414 getButtonProps, 11415 buttonRef 11416 } = useButton({ 11417 disabled: disabled2, 11418 focusableWhenDisabled: true, 11419 native: nativeButton, 11420 composite: true 11421 }); 11422 const state = { 11423 disabled: disabled2, 11424 selected, 11425 highlighted 11426 }; 11427 function commitSelection(event) { 11428 if (selectDisabled || readOnly) { 11429 return; 11430 } 11431 const selectedValue = store.state.value; 11432 if (multiple) { 11433 const currentValue = Array.isArray(selectedValue) ? selectedValue : []; 11434 const nextValue = selected ? removeItem(currentValue, itemValue, isItemEqualToValue) : [...currentValue, itemValue]; 11435 store.context.setValue(nextValue, createChangeEventDetails(reason_parts_exports.itemPress, event)); 11436 } else { 11437 store.context.setValue(itemValue, createChangeEventDetails(reason_parts_exports.itemPress, event)); 11438 store.context.setOpen(false, createChangeEventDetails(reason_parts_exports.itemPress, event)); 11439 } 11440 } 11441 function resetDragMovement() { 11442 store.context.selectionRef.current.dragY = 0; 11443 } 11444 const defaultProps = { 11445 role: "option", 11446 "aria-selected": selected, 11447 tabIndex: open2 && highlighted ? 0 : -1, 11448 onKeyDown(event) { 11449 store.set("activeIndex", index2); 11450 if (event.key === " " && store.context.typingRef.current) { 11451 event.preventDefault(); 11452 } 11453 }, 11454 onClick(event) { 11455 const isMouseClick = pointerTypeRef.current !== "touch"; 11456 const clickPointerType = event.nativeEvent.pointerType; 11457 const isVirtualMouseClick = isMouseClick && isVirtualClick(event.nativeEvent) && // Generic no-pointer `detail === 0` clicks stay tied to highlight state. Virtual 11458 // clicks that carry browser pointer data, including an empty string from assistive 11459 // technology, can activate unhighlighted items. 11460 (clickPointerType !== void 0 || highlighted); 11461 const isInvalidMouseClick = isMouseClick && !isVirtualMouseClick && !allowMouseSelectionRef.current; 11462 allowMouseSelectionRef.current = false; 11463 if (disabled2 || isInvalidMouseClick) { 11464 return; 11465 } 11466 commitSelection(event.nativeEvent); 11467 }, 11468 onPointerEnter(event) { 11469 pointerTypeRef.current = event.pointerType; 11470 }, 11471 onPointerMove(event) { 11472 if (event.pointerType === "mouse" && event.buttons === 1) { 11473 const selection = store.context.selectionRef.current; 11474 selection.dragY += event.movementY; 11475 if (selection.dragY ** 2 >= 64) { 11476 selection.allowUnselectedMouseUp = true; 11477 } 11478 } 11479 }, 11480 onPointerDown(event) { 11481 pointerTypeRef.current = event.pointerType; 11482 allowMouseSelectionRef.current = true; 11483 resetDragMovement(); 11484 }, 11485 onMouseUp() { 11486 resetDragMovement(); 11487 if (disabled2 || pointerTypeRef.current === "touch") { 11488 return; 11489 } 11490 if (allowMouseSelectionRef.current) { 11491 return; 11492 } 11493 const disallowSelectedMouseUp = !store.context.selectionRef.current.allowSelectedMouseUp && selected; 11494 const disallowUnselectedMouseUp = !store.context.selectionRef.current.allowUnselectedMouseUp && !selected; 11495 if (disallowSelectedMouseUp || disallowUnselectedMouseUp) { 11496 return; 11497 } 11498 allowMouseSelectionRef.current = true; 11499 itemRef.current?.click(); 11500 allowMouseSelectionRef.current = false; 11501 } 11502 }; 11503 const element = useRenderElement("div", componentProps, { 11504 ref: [buttonRef, forwardedRef, listItem.ref, itemRef], 11505 state, 11506 props: [itemProps, defaultProps, elementProps, getButtonProps] 11507 }); 11508 const contextValue = React78.useMemo(() => ({ 11509 selected, 11510 index: index2, 11511 textRef, 11512 selectedByFocus 11513 }), [selected, index2, textRef, selectedByFocus]); 11514 return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(SelectItemContext.Provider, { 11515 value: contextValue, 11516 children: element 11517 }); 11518 })); 11519 if (true) SelectItem.displayName = "SelectItem"; 11520 11521 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/item-indicator/SelectItemIndicator.mjs 11522 var React79 = __toESM(require_react(), 1); 11523 var import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1); 11524 var SelectItemIndicator = /* @__PURE__ */ React79.forwardRef(function SelectItemIndicator2(componentProps, forwardedRef) { 11525 const { 11526 selected 11527 } = useSelectItemContext(); 11528 const shouldRender = componentProps.keepMounted || selected; 11529 if (!shouldRender) { 11530 return null; 11531 } 11532 return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(ItemIndicator, { 11533 ...componentProps, 11534 selected, 11535 ref: forwardedRef 11536 }); 11537 }); 11538 if (true) SelectItemIndicator.displayName = "SelectItemIndicator"; 11539 11540 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/item-text/SelectItemText.mjs 11541 var React80 = __toESM(require_react(), 1); 11542 var SelectItemText = /* @__PURE__ */ React80.memo(/* @__PURE__ */ React80.forwardRef(function SelectItemText2(componentProps, forwardedRef) { 11543 const { 11544 index: index2, 11545 textRef, 11546 selectedByFocus 11547 } = useSelectItemContext(); 11548 const store = useSelectRootContext(); 11549 const { 11550 render, 11551 className, 11552 style, 11553 ...elementProps 11554 } = componentProps; 11555 const localRef = React80.useCallback((node) => { 11556 if (!node) { 11557 return; 11558 } 11559 if (index2 === 0) { 11560 store.context.firstItemTextRef.current = node; 11561 } 11562 if (selectedByFocus) { 11563 store.context.selectedItemTextRef.current = node; 11564 } 11565 }, [store, index2, selectedByFocus]); 11566 const element = useRenderElement("div", componentProps, { 11567 ref: [localRef, forwardedRef, textRef], 11568 props: elementProps 11569 }); 11570 return element; 11571 })); 11572 if (true) SelectItemText.displayName = "SelectItemText"; 11573 11574 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/arrow/SelectArrow.mjs 11575 var React81 = __toESM(require_react(), 1); 11576 var SelectArrow = /* @__PURE__ */ React81.forwardRef(function SelectArrow2(componentProps, forwardedRef) { 11577 const { 11578 render, 11579 className, 11580 style, 11581 ...elementProps 11582 } = componentProps; 11583 const store = useSelectRootContext(); 11584 const { 11585 side, 11586 align, 11587 arrowRef, 11588 arrowStyles, 11589 arrowUncentered, 11590 alignItemWithTriggerActive 11591 } = useSelectPositionerContext(); 11592 const open2 = store.useState("open"); 11593 const state = { 11594 open: open2, 11595 side, 11596 align, 11597 uncentered: arrowUncentered 11598 }; 11599 const element = useRenderElement("div", componentProps, { 11600 state, 11601 ref: [arrowRef, forwardedRef], 11602 props: [{ 11603 style: arrowStyles, 11604 "aria-hidden": true 11605 }, elementProps], 11606 stateAttributesMapping: popupTransitionStateMapping 11607 }); 11608 if (alignItemWithTriggerActive) { 11609 return null; 11610 } 11611 return element; 11612 }); 11613 if (true) SelectArrow.displayName = "SelectArrow"; 11614 11615 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/scroll-down-arrow/SelectScrollDownArrow.mjs 11616 var React83 = __toESM(require_react(), 1); 11617 11618 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/scroll-arrow/SelectScrollArrow.mjs 11619 var React82 = __toESM(require_react(), 1); 11620 var SelectScrollArrow = /* @__PURE__ */ React82.forwardRef(function SelectScrollArrow2(componentProps, forwardedRef) { 11621 const { 11622 render, 11623 className, 11624 style, 11625 direction, 11626 keepMounted, 11627 ...elementProps 11628 } = componentProps; 11629 const isUp = direction === "up"; 11630 const store = useSelectRootContext(); 11631 const { 11632 side, 11633 scrollDownArrowRef, 11634 scrollUpArrowRef 11635 } = useSelectPositionerContext(); 11636 const visibleSelector = isUp ? "scrollUpArrowVisible" : "scrollDownArrowVisible"; 11637 const stateVisible = store.useState(visibleSelector); 11638 const openMethod = store.useState("openMethod"); 11639 const visible = stateVisible && openMethod !== "touch"; 11640 const timeout = useTimeout(); 11641 const scrollArrowRef = isUp ? scrollUpArrowRef : scrollDownArrowRef; 11642 const { 11643 mounted, 11644 transitionStatus, 11645 setMounted 11646 } = useTransitionStatus(visible); 11647 useIsoLayoutEffect(() => { 11648 store.context.scrollArrowsMountedCountRef.current += 1; 11649 store.set("hasScrollArrows", true); 11650 return () => { 11651 store.context.scrollArrowsMountedCountRef.current = Math.max(0, store.context.scrollArrowsMountedCountRef.current - 1); 11652 if (store.context.scrollArrowsMountedCountRef.current === 0) { 11653 store.set("hasScrollArrows", false); 11654 } 11655 }; 11656 }, [store]); 11657 useOpenChangeComplete({ 11658 open: visible, 11659 ref: scrollArrowRef, 11660 onComplete() { 11661 if (!visible) { 11662 setMounted(false); 11663 } 11664 } 11665 }); 11666 const state = { 11667 direction, 11668 visible, 11669 side, 11670 transitionStatus 11671 }; 11672 const defaultProps = { 11673 "aria-hidden": true, 11674 children: isUp ? "\u25B2" : "\u25BC", 11675 style: { 11676 position: "absolute" 11677 }, 11678 onMouseMove(event) { 11679 if (event.movementX === 0 && event.movementY === 0 || timeout.isStarted()) { 11680 return; 11681 } 11682 store.set("activeIndex", null); 11683 function scrollNextItem() { 11684 const scroller = store.state.listElement ?? store.context.popupRef.current; 11685 if (!scroller) { 11686 return; 11687 } 11688 store.set("activeIndex", null); 11689 store.context.handleScrollArrowVisibility(scroller); 11690 const maxScrollTop = getMaxScrollOffset(scroller.scrollHeight, scroller.clientHeight); 11691 const scrollTop = normalizeScrollOffset(scroller.scrollTop, maxScrollTop); 11692 const isScrolledToEdge = scrollTop === (isUp ? 0 : maxScrollTop); 11693 const items = store.context.listRef.current; 11694 if (scrollTop !== scroller.scrollTop) { 11695 scroller.scrollTop = scrollTop; 11696 } 11697 if (isScrolledToEdge) { 11698 timeout.clear(); 11699 return; 11700 } 11701 if (items.length > 0) { 11702 const scrollArrowHeight = scrollArrowRef.current?.offsetHeight || 0; 11703 scroller.scrollTop = getTargetScrollTop(items, isUp, scrollTop, scroller.clientHeight, scrollArrowHeight, maxScrollTop); 11704 } 11705 timeout.start(40, scrollNextItem); 11706 } 11707 timeout.start(40, scrollNextItem); 11708 }, 11709 onMouseLeave() { 11710 timeout.clear(); 11711 } 11712 }; 11713 const element = useRenderElement("div", componentProps, { 11714 ref: [forwardedRef, scrollArrowRef], 11715 state, 11716 props: [defaultProps, elementProps], 11717 stateAttributesMapping: transitionStatusMapping 11718 }); 11719 const shouldRender = mounted || keepMounted; 11720 if (!shouldRender) { 11721 return null; 11722 } 11723 return element; 11724 }); 11725 if (true) SelectScrollArrow.displayName = "SelectScrollArrow"; 11726 function getTargetScrollTop(items, isUp, scrollTop, clientHeight, scrollArrowHeight, maxScrollTop) { 11727 if (isUp) { 11728 let firstVisibleIndex = 0; 11729 const visibleTop = scrollTop + scrollArrowHeight - SCROLL_EDGE_TOLERANCE_PX; 11730 for (let i = 0; i < items.length; i += 1) { 11731 const item = items[i]; 11732 if (item && item.offsetTop >= visibleTop) { 11733 firstVisibleIndex = i; 11734 break; 11735 } 11736 } 11737 const targetIndex2 = Math.max(0, firstVisibleIndex - 1); 11738 const targetItem2 = items[targetIndex2]; 11739 return targetIndex2 < firstVisibleIndex && targetItem2 ? normalizeScrollOffset(targetItem2.offsetTop - scrollArrowHeight, maxScrollTop) : 0; 11740 } 11741 let lastVisibleIndex = items.length - 1; 11742 const visibleBottom = scrollTop + clientHeight - scrollArrowHeight + SCROLL_EDGE_TOLERANCE_PX; 11743 for (let i = 0; i < items.length; i += 1) { 11744 const item = items[i]; 11745 if (item && item.offsetTop + item.offsetHeight > visibleBottom) { 11746 lastVisibleIndex = Math.max(0, i - 1); 11747 break; 11748 } 11749 } 11750 const targetIndex = Math.min(items.length - 1, lastVisibleIndex + 1); 11751 const targetItem = items[targetIndex]; 11752 return targetIndex > lastVisibleIndex && targetItem ? normalizeScrollOffset(targetItem.offsetTop + targetItem.offsetHeight - clientHeight + scrollArrowHeight, maxScrollTop) : maxScrollTop; 11753 } 11754 11755 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/scroll-down-arrow/SelectScrollDownArrow.mjs 11756 var import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1); 11757 var SelectScrollDownArrow = /* @__PURE__ */ React83.forwardRef(function SelectScrollDownArrow2(props, forwardedRef) { 11758 return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(SelectScrollArrow, { 11759 ...props, 11760 ref: forwardedRef, 11761 direction: "down" 11762 }); 11763 }); 11764 if (true) SelectScrollDownArrow.displayName = "SelectScrollDownArrow"; 11765 11766 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/scroll-up-arrow/SelectScrollUpArrow.mjs 11767 var React84 = __toESM(require_react(), 1); 11768 var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1); 11769 var SelectScrollUpArrow = /* @__PURE__ */ React84.forwardRef(function SelectScrollUpArrow2(props, forwardedRef) { 11770 return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(SelectScrollArrow, { 11771 ...props, 11772 ref: forwardedRef, 11773 direction: "up" 11774 }); 11775 }); 11776 if (true) SelectScrollUpArrow.displayName = "SelectScrollUpArrow"; 11777 11778 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/group/SelectGroup.mjs 11779 var React86 = __toESM(require_react(), 1); 11780 11781 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/group/SelectGroupContext.mjs 11782 var React85 = __toESM(require_react(), 1); 11783 var SelectGroupContext = /* @__PURE__ */ React85.createContext(void 0); 11784 if (true) SelectGroupContext.displayName = "SelectGroupContext"; 11785 function useSelectGroupContext() { 11786 const context = React85.useContext(SelectGroupContext); 11787 if (context === void 0) { 11788 throw new Error(true ? "Base UI: SelectGroupContext is missing. SelectGroup parts must be placed within <Select.Group>." : formatErrorMessage_default(56)); 11789 } 11790 return context; 11791 } 11792 11793 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/group/SelectGroup.mjs 11794 var import_jsx_runtime30 = __toESM(require_jsx_runtime(), 1); 11795 var SelectGroup = /* @__PURE__ */ React86.forwardRef(function SelectGroup2(componentProps, forwardedRef) { 11796 const { 11797 render, 11798 className, 11799 style, 11800 ...elementProps 11801 } = componentProps; 11802 const [labelId, setLabelId] = React86.useState(); 11803 const contextValue = React86.useMemo(() => ({ 11804 labelId, 11805 setLabelId 11806 }), [labelId, setLabelId]); 11807 const element = useRenderElement("div", componentProps, { 11808 ref: forwardedRef, 11809 props: [{ 11810 role: "group", 11811 "aria-labelledby": labelId 11812 }, elementProps] 11813 }); 11814 return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(SelectGroupContext.Provider, { 11815 value: contextValue, 11816 children: element 11817 }); 11818 }); 11819 if (true) SelectGroup.displayName = "SelectGroup"; 11820 11821 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/group-label/SelectGroupLabel.mjs 11822 var React87 = __toESM(require_react(), 1); 11823 var SelectGroupLabel = /* @__PURE__ */ React87.forwardRef(function SelectGroupLabel2(componentProps, forwardedRef) { 11824 const { 11825 render, 11826 className, 11827 style, 11828 id: idProp, 11829 ...elementProps 11830 } = componentProps; 11831 const { 11832 setLabelId 11833 } = useSelectGroupContext(); 11834 const id = useBaseUiId(idProp); 11835 useIsoLayoutEffect(() => { 11836 setLabelId(id); 11837 return () => { 11838 setLabelId((currentId) => currentId === id ? void 0 : currentId); 11839 }; 11840 }, [id, setLabelId]); 11841 const element = useRenderElement("div", componentProps, { 11842 ref: forwardedRef, 11843 props: [{ 11844 id, 11845 "aria-hidden": true 11846 }, elementProps] 11847 }); 11848 return element; 11849 }); 11850 if (true) SelectGroupLabel.displayName = "SelectGroupLabel"; 11851 11852 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/separator/SelectSeparator.mjs 11853 var SelectSeparator = ListboxSeparator; 11854 11855 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/use-render/useRender.mjs 11856 function useRender(params) { 11857 return useRenderElement(params.defaultTagName ?? "div", params, params); 11858 } 11859 11860 // packages/ui/build-module/text/text.mjs 11861 var import_element8 = __toESM(require_element(), 1); 11862 var STYLE_HASH_ATTRIBUTE = "data-wp-hash"; 11863 function getRuntime() { 11864 const globalScope = globalThis; 11865 if (globalScope.__wpStyleRuntime) { 11866 return globalScope.__wpStyleRuntime; 11867 } 11868 globalScope.__wpStyleRuntime = { 11869 documents: /* @__PURE__ */ new Map(), 11870 styles: /* @__PURE__ */ new Map(), 11871 injectedStyles: /* @__PURE__ */ new WeakMap() 11872 }; 11873 if (typeof document !== "undefined") { 11874 registerDocument(document); 11875 } 11876 return globalScope.__wpStyleRuntime; 11877 } 11878 function documentContainsStyleHash(targetDocument, hash) { 11879 if (!targetDocument.head) { 11880 return false; 11881 } 11882 for (const style of targetDocument.head.querySelectorAll( 11883 `style[$STYLE_HASH_ATTRIBUTE}]` 11884 )) { 11885 if (style.getAttribute(STYLE_HASH_ATTRIBUTE) === hash) { 11886 return true; 11887 } 11888 } 11889 return false; 11890 } 11891 function injectStyle(targetDocument, hash, css) { 11892 if (!targetDocument.head) { 11893 return; 11894 } 11895 const runtime = getRuntime(); 11896 let injectedStyles = runtime.injectedStyles.get(targetDocument); 11897 if (!injectedStyles) { 11898 injectedStyles = /* @__PURE__ */ new Set(); 11899 runtime.injectedStyles.set(targetDocument, injectedStyles); 11900 } 11901 if (injectedStyles.has(hash)) { 11902 return; 11903 } 11904 if (documentContainsStyleHash(targetDocument, hash)) { 11905 injectedStyles.add(hash); 11906 return; 11907 } 11908 const style = targetDocument.createElement("style"); 11909 style.setAttribute(STYLE_HASH_ATTRIBUTE, hash); 11910 style.appendChild(targetDocument.createTextNode(css)); 11911 targetDocument.head.appendChild(style); 11912 injectedStyles.add(hash); 11913 } 11914 function registerDocument(targetDocument) { 11915 const runtime = getRuntime(); 11916 runtime.documents.set( 11917 targetDocument, 11918 (runtime.documents.get(targetDocument) ?? 0) + 1 11919 ); 11920 for (const [hash, css] of runtime.styles) { 11921 injectStyle(targetDocument, hash, css); 11922 } 11923 return () => { 11924 const count = runtime.documents.get(targetDocument); 11925 if (count === void 0) { 11926 return; 11927 } 11928 if (count <= 1) { 11929 runtime.documents.delete(targetDocument); 11930 return; 11931 } 11932 runtime.documents.set(targetDocument, count - 1); 11933 }; 11934 } 11935 function registerStyle(hash, css) { 11936 const runtime = getRuntime(); 11937 runtime.styles.set(hash, css); 11938 for (const targetDocument of runtime.documents.keys()) { 11939 injectStyle(targetDocument, hash, css); 11940 } 11941 } 11942 if (typeof process === "undefined" || true) { 11943 registerStyle("09bae534ff", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._9745ffa515d864cf__text{text-wrap:pretty;margin:0}._8882b6a7feb4fd3d__heading-2xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-emphasis,600);--_gcd-p-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-p-line-height:var(--wpds-typography-line-height-2xl,40px);font-size:var(--wpds-typography-font-size-2xl,32px);line-height:var(--wpds-typography-line-height-2xl,40px)}._664e3e7687c45603__heading-xl,._8882b6a7feb4fd3d__heading-2xl{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-emphasis,600)}._664e3e7687c45603__heading-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-emphasis,600);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-md,24px)}.dac661a5de0ed2bd__heading-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-emphasis,600);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-lg,15px)}._59c7f3f740e2f96e__heading-md,.dac661a5de0ed2bd__heading-lg{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-emphasis,600);line-height:var(--wpds-typography-line-height-sm,20px)}._59c7f3f740e2f96e__heading-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-emphasis,600);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px)}.cf052fbad8d93b7e__heading-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-emphasis,600);--_gcd-p-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);line-height:var(--wpds-typography-line-height-xs,16px);text-transform:uppercase}._212b9cfef57a0af4__body-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-default,400);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-xl,32px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-xl,32px)}._07f57bc0aa36b2c6__body-lg,._212b9cfef57a0af4__body-xl{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-default,400)}._07f57bc0aa36b2c6__body-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-default,400);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-lg,15px);line-height:var(--wpds-typography-line-height-md,24px)}._0c6da4457aec9e62__body-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-default,400);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}._0c6da4457aec9e62__body-md,.b998f87ff17b7bec__body-sm{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-default,400)}.b998f87ff17b7bec__body-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-default,400);--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}}'); 11944 } 11945 var style_default = { "text": "_9745ffa515d864cf__text", "heading-2xl": "_8882b6a7feb4fd3d__heading-2xl", "heading-xl": "_664e3e7687c45603__heading-xl", "heading-lg": "dac661a5de0ed2bd__heading-lg", "heading-md": "_59c7f3f740e2f96e__heading-md", "heading-sm": "cf052fbad8d93b7e__heading-sm", "body-xl": "_212b9cfef57a0af4__body-xl", "body-lg": "_07f57bc0aa36b2c6__body-lg", "body-md": "_0c6da4457aec9e62__body-md", "body-sm": "b998f87ff17b7bec__body-sm" }; 11946 if (typeof process === "undefined" || true) { 11947 registerStyle("726f348f3f", "._78c10a0773e51a91__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}._5b33aa2d48624b4f__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._980b3b4776ac8f81__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._43e478b4279a076c__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._698099e25b0fb1a6__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6)._326aee4184d261fd__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}.e9576240835601ba__a,.e9576240835601ba__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}._3f05789653864a73__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._3c72ff72abe57859__li{margin:var(--_gcd-li-margin,0)}[role=treeitem] span._79d16267c15d9eb2__span[aria-hidden]{display:var(--_gcd-span-display,inline);font-family:var(--_gcd-span-font-family,inherit);font-size:var(--_gcd-span-font-size,inherit);line-height:var(--_gcd-span-line-height,1);pointer-events:var(--_gcd-span-pointer-events,auto);position:var(--_gcd-span-position,static)}"); 11948 } 11949 var global_css_defense_default = { "button": "_78c10a0773e51a91__button", "input": "_5b33aa2d48624b4f__input", "textarea": "_980b3b4776ac8f81__textarea", "div": "_43e478b4279a076c__div", "p": "_698099e25b0fb1a6__p", "heading": "_326aee4184d261fd__heading", "a": "e9576240835601ba__a", "ol": "_3f05789653864a73__ol", "li": "_3c72ff72abe57859__li", "span": "_79d16267c15d9eb2__span" }; 11950 var Text = (0, import_element8.forwardRef)( 11951 function UnforwardedText({ variant = "body-md", render, className, ...props }, ref) { 11952 const element = useRender({ 11953 render, 11954 defaultTagName: "span", 11955 ref, 11956 props: mergeProps(props, { 11957 className: clsx_default( 11958 style_default.text, 11959 global_css_defense_default.heading, 11960 global_css_defense_default.p, 11961 style_default[variant], 11962 className 11963 ) 11964 }) 11965 }); 11966 return element; 11967 } 11968 ); 11969 11970 // packages/ui/build-module/visually-hidden/visually-hidden.mjs 11971 var import_element9 = __toESM(require_element(), 1); 11972 var STYLE_HASH_ATTRIBUTE2 = "data-wp-hash"; 11973 function getRuntime2() { 11974 const globalScope = globalThis; 11975 if (globalScope.__wpStyleRuntime) { 11976 return globalScope.__wpStyleRuntime; 11977 } 11978 globalScope.__wpStyleRuntime = { 11979 documents: /* @__PURE__ */ new Map(), 11980 styles: /* @__PURE__ */ new Map(), 11981 injectedStyles: /* @__PURE__ */ new WeakMap() 11982 }; 11983 if (typeof document !== "undefined") { 11984 registerDocument2(document); 11985 } 11986 return globalScope.__wpStyleRuntime; 11987 } 11988 function documentContainsStyleHash2(targetDocument, hash) { 11989 if (!targetDocument.head) { 11990 return false; 11991 } 11992 for (const style of targetDocument.head.querySelectorAll( 11993 `style[$STYLE_HASH_ATTRIBUTE2}]` 11994 )) { 11995 if (style.getAttribute(STYLE_HASH_ATTRIBUTE2) === hash) { 11996 return true; 11997 } 11998 } 11999 return false; 12000 } 12001 function injectStyle2(targetDocument, hash, css) { 12002 if (!targetDocument.head) { 12003 return; 12004 } 12005 const runtime = getRuntime2(); 12006 let injectedStyles = runtime.injectedStyles.get(targetDocument); 12007 if (!injectedStyles) { 12008 injectedStyles = /* @__PURE__ */ new Set(); 12009 runtime.injectedStyles.set(targetDocument, injectedStyles); 12010 } 12011 if (injectedStyles.has(hash)) { 12012 return; 12013 } 12014 if (documentContainsStyleHash2(targetDocument, hash)) { 12015 injectedStyles.add(hash); 12016 return; 12017 } 12018 const style = targetDocument.createElement("style"); 12019 style.setAttribute(STYLE_HASH_ATTRIBUTE2, hash); 12020 style.appendChild(targetDocument.createTextNode(css)); 12021 targetDocument.head.appendChild(style); 12022 injectedStyles.add(hash); 12023 } 12024 function registerDocument2(targetDocument) { 12025 const runtime = getRuntime2(); 12026 runtime.documents.set( 12027 targetDocument, 12028 (runtime.documents.get(targetDocument) ?? 0) + 1 12029 ); 12030 for (const [hash, css] of runtime.styles) { 12031 injectStyle2(targetDocument, hash, css); 12032 } 12033 return () => { 12034 const count = runtime.documents.get(targetDocument); 12035 if (count === void 0) { 12036 return; 12037 } 12038 if (count <= 1) { 12039 runtime.documents.delete(targetDocument); 12040 return; 12041 } 12042 runtime.documents.set(targetDocument, count - 1); 12043 }; 12044 } 12045 function registerStyle2(hash, css) { 12046 const runtime = getRuntime2(); 12047 runtime.styles.set(hash, css); 12048 for (const targetDocument of runtime.documents.keys()) { 12049 injectStyle2(targetDocument, hash, css); 12050 } 12051 } 12052 if (typeof process === "undefined" || true) { 12053 registerStyle2("7caae29f9e", ".e2c3cbe6ada7d785__visually-hidden{border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;overflow-wrap:normal;padding:0;position:absolute;width:1px;word-break:normal}"); 12054 } 12055 var style_default2 = { "visually-hidden": "e2c3cbe6ada7d785__visually-hidden" }; 12056 var VisuallyHidden = (0, import_element9.forwardRef)( 12057 function UnforwardedVisuallyHidden({ render, ...restProps }, ref) { 12058 const element = useRender({ 12059 render, 12060 ref, 12061 props: mergeProps( 12062 { className: style_default2["visually-hidden"] }, 12063 restProps, 12064 { 12065 // @ts-expect-error Arbitrary data-* attributes aren't indexable on the typed div props. Kept hardcoded so consumers can't change or remove it. 12066 "data-visually-hidden": "" 12067 } 12068 ) 12069 }); 12070 return element; 12071 } 12072 ); 12073 12074 // packages/ui/build-module/utils/item-popup/item-content.mjs 12075 var import_element10 = __toESM(require_element(), 1); 12076 var VALIDATION_ENABLED = true; 12077 function parseItemContent(children, { Label: Label2, Description: Description2, validationMessage }) { 12078 const childArray = import_element10.Children.toArray(children); 12079 const [label, ...descriptions] = childArray; 12080 const hasLabel = (0, import_element10.isValidElement)(label) && label.type === Label2; 12081 const descriptionElements = descriptions.filter( 12082 (description) => (0, import_element10.isValidElement)(description) && description.type === Description2 12083 ); 12084 if (VALIDATION_ENABLED && (!hasLabel || descriptionElements.length !== descriptions.length)) { 12085 throw new Error(validationMessage); 12086 } 12087 return { 12088 descriptionIds: descriptionElements.map( 12089 (description) => description.props.id 12090 ), 12091 hasLabel, 12092 labelId: hasLabel ? label.props.id : void 0 12093 }; 12094 } 12095 function useItemContent(children, components, { 12096 "aria-describedby": ariaDescribedBy, 12097 "aria-label": ariaLabel, 12098 "aria-labelledby": ariaLabelledBy 12099 } = {}) { 12100 const generatedLabelId = (0, import_element10.useId)(); 12101 const generatedDescriptionId = (0, import_element10.useId)(); 12102 const { descriptionIds, hasLabel, labelId } = parseItemContent( 12103 children, 12104 components 12105 ); 12106 const resolvedLabelId = hasLabel ? labelId ?? generatedLabelId : void 0; 12107 const resolvedDescriptionIds = descriptionIds.map( 12108 (descriptionId, index2) => descriptionId ?? `$generatedDescriptionId}-$index2}` 12109 ); 12110 const itemDescribedBy = Array.from( 12111 /* @__PURE__ */ new Set([ 12112 ...ariaDescribedBy?.split(/\s+/).filter(Boolean) ?? [], 12113 ...resolvedDescriptionIds 12114 ]) 12115 ).join(" "); 12116 let descriptionIndex = 0; 12117 const { Label: Label2, Description: Description2, descriptionValidationToken } = components; 12118 const contentChildren = import_element10.Children.map(children, (child) => { 12119 if (!(0, import_element10.isValidElement)(child)) { 12120 return child; 12121 } 12122 if (child.type === Label2) { 12123 return child.props.id === resolvedLabelId ? child : (0, import_element10.cloneElement)(child, { id: resolvedLabelId }); 12124 } 12125 if (child.type !== Description2) { 12126 return child; 12127 } 12128 const descriptionId = resolvedDescriptionIds[descriptionIndex++]; 12129 if (!descriptionValidationToken && child.props.id === descriptionId) { 12130 return child; 12131 } 12132 return (0, import_element10.cloneElement)(child, { 12133 id: descriptionId, 12134 ...descriptionValidationToken && { 12135 validationToken: descriptionValidationToken 12136 } 12137 }); 12138 }); 12139 const labelledBy = ariaLabelledBy ?? (ariaLabel ? void 0 : resolvedLabelId); 12140 return { 12141 contentChildren, 12142 resolvedLabelId, 12143 itemAriaProps: { 12144 "aria-describedby": itemDescribedBy || void 0, 12145 "aria-label": ariaLabel, 12146 "aria-labelledby": labelledBy 12147 } 12148 }; 12149 } 12150 12151 // packages/ui/build-module/utils/render-slot-with-children.mjs 12152 var import_element11 = __toESM(require_element(), 1); 12153 function renderSlotWithChildren(slot, defaultSlot, children) { 12154 return (0, import_element11.cloneElement)( 12155 slot ?? defaultSlot, 12156 { children } 12157 ); 12158 } 12159 12160 // packages/ui/build-module/utils/wp-compat-overlay-slot.mjs 12161 var STYLE_HASH_ATTRIBUTE3 = "data-wp-hash"; 12162 function getRuntime3() { 12163 const globalScope = globalThis; 12164 if (globalScope.__wpStyleRuntime) { 12165 return globalScope.__wpStyleRuntime; 12166 } 12167 globalScope.__wpStyleRuntime = { 12168 documents: /* @__PURE__ */ new Map(), 12169 styles: /* @__PURE__ */ new Map(), 12170 injectedStyles: /* @__PURE__ */ new WeakMap() 12171 }; 12172 if (typeof document !== "undefined") { 12173 registerDocument3(document); 12174 } 12175 return globalScope.__wpStyleRuntime; 12176 } 12177 function documentContainsStyleHash3(targetDocument, hash) { 12178 if (!targetDocument.head) { 12179 return false; 12180 } 12181 for (const style of targetDocument.head.querySelectorAll( 12182 `style[$STYLE_HASH_ATTRIBUTE3}]` 12183 )) { 12184 if (style.getAttribute(STYLE_HASH_ATTRIBUTE3) === hash) { 12185 return true; 12186 } 12187 } 12188 return false; 12189 } 12190 function injectStyle3(targetDocument, hash, css) { 12191 if (!targetDocument.head) { 12192 return; 12193 } 12194 const runtime = getRuntime3(); 12195 let injectedStyles = runtime.injectedStyles.get(targetDocument); 12196 if (!injectedStyles) { 12197 injectedStyles = /* @__PURE__ */ new Set(); 12198 runtime.injectedStyles.set(targetDocument, injectedStyles); 12199 } 12200 if (injectedStyles.has(hash)) { 12201 return; 12202 } 12203 if (documentContainsStyleHash3(targetDocument, hash)) { 12204 injectedStyles.add(hash); 12205 return; 12206 } 12207 const style = targetDocument.createElement("style"); 12208 style.setAttribute(STYLE_HASH_ATTRIBUTE3, hash); 12209 style.appendChild(targetDocument.createTextNode(css)); 12210 targetDocument.head.appendChild(style); 12211 injectedStyles.add(hash); 12212 } 12213 function registerDocument3(targetDocument) { 12214 const runtime = getRuntime3(); 12215 runtime.documents.set( 12216 targetDocument, 12217 (runtime.documents.get(targetDocument) ?? 0) + 1 12218 ); 12219 for (const [hash, css] of runtime.styles) { 12220 injectStyle3(targetDocument, hash, css); 12221 } 12222 return () => { 12223 const count = runtime.documents.get(targetDocument); 12224 if (count === void 0) { 12225 return; 12226 } 12227 if (count <= 1) { 12228 runtime.documents.delete(targetDocument); 12229 return; 12230 } 12231 runtime.documents.set(targetDocument, count - 1); 12232 }; 12233 } 12234 function registerStyle3(hash, css) { 12235 const runtime = getRuntime3(); 12236 runtime.styles.set(hash, css); 12237 for (const targetDocument of runtime.documents.keys()) { 12238 injectStyle3(targetDocument, hash, css); 12239 } 12240 } 12241 if (typeof process === "undefined" || true) { 12242 registerStyle3("40df669685", "._9e7887c25dedb459__slot{inset:0;isolation:isolate;pointer-events:none;position:fixed;z-index:1000000003}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._9e7887c25dedb459__slot>*{pointer-events:auto}}}"); 12243 } 12244 var wp_compat_overlay_slot_default = { "slot": "_9e7887c25dedb459__slot" }; 12245 var WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE = "data-wp-compat-overlay-slot"; 12246 function resolveOwnerDocument() { 12247 return typeof document === "undefined" ? null : document; 12248 } 12249 function isInWordPressEnvironment() { 12250 let topWp; 12251 try { 12252 topWp = window.top?.wp; 12253 } catch { 12254 } 12255 const wp = topWp ?? window.wp; 12256 return typeof wp?.components === "object" && wp.components !== null; 12257 } 12258 var cachedSlot = null; 12259 function ensureSlotIsAccessible(element) { 12260 element.setAttribute("aria-hidden", "false"); 12261 return element; 12262 } 12263 function createSlot(ownerDocument2) { 12264 const element = ownerDocument2.createElement("div"); 12265 element.setAttribute(WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE, ""); 12266 if (wp_compat_overlay_slot_default.slot) { 12267 element.classList.add(wp_compat_overlay_slot_default.slot); 12268 } 12269 ownerDocument2.body.appendChild(element); 12270 return element; 12271 } 12272 function getWpCompatOverlaySlot() { 12273 if (typeof window === "undefined") { 12274 return void 0; 12275 } 12276 if (!isInWordPressEnvironment() && window.__wpUiCompatOverlaySlotEnabled !== true) { 12277 return void 0; 12278 } 12279 const ownerDocument2 = resolveOwnerDocument(); 12280 if (!ownerDocument2 || !ownerDocument2.body) { 12281 return void 0; 12282 } 12283 if (cachedSlot && cachedSlot.ownerDocument === ownerDocument2 && cachedSlot.isConnected) { 12284 return ensureSlotIsAccessible(cachedSlot); 12285 } 12286 const existing = ownerDocument2.querySelector( 12287 `[$WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE}]` 12288 ); 12289 if (existing instanceof HTMLDivElement) { 12290 cachedSlot = ensureSlotIsAccessible(existing); 12291 return cachedSlot; 12292 } 12293 if (cachedSlot?.isConnected) { 12294 cachedSlot.remove(); 12295 } 12296 cachedSlot = ensureSlotIsAccessible(createSlot(ownerDocument2)); 12297 return cachedSlot; 12298 } 12299 12300 // packages/ui/build-module/form/primitives/constants.mjs 12301 var ITEM_POPUP_POSITIONER_PROPS = { 12302 align: "start", 12303 sideOffset: 8, 12304 collisionPadding: 12 12305 }; 12306 12307 // packages/ui/build-module/utils/direction-provider.mjs 12308 var import_i18n = __toESM(require_i18n(), 1); 12309 var import_jsx_runtime31 = __toESM(require_jsx_runtime(), 1); 12310 function DirectionProvider3({ children }) { 12311 return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(DirectionProvider, { direction: (0, import_i18n.isRTL)() ? "rtl" : "ltr", children }); 12312 } 12313 12314 // packages/ui/build-module/stack/stack.mjs 12315 var import_element12 = __toESM(require_element(), 1); 12316 var STYLE_HASH_ATTRIBUTE4 = "data-wp-hash"; 12317 function getRuntime4() { 12318 const globalScope = globalThis; 12319 if (globalScope.__wpStyleRuntime) { 12320 return globalScope.__wpStyleRuntime; 12321 } 12322 globalScope.__wpStyleRuntime = { 12323 documents: /* @__PURE__ */ new Map(), 12324 styles: /* @__PURE__ */ new Map(), 12325 injectedStyles: /* @__PURE__ */ new WeakMap() 12326 }; 12327 if (typeof document !== "undefined") { 12328 registerDocument4(document); 12329 } 12330 return globalScope.__wpStyleRuntime; 12331 } 12332 function documentContainsStyleHash4(targetDocument, hash) { 12333 if (!targetDocument.head) { 12334 return false; 12335 } 12336 for (const style of targetDocument.head.querySelectorAll( 12337 `style[$STYLE_HASH_ATTRIBUTE4}]` 12338 )) { 12339 if (style.getAttribute(STYLE_HASH_ATTRIBUTE4) === hash) { 12340 return true; 12341 } 12342 } 12343 return false; 12344 } 12345 function injectStyle4(targetDocument, hash, css) { 12346 if (!targetDocument.head) { 12347 return; 12348 } 12349 const runtime = getRuntime4(); 12350 let injectedStyles = runtime.injectedStyles.get(targetDocument); 12351 if (!injectedStyles) { 12352 injectedStyles = /* @__PURE__ */ new Set(); 12353 runtime.injectedStyles.set(targetDocument, injectedStyles); 12354 } 12355 if (injectedStyles.has(hash)) { 12356 return; 12357 } 12358 if (documentContainsStyleHash4(targetDocument, hash)) { 12359 injectedStyles.add(hash); 12360 return; 12361 } 12362 const style = targetDocument.createElement("style"); 12363 style.setAttribute(STYLE_HASH_ATTRIBUTE4, hash); 12364 style.appendChild(targetDocument.createTextNode(css)); 12365 targetDocument.head.appendChild(style); 12366 injectedStyles.add(hash); 12367 } 12368 function registerDocument4(targetDocument) { 12369 const runtime = getRuntime4(); 12370 runtime.documents.set( 12371 targetDocument, 12372 (runtime.documents.get(targetDocument) ?? 0) + 1 12373 ); 12374 for (const [hash, css] of runtime.styles) { 12375 injectStyle4(targetDocument, hash, css); 12376 } 12377 return () => { 12378 const count = runtime.documents.get(targetDocument); 12379 if (count === void 0) { 12380 return; 12381 } 12382 if (count <= 1) { 12383 runtime.documents.delete(targetDocument); 12384 return; 12385 } 12386 runtime.documents.set(targetDocument, count - 1); 12387 }; 12388 } 12389 function registerStyle4(hash, css) { 12390 const runtime = getRuntime4(); 12391 runtime.styles.set(hash, css); 12392 for (const targetDocument of runtime.documents.keys()) { 12393 injectStyle4(targetDocument, hash, css); 12394 } 12395 } 12396 if (typeof process === "undefined" || true) { 12397 registerStyle4("67591fa198", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._8e8e79c1a2eec43b__stack{display:flex}}}"); 12398 } 12399 var style_default3 = { "stack": "_8e8e79c1a2eec43b__stack" }; 12400 var gapTokens = { 12401 xs: "var(--wpds-dimension-gap-xs, 4px)", 12402 sm: "var(--wpds-dimension-gap-sm, 8px)", 12403 md: "var(--wpds-dimension-gap-md, 12px)", 12404 lg: "var(--wpds-dimension-gap-lg, 16px)", 12405 xl: "var(--wpds-dimension-gap-xl, 24px)", 12406 "2xl": "var(--wpds-dimension-gap-2xl, 32px)", 12407 "3xl": "var(--wpds-dimension-gap-3xl, 40px)" 12408 }; 12409 var Stack = (0, import_element12.forwardRef)( 12410 function UnforwardedStack({ direction, gap, align, justify, wrap, render, ...props }, ref) { 12411 const style = { 12412 gap: gap && gapTokens[gap], 12413 alignItems: align, 12414 justifyContent: justify, 12415 flexDirection: direction, 12416 flexWrap: wrap 12417 }; 12418 const element = useRender({ 12419 render, 12420 ref, 12421 props: mergeProps(props, { 12422 style, 12423 className: style_default3.stack 12424 }) 12425 }); 12426 return element; 12427 } 12428 ); 12429 12430 // packages/ui/build-module/form/primitives/input-layout/input-layout.mjs 12431 var import_element13 = __toESM(require_element(), 1); 12432 var import_jsx_runtime32 = __toESM(require_jsx_runtime(), 1); 12433 var STYLE_HASH_ATTRIBUTE5 = "data-wp-hash"; 12434 function getRuntime5() { 12435 const globalScope = globalThis; 12436 if (globalScope.__wpStyleRuntime) { 12437 return globalScope.__wpStyleRuntime; 12438 } 12439 globalScope.__wpStyleRuntime = { 12440 documents: /* @__PURE__ */ new Map(), 12441 styles: /* @__PURE__ */ new Map(), 12442 injectedStyles: /* @__PURE__ */ new WeakMap() 12443 }; 12444 if (typeof document !== "undefined") { 12445 registerDocument5(document); 12446 } 12447 return globalScope.__wpStyleRuntime; 12448 } 12449 function documentContainsStyleHash5(targetDocument, hash) { 12450 if (!targetDocument.head) { 12451 return false; 12452 } 12453 for (const style of targetDocument.head.querySelectorAll( 12454 `style[$STYLE_HASH_ATTRIBUTE5}]` 12455 )) { 12456 if (style.getAttribute(STYLE_HASH_ATTRIBUTE5) === hash) { 12457 return true; 12458 } 12459 } 12460 return false; 12461 } 12462 function injectStyle5(targetDocument, hash, css) { 12463 if (!targetDocument.head) { 12464 return; 12465 } 12466 const runtime = getRuntime5(); 12467 let injectedStyles = runtime.injectedStyles.get(targetDocument); 12468 if (!injectedStyles) { 12469 injectedStyles = /* @__PURE__ */ new Set(); 12470 runtime.injectedStyles.set(targetDocument, injectedStyles); 12471 } 12472 if (injectedStyles.has(hash)) { 12473 return; 12474 } 12475 if (documentContainsStyleHash5(targetDocument, hash)) { 12476 injectedStyles.add(hash); 12477 return; 12478 } 12479 const style = targetDocument.createElement("style"); 12480 style.setAttribute(STYLE_HASH_ATTRIBUTE5, hash); 12481 style.appendChild(targetDocument.createTextNode(css)); 12482 targetDocument.head.appendChild(style); 12483 injectedStyles.add(hash); 12484 } 12485 function registerDocument5(targetDocument) { 12486 const runtime = getRuntime5(); 12487 runtime.documents.set( 12488 targetDocument, 12489 (runtime.documents.get(targetDocument) ?? 0) + 1 12490 ); 12491 for (const [hash, css] of runtime.styles) { 12492 injectStyle5(targetDocument, hash, css); 12493 } 12494 return () => { 12495 const count = runtime.documents.get(targetDocument); 12496 if (count === void 0) { 12497 return; 12498 } 12499 if (count <= 1) { 12500 runtime.documents.delete(targetDocument); 12501 return; 12502 } 12503 runtime.documents.set(targetDocument, count - 1); 12504 }; 12505 } 12506 function registerStyle5(hash, css) { 12507 const runtime = getRuntime5(); 12508 runtime.styles.set(hash, css); 12509 for (const targetDocument of runtime.documents.keys()) { 12510 injectStyle5(targetDocument, hash, css); 12511 } 12512 } 12513 if (typeof process === "undefined" || true) { 12514 registerStyle5("726f348f3f", "._78c10a0773e51a91__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}._5b33aa2d48624b4f__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._980b3b4776ac8f81__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._43e478b4279a076c__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._698099e25b0fb1a6__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6)._326aee4184d261fd__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}.e9576240835601ba__a,.e9576240835601ba__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}._3f05789653864a73__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._3c72ff72abe57859__li{margin:var(--_gcd-li-margin,0)}[role=treeitem] span._79d16267c15d9eb2__span[aria-hidden]{display:var(--_gcd-span-display,inline);font-family:var(--_gcd-span-font-family,inherit);font-size:var(--_gcd-span-font-size,inherit);line-height:var(--_gcd-span-line-height,1);pointer-events:var(--_gcd-span-pointer-events,auto);position:var(--_gcd-span-position,static)}"); 12515 } 12516 var global_css_defense_default2 = { "button": "_78c10a0773e51a91__button", "input": "_5b33aa2d48624b4f__input", "textarea": "_980b3b4776ac8f81__textarea", "div": "_43e478b4279a076c__div", "p": "_698099e25b0fb1a6__p", "heading": "_326aee4184d261fd__heading", "a": "e9576240835601ba__a", "ol": "_3f05789653864a73__ol", "li": "_3c72ff72abe57859__li", "span": "_79d16267c15d9eb2__span" }; 12517 if (typeof process === "undefined" || true) { 12518 registerStyle5("37477070fb", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{.ccc29f9575c4c758__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 12519 } 12520 var resets_default = { "box-sizing": "ccc29f9575c4c758__box-sizing" }; 12521 if (typeof process === "undefined" || true) { 12522 registerStyle5("a933c8f665", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.b58f09bec1a5dbde__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;&.c6959524c70627d6__is-size-compact{height:var(--wpds-dimension-size-md,32px)}&.aa52ad890a16cc91__is-size-small,&.c6959524c70627d6__is-size-compact{--wp-ui-input-layout-padding-inline:var(--wpds-dimension-padding-sm,8px)}&.aa52ad890a16cc91__is-size-small{height:var(--wpds-dimension-size-sm,24px)}&._50a72abb47530e8a__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(._33a5f404fc55a9f2__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}}}&._33a5f404fc55a9f2__is-borderless{background-color:var(--wpds-color-background-interactive-neutral-weak,#0000);border-color:transparent}&:has(._7ef4bcd6bfde61ae__input-layout-slot:focus-within){--_gcd-div-outline:none;outline:none}&:hover:not(._50a72abb47530e8a__is-disabled,:has([data-can-disable-input-layout][data-disabled]),._33a5f404fc55a9f2__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)}}}._7c0c0ce7b5c57b8f__slot-wrapper{display:contents}._7ef4bcd6bfde61ae__input-layout-slot{align-items:center;display:flex;&._50d0eced305893d5__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))}}}}'); 12523 } 12524 var style_default4 = { "input-layout": "b58f09bec1a5dbde__input-layout", "is-size-compact": "c6959524c70627d6__is-size-compact", "is-size-small": "aa52ad890a16cc91__is-size-small", "is-disabled": "_50a72abb47530e8a__is-disabled", "is-borderless": "_33a5f404fc55a9f2__is-borderless", "input-layout-slot": "_7ef4bcd6bfde61ae__input-layout-slot", "slot-wrapper": "_7c0c0ce7b5c57b8f__slot-wrapper", "is-padding-minimal": "_50d0eced305893d5__is-padding-minimal" }; 12525 var InputLayout = (0, import_element13.forwardRef)( 12526 function UnforwardedInputLayout({ 12527 className, 12528 children, 12529 visuallyDisabled, 12530 size: size4 = "default", 12531 isBorderless, 12532 prefix, 12533 suffix, 12534 ...restProps 12535 }, ref) { 12536 return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)( 12537 "div", 12538 { 12539 ref, 12540 className: clsx_default( 12541 global_css_defense_default2.div, 12542 resets_default["box-sizing"], 12543 style_default4["input-layout"], 12544 style_default4[`is-size-$size4}`], 12545 visuallyDisabled && style_default4["is-disabled"], 12546 isBorderless && style_default4["is-borderless"], 12547 className 12548 ), 12549 ...restProps, 12550 children: [ 12551 import_element13.Children.count(prefix) > 0 && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)( 12552 "div", 12553 { 12554 className: style_default4["slot-wrapper"], 12555 "data-slot-type": "prefix", 12556 children: prefix 12557 } 12558 ), 12559 children, 12560 import_element13.Children.count(suffix) > 0 && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)( 12561 "div", 12562 { 12563 className: style_default4["slot-wrapper"], 12564 "data-slot-type": "suffix", 12565 children: suffix 12566 } 12567 ) 12568 ] 12569 } 12570 ); 12571 } 12572 ); 12573 12574 // packages/ui/build-module/form/primitives/input-layout/slot.mjs 12575 var import_element14 = __toESM(require_element(), 1); 12576 var import_jsx_runtime33 = __toESM(require_jsx_runtime(), 1); 12577 var STYLE_HASH_ATTRIBUTE6 = "data-wp-hash"; 12578 function getRuntime6() { 12579 const globalScope = globalThis; 12580 if (globalScope.__wpStyleRuntime) { 12581 return globalScope.__wpStyleRuntime; 12582 } 12583 globalScope.__wpStyleRuntime = { 12584 documents: /* @__PURE__ */ new Map(), 12585 styles: /* @__PURE__ */ new Map(), 12586 injectedStyles: /* @__PURE__ */ new WeakMap() 12587 }; 12588 if (typeof document !== "undefined") { 12589 registerDocument6(document); 12590 } 12591 return globalScope.__wpStyleRuntime; 12592 } 12593 function documentContainsStyleHash6(targetDocument, hash) { 12594 if (!targetDocument.head) { 12595 return false; 12596 } 12597 for (const style of targetDocument.head.querySelectorAll( 12598 `style[$STYLE_HASH_ATTRIBUTE6}]` 12599 )) { 12600 if (style.getAttribute(STYLE_HASH_ATTRIBUTE6) === hash) { 12601 return true; 12602 } 12603 } 12604 return false; 12605 } 12606 function injectStyle6(targetDocument, hash, css) { 12607 if (!targetDocument.head) { 12608 return; 12609 } 12610 const runtime = getRuntime6(); 12611 let injectedStyles = runtime.injectedStyles.get(targetDocument); 12612 if (!injectedStyles) { 12613 injectedStyles = /* @__PURE__ */ new Set(); 12614 runtime.injectedStyles.set(targetDocument, injectedStyles); 12615 } 12616 if (injectedStyles.has(hash)) { 12617 return; 12618 } 12619 if (documentContainsStyleHash6(targetDocument, hash)) { 12620 injectedStyles.add(hash); 12621 return; 12622 } 12623 const style = targetDocument.createElement("style"); 12624 style.setAttribute(STYLE_HASH_ATTRIBUTE6, hash); 12625 style.appendChild(targetDocument.createTextNode(css)); 12626 targetDocument.head.appendChild(style); 12627 injectedStyles.add(hash); 12628 } 12629 function registerDocument6(targetDocument) { 12630 const runtime = getRuntime6(); 12631 runtime.documents.set( 12632 targetDocument, 12633 (runtime.documents.get(targetDocument) ?? 0) + 1 12634 ); 12635 for (const [hash, css] of runtime.styles) { 12636 injectStyle6(targetDocument, hash, css); 12637 } 12638 return () => { 12639 const count = runtime.documents.get(targetDocument); 12640 if (count === void 0) { 12641 return; 12642 } 12643 if (count <= 1) { 12644 runtime.documents.delete(targetDocument); 12645 return; 12646 } 12647 runtime.documents.set(targetDocument, count - 1); 12648 }; 12649 } 12650 function registerStyle6(hash, css) { 12651 const runtime = getRuntime6(); 12652 runtime.styles.set(hash, css); 12653 for (const targetDocument of runtime.documents.keys()) { 12654 injectStyle6(targetDocument, hash, css); 12655 } 12656 } 12657 if (typeof process === "undefined" || true) { 12658 registerStyle6("a933c8f665", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.b58f09bec1a5dbde__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;&.c6959524c70627d6__is-size-compact{height:var(--wpds-dimension-size-md,32px)}&.aa52ad890a16cc91__is-size-small,&.c6959524c70627d6__is-size-compact{--wp-ui-input-layout-padding-inline:var(--wpds-dimension-padding-sm,8px)}&.aa52ad890a16cc91__is-size-small{height:var(--wpds-dimension-size-sm,24px)}&._50a72abb47530e8a__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(._33a5f404fc55a9f2__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}}}&._33a5f404fc55a9f2__is-borderless{background-color:var(--wpds-color-background-interactive-neutral-weak,#0000);border-color:transparent}&:has(._7ef4bcd6bfde61ae__input-layout-slot:focus-within){--_gcd-div-outline:none;outline:none}&:hover:not(._50a72abb47530e8a__is-disabled,:has([data-can-disable-input-layout][data-disabled]),._33a5f404fc55a9f2__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)}}}._7c0c0ce7b5c57b8f__slot-wrapper{display:contents}._7ef4bcd6bfde61ae__input-layout-slot{align-items:center;display:flex;&._50d0eced305893d5__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))}}}}'); 12659 } 12660 var style_default5 = { "input-layout": "b58f09bec1a5dbde__input-layout", "is-size-compact": "c6959524c70627d6__is-size-compact", "is-size-small": "aa52ad890a16cc91__is-size-small", "is-disabled": "_50a72abb47530e8a__is-disabled", "is-borderless": "_33a5f404fc55a9f2__is-borderless", "input-layout-slot": "_7ef4bcd6bfde61ae__input-layout-slot", "slot-wrapper": "_7c0c0ce7b5c57b8f__slot-wrapper", "is-padding-minimal": "_50d0eced305893d5__is-padding-minimal" }; 12661 var InputLayoutSlot = (0, import_element14.forwardRef)(function UnforwardedInputLayoutSlot({ padding = "default", className, ...restProps }, ref) { 12662 return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)( 12663 "div", 12664 { 12665 ref, 12666 className: clsx_default( 12667 style_default5["input-layout-slot"], 12668 style_default5[`is-padding-$padding}`], 12669 className 12670 ), 12671 ...restProps 12672 } 12673 ); 12674 }); 12675 InputLayoutSlot.displayName = "InputLayout.Slot"; 12676 12677 // packages/ui/build-module/form/primitives/input-layout/index.mjs 12678 var InputLayout2 = Object.assign(InputLayout, { 12679 Slot: InputLayoutSlot 12680 }); 12681 12682 // packages/ui/build-module/utils/css/item-popup.mjs 12683 var STYLE_HASH_ATTRIBUTE7 = "data-wp-hash"; 12684 function getRuntime7() { 12685 const globalScope = globalThis; 12686 if (globalScope.__wpStyleRuntime) { 12687 return globalScope.__wpStyleRuntime; 12688 } 12689 globalScope.__wpStyleRuntime = { 12690 documents: /* @__PURE__ */ new Map(), 12691 styles: /* @__PURE__ */ new Map(), 12692 injectedStyles: /* @__PURE__ */ new WeakMap() 12693 }; 12694 if (typeof document !== "undefined") { 12695 registerDocument7(document); 12696 } 12697 return globalScope.__wpStyleRuntime; 12698 } 12699 function documentContainsStyleHash7(targetDocument, hash) { 12700 if (!targetDocument.head) { 12701 return false; 12702 } 12703 for (const style of targetDocument.head.querySelectorAll( 12704 `style[$STYLE_HASH_ATTRIBUTE7}]` 12705 )) { 12706 if (style.getAttribute(STYLE_HASH_ATTRIBUTE7) === hash) { 12707 return true; 12708 } 12709 } 12710 return false; 12711 } 12712 function injectStyle7(targetDocument, hash, css) { 12713 if (!targetDocument.head) { 12714 return; 12715 } 12716 const runtime = getRuntime7(); 12717 let injectedStyles = runtime.injectedStyles.get(targetDocument); 12718 if (!injectedStyles) { 12719 injectedStyles = /* @__PURE__ */ new Set(); 12720 runtime.injectedStyles.set(targetDocument, injectedStyles); 12721 } 12722 if (injectedStyles.has(hash)) { 12723 return; 12724 } 12725 if (documentContainsStyleHash7(targetDocument, hash)) { 12726 injectedStyles.add(hash); 12727 return; 12728 } 12729 const style = targetDocument.createElement("style"); 12730 style.setAttribute(STYLE_HASH_ATTRIBUTE7, hash); 12731 style.appendChild(targetDocument.createTextNode(css)); 12732 targetDocument.head.appendChild(style); 12733 injectedStyles.add(hash); 12734 } 12735 function registerDocument7(targetDocument) { 12736 const runtime = getRuntime7(); 12737 runtime.documents.set( 12738 targetDocument, 12739 (runtime.documents.get(targetDocument) ?? 0) + 1 12740 ); 12741 for (const [hash, css] of runtime.styles) { 12742 injectStyle7(targetDocument, hash, css); 12743 } 12744 return () => { 12745 const count = runtime.documents.get(targetDocument); 12746 if (count === void 0) { 12747 return; 12748 } 12749 if (count <= 1) { 12750 runtime.documents.delete(targetDocument); 12751 return; 12752 } 12753 runtime.documents.set(targetDocument, count - 1); 12754 }; 12755 } 12756 function registerStyle7(hash, css) { 12757 const runtime = getRuntime7(); 12758 runtime.styles.set(hash, css); 12759 for (const targetDocument of runtime.documents.keys()) { 12760 injectStyle7(targetDocument, hash, css); 12761 } 12762 } 12763 if (typeof process === "undefined" || true) { 12764 registerStyle7("7ad1c0f17c", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._069972d5e326bada__dropdown-motion,._66136bf671f00b1f__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}}._069972d5e326bada__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{.db3b5361087077bf__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);&._55f74d412c3e00e8__is-width-anchor{width:var(--anchor-width)}&._90e0b62205351f85__is-width-content{width:auto}&._30ba87899c0b11ce__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&._402d4db0488da324__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._34ead52b2d60b21d__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._3fec17b6dc9029c3__is-width-available{width:var(--available-width)}}._89cf8b0bb3319c7e__is-align-item-with-trigger[data-side=none] .db3b5361087077bf__popup{max-height:none}._66636b371582ead4__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(.b6aeb640498fae5d__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))}}._325f1b7764907c29__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._597ea43c6bec63d8__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)}}._5865110cf5678449__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._597ea43c6bec63d8__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}._09c9c50e605390ff__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._6361da5eb54e618d__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))}._88cf016d20b4f2ef__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}}.c466e5465a76d4f6__item-layout{--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);&:has(>.b6aeb640498fae5d__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))}}.b9c803da5aae76d5__item{user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&._8931f3eb02e2e0ad__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]){._494b2a9f2e72b67f__item-indicator-icon{opacity:0}}&[data-highlighted]:not([data-disabled]){background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&[data-disabled]{background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);&:focus-visible{--_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:0}@media (forced-colors:active){color:GrayText}}}.b6aeb640498fae5d__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);justify-content:center;pointer-events:none;width:var(--wpds-dimension-size-2xs,16px)}._494b2a9f2e72b67f__item-indicator-icon{translate:0 1px}.b40c7d58965ce4a5__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._3c629930ceb193c7__item-text{display:flex;flex-direction:column;min-width:0}._5c4aad98ed7a8382__item-label{--_gcd-heading-color:currentColor;min-width:0}.deb952050541c0e4__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}.b9c803da5aae76d5__item[data-disabled] .deb952050541c0e4__item-description,.b9c803da5aae76d5__item[data-highlighted]:not([data-disabled]) .deb952050541c0e4__item-description{--_gcd-heading-color:currentColor;color:inherit}._5f8e4a2a04ecdade__loading-indicator{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-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}.c1bf7c14e9600f0a__status{grid-area:status;&:has(._5f8e4a2a04ecdade__loading-indicator){padding-block:var(--wp-ui-popup-padding)}}._0850de87108c9441__empty:not(:empty){grid-area:main}._0850de87108c9441__empty:not(:empty),.c1bf7c14e9600f0a__status:not(:empty):not(:has([data-visually-hidden],._5f8e4a2a04ecdade__loading-indicator)){--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)}}@layer compositions{.eaec70f7db4a63ef__loading-spinner{height:var(--wpds-dimension-size-3xs,12px);width:var(--wpds-dimension-size-3xs,12px)}}}'); 12765 } 12766 var item_popup_default = { "popup": "db3b5361087077bf__popup _069972d5e326bada__dropdown-motion", "is-width-anchor": "_55f74d412c3e00e8__is-width-anchor", "is-width-content": "_90e0b62205351f85__is-width-content", "is-width-sm": "_30ba87899c0b11ce__is-width-sm", "is-width-md": "_402d4db0488da324__is-width-md", "is-width-lg": "_34ead52b2d60b21d__is-width-lg", "is-width-available": "_3fec17b6dc9029c3__is-width-available", "is-align-item-with-trigger": "_89cf8b0bb3319c7e__is-align-item-with-trigger", "list-chrome": "_66636b371582ead4__list-chrome", "item-icon": "b6aeb640498fae5d__item-icon", "list": "_325f1b7764907c29__list _66636b371582ead4__list-chrome", "list-scrollable-container": "_597ea43c6bec63d8__list-scrollable-container", "list-footer": "_5865110cf5678449__list-footer", "group": "_09c9c50e605390ff__group", "group-label": "_6361da5eb54e618d__group-label", "separator": "_88cf016d20b4f2ef__separator", "item-layout": "c466e5465a76d4f6__item-layout", "item": "b9c803da5aae76d5__item c466e5465a76d4f6__item-layout", "is-size-small": "_8931f3eb02e2e0ad__is-size-small", "item-indicator-icon": "_494b2a9f2e72b67f__item-indicator-icon", "item-content": "b40c7d58965ce4a5__item-content", "item-text": "_3c629930ceb193c7__item-text", "item-label": "_5c4aad98ed7a8382__item-label", "item-description": "deb952050541c0e4__item-description", "loading-indicator": "_5f8e4a2a04ecdade__loading-indicator c466e5465a76d4f6__item-layout", "status": "c1bf7c14e9600f0a__status", "empty": "_0850de87108c9441__empty", "loading-spinner": "eaec70f7db4a63ef__loading-spinner" }; 12767 function getItemPopupWidthClassName(width = "anchor") { 12768 switch (width) { 12769 case "available": 12770 return item_popup_default["is-width-available"]; 12771 case "content": 12772 return item_popup_default["is-width-content"]; 12773 case "lg": 12774 return item_popup_default["is-width-lg"]; 12775 case "md": 12776 return item_popup_default["is-width-md"]; 12777 case "sm": 12778 return item_popup_default["is-width-sm"]; 12779 case "anchor": 12780 return item_popup_default["is-width-anchor"]; 12781 default: 12782 return false; 12783 } 12784 } 12785 12786 // packages/ui/build-module/form/primitives/field/index.mjs 12787 var field_exports = {}; 12788 __export(field_exports, { 12789 Control: () => Control, 12790 Description: () => Description, 12791 Details: () => Details, 12792 Item: () => Item, 12793 Label: () => Label, 12794 Root: () => Root, 12795 VisualLabel: () => VisualLabel 12796 }); 12797 12798 // packages/ui/build-module/form/primitives/field/root.mjs 12799 var import_element15 = __toESM(require_element(), 1); 12800 var import_jsx_runtime34 = __toESM(require_jsx_runtime(), 1); 12801 var STYLE_HASH_ATTRIBUTE8 = "data-wp-hash"; 12802 function getRuntime8() { 12803 const globalScope = globalThis; 12804 if (globalScope.__wpStyleRuntime) { 12805 return globalScope.__wpStyleRuntime; 12806 } 12807 globalScope.__wpStyleRuntime = { 12808 documents: /* @__PURE__ */ new Map(), 12809 styles: /* @__PURE__ */ new Map(), 12810 injectedStyles: /* @__PURE__ */ new WeakMap() 12811 }; 12812 if (typeof document !== "undefined") { 12813 registerDocument8(document); 12814 } 12815 return globalScope.__wpStyleRuntime; 12816 } 12817 function documentContainsStyleHash8(targetDocument, hash) { 12818 if (!targetDocument.head) { 12819 return false; 12820 } 12821 for (const style of targetDocument.head.querySelectorAll( 12822 `style[$STYLE_HASH_ATTRIBUTE8}]` 12823 )) { 12824 if (style.getAttribute(STYLE_HASH_ATTRIBUTE8) === hash) { 12825 return true; 12826 } 12827 } 12828 return false; 12829 } 12830 function injectStyle8(targetDocument, hash, css) { 12831 if (!targetDocument.head) { 12832 return; 12833 } 12834 const runtime = getRuntime8(); 12835 let injectedStyles = runtime.injectedStyles.get(targetDocument); 12836 if (!injectedStyles) { 12837 injectedStyles = /* @__PURE__ */ new Set(); 12838 runtime.injectedStyles.set(targetDocument, injectedStyles); 12839 } 12840 if (injectedStyles.has(hash)) { 12841 return; 12842 } 12843 if (documentContainsStyleHash8(targetDocument, hash)) { 12844 injectedStyles.add(hash); 12845 return; 12846 } 12847 const style = targetDocument.createElement("style"); 12848 style.setAttribute(STYLE_HASH_ATTRIBUTE8, hash); 12849 style.appendChild(targetDocument.createTextNode(css)); 12850 targetDocument.head.appendChild(style); 12851 injectedStyles.add(hash); 12852 } 12853 function registerDocument8(targetDocument) { 12854 const runtime = getRuntime8(); 12855 runtime.documents.set( 12856 targetDocument, 12857 (runtime.documents.get(targetDocument) ?? 0) + 1 12858 ); 12859 for (const [hash, css] of runtime.styles) { 12860 injectStyle8(targetDocument, hash, css); 12861 } 12862 return () => { 12863 const count = runtime.documents.get(targetDocument); 12864 if (count === void 0) { 12865 return; 12866 } 12867 if (count <= 1) { 12868 runtime.documents.delete(targetDocument); 12869 return; 12870 } 12871 runtime.documents.set(targetDocument, count - 1); 12872 }; 12873 } 12874 function registerStyle8(hash, css) { 12875 const runtime = getRuntime8(); 12876 runtime.styles.set(hash, css); 12877 for (const targetDocument of runtime.documents.keys()) { 12878 injectStyle8(targetDocument, hash, css); 12879 } 12880 } 12881 if (typeof process === "undefined" || true) { 12882 registerStyle8("37477070fb", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{.ccc29f9575c4c758__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 12883 } 12884 var resets_default2 = { "box-sizing": "ccc29f9575c4c758__box-sizing" }; 12885 var DEFAULT_RENDER = (props) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Stack, { ...props, direction: "column", gap: "sm" }); 12886 var Root = (0, import_element15.forwardRef)( 12887 function UnforwardedRoot({ className, render = DEFAULT_RENDER, ...restProps }, ref) { 12888 return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)( 12889 index_parts_exports.Root, 12890 { 12891 ref, 12892 className: clsx_default(resets_default2["box-sizing"], className), 12893 render, 12894 ...restProps 12895 } 12896 ); 12897 } 12898 ); 12899 12900 // packages/ui/build-module/form/primitives/field/item.mjs 12901 var import_element16 = __toESM(require_element(), 1); 12902 var import_jsx_runtime35 = __toESM(require_jsx_runtime(), 1); 12903 var Item = (0, import_element16.forwardRef)(function UnforwardedItem(props, ref) { 12904 return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(index_parts_exports.Item, { ref, ...props }); 12905 }); 12906 12907 // packages/ui/build-module/form/primitives/field/label.mjs 12908 var import_element17 = __toESM(require_element(), 1); 12909 var import_jsx_runtime36 = __toESM(require_jsx_runtime(), 1); 12910 var STYLE_HASH_ATTRIBUTE9 = "data-wp-hash"; 12911 function getRuntime9() { 12912 const globalScope = globalThis; 12913 if (globalScope.__wpStyleRuntime) { 12914 return globalScope.__wpStyleRuntime; 12915 } 12916 globalScope.__wpStyleRuntime = { 12917 documents: /* @__PURE__ */ new Map(), 12918 styles: /* @__PURE__ */ new Map(), 12919 injectedStyles: /* @__PURE__ */ new WeakMap() 12920 }; 12921 if (typeof document !== "undefined") { 12922 registerDocument9(document); 12923 } 12924 return globalScope.__wpStyleRuntime; 12925 } 12926 function documentContainsStyleHash9(targetDocument, hash) { 12927 if (!targetDocument.head) { 12928 return false; 12929 } 12930 for (const style of targetDocument.head.querySelectorAll( 12931 `style[$STYLE_HASH_ATTRIBUTE9}]` 12932 )) { 12933 if (style.getAttribute(STYLE_HASH_ATTRIBUTE9) === hash) { 12934 return true; 12935 } 12936 } 12937 return false; 12938 } 12939 function injectStyle9(targetDocument, hash, css) { 12940 if (!targetDocument.head) { 12941 return; 12942 } 12943 const runtime = getRuntime9(); 12944 let injectedStyles = runtime.injectedStyles.get(targetDocument); 12945 if (!injectedStyles) { 12946 injectedStyles = /* @__PURE__ */ new Set(); 12947 runtime.injectedStyles.set(targetDocument, injectedStyles); 12948 } 12949 if (injectedStyles.has(hash)) { 12950 return; 12951 } 12952 if (documentContainsStyleHash9(targetDocument, hash)) { 12953 injectedStyles.add(hash); 12954 return; 12955 } 12956 const style = targetDocument.createElement("style"); 12957 style.setAttribute(STYLE_HASH_ATTRIBUTE9, hash); 12958 style.appendChild(targetDocument.createTextNode(css)); 12959 targetDocument.head.appendChild(style); 12960 injectedStyles.add(hash); 12961 } 12962 function registerDocument9(targetDocument) { 12963 const runtime = getRuntime9(); 12964 runtime.documents.set( 12965 targetDocument, 12966 (runtime.documents.get(targetDocument) ?? 0) + 1 12967 ); 12968 for (const [hash, css] of runtime.styles) { 12969 injectStyle9(targetDocument, hash, css); 12970 } 12971 return () => { 12972 const count = runtime.documents.get(targetDocument); 12973 if (count === void 0) { 12974 return; 12975 } 12976 if (count <= 1) { 12977 runtime.documents.delete(targetDocument); 12978 return; 12979 } 12980 runtime.documents.set(targetDocument, count - 1); 12981 }; 12982 } 12983 function registerStyle9(hash, css) { 12984 const runtime = getRuntime9(); 12985 runtime.styles.set(hash, css); 12986 for (const targetDocument of runtime.documents.keys()) { 12987 injectStyle9(targetDocument, hash, css); 12988 } 12989 } 12990 if (typeof process === "undefined" || true) { 12991 registerStyle9("71ecfbcef4", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{.b83e088455118c35__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;&._7cbfa5d2e598834a__is-plain{font-size:var(--wpds-typography-font-size-md,13px);font-weight:var(--wpds-typography-font-weight-default,400);text-transform:none}}._507b5c7970fe2ffd__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)}}}'); 12992 } 12993 var field_default = { "label": "b83e088455118c35__label", "is-plain": "_7cbfa5d2e598834a__is-plain", "description": "_507b5c7970fe2ffd__description" }; 12994 var Label = (0, import_element17.forwardRef)( 12995 function UnforwardedLabel({ className, hideFromVision, variant, ...restProps }, ref) { 12996 const label = /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( 12997 index_parts_exports.Label, 12998 { 12999 ref, 13000 className: clsx_default( 13001 field_default.label, 13002 variant && field_default[`is-$variant}`], 13003 className 13004 ), 13005 ...restProps 13006 } 13007 ); 13008 if (hideFromVision) { 13009 return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(VisuallyHidden, { render: label }); 13010 } 13011 return label; 13012 } 13013 ); 13014 13015 // packages/ui/build-module/form/primitives/field/description.mjs 13016 var import_element18 = __toESM(require_element(), 1); 13017 var import_jsx_runtime37 = __toESM(require_jsx_runtime(), 1); 13018 var STYLE_HASH_ATTRIBUTE10 = "data-wp-hash"; 13019 function getRuntime10() { 13020 const globalScope = globalThis; 13021 if (globalScope.__wpStyleRuntime) { 13022 return globalScope.__wpStyleRuntime; 13023 } 13024 globalScope.__wpStyleRuntime = { 13025 documents: /* @__PURE__ */ new Map(), 13026 styles: /* @__PURE__ */ new Map(), 13027 injectedStyles: /* @__PURE__ */ new WeakMap() 13028 }; 13029 if (typeof document !== "undefined") { 13030 registerDocument10(document); 13031 } 13032 return globalScope.__wpStyleRuntime; 13033 } 13034 function documentContainsStyleHash10(targetDocument, hash) { 13035 if (!targetDocument.head) { 13036 return false; 13037 } 13038 for (const style of targetDocument.head.querySelectorAll( 13039 `style[$STYLE_HASH_ATTRIBUTE10}]` 13040 )) { 13041 if (style.getAttribute(STYLE_HASH_ATTRIBUTE10) === hash) { 13042 return true; 13043 } 13044 } 13045 return false; 13046 } 13047 function injectStyle10(targetDocument, hash, css) { 13048 if (!targetDocument.head) { 13049 return; 13050 } 13051 const runtime = getRuntime10(); 13052 let injectedStyles = runtime.injectedStyles.get(targetDocument); 13053 if (!injectedStyles) { 13054 injectedStyles = /* @__PURE__ */ new Set(); 13055 runtime.injectedStyles.set(targetDocument, injectedStyles); 13056 } 13057 if (injectedStyles.has(hash)) { 13058 return; 13059 } 13060 if (documentContainsStyleHash10(targetDocument, hash)) { 13061 injectedStyles.add(hash); 13062 return; 13063 } 13064 const style = targetDocument.createElement("style"); 13065 style.setAttribute(STYLE_HASH_ATTRIBUTE10, hash); 13066 style.appendChild(targetDocument.createTextNode(css)); 13067 targetDocument.head.appendChild(style); 13068 injectedStyles.add(hash); 13069 } 13070 function registerDocument10(targetDocument) { 13071 const runtime = getRuntime10(); 13072 runtime.documents.set( 13073 targetDocument, 13074 (runtime.documents.get(targetDocument) ?? 0) + 1 13075 ); 13076 for (const [hash, css] of runtime.styles) { 13077 injectStyle10(targetDocument, hash, css); 13078 } 13079 return () => { 13080 const count = runtime.documents.get(targetDocument); 13081 if (count === void 0) { 13082 return; 13083 } 13084 if (count <= 1) { 13085 runtime.documents.delete(targetDocument); 13086 return; 13087 } 13088 runtime.documents.set(targetDocument, count - 1); 13089 }; 13090 } 13091 function registerStyle10(hash, css) { 13092 const runtime = getRuntime10(); 13093 runtime.styles.set(hash, css); 13094 for (const targetDocument of runtime.documents.keys()) { 13095 injectStyle10(targetDocument, hash, css); 13096 } 13097 } 13098 if (typeof process === "undefined" || true) { 13099 registerStyle10("726f348f3f", "._78c10a0773e51a91__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}._5b33aa2d48624b4f__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._980b3b4776ac8f81__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._43e478b4279a076c__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._698099e25b0fb1a6__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6)._326aee4184d261fd__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}.e9576240835601ba__a,.e9576240835601ba__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}._3f05789653864a73__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._3c72ff72abe57859__li{margin:var(--_gcd-li-margin,0)}[role=treeitem] span._79d16267c15d9eb2__span[aria-hidden]{display:var(--_gcd-span-display,inline);font-family:var(--_gcd-span-font-family,inherit);font-size:var(--_gcd-span-font-size,inherit);line-height:var(--_gcd-span-line-height,1);pointer-events:var(--_gcd-span-pointer-events,auto);position:var(--_gcd-span-position,static)}"); 13100 } 13101 var global_css_defense_default3 = { "button": "_78c10a0773e51a91__button", "input": "_5b33aa2d48624b4f__input", "textarea": "_980b3b4776ac8f81__textarea", "div": "_43e478b4279a076c__div", "p": "_698099e25b0fb1a6__p", "heading": "_326aee4184d261fd__heading", "a": "e9576240835601ba__a", "ol": "_3f05789653864a73__ol", "li": "_3c72ff72abe57859__li", "span": "_79d16267c15d9eb2__span" }; 13102 if (typeof process === "undefined" || true) { 13103 registerStyle10("71ecfbcef4", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{.b83e088455118c35__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;&._7cbfa5d2e598834a__is-plain{font-size:var(--wpds-typography-font-size-md,13px);font-weight:var(--wpds-typography-font-weight-default,400);text-transform:none}}._507b5c7970fe2ffd__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)}}}'); 13104 } 13105 var field_default2 = { "label": "b83e088455118c35__label", "is-plain": "_7cbfa5d2e598834a__is-plain", "description": "_507b5c7970fe2ffd__description" }; 13106 var Description = (0, import_element18.forwardRef)(function UnforwardedDescription({ className, ...restProps }, ref) { 13107 return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)( 13108 index_parts_exports.Description, 13109 { 13110 ref, 13111 className: clsx_default( 13112 global_css_defense_default3.p, 13113 field_default2.description, 13114 className 13115 ), 13116 ...restProps 13117 } 13118 ); 13119 }); 13120 13121 // packages/ui/build-module/form/primitives/field/details.mjs 13122 var import_element19 = __toESM(require_element(), 1); 13123 var import_i18n2 = __toESM(require_i18n(), 1); 13124 var import_jsx_runtime38 = __toESM(require_jsx_runtime(), 1); 13125 var STYLE_HASH_ATTRIBUTE11 = "data-wp-hash"; 13126 function getRuntime11() { 13127 const globalScope = globalThis; 13128 if (globalScope.__wpStyleRuntime) { 13129 return globalScope.__wpStyleRuntime; 13130 } 13131 globalScope.__wpStyleRuntime = { 13132 documents: /* @__PURE__ */ new Map(), 13133 styles: /* @__PURE__ */ new Map(), 13134 injectedStyles: /* @__PURE__ */ new WeakMap() 13135 }; 13136 if (typeof document !== "undefined") { 13137 registerDocument11(document); 13138 } 13139 return globalScope.__wpStyleRuntime; 13140 } 13141 function documentContainsStyleHash11(targetDocument, hash) { 13142 if (!targetDocument.head) { 13143 return false; 13144 } 13145 for (const style of targetDocument.head.querySelectorAll( 13146 `style[$STYLE_HASH_ATTRIBUTE11}]` 13147 )) { 13148 if (style.getAttribute(STYLE_HASH_ATTRIBUTE11) === hash) { 13149 return true; 13150 } 13151 } 13152 return false; 13153 } 13154 function injectStyle11(targetDocument, hash, css) { 13155 if (!targetDocument.head) { 13156 return; 13157 } 13158 const runtime = getRuntime11(); 13159 let injectedStyles = runtime.injectedStyles.get(targetDocument); 13160 if (!injectedStyles) { 13161 injectedStyles = /* @__PURE__ */ new Set(); 13162 runtime.injectedStyles.set(targetDocument, injectedStyles); 13163 } 13164 if (injectedStyles.has(hash)) { 13165 return; 13166 } 13167 if (documentContainsStyleHash11(targetDocument, hash)) { 13168 injectedStyles.add(hash); 13169 return; 13170 } 13171 const style = targetDocument.createElement("style"); 13172 style.setAttribute(STYLE_HASH_ATTRIBUTE11, hash); 13173 style.appendChild(targetDocument.createTextNode(css)); 13174 targetDocument.head.appendChild(style); 13175 injectedStyles.add(hash); 13176 } 13177 function registerDocument11(targetDocument) { 13178 const runtime = getRuntime11(); 13179 runtime.documents.set( 13180 targetDocument, 13181 (runtime.documents.get(targetDocument) ?? 0) + 1 13182 ); 13183 for (const [hash, css] of runtime.styles) { 13184 injectStyle11(targetDocument, hash, css); 13185 } 13186 return () => { 13187 const count = runtime.documents.get(targetDocument); 13188 if (count === void 0) { 13189 return; 13190 } 13191 if (count <= 1) { 13192 runtime.documents.delete(targetDocument); 13193 return; 13194 } 13195 runtime.documents.set(targetDocument, count - 1); 13196 }; 13197 } 13198 function registerStyle11(hash, css) { 13199 const runtime = getRuntime11(); 13200 runtime.styles.set(hash, css); 13201 for (const targetDocument of runtime.documents.keys()) { 13202 injectStyle11(targetDocument, hash, css); 13203 } 13204 } 13205 if (typeof process === "undefined" || true) { 13206 registerStyle11("71ecfbcef4", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{.b83e088455118c35__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;&._7cbfa5d2e598834a__is-plain{font-size:var(--wpds-typography-font-size-md,13px);font-weight:var(--wpds-typography-font-weight-default,400);text-transform:none}}._507b5c7970fe2ffd__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)}}}'); 13207 } 13208 var field_default3 = { "label": "b83e088455118c35__label", "is-plain": "_7cbfa5d2e598834a__is-plain", "description": "_507b5c7970fe2ffd__description" }; 13209 var Details = (0, import_element19.forwardRef)( 13210 function UnforwardedDetails({ className, ...restProps }, ref) { 13211 return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_jsx_runtime38.Fragment, { children: [ 13212 /* @__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.") }), 13213 /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( 13214 "div", 13215 { 13216 ref, 13217 className: clsx_default(field_default3.description, className), 13218 ...restProps 13219 } 13220 ) 13221 ] }); 13222 } 13223 ); 13224 13225 // packages/ui/build-module/form/primitives/field/control.mjs 13226 var import_element20 = __toESM(require_element(), 1); 13227 var import_jsx_runtime39 = __toESM(require_jsx_runtime(), 1); 13228 var Control = (0, import_element20.forwardRef)( 13229 function UnforwardedControl(props, ref) { 13230 return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(index_parts_exports.Control, { ref, ...props }); 13231 } 13232 ); 13233 13234 // packages/ui/build-module/form/primitives/field/visual-label.mjs 13235 var import_element21 = __toESM(require_element(), 1); 13236 var STYLE_HASH_ATTRIBUTE12 = "data-wp-hash"; 13237 function getRuntime12() { 13238 const globalScope = globalThis; 13239 if (globalScope.__wpStyleRuntime) { 13240 return globalScope.__wpStyleRuntime; 13241 } 13242 globalScope.__wpStyleRuntime = { 13243 documents: /* @__PURE__ */ new Map(), 13244 styles: /* @__PURE__ */ new Map(), 13245 injectedStyles: /* @__PURE__ */ new WeakMap() 13246 }; 13247 if (typeof document !== "undefined") { 13248 registerDocument12(document); 13249 } 13250 return globalScope.__wpStyleRuntime; 13251 } 13252 function documentContainsStyleHash12(targetDocument, hash) { 13253 if (!targetDocument.head) { 13254 return false; 13255 } 13256 for (const style of targetDocument.head.querySelectorAll( 13257 `style[$STYLE_HASH_ATTRIBUTE12}]` 13258 )) { 13259 if (style.getAttribute(STYLE_HASH_ATTRIBUTE12) === hash) { 13260 return true; 13261 } 13262 } 13263 return false; 13264 } 13265 function injectStyle12(targetDocument, hash, css) { 13266 if (!targetDocument.head) { 13267 return; 13268 } 13269 const runtime = getRuntime12(); 13270 let injectedStyles = runtime.injectedStyles.get(targetDocument); 13271 if (!injectedStyles) { 13272 injectedStyles = /* @__PURE__ */ new Set(); 13273 runtime.injectedStyles.set(targetDocument, injectedStyles); 13274 } 13275 if (injectedStyles.has(hash)) { 13276 return; 13277 } 13278 if (documentContainsStyleHash12(targetDocument, hash)) { 13279 injectedStyles.add(hash); 13280 return; 13281 } 13282 const style = targetDocument.createElement("style"); 13283 style.setAttribute(STYLE_HASH_ATTRIBUTE12, hash); 13284 style.appendChild(targetDocument.createTextNode(css)); 13285 targetDocument.head.appendChild(style); 13286 injectedStyles.add(hash); 13287 } 13288 function registerDocument12(targetDocument) { 13289 const runtime = getRuntime12(); 13290 runtime.documents.set( 13291 targetDocument, 13292 (runtime.documents.get(targetDocument) ?? 0) + 1 13293 ); 13294 for (const [hash, css] of runtime.styles) { 13295 injectStyle12(targetDocument, hash, css); 13296 } 13297 return () => { 13298 const count = runtime.documents.get(targetDocument); 13299 if (count === void 0) { 13300 return; 13301 } 13302 if (count <= 1) { 13303 runtime.documents.delete(targetDocument); 13304 return; 13305 } 13306 runtime.documents.set(targetDocument, count - 1); 13307 }; 13308 } 13309 function registerStyle12(hash, css) { 13310 const runtime = getRuntime12(); 13311 runtime.styles.set(hash, css); 13312 for (const targetDocument of runtime.documents.keys()) { 13313 injectStyle12(targetDocument, hash, css); 13314 } 13315 } 13316 if (typeof process === "undefined" || true) { 13317 registerStyle12("71ecfbcef4", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{.b83e088455118c35__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;&._7cbfa5d2e598834a__is-plain{font-size:var(--wpds-typography-font-size-md,13px);font-weight:var(--wpds-typography-font-weight-default,400);text-transform:none}}._507b5c7970fe2ffd__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)}}}'); 13318 } 13319 var field_default4 = { "label": "b83e088455118c35__label", "is-plain": "_7cbfa5d2e598834a__is-plain", "description": "_507b5c7970fe2ffd__description" }; 13320 var VisualLabel = (0, import_element21.forwardRef)( 13321 function UnforwardedVisualLabel({ className, render, variant, ...restProps }, ref) { 13322 return useRender({ 13323 defaultTagName: "span", 13324 render, 13325 ref, 13326 props: mergeProps(restProps, { 13327 className: clsx_default( 13328 field_default4.label, 13329 variant && field_default4[`is-$variant}`], 13330 className 13331 ) 13332 }) 13333 }); 13334 } 13335 ); 13336 VisualLabel.displayName = "Field.VisualLabel"; 13337 13338 // packages/ui/build-module/form/primitives/select/index.mjs 13339 var select_exports = {}; 13340 __export(select_exports, { 13341 Group: () => Group, 13342 GroupLabel: () => GroupLabel, 13343 Item: () => Item2, 13344 ItemDescription: () => ItemDescription, 13345 ItemLabel: () => ItemLabel, 13346 Popup: () => Popup, 13347 Portal: () => Portal, 13348 Positioner: () => Positioner, 13349 Root: () => Root2, 13350 Separator: () => Separator, 13351 Trigger: () => Trigger 13352 }); 13353 13354 // packages/ui/build-module/form/primitives/select/group.mjs 13355 var import_element22 = __toESM(require_element(), 1); 13356 var import_jsx_runtime40 = __toESM(require_jsx_runtime(), 1); 13357 var STYLE_HASH_ATTRIBUTE13 = "data-wp-hash"; 13358 function getRuntime13() { 13359 const globalScope = globalThis; 13360 if (globalScope.__wpStyleRuntime) { 13361 return globalScope.__wpStyleRuntime; 13362 } 13363 globalScope.__wpStyleRuntime = { 13364 documents: /* @__PURE__ */ new Map(), 13365 styles: /* @__PURE__ */ new Map(), 13366 injectedStyles: /* @__PURE__ */ new WeakMap() 13367 }; 13368 if (typeof document !== "undefined") { 13369 registerDocument13(document); 13370 } 13371 return globalScope.__wpStyleRuntime; 13372 } 13373 function documentContainsStyleHash13(targetDocument, hash) { 13374 if (!targetDocument.head) { 13375 return false; 13376 } 13377 for (const style of targetDocument.head.querySelectorAll( 13378 `style[$STYLE_HASH_ATTRIBUTE13}]` 13379 )) { 13380 if (style.getAttribute(STYLE_HASH_ATTRIBUTE13) === hash) { 13381 return true; 13382 } 13383 } 13384 return false; 13385 } 13386 function injectStyle13(targetDocument, hash, css) { 13387 if (!targetDocument.head) { 13388 return; 13389 } 13390 const runtime = getRuntime13(); 13391 let injectedStyles = runtime.injectedStyles.get(targetDocument); 13392 if (!injectedStyles) { 13393 injectedStyles = /* @__PURE__ */ new Set(); 13394 runtime.injectedStyles.set(targetDocument, injectedStyles); 13395 } 13396 if (injectedStyles.has(hash)) { 13397 return; 13398 } 13399 if (documentContainsStyleHash13(targetDocument, hash)) { 13400 injectedStyles.add(hash); 13401 return; 13402 } 13403 const style = targetDocument.createElement("style"); 13404 style.setAttribute(STYLE_HASH_ATTRIBUTE13, hash); 13405 style.appendChild(targetDocument.createTextNode(css)); 13406 targetDocument.head.appendChild(style); 13407 injectedStyles.add(hash); 13408 } 13409 function registerDocument13(targetDocument) { 13410 const runtime = getRuntime13(); 13411 runtime.documents.set( 13412 targetDocument, 13413 (runtime.documents.get(targetDocument) ?? 0) + 1 13414 ); 13415 for (const [hash, css] of runtime.styles) { 13416 injectStyle13(targetDocument, hash, css); 13417 } 13418 return () => { 13419 const count = runtime.documents.get(targetDocument); 13420 if (count === void 0) { 13421 return; 13422 } 13423 if (count <= 1) { 13424 runtime.documents.delete(targetDocument); 13425 return; 13426 } 13427 runtime.documents.set(targetDocument, count - 1); 13428 }; 13429 } 13430 function registerStyle13(hash, css) { 13431 const runtime = getRuntime13(); 13432 runtime.styles.set(hash, css); 13433 for (const targetDocument of runtime.documents.keys()) { 13434 injectStyle13(targetDocument, hash, css); 13435 } 13436 } 13437 if (typeof process === "undefined" || true) { 13438 registerStyle13("7ad1c0f17c", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._069972d5e326bada__dropdown-motion,._66136bf671f00b1f__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}}._069972d5e326bada__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{.db3b5361087077bf__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);&._55f74d412c3e00e8__is-width-anchor{width:var(--anchor-width)}&._90e0b62205351f85__is-width-content{width:auto}&._30ba87899c0b11ce__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&._402d4db0488da324__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._34ead52b2d60b21d__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._3fec17b6dc9029c3__is-width-available{width:var(--available-width)}}._89cf8b0bb3319c7e__is-align-item-with-trigger[data-side=none] .db3b5361087077bf__popup{max-height:none}._66636b371582ead4__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(.b6aeb640498fae5d__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))}}._325f1b7764907c29__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._597ea43c6bec63d8__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)}}._5865110cf5678449__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._597ea43c6bec63d8__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}._09c9c50e605390ff__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._6361da5eb54e618d__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))}._88cf016d20b4f2ef__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}}.c466e5465a76d4f6__item-layout{--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);&:has(>.b6aeb640498fae5d__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))}}.b9c803da5aae76d5__item{user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&._8931f3eb02e2e0ad__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]){._494b2a9f2e72b67f__item-indicator-icon{opacity:0}}&[data-highlighted]:not([data-disabled]){background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&[data-disabled]{background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);&:focus-visible{--_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:0}@media (forced-colors:active){color:GrayText}}}.b6aeb640498fae5d__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);justify-content:center;pointer-events:none;width:var(--wpds-dimension-size-2xs,16px)}._494b2a9f2e72b67f__item-indicator-icon{translate:0 1px}.b40c7d58965ce4a5__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._3c629930ceb193c7__item-text{display:flex;flex-direction:column;min-width:0}._5c4aad98ed7a8382__item-label{--_gcd-heading-color:currentColor;min-width:0}.deb952050541c0e4__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}.b9c803da5aae76d5__item[data-disabled] .deb952050541c0e4__item-description,.b9c803da5aae76d5__item[data-highlighted]:not([data-disabled]) .deb952050541c0e4__item-description{--_gcd-heading-color:currentColor;color:inherit}._5f8e4a2a04ecdade__loading-indicator{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-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}.c1bf7c14e9600f0a__status{grid-area:status;&:has(._5f8e4a2a04ecdade__loading-indicator){padding-block:var(--wp-ui-popup-padding)}}._0850de87108c9441__empty:not(:empty){grid-area:main}._0850de87108c9441__empty:not(:empty),.c1bf7c14e9600f0a__status:not(:empty):not(:has([data-visually-hidden],._5f8e4a2a04ecdade__loading-indicator)){--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)}}@layer compositions{.eaec70f7db4a63ef__loading-spinner{height:var(--wpds-dimension-size-3xs,12px);width:var(--wpds-dimension-size-3xs,12px)}}}'); 13439 } 13440 var item_popup_default2 = { "popup": "db3b5361087077bf__popup _069972d5e326bada__dropdown-motion", "is-width-anchor": "_55f74d412c3e00e8__is-width-anchor", "is-width-content": "_90e0b62205351f85__is-width-content", "is-width-sm": "_30ba87899c0b11ce__is-width-sm", "is-width-md": "_402d4db0488da324__is-width-md", "is-width-lg": "_34ead52b2d60b21d__is-width-lg", "is-width-available": "_3fec17b6dc9029c3__is-width-available", "is-align-item-with-trigger": "_89cf8b0bb3319c7e__is-align-item-with-trigger", "list-chrome": "_66636b371582ead4__list-chrome", "item-icon": "b6aeb640498fae5d__item-icon", "list": "_325f1b7764907c29__list _66636b371582ead4__list-chrome", "list-scrollable-container": "_597ea43c6bec63d8__list-scrollable-container", "list-footer": "_5865110cf5678449__list-footer", "group": "_09c9c50e605390ff__group", "group-label": "_6361da5eb54e618d__group-label", "separator": "_88cf016d20b4f2ef__separator", "item-layout": "c466e5465a76d4f6__item-layout", "item": "b9c803da5aae76d5__item c466e5465a76d4f6__item-layout", "is-size-small": "_8931f3eb02e2e0ad__is-size-small", "item-indicator-icon": "_494b2a9f2e72b67f__item-indicator-icon", "item-content": "b40c7d58965ce4a5__item-content", "item-text": "_3c629930ceb193c7__item-text", "item-label": "_5c4aad98ed7a8382__item-label", "item-description": "deb952050541c0e4__item-description", "loading-indicator": "_5f8e4a2a04ecdade__loading-indicator c466e5465a76d4f6__item-layout", "status": "c1bf7c14e9600f0a__status", "empty": "_0850de87108c9441__empty", "loading-spinner": "eaec70f7db4a63ef__loading-spinner" }; 13441 var Group = (0, import_element22.forwardRef)( 13442 function UnforwardedGroup({ className, children, ...restProps }, ref) { 13443 return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)( 13444 index_parts_exports2.Group, 13445 { 13446 className: clsx_default(item_popup_default2.group, className), 13447 ref, 13448 ...restProps, 13449 children 13450 } 13451 ); 13452 } 13453 ); 13454 13455 // packages/ui/build-module/form/primitives/select/group-label.mjs 13456 var import_element23 = __toESM(require_element(), 1); 13457 var import_jsx_runtime41 = __toESM(require_jsx_runtime(), 1); 13458 var STYLE_HASH_ATTRIBUTE14 = "data-wp-hash"; 13459 function getRuntime14() { 13460 const globalScope = globalThis; 13461 if (globalScope.__wpStyleRuntime) { 13462 return globalScope.__wpStyleRuntime; 13463 } 13464 globalScope.__wpStyleRuntime = { 13465 documents: /* @__PURE__ */ new Map(), 13466 styles: /* @__PURE__ */ new Map(), 13467 injectedStyles: /* @__PURE__ */ new WeakMap() 13468 }; 13469 if (typeof document !== "undefined") { 13470 registerDocument14(document); 13471 } 13472 return globalScope.__wpStyleRuntime; 13473 } 13474 function documentContainsStyleHash14(targetDocument, hash) { 13475 if (!targetDocument.head) { 13476 return false; 13477 } 13478 for (const style of targetDocument.head.querySelectorAll( 13479 `style[$STYLE_HASH_ATTRIBUTE14}]` 13480 )) { 13481 if (style.getAttribute(STYLE_HASH_ATTRIBUTE14) === hash) { 13482 return true; 13483 } 13484 } 13485 return false; 13486 } 13487 function injectStyle14(targetDocument, hash, css) { 13488 if (!targetDocument.head) { 13489 return; 13490 } 13491 const runtime = getRuntime14(); 13492 let injectedStyles = runtime.injectedStyles.get(targetDocument); 13493 if (!injectedStyles) { 13494 injectedStyles = /* @__PURE__ */ new Set(); 13495 runtime.injectedStyles.set(targetDocument, injectedStyles); 13496 } 13497 if (injectedStyles.has(hash)) { 13498 return; 13499 } 13500 if (documentContainsStyleHash14(targetDocument, hash)) { 13501 injectedStyles.add(hash); 13502 return; 13503 } 13504 const style = targetDocument.createElement("style"); 13505 style.setAttribute(STYLE_HASH_ATTRIBUTE14, hash); 13506 style.appendChild(targetDocument.createTextNode(css)); 13507 targetDocument.head.appendChild(style); 13508 injectedStyles.add(hash); 13509 } 13510 function registerDocument14(targetDocument) { 13511 const runtime = getRuntime14(); 13512 runtime.documents.set( 13513 targetDocument, 13514 (runtime.documents.get(targetDocument) ?? 0) + 1 13515 ); 13516 for (const [hash, css] of runtime.styles) { 13517 injectStyle14(targetDocument, hash, css); 13518 } 13519 return () => { 13520 const count = runtime.documents.get(targetDocument); 13521 if (count === void 0) { 13522 return; 13523 } 13524 if (count <= 1) { 13525 runtime.documents.delete(targetDocument); 13526 return; 13527 } 13528 runtime.documents.set(targetDocument, count - 1); 13529 }; 13530 } 13531 function registerStyle14(hash, css) { 13532 const runtime = getRuntime14(); 13533 runtime.styles.set(hash, css); 13534 for (const targetDocument of runtime.documents.keys()) { 13535 injectStyle14(targetDocument, hash, css); 13536 } 13537 } 13538 if (typeof process === "undefined" || true) { 13539 registerStyle14("7ad1c0f17c", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._069972d5e326bada__dropdown-motion,._66136bf671f00b1f__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}}._069972d5e326bada__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{.db3b5361087077bf__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);&._55f74d412c3e00e8__is-width-anchor{width:var(--anchor-width)}&._90e0b62205351f85__is-width-content{width:auto}&._30ba87899c0b11ce__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&._402d4db0488da324__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._34ead52b2d60b21d__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._3fec17b6dc9029c3__is-width-available{width:var(--available-width)}}._89cf8b0bb3319c7e__is-align-item-with-trigger[data-side=none] .db3b5361087077bf__popup{max-height:none}._66636b371582ead4__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(.b6aeb640498fae5d__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))}}._325f1b7764907c29__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._597ea43c6bec63d8__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)}}._5865110cf5678449__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._597ea43c6bec63d8__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}._09c9c50e605390ff__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._6361da5eb54e618d__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))}._88cf016d20b4f2ef__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}}.c466e5465a76d4f6__item-layout{--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);&:has(>.b6aeb640498fae5d__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))}}.b9c803da5aae76d5__item{user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&._8931f3eb02e2e0ad__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]){._494b2a9f2e72b67f__item-indicator-icon{opacity:0}}&[data-highlighted]:not([data-disabled]){background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&[data-disabled]{background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);&:focus-visible{--_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:0}@media (forced-colors:active){color:GrayText}}}.b6aeb640498fae5d__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);justify-content:center;pointer-events:none;width:var(--wpds-dimension-size-2xs,16px)}._494b2a9f2e72b67f__item-indicator-icon{translate:0 1px}.b40c7d58965ce4a5__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._3c629930ceb193c7__item-text{display:flex;flex-direction:column;min-width:0}._5c4aad98ed7a8382__item-label{--_gcd-heading-color:currentColor;min-width:0}.deb952050541c0e4__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}.b9c803da5aae76d5__item[data-disabled] .deb952050541c0e4__item-description,.b9c803da5aae76d5__item[data-highlighted]:not([data-disabled]) .deb952050541c0e4__item-description{--_gcd-heading-color:currentColor;color:inherit}._5f8e4a2a04ecdade__loading-indicator{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-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}.c1bf7c14e9600f0a__status{grid-area:status;&:has(._5f8e4a2a04ecdade__loading-indicator){padding-block:var(--wp-ui-popup-padding)}}._0850de87108c9441__empty:not(:empty){grid-area:main}._0850de87108c9441__empty:not(:empty),.c1bf7c14e9600f0a__status:not(:empty):not(:has([data-visually-hidden],._5f8e4a2a04ecdade__loading-indicator)){--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)}}@layer compositions{.eaec70f7db4a63ef__loading-spinner{height:var(--wpds-dimension-size-3xs,12px);width:var(--wpds-dimension-size-3xs,12px)}}}'); 13540 } 13541 var item_popup_default3 = { "popup": "db3b5361087077bf__popup _069972d5e326bada__dropdown-motion", "is-width-anchor": "_55f74d412c3e00e8__is-width-anchor", "is-width-content": "_90e0b62205351f85__is-width-content", "is-width-sm": "_30ba87899c0b11ce__is-width-sm", "is-width-md": "_402d4db0488da324__is-width-md", "is-width-lg": "_34ead52b2d60b21d__is-width-lg", "is-width-available": "_3fec17b6dc9029c3__is-width-available", "is-align-item-with-trigger": "_89cf8b0bb3319c7e__is-align-item-with-trigger", "list-chrome": "_66636b371582ead4__list-chrome", "item-icon": "b6aeb640498fae5d__item-icon", "list": "_325f1b7764907c29__list _66636b371582ead4__list-chrome", "list-scrollable-container": "_597ea43c6bec63d8__list-scrollable-container", "list-footer": "_5865110cf5678449__list-footer", "group": "_09c9c50e605390ff__group", "group-label": "_6361da5eb54e618d__group-label", "separator": "_88cf016d20b4f2ef__separator", "item-layout": "c466e5465a76d4f6__item-layout", "item": "b9c803da5aae76d5__item c466e5465a76d4f6__item-layout", "is-size-small": "_8931f3eb02e2e0ad__is-size-small", "item-indicator-icon": "_494b2a9f2e72b67f__item-indicator-icon", "item-content": "b40c7d58965ce4a5__item-content", "item-text": "_3c629930ceb193c7__item-text", "item-label": "_5c4aad98ed7a8382__item-label", "item-description": "deb952050541c0e4__item-description", "loading-indicator": "_5f8e4a2a04ecdade__loading-indicator c466e5465a76d4f6__item-layout", "status": "c1bf7c14e9600f0a__status", "empty": "_0850de87108c9441__empty", "loading-spinner": "eaec70f7db4a63ef__loading-spinner" }; 13542 var GroupLabel = (0, import_element23.forwardRef)( 13543 function UnforwardedGroupLabel({ className, children, ...restProps }, ref) { 13544 return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)( 13545 Text, 13546 { 13547 variant: "heading-sm", 13548 className: clsx_default( 13549 item_popup_default3["group-label"], 13550 className 13551 ), 13552 render: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(index_parts_exports2.GroupLabel, { ref, ...restProps }), 13553 children 13554 } 13555 ); 13556 } 13557 ); 13558 13559 // packages/ui/build-module/form/primitives/select/item.mjs 13560 var import_element26 = __toESM(require_element(), 1); 13561 13562 // packages/ui/build-module/form/primitives/select/item-description.mjs 13563 var import_element24 = __toESM(require_element(), 1); 13564 var import_jsx_runtime42 = __toESM(require_jsx_runtime(), 1); 13565 var STYLE_HASH_ATTRIBUTE15 = "data-wp-hash"; 13566 function getRuntime15() { 13567 const globalScope = globalThis; 13568 if (globalScope.__wpStyleRuntime) { 13569 return globalScope.__wpStyleRuntime; 13570 } 13571 globalScope.__wpStyleRuntime = { 13572 documents: /* @__PURE__ */ new Map(), 13573 styles: /* @__PURE__ */ new Map(), 13574 injectedStyles: /* @__PURE__ */ new WeakMap() 13575 }; 13576 if (typeof document !== "undefined") { 13577 registerDocument15(document); 13578 } 13579 return globalScope.__wpStyleRuntime; 13580 } 13581 function documentContainsStyleHash15(targetDocument, hash) { 13582 if (!targetDocument.head) { 13583 return false; 13584 } 13585 for (const style of targetDocument.head.querySelectorAll( 13586 `style[$STYLE_HASH_ATTRIBUTE15}]` 13587 )) { 13588 if (style.getAttribute(STYLE_HASH_ATTRIBUTE15) === hash) { 13589 return true; 13590 } 13591 } 13592 return false; 13593 } 13594 function injectStyle15(targetDocument, hash, css) { 13595 if (!targetDocument.head) { 13596 return; 13597 } 13598 const runtime = getRuntime15(); 13599 let injectedStyles = runtime.injectedStyles.get(targetDocument); 13600 if (!injectedStyles) { 13601 injectedStyles = /* @__PURE__ */ new Set(); 13602 runtime.injectedStyles.set(targetDocument, injectedStyles); 13603 } 13604 if (injectedStyles.has(hash)) { 13605 return; 13606 } 13607 if (documentContainsStyleHash15(targetDocument, hash)) { 13608 injectedStyles.add(hash); 13609 return; 13610 } 13611 const style = targetDocument.createElement("style"); 13612 style.setAttribute(STYLE_HASH_ATTRIBUTE15, hash); 13613 style.appendChild(targetDocument.createTextNode(css)); 13614 targetDocument.head.appendChild(style); 13615 injectedStyles.add(hash); 13616 } 13617 function registerDocument15(targetDocument) { 13618 const runtime = getRuntime15(); 13619 runtime.documents.set( 13620 targetDocument, 13621 (runtime.documents.get(targetDocument) ?? 0) + 1 13622 ); 13623 for (const [hash, css] of runtime.styles) { 13624 injectStyle15(targetDocument, hash, css); 13625 } 13626 return () => { 13627 const count = runtime.documents.get(targetDocument); 13628 if (count === void 0) { 13629 return; 13630 } 13631 if (count <= 1) { 13632 runtime.documents.delete(targetDocument); 13633 return; 13634 } 13635 runtime.documents.set(targetDocument, count - 1); 13636 }; 13637 } 13638 function registerStyle15(hash, css) { 13639 const runtime = getRuntime15(); 13640 runtime.styles.set(hash, css); 13641 for (const targetDocument of runtime.documents.keys()) { 13642 injectStyle15(targetDocument, hash, css); 13643 } 13644 } 13645 if (typeof process === "undefined" || true) { 13646 registerStyle15("7ad1c0f17c", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._069972d5e326bada__dropdown-motion,._66136bf671f00b1f__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}}._069972d5e326bada__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{.db3b5361087077bf__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);&._55f74d412c3e00e8__is-width-anchor{width:var(--anchor-width)}&._90e0b62205351f85__is-width-content{width:auto}&._30ba87899c0b11ce__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&._402d4db0488da324__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._34ead52b2d60b21d__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._3fec17b6dc9029c3__is-width-available{width:var(--available-width)}}._89cf8b0bb3319c7e__is-align-item-with-trigger[data-side=none] .db3b5361087077bf__popup{max-height:none}._66636b371582ead4__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(.b6aeb640498fae5d__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))}}._325f1b7764907c29__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._597ea43c6bec63d8__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)}}._5865110cf5678449__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._597ea43c6bec63d8__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}._09c9c50e605390ff__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._6361da5eb54e618d__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))}._88cf016d20b4f2ef__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}}.c466e5465a76d4f6__item-layout{--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);&:has(>.b6aeb640498fae5d__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))}}.b9c803da5aae76d5__item{user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&._8931f3eb02e2e0ad__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]){._494b2a9f2e72b67f__item-indicator-icon{opacity:0}}&[data-highlighted]:not([data-disabled]){background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&[data-disabled]{background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);&:focus-visible{--_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:0}@media (forced-colors:active){color:GrayText}}}.b6aeb640498fae5d__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);justify-content:center;pointer-events:none;width:var(--wpds-dimension-size-2xs,16px)}._494b2a9f2e72b67f__item-indicator-icon{translate:0 1px}.b40c7d58965ce4a5__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._3c629930ceb193c7__item-text{display:flex;flex-direction:column;min-width:0}._5c4aad98ed7a8382__item-label{--_gcd-heading-color:currentColor;min-width:0}.deb952050541c0e4__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}.b9c803da5aae76d5__item[data-disabled] .deb952050541c0e4__item-description,.b9c803da5aae76d5__item[data-highlighted]:not([data-disabled]) .deb952050541c0e4__item-description{--_gcd-heading-color:currentColor;color:inherit}._5f8e4a2a04ecdade__loading-indicator{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-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}.c1bf7c14e9600f0a__status{grid-area:status;&:has(._5f8e4a2a04ecdade__loading-indicator){padding-block:var(--wp-ui-popup-padding)}}._0850de87108c9441__empty:not(:empty){grid-area:main}._0850de87108c9441__empty:not(:empty),.c1bf7c14e9600f0a__status:not(:empty):not(:has([data-visually-hidden],._5f8e4a2a04ecdade__loading-indicator)){--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)}}@layer compositions{.eaec70f7db4a63ef__loading-spinner{height:var(--wpds-dimension-size-3xs,12px);width:var(--wpds-dimension-size-3xs,12px)}}}'); 13647 } 13648 var item_popup_default4 = { "popup": "db3b5361087077bf__popup _069972d5e326bada__dropdown-motion", "is-width-anchor": "_55f74d412c3e00e8__is-width-anchor", "is-width-content": "_90e0b62205351f85__is-width-content", "is-width-sm": "_30ba87899c0b11ce__is-width-sm", "is-width-md": "_402d4db0488da324__is-width-md", "is-width-lg": "_34ead52b2d60b21d__is-width-lg", "is-width-available": "_3fec17b6dc9029c3__is-width-available", "is-align-item-with-trigger": "_89cf8b0bb3319c7e__is-align-item-with-trigger", "list-chrome": "_66636b371582ead4__list-chrome", "item-icon": "b6aeb640498fae5d__item-icon", "list": "_325f1b7764907c29__list _66636b371582ead4__list-chrome", "list-scrollable-container": "_597ea43c6bec63d8__list-scrollable-container", "list-footer": "_5865110cf5678449__list-footer", "group": "_09c9c50e605390ff__group", "group-label": "_6361da5eb54e618d__group-label", "separator": "_88cf016d20b4f2ef__separator", "item-layout": "c466e5465a76d4f6__item-layout", "item": "b9c803da5aae76d5__item c466e5465a76d4f6__item-layout", "is-size-small": "_8931f3eb02e2e0ad__is-size-small", "item-indicator-icon": "_494b2a9f2e72b67f__item-indicator-icon", "item-content": "b40c7d58965ce4a5__item-content", "item-text": "_3c629930ceb193c7__item-text", "item-label": "_5c4aad98ed7a8382__item-label", "item-description": "deb952050541c0e4__item-description", "loading-indicator": "_5f8e4a2a04ecdade__loading-indicator c466e5465a76d4f6__item-layout", "status": "c1bf7c14e9600f0a__status", "empty": "_0850de87108c9441__empty", "loading-spinner": "eaec70f7db4a63ef__loading-spinner" }; 13649 var ITEM_DESCRIPTION_DIRECT_CHILD = /* @__PURE__ */ Symbol(); 13650 var ItemDescription = (0, import_element24.forwardRef)(function UnforwardedItemDescription(props, ref) { 13651 const { className, validationToken, ...restProps } = props; 13652 if (validationToken !== ITEM_DESCRIPTION_DIRECT_CHILD) { 13653 throw new Error( 13654 "Select.ItemDescription: Missing direct select item parent. Render <Select.ItemDescription> as a direct child of <Select.Item>." 13655 ); 13656 } 13657 return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( 13658 Text, 13659 { 13660 ref, 13661 variant: "body-sm", 13662 className: clsx_default( 13663 item_popup_default4["item-description"], 13664 className 13665 ), 13666 ...restProps 13667 } 13668 ); 13669 }); 13670 13671 // packages/ui/build-module/form/primitives/select/item-label.mjs 13672 var import_element25 = __toESM(require_element(), 1); 13673 var import_jsx_runtime43 = __toESM(require_jsx_runtime(), 1); 13674 var STYLE_HASH_ATTRIBUTE16 = "data-wp-hash"; 13675 function getRuntime16() { 13676 const globalScope = globalThis; 13677 if (globalScope.__wpStyleRuntime) { 13678 return globalScope.__wpStyleRuntime; 13679 } 13680 globalScope.__wpStyleRuntime = { 13681 documents: /* @__PURE__ */ new Map(), 13682 styles: /* @__PURE__ */ new Map(), 13683 injectedStyles: /* @__PURE__ */ new WeakMap() 13684 }; 13685 if (typeof document !== "undefined") { 13686 registerDocument16(document); 13687 } 13688 return globalScope.__wpStyleRuntime; 13689 } 13690 function documentContainsStyleHash16(targetDocument, hash) { 13691 if (!targetDocument.head) { 13692 return false; 13693 } 13694 for (const style of targetDocument.head.querySelectorAll( 13695 `style[$STYLE_HASH_ATTRIBUTE16}]` 13696 )) { 13697 if (style.getAttribute(STYLE_HASH_ATTRIBUTE16) === hash) { 13698 return true; 13699 } 13700 } 13701 return false; 13702 } 13703 function injectStyle16(targetDocument, hash, css) { 13704 if (!targetDocument.head) { 13705 return; 13706 } 13707 const runtime = getRuntime16(); 13708 let injectedStyles = runtime.injectedStyles.get(targetDocument); 13709 if (!injectedStyles) { 13710 injectedStyles = /* @__PURE__ */ new Set(); 13711 runtime.injectedStyles.set(targetDocument, injectedStyles); 13712 } 13713 if (injectedStyles.has(hash)) { 13714 return; 13715 } 13716 if (documentContainsStyleHash16(targetDocument, hash)) { 13717 injectedStyles.add(hash); 13718 return; 13719 } 13720 const style = targetDocument.createElement("style"); 13721 style.setAttribute(STYLE_HASH_ATTRIBUTE16, hash); 13722 style.appendChild(targetDocument.createTextNode(css)); 13723 targetDocument.head.appendChild(style); 13724 injectedStyles.add(hash); 13725 } 13726 function registerDocument16(targetDocument) { 13727 const runtime = getRuntime16(); 13728 runtime.documents.set( 13729 targetDocument, 13730 (runtime.documents.get(targetDocument) ?? 0) + 1 13731 ); 13732 for (const [hash, css] of runtime.styles) { 13733 injectStyle16(targetDocument, hash, css); 13734 } 13735 return () => { 13736 const count = runtime.documents.get(targetDocument); 13737 if (count === void 0) { 13738 return; 13739 } 13740 if (count <= 1) { 13741 runtime.documents.delete(targetDocument); 13742 return; 13743 } 13744 runtime.documents.set(targetDocument, count - 1); 13745 }; 13746 } 13747 function registerStyle16(hash, css) { 13748 const runtime = getRuntime16(); 13749 runtime.styles.set(hash, css); 13750 for (const targetDocument of runtime.documents.keys()) { 13751 injectStyle16(targetDocument, hash, css); 13752 } 13753 } 13754 if (typeof process === "undefined" || true) { 13755 registerStyle16("7ad1c0f17c", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._069972d5e326bada__dropdown-motion,._66136bf671f00b1f__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}}._069972d5e326bada__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{.db3b5361087077bf__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);&._55f74d412c3e00e8__is-width-anchor{width:var(--anchor-width)}&._90e0b62205351f85__is-width-content{width:auto}&._30ba87899c0b11ce__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&._402d4db0488da324__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._34ead52b2d60b21d__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._3fec17b6dc9029c3__is-width-available{width:var(--available-width)}}._89cf8b0bb3319c7e__is-align-item-with-trigger[data-side=none] .db3b5361087077bf__popup{max-height:none}._66636b371582ead4__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(.b6aeb640498fae5d__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))}}._325f1b7764907c29__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._597ea43c6bec63d8__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)}}._5865110cf5678449__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._597ea43c6bec63d8__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}._09c9c50e605390ff__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._6361da5eb54e618d__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))}._88cf016d20b4f2ef__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}}.c466e5465a76d4f6__item-layout{--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);&:has(>.b6aeb640498fae5d__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))}}.b9c803da5aae76d5__item{user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&._8931f3eb02e2e0ad__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]){._494b2a9f2e72b67f__item-indicator-icon{opacity:0}}&[data-highlighted]:not([data-disabled]){background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&[data-disabled]{background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);&:focus-visible{--_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:0}@media (forced-colors:active){color:GrayText}}}.b6aeb640498fae5d__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);justify-content:center;pointer-events:none;width:var(--wpds-dimension-size-2xs,16px)}._494b2a9f2e72b67f__item-indicator-icon{translate:0 1px}.b40c7d58965ce4a5__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._3c629930ceb193c7__item-text{display:flex;flex-direction:column;min-width:0}._5c4aad98ed7a8382__item-label{--_gcd-heading-color:currentColor;min-width:0}.deb952050541c0e4__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}.b9c803da5aae76d5__item[data-disabled] .deb952050541c0e4__item-description,.b9c803da5aae76d5__item[data-highlighted]:not([data-disabled]) .deb952050541c0e4__item-description{--_gcd-heading-color:currentColor;color:inherit}._5f8e4a2a04ecdade__loading-indicator{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-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}.c1bf7c14e9600f0a__status{grid-area:status;&:has(._5f8e4a2a04ecdade__loading-indicator){padding-block:var(--wp-ui-popup-padding)}}._0850de87108c9441__empty:not(:empty){grid-area:main}._0850de87108c9441__empty:not(:empty),.c1bf7c14e9600f0a__status:not(:empty):not(:has([data-visually-hidden],._5f8e4a2a04ecdade__loading-indicator)){--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)}}@layer compositions{.eaec70f7db4a63ef__loading-spinner{height:var(--wpds-dimension-size-3xs,12px);width:var(--wpds-dimension-size-3xs,12px)}}}'); 13756 } 13757 var item_popup_default5 = { "popup": "db3b5361087077bf__popup _069972d5e326bada__dropdown-motion", "is-width-anchor": "_55f74d412c3e00e8__is-width-anchor", "is-width-content": "_90e0b62205351f85__is-width-content", "is-width-sm": "_30ba87899c0b11ce__is-width-sm", "is-width-md": "_402d4db0488da324__is-width-md", "is-width-lg": "_34ead52b2d60b21d__is-width-lg", "is-width-available": "_3fec17b6dc9029c3__is-width-available", "is-align-item-with-trigger": "_89cf8b0bb3319c7e__is-align-item-with-trigger", "list-chrome": "_66636b371582ead4__list-chrome", "item-icon": "b6aeb640498fae5d__item-icon", "list": "_325f1b7764907c29__list _66636b371582ead4__list-chrome", "list-scrollable-container": "_597ea43c6bec63d8__list-scrollable-container", "list-footer": "_5865110cf5678449__list-footer", "group": "_09c9c50e605390ff__group", "group-label": "_6361da5eb54e618d__group-label", "separator": "_88cf016d20b4f2ef__separator", "item-layout": "c466e5465a76d4f6__item-layout", "item": "b9c803da5aae76d5__item c466e5465a76d4f6__item-layout", "is-size-small": "_8931f3eb02e2e0ad__is-size-small", "item-indicator-icon": "_494b2a9f2e72b67f__item-indicator-icon", "item-content": "b40c7d58965ce4a5__item-content", "item-text": "_3c629930ceb193c7__item-text", "item-label": "_5c4aad98ed7a8382__item-label", "item-description": "deb952050541c0e4__item-description", "loading-indicator": "_5f8e4a2a04ecdade__loading-indicator c466e5465a76d4f6__item-layout", "status": "c1bf7c14e9600f0a__status", "empty": "_0850de87108c9441__empty", "loading-spinner": "eaec70f7db4a63ef__loading-spinner" }; 13758 var ItemLabel = (0, import_element25.forwardRef)( 13759 function UnforwardedItemLabel({ children, className, render, ...restProps }, ref) { 13760 return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( 13761 Text, 13762 { 13763 ref, 13764 variant: "body-md", 13765 render: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(index_parts_exports2.ItemText, { render }), 13766 className: clsx_default(item_popup_default5["item-label"], className), 13767 ...restProps, 13768 children 13769 } 13770 ); 13771 } 13772 ); 13773 13774 // packages/ui/build-module/form/primitives/select/item.mjs 13775 var import_jsx_runtime44 = __toESM(require_jsx_runtime(), 1); 13776 var STYLE_HASH_ATTRIBUTE17 = "data-wp-hash"; 13777 function getRuntime17() { 13778 const globalScope = globalThis; 13779 if (globalScope.__wpStyleRuntime) { 13780 return globalScope.__wpStyleRuntime; 13781 } 13782 globalScope.__wpStyleRuntime = { 13783 documents: /* @__PURE__ */ new Map(), 13784 styles: /* @__PURE__ */ new Map(), 13785 injectedStyles: /* @__PURE__ */ new WeakMap() 13786 }; 13787 if (typeof document !== "undefined") { 13788 registerDocument17(document); 13789 } 13790 return globalScope.__wpStyleRuntime; 13791 } 13792 function documentContainsStyleHash17(targetDocument, hash) { 13793 if (!targetDocument.head) { 13794 return false; 13795 } 13796 for (const style of targetDocument.head.querySelectorAll( 13797 `style[$STYLE_HASH_ATTRIBUTE17}]` 13798 )) { 13799 if (style.getAttribute(STYLE_HASH_ATTRIBUTE17) === hash) { 13800 return true; 13801 } 13802 } 13803 return false; 13804 } 13805 function injectStyle17(targetDocument, hash, css) { 13806 if (!targetDocument.head) { 13807 return; 13808 } 13809 const runtime = getRuntime17(); 13810 let injectedStyles = runtime.injectedStyles.get(targetDocument); 13811 if (!injectedStyles) { 13812 injectedStyles = /* @__PURE__ */ new Set(); 13813 runtime.injectedStyles.set(targetDocument, injectedStyles); 13814 } 13815 if (injectedStyles.has(hash)) { 13816 return; 13817 } 13818 if (documentContainsStyleHash17(targetDocument, hash)) { 13819 injectedStyles.add(hash); 13820 return; 13821 } 13822 const style = targetDocument.createElement("style"); 13823 style.setAttribute(STYLE_HASH_ATTRIBUTE17, hash); 13824 style.appendChild(targetDocument.createTextNode(css)); 13825 targetDocument.head.appendChild(style); 13826 injectedStyles.add(hash); 13827 } 13828 function registerDocument17(targetDocument) { 13829 const runtime = getRuntime17(); 13830 runtime.documents.set( 13831 targetDocument, 13832 (runtime.documents.get(targetDocument) ?? 0) + 1 13833 ); 13834 for (const [hash, css] of runtime.styles) { 13835 injectStyle17(targetDocument, hash, css); 13836 } 13837 return () => { 13838 const count = runtime.documents.get(targetDocument); 13839 if (count === void 0) { 13840 return; 13841 } 13842 if (count <= 1) { 13843 runtime.documents.delete(targetDocument); 13844 return; 13845 } 13846 runtime.documents.set(targetDocument, count - 1); 13847 }; 13848 } 13849 function registerStyle17(hash, css) { 13850 const runtime = getRuntime17(); 13851 runtime.styles.set(hash, css); 13852 for (const targetDocument of runtime.documents.keys()) { 13853 injectStyle17(targetDocument, hash, css); 13854 } 13855 } 13856 if (typeof process === "undefined" || true) { 13857 registerStyle17("726f348f3f", "._78c10a0773e51a91__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}._5b33aa2d48624b4f__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._980b3b4776ac8f81__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._43e478b4279a076c__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._698099e25b0fb1a6__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6)._326aee4184d261fd__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}.e9576240835601ba__a,.e9576240835601ba__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}._3f05789653864a73__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._3c72ff72abe57859__li{margin:var(--_gcd-li-margin,0)}[role=treeitem] span._79d16267c15d9eb2__span[aria-hidden]{display:var(--_gcd-span-display,inline);font-family:var(--_gcd-span-font-family,inherit);font-size:var(--_gcd-span-font-size,inherit);line-height:var(--_gcd-span-line-height,1);pointer-events:var(--_gcd-span-pointer-events,auto);position:var(--_gcd-span-position,static)}"); 13858 } 13859 var global_css_defense_default4 = { "button": "_78c10a0773e51a91__button", "input": "_5b33aa2d48624b4f__input", "textarea": "_980b3b4776ac8f81__textarea", "div": "_43e478b4279a076c__div", "p": "_698099e25b0fb1a6__p", "heading": "_326aee4184d261fd__heading", "a": "e9576240835601ba__a", "ol": "_3f05789653864a73__ol", "li": "_3c72ff72abe57859__li", "span": "_79d16267c15d9eb2__span" }; 13860 if (typeof process === "undefined" || true) { 13861 registerStyle17("7ad1c0f17c", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._069972d5e326bada__dropdown-motion,._66136bf671f00b1f__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}}._069972d5e326bada__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{.db3b5361087077bf__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);&._55f74d412c3e00e8__is-width-anchor{width:var(--anchor-width)}&._90e0b62205351f85__is-width-content{width:auto}&._30ba87899c0b11ce__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&._402d4db0488da324__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._34ead52b2d60b21d__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._3fec17b6dc9029c3__is-width-available{width:var(--available-width)}}._89cf8b0bb3319c7e__is-align-item-with-trigger[data-side=none] .db3b5361087077bf__popup{max-height:none}._66636b371582ead4__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(.b6aeb640498fae5d__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))}}._325f1b7764907c29__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._597ea43c6bec63d8__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)}}._5865110cf5678449__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._597ea43c6bec63d8__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}._09c9c50e605390ff__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._6361da5eb54e618d__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))}._88cf016d20b4f2ef__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}}.c466e5465a76d4f6__item-layout{--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);&:has(>.b6aeb640498fae5d__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))}}.b9c803da5aae76d5__item{user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&._8931f3eb02e2e0ad__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]){._494b2a9f2e72b67f__item-indicator-icon{opacity:0}}&[data-highlighted]:not([data-disabled]){background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&[data-disabled]{background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);&:focus-visible{--_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:0}@media (forced-colors:active){color:GrayText}}}.b6aeb640498fae5d__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);justify-content:center;pointer-events:none;width:var(--wpds-dimension-size-2xs,16px)}._494b2a9f2e72b67f__item-indicator-icon{translate:0 1px}.b40c7d58965ce4a5__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._3c629930ceb193c7__item-text{display:flex;flex-direction:column;min-width:0}._5c4aad98ed7a8382__item-label{--_gcd-heading-color:currentColor;min-width:0}.deb952050541c0e4__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}.b9c803da5aae76d5__item[data-disabled] .deb952050541c0e4__item-description,.b9c803da5aae76d5__item[data-highlighted]:not([data-disabled]) .deb952050541c0e4__item-description{--_gcd-heading-color:currentColor;color:inherit}._5f8e4a2a04ecdade__loading-indicator{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-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}.c1bf7c14e9600f0a__status{grid-area:status;&:has(._5f8e4a2a04ecdade__loading-indicator){padding-block:var(--wp-ui-popup-padding)}}._0850de87108c9441__empty:not(:empty){grid-area:main}._0850de87108c9441__empty:not(:empty),.c1bf7c14e9600f0a__status:not(:empty):not(:has([data-visually-hidden],._5f8e4a2a04ecdade__loading-indicator)){--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)}}@layer compositions{.eaec70f7db4a63ef__loading-spinner{height:var(--wpds-dimension-size-3xs,12px);width:var(--wpds-dimension-size-3xs,12px)}}}'); 13862 } 13863 var item_popup_default6 = { "popup": "db3b5361087077bf__popup _069972d5e326bada__dropdown-motion", "is-width-anchor": "_55f74d412c3e00e8__is-width-anchor", "is-width-content": "_90e0b62205351f85__is-width-content", "is-width-sm": "_30ba87899c0b11ce__is-width-sm", "is-width-md": "_402d4db0488da324__is-width-md", "is-width-lg": "_34ead52b2d60b21d__is-width-lg", "is-width-available": "_3fec17b6dc9029c3__is-width-available", "is-align-item-with-trigger": "_89cf8b0bb3319c7e__is-align-item-with-trigger", "list-chrome": "_66636b371582ead4__list-chrome", "item-icon": "b6aeb640498fae5d__item-icon", "list": "_325f1b7764907c29__list _66636b371582ead4__list-chrome", "list-scrollable-container": "_597ea43c6bec63d8__list-scrollable-container", "list-footer": "_5865110cf5678449__list-footer", "group": "_09c9c50e605390ff__group", "group-label": "_6361da5eb54e618d__group-label", "separator": "_88cf016d20b4f2ef__separator", "item-layout": "c466e5465a76d4f6__item-layout", "item": "b9c803da5aae76d5__item c466e5465a76d4f6__item-layout", "is-size-small": "_8931f3eb02e2e0ad__is-size-small", "item-indicator-icon": "_494b2a9f2e72b67f__item-indicator-icon", "item-content": "b40c7d58965ce4a5__item-content", "item-text": "_3c629930ceb193c7__item-text", "item-label": "_5c4aad98ed7a8382__item-label", "item-description": "deb952050541c0e4__item-description", "loading-indicator": "_5f8e4a2a04ecdade__loading-indicator c466e5465a76d4f6__item-layout", "status": "c1bf7c14e9600f0a__status", "empty": "_0850de87108c9441__empty", "loading-spinner": "eaec70f7db4a63ef__loading-spinner" }; 13864 if (typeof process === "undefined" || true) { 13865 registerStyle17("37477070fb", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{.ccc29f9575c4c758__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 13866 } 13867 var resets_default3 = { "box-sizing": "ccc29f9575c4c758__box-sizing" }; 13868 var ITEM_CONTENT_COMPONENTS = { 13869 Label: ItemLabel, 13870 Description: ItemDescription, 13871 descriptionValidationToken: ITEM_DESCRIPTION_DIRECT_CHILD, 13872 validationMessage: "Select.ItemLabel must be the first direct child of every select item, followed only by Select.ItemDescription components." 13873 }; 13874 var Item2 = (0, import_element26.forwardRef)( 13875 function UnforwardedItem2({ 13876 className, 13877 value, 13878 size: size4 = "default", 13879 children, 13880 "aria-describedby": ariaDescribedBy, 13881 "aria-label": ariaLabel, 13882 "aria-labelledby": ariaLabelledBy, 13883 ...restProps 13884 }, ref) { 13885 const { contentChildren, itemAriaProps } = useItemContent( 13886 children, 13887 ITEM_CONTENT_COMPONENTS, 13888 { 13889 "aria-describedby": ariaDescribedBy, 13890 "aria-label": ariaLabel, 13891 "aria-labelledby": ariaLabelledBy 13892 } 13893 ); 13894 return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)( 13895 index_parts_exports2.Item, 13896 { 13897 className: clsx_default( 13898 global_css_defense_default4.div, 13899 resets_default3["box-sizing"], 13900 item_popup_default6.item, 13901 size4 === "small" && item_popup_default6["is-size-small"], 13902 className 13903 ), 13904 value, 13905 ref, 13906 ...itemAriaProps, 13907 ...restProps, 13908 children: [ 13909 /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { className: item_popup_default6["item-icon"], children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)( 13910 Icon, 13911 { 13912 icon: check_default, 13913 className: item_popup_default6["item-indicator-icon"], 13914 size: 16 13915 } 13916 ) }), 13917 /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className: item_popup_default6["item-text"], children: contentChildren }) 13918 ] 13919 } 13920 ); 13921 } 13922 ); 13923 13924 // packages/ui/build-module/form/primitives/select/popup.mjs 13925 var import_element29 = __toESM(require_element(), 1); 13926 13927 // packages/ui/build-module/form/primitives/select/portal.mjs 13928 var import_element27 = __toESM(require_element(), 1); 13929 var import_jsx_runtime45 = __toESM(require_jsx_runtime(), 1); 13930 var Portal = (0, import_element27.forwardRef)(function SelectPortal3({ container, ...restProps }, ref) { 13931 return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)( 13932 index_parts_exports2.Portal, 13933 { 13934 container: container === void 0 ? getWpCompatOverlaySlot() : container, 13935 ...restProps, 13936 ref 13937 } 13938 ); 13939 }); 13940 13941 // packages/ui/build-module/form/primitives/select/positioner.mjs 13942 var import_element28 = __toESM(require_element(), 1); 13943 var import_jsx_runtime46 = __toESM(require_jsx_runtime(), 1); 13944 var STYLE_HASH_ATTRIBUTE18 = "data-wp-hash"; 13945 function getRuntime18() { 13946 const globalScope = globalThis; 13947 if (globalScope.__wpStyleRuntime) { 13948 return globalScope.__wpStyleRuntime; 13949 } 13950 globalScope.__wpStyleRuntime = { 13951 documents: /* @__PURE__ */ new Map(), 13952 styles: /* @__PURE__ */ new Map(), 13953 injectedStyles: /* @__PURE__ */ new WeakMap() 13954 }; 13955 if (typeof document !== "undefined") { 13956 registerDocument18(document); 13957 } 13958 return globalScope.__wpStyleRuntime; 13959 } 13960 function documentContainsStyleHash18(targetDocument, hash) { 13961 if (!targetDocument.head) { 13962 return false; 13963 } 13964 for (const style of targetDocument.head.querySelectorAll( 13965 `style[$STYLE_HASH_ATTRIBUTE18}]` 13966 )) { 13967 if (style.getAttribute(STYLE_HASH_ATTRIBUTE18) === hash) { 13968 return true; 13969 } 13970 } 13971 return false; 13972 } 13973 function injectStyle18(targetDocument, hash, css) { 13974 if (!targetDocument.head) { 13975 return; 13976 } 13977 const runtime = getRuntime18(); 13978 let injectedStyles = runtime.injectedStyles.get(targetDocument); 13979 if (!injectedStyles) { 13980 injectedStyles = /* @__PURE__ */ new Set(); 13981 runtime.injectedStyles.set(targetDocument, injectedStyles); 13982 } 13983 if (injectedStyles.has(hash)) { 13984 return; 13985 } 13986 if (documentContainsStyleHash18(targetDocument, hash)) { 13987 injectedStyles.add(hash); 13988 return; 13989 } 13990 const style = targetDocument.createElement("style"); 13991 style.setAttribute(STYLE_HASH_ATTRIBUTE18, hash); 13992 style.appendChild(targetDocument.createTextNode(css)); 13993 targetDocument.head.appendChild(style); 13994 injectedStyles.add(hash); 13995 } 13996 function registerDocument18(targetDocument) { 13997 const runtime = getRuntime18(); 13998 runtime.documents.set( 13999 targetDocument, 14000 (runtime.documents.get(targetDocument) ?? 0) + 1 14001 ); 14002 for (const [hash, css] of runtime.styles) { 14003 injectStyle18(targetDocument, hash, css); 14004 } 14005 return () => { 14006 const count = runtime.documents.get(targetDocument); 14007 if (count === void 0) { 14008 return; 14009 } 14010 if (count <= 1) { 14011 runtime.documents.delete(targetDocument); 14012 return; 14013 } 14014 runtime.documents.set(targetDocument, count - 1); 14015 }; 14016 } 14017 function registerStyle18(hash, css) { 14018 const runtime = getRuntime18(); 14019 runtime.styles.set(hash, css); 14020 for (const targetDocument of runtime.documents.keys()) { 14021 injectStyle18(targetDocument, hash, css); 14022 } 14023 } 14024 if (typeof process === "undefined" || true) { 14025 registerStyle18("37477070fb", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{.ccc29f9575c4c758__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 14026 } 14027 var resets_default4 = { "box-sizing": "ccc29f9575c4c758__box-sizing" }; 14028 if (typeof process === "undefined" || true) { 14029 registerStyle18("7ad1c0f17c", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._069972d5e326bada__dropdown-motion,._66136bf671f00b1f__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}}._069972d5e326bada__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{.db3b5361087077bf__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);&._55f74d412c3e00e8__is-width-anchor{width:var(--anchor-width)}&._90e0b62205351f85__is-width-content{width:auto}&._30ba87899c0b11ce__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&._402d4db0488da324__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._34ead52b2d60b21d__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._3fec17b6dc9029c3__is-width-available{width:var(--available-width)}}._89cf8b0bb3319c7e__is-align-item-with-trigger[data-side=none] .db3b5361087077bf__popup{max-height:none}._66636b371582ead4__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(.b6aeb640498fae5d__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))}}._325f1b7764907c29__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._597ea43c6bec63d8__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)}}._5865110cf5678449__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._597ea43c6bec63d8__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}._09c9c50e605390ff__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._6361da5eb54e618d__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))}._88cf016d20b4f2ef__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}}.c466e5465a76d4f6__item-layout{--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);&:has(>.b6aeb640498fae5d__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))}}.b9c803da5aae76d5__item{user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&._8931f3eb02e2e0ad__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]){._494b2a9f2e72b67f__item-indicator-icon{opacity:0}}&[data-highlighted]:not([data-disabled]){background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&[data-disabled]{background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);&:focus-visible{--_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:0}@media (forced-colors:active){color:GrayText}}}.b6aeb640498fae5d__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);justify-content:center;pointer-events:none;width:var(--wpds-dimension-size-2xs,16px)}._494b2a9f2e72b67f__item-indicator-icon{translate:0 1px}.b40c7d58965ce4a5__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._3c629930ceb193c7__item-text{display:flex;flex-direction:column;min-width:0}._5c4aad98ed7a8382__item-label{--_gcd-heading-color:currentColor;min-width:0}.deb952050541c0e4__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}.b9c803da5aae76d5__item[data-disabled] .deb952050541c0e4__item-description,.b9c803da5aae76d5__item[data-highlighted]:not([data-disabled]) .deb952050541c0e4__item-description{--_gcd-heading-color:currentColor;color:inherit}._5f8e4a2a04ecdade__loading-indicator{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-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}.c1bf7c14e9600f0a__status{grid-area:status;&:has(._5f8e4a2a04ecdade__loading-indicator){padding-block:var(--wp-ui-popup-padding)}}._0850de87108c9441__empty:not(:empty){grid-area:main}._0850de87108c9441__empty:not(:empty),.c1bf7c14e9600f0a__status:not(:empty):not(:has([data-visually-hidden],._5f8e4a2a04ecdade__loading-indicator)){--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)}}@layer compositions{.eaec70f7db4a63ef__loading-spinner{height:var(--wpds-dimension-size-3xs,12px);width:var(--wpds-dimension-size-3xs,12px)}}}'); 14030 } 14031 var item_popup_default7 = { "popup": "db3b5361087077bf__popup _069972d5e326bada__dropdown-motion", "is-width-anchor": "_55f74d412c3e00e8__is-width-anchor", "is-width-content": "_90e0b62205351f85__is-width-content", "is-width-sm": "_30ba87899c0b11ce__is-width-sm", "is-width-md": "_402d4db0488da324__is-width-md", "is-width-lg": "_34ead52b2d60b21d__is-width-lg", "is-width-available": "_3fec17b6dc9029c3__is-width-available", "is-align-item-with-trigger": "_89cf8b0bb3319c7e__is-align-item-with-trigger", "list-chrome": "_66636b371582ead4__list-chrome", "item-icon": "b6aeb640498fae5d__item-icon", "list": "_325f1b7764907c29__list _66636b371582ead4__list-chrome", "list-scrollable-container": "_597ea43c6bec63d8__list-scrollable-container", "list-footer": "_5865110cf5678449__list-footer", "group": "_09c9c50e605390ff__group", "group-label": "_6361da5eb54e618d__group-label", "separator": "_88cf016d20b4f2ef__separator", "item-layout": "c466e5465a76d4f6__item-layout", "item": "b9c803da5aae76d5__item c466e5465a76d4f6__item-layout", "is-size-small": "_8931f3eb02e2e0ad__is-size-small", "item-indicator-icon": "_494b2a9f2e72b67f__item-indicator-icon", "item-content": "b40c7d58965ce4a5__item-content", "item-text": "_3c629930ceb193c7__item-text", "item-label": "_5c4aad98ed7a8382__item-label", "item-description": "deb952050541c0e4__item-description", "loading-indicator": "_5f8e4a2a04ecdade__loading-indicator c466e5465a76d4f6__item-layout", "status": "c1bf7c14e9600f0a__status", "empty": "_0850de87108c9441__empty", "loading-spinner": "eaec70f7db4a63ef__loading-spinner" }; 14032 if (typeof process === "undefined" || true) { 14033 registerStyle18("656946f66b", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.cc0f09fba19eb669__positioner{z-index:var(--wp-ui-select-z-index,initial)}._3a3c25e09f4fd1ec__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)}}}}"); 14034 } 14035 var style_default6 = { "positioner": "cc0f09fba19eb669__positioner", "list": "_3a3c25e09f4fd1ec__list" }; 14036 var Positioner = (0, import_element28.forwardRef)( 14037 function SelectPositioner3({ className, alignItemWithTrigger = true, ...props }, ref) { 14038 return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)( 14039 index_parts_exports2.Positioner, 14040 { 14041 ...ITEM_POPUP_POSITIONER_PROPS, 14042 ...props, 14043 alignItemWithTrigger, 14044 ref, 14045 className: clsx_default( 14046 resets_default4["box-sizing"], 14047 style_default6.positioner, 14048 alignItemWithTrigger && item_popup_default7["is-align-item-with-trigger"], 14049 className 14050 ) 14051 } 14052 ); 14053 } 14054 ); 14055 14056 // packages/ui/build-module/form/primitives/select/popup.mjs 14057 var import_jsx_runtime47 = __toESM(require_jsx_runtime(), 1); 14058 var STYLE_HASH_ATTRIBUTE19 = "data-wp-hash"; 14059 function getRuntime19() { 14060 const globalScope = globalThis; 14061 if (globalScope.__wpStyleRuntime) { 14062 return globalScope.__wpStyleRuntime; 14063 } 14064 globalScope.__wpStyleRuntime = { 14065 documents: /* @__PURE__ */ new Map(), 14066 styles: /* @__PURE__ */ new Map(), 14067 injectedStyles: /* @__PURE__ */ new WeakMap() 14068 }; 14069 if (typeof document !== "undefined") { 14070 registerDocument19(document); 14071 } 14072 return globalScope.__wpStyleRuntime; 14073 } 14074 function documentContainsStyleHash19(targetDocument, hash) { 14075 if (!targetDocument.head) { 14076 return false; 14077 } 14078 for (const style of targetDocument.head.querySelectorAll( 14079 `style[$STYLE_HASH_ATTRIBUTE19}]` 14080 )) { 14081 if (style.getAttribute(STYLE_HASH_ATTRIBUTE19) === hash) { 14082 return true; 14083 } 14084 } 14085 return false; 14086 } 14087 function injectStyle19(targetDocument, hash, css) { 14088 if (!targetDocument.head) { 14089 return; 14090 } 14091 const runtime = getRuntime19(); 14092 let injectedStyles = runtime.injectedStyles.get(targetDocument); 14093 if (!injectedStyles) { 14094 injectedStyles = /* @__PURE__ */ new Set(); 14095 runtime.injectedStyles.set(targetDocument, injectedStyles); 14096 } 14097 if (injectedStyles.has(hash)) { 14098 return; 14099 } 14100 if (documentContainsStyleHash19(targetDocument, hash)) { 14101 injectedStyles.add(hash); 14102 return; 14103 } 14104 const style = targetDocument.createElement("style"); 14105 style.setAttribute(STYLE_HASH_ATTRIBUTE19, hash); 14106 style.appendChild(targetDocument.createTextNode(css)); 14107 targetDocument.head.appendChild(style); 14108 injectedStyles.add(hash); 14109 } 14110 function registerDocument19(targetDocument) { 14111 const runtime = getRuntime19(); 14112 runtime.documents.set( 14113 targetDocument, 14114 (runtime.documents.get(targetDocument) ?? 0) + 1 14115 ); 14116 for (const [hash, css] of runtime.styles) { 14117 injectStyle19(targetDocument, hash, css); 14118 } 14119 return () => { 14120 const count = runtime.documents.get(targetDocument); 14121 if (count === void 0) { 14122 return; 14123 } 14124 if (count <= 1) { 14125 runtime.documents.delete(targetDocument); 14126 return; 14127 } 14128 runtime.documents.set(targetDocument, count - 1); 14129 }; 14130 } 14131 function registerStyle19(hash, css) { 14132 const runtime = getRuntime19(); 14133 runtime.styles.set(hash, css); 14134 for (const targetDocument of runtime.documents.keys()) { 14135 injectStyle19(targetDocument, hash, css); 14136 } 14137 } 14138 if (typeof process === "undefined" || true) { 14139 registerStyle19("7ad1c0f17c", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._069972d5e326bada__dropdown-motion,._66136bf671f00b1f__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}}._069972d5e326bada__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{.db3b5361087077bf__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);&._55f74d412c3e00e8__is-width-anchor{width:var(--anchor-width)}&._90e0b62205351f85__is-width-content{width:auto}&._30ba87899c0b11ce__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&._402d4db0488da324__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._34ead52b2d60b21d__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._3fec17b6dc9029c3__is-width-available{width:var(--available-width)}}._89cf8b0bb3319c7e__is-align-item-with-trigger[data-side=none] .db3b5361087077bf__popup{max-height:none}._66636b371582ead4__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(.b6aeb640498fae5d__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))}}._325f1b7764907c29__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._597ea43c6bec63d8__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)}}._5865110cf5678449__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._597ea43c6bec63d8__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}._09c9c50e605390ff__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._6361da5eb54e618d__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))}._88cf016d20b4f2ef__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}}.c466e5465a76d4f6__item-layout{--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);&:has(>.b6aeb640498fae5d__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))}}.b9c803da5aae76d5__item{user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&._8931f3eb02e2e0ad__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]){._494b2a9f2e72b67f__item-indicator-icon{opacity:0}}&[data-highlighted]:not([data-disabled]){background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&[data-disabled]{background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);&:focus-visible{--_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:0}@media (forced-colors:active){color:GrayText}}}.b6aeb640498fae5d__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);justify-content:center;pointer-events:none;width:var(--wpds-dimension-size-2xs,16px)}._494b2a9f2e72b67f__item-indicator-icon{translate:0 1px}.b40c7d58965ce4a5__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._3c629930ceb193c7__item-text{display:flex;flex-direction:column;min-width:0}._5c4aad98ed7a8382__item-label{--_gcd-heading-color:currentColor;min-width:0}.deb952050541c0e4__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}.b9c803da5aae76d5__item[data-disabled] .deb952050541c0e4__item-description,.b9c803da5aae76d5__item[data-highlighted]:not([data-disabled]) .deb952050541c0e4__item-description{--_gcd-heading-color:currentColor;color:inherit}._5f8e4a2a04ecdade__loading-indicator{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-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}.c1bf7c14e9600f0a__status{grid-area:status;&:has(._5f8e4a2a04ecdade__loading-indicator){padding-block:var(--wp-ui-popup-padding)}}._0850de87108c9441__empty:not(:empty){grid-area:main}._0850de87108c9441__empty:not(:empty),.c1bf7c14e9600f0a__status:not(:empty):not(:has([data-visually-hidden],._5f8e4a2a04ecdade__loading-indicator)){--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)}}@layer compositions{.eaec70f7db4a63ef__loading-spinner{height:var(--wpds-dimension-size-3xs,12px);width:var(--wpds-dimension-size-3xs,12px)}}}'); 14140 } 14141 var item_popup_default8 = { "popup": "db3b5361087077bf__popup _069972d5e326bada__dropdown-motion", "is-width-anchor": "_55f74d412c3e00e8__is-width-anchor", "is-width-content": "_90e0b62205351f85__is-width-content", "is-width-sm": "_30ba87899c0b11ce__is-width-sm", "is-width-md": "_402d4db0488da324__is-width-md", "is-width-lg": "_34ead52b2d60b21d__is-width-lg", "is-width-available": "_3fec17b6dc9029c3__is-width-available", "is-align-item-with-trigger": "_89cf8b0bb3319c7e__is-align-item-with-trigger", "list-chrome": "_66636b371582ead4__list-chrome", "item-icon": "b6aeb640498fae5d__item-icon", "list": "_325f1b7764907c29__list _66636b371582ead4__list-chrome", "list-scrollable-container": "_597ea43c6bec63d8__list-scrollable-container", "list-footer": "_5865110cf5678449__list-footer", "group": "_09c9c50e605390ff__group", "group-label": "_6361da5eb54e618d__group-label", "separator": "_88cf016d20b4f2ef__separator", "item-layout": "c466e5465a76d4f6__item-layout", "item": "b9c803da5aae76d5__item c466e5465a76d4f6__item-layout", "is-size-small": "_8931f3eb02e2e0ad__is-size-small", "item-indicator-icon": "_494b2a9f2e72b67f__item-indicator-icon", "item-content": "b40c7d58965ce4a5__item-content", "item-text": "_3c629930ceb193c7__item-text", "item-label": "_5c4aad98ed7a8382__item-label", "item-description": "deb952050541c0e4__item-description", "loading-indicator": "_5f8e4a2a04ecdade__loading-indicator c466e5465a76d4f6__item-layout", "status": "c1bf7c14e9600f0a__status", "empty": "_0850de87108c9441__empty", "loading-spinner": "eaec70f7db4a63ef__loading-spinner" }; 14142 if (typeof process === "undefined" || true) { 14143 registerStyle19("656946f66b", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.cc0f09fba19eb669__positioner{z-index:var(--wp-ui-select-z-index,initial)}._3a3c25e09f4fd1ec__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)}}}}"); 14144 } 14145 var style_default7 = { "positioner": "cc0f09fba19eb669__positioner", "list": "_3a3c25e09f4fd1ec__list" }; 14146 var Popup = (0, import_element29.forwardRef)( 14147 function UnforwardedPopup({ className, portal, positioner, width, children, ...restProps }, ref) { 14148 const popupContent = /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( 14149 index_parts_exports2.Popup, 14150 { 14151 ref, 14152 className: clsx_default( 14153 item_popup_default8.popup, 14154 getItemPopupWidthClassName(width), 14155 className 14156 ), 14157 ...restProps, 14158 children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( 14159 index_parts_exports2.List, 14160 { 14161 className: clsx_default( 14162 item_popup_default8["list-chrome"], 14163 style_default7.list 14164 ), 14165 children 14166 } 14167 ) 14168 } 14169 ); 14170 const positionedPopup = renderSlotWithChildren( 14171 positioner, 14172 /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Positioner, {}), 14173 popupContent 14174 ); 14175 return renderSlotWithChildren(portal, /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Portal, {}), positionedPopup); 14176 } 14177 ); 14178 14179 // packages/ui/build-module/form/primitives/select/root.mjs 14180 var import_jsx_runtime48 = __toESM(require_jsx_runtime(), 1); 14181 function Root2(props) { 14182 return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(DirectionProvider3, { children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(index_parts_exports2.Root, { ...props }) }); 14183 } 14184 14185 // packages/ui/build-module/form/primitives/select/separator.mjs 14186 var import_element30 = __toESM(require_element(), 1); 14187 var import_jsx_runtime49 = __toESM(require_jsx_runtime(), 1); 14188 var STYLE_HASH_ATTRIBUTE20 = "data-wp-hash"; 14189 function getRuntime20() { 14190 const globalScope = globalThis; 14191 if (globalScope.__wpStyleRuntime) { 14192 return globalScope.__wpStyleRuntime; 14193 } 14194 globalScope.__wpStyleRuntime = { 14195 documents: /* @__PURE__ */ new Map(), 14196 styles: /* @__PURE__ */ new Map(), 14197 injectedStyles: /* @__PURE__ */ new WeakMap() 14198 }; 14199 if (typeof document !== "undefined") { 14200 registerDocument20(document); 14201 } 14202 return globalScope.__wpStyleRuntime; 14203 } 14204 function documentContainsStyleHash20(targetDocument, hash) { 14205 if (!targetDocument.head) { 14206 return false; 14207 } 14208 for (const style of targetDocument.head.querySelectorAll( 14209 `style[$STYLE_HASH_ATTRIBUTE20}]` 14210 )) { 14211 if (style.getAttribute(STYLE_HASH_ATTRIBUTE20) === hash) { 14212 return true; 14213 } 14214 } 14215 return false; 14216 } 14217 function injectStyle20(targetDocument, hash, css) { 14218 if (!targetDocument.head) { 14219 return; 14220 } 14221 const runtime = getRuntime20(); 14222 let injectedStyles = runtime.injectedStyles.get(targetDocument); 14223 if (!injectedStyles) { 14224 injectedStyles = /* @__PURE__ */ new Set(); 14225 runtime.injectedStyles.set(targetDocument, injectedStyles); 14226 } 14227 if (injectedStyles.has(hash)) { 14228 return; 14229 } 14230 if (documentContainsStyleHash20(targetDocument, hash)) { 14231 injectedStyles.add(hash); 14232 return; 14233 } 14234 const style = targetDocument.createElement("style"); 14235 style.setAttribute(STYLE_HASH_ATTRIBUTE20, hash); 14236 style.appendChild(targetDocument.createTextNode(css)); 14237 targetDocument.head.appendChild(style); 14238 injectedStyles.add(hash); 14239 } 14240 function registerDocument20(targetDocument) { 14241 const runtime = getRuntime20(); 14242 runtime.documents.set( 14243 targetDocument, 14244 (runtime.documents.get(targetDocument) ?? 0) + 1 14245 ); 14246 for (const [hash, css] of runtime.styles) { 14247 injectStyle20(targetDocument, hash, css); 14248 } 14249 return () => { 14250 const count = runtime.documents.get(targetDocument); 14251 if (count === void 0) { 14252 return; 14253 } 14254 if (count <= 1) { 14255 runtime.documents.delete(targetDocument); 14256 return; 14257 } 14258 runtime.documents.set(targetDocument, count - 1); 14259 }; 14260 } 14261 function registerStyle20(hash, css) { 14262 const runtime = getRuntime20(); 14263 runtime.styles.set(hash, css); 14264 for (const targetDocument of runtime.documents.keys()) { 14265 injectStyle20(targetDocument, hash, css); 14266 } 14267 } 14268 if (typeof process === "undefined" || true) { 14269 registerStyle20("7ad1c0f17c", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._069972d5e326bada__dropdown-motion,._66136bf671f00b1f__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}}._069972d5e326bada__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{.db3b5361087077bf__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);&._55f74d412c3e00e8__is-width-anchor{width:var(--anchor-width)}&._90e0b62205351f85__is-width-content{width:auto}&._30ba87899c0b11ce__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&._402d4db0488da324__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._34ead52b2d60b21d__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._3fec17b6dc9029c3__is-width-available{width:var(--available-width)}}._89cf8b0bb3319c7e__is-align-item-with-trigger[data-side=none] .db3b5361087077bf__popup{max-height:none}._66636b371582ead4__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(.b6aeb640498fae5d__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))}}._325f1b7764907c29__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._597ea43c6bec63d8__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)}}._5865110cf5678449__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._597ea43c6bec63d8__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}._09c9c50e605390ff__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._6361da5eb54e618d__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))}._88cf016d20b4f2ef__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}}.c466e5465a76d4f6__item-layout{--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);&:has(>.b6aeb640498fae5d__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))}}.b9c803da5aae76d5__item{user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&._8931f3eb02e2e0ad__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]){._494b2a9f2e72b67f__item-indicator-icon{opacity:0}}&[data-highlighted]:not([data-disabled]){background-color:var(--wpds-color-background-interactive-brand-strong-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 93%,#000));color:var(--wpds-color-foreground-interactive-brand-strong-active,#fff);outline:none;@media (forced-colors:active){background-color:Highlight;color:HighlightText;forced-color-adjust:none}}&[data-disabled]{background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);&:focus-visible{--_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:0}@media (forced-colors:active){color:GrayText}}}.b6aeb640498fae5d__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);justify-content:center;pointer-events:none;width:var(--wpds-dimension-size-2xs,16px)}._494b2a9f2e72b67f__item-indicator-icon{translate:0 1px}.b40c7d58965ce4a5__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._3c629930ceb193c7__item-text{display:flex;flex-direction:column;min-width:0}._5c4aad98ed7a8382__item-label{--_gcd-heading-color:currentColor;min-width:0}.deb952050541c0e4__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}.b9c803da5aae76d5__item[data-disabled] .deb952050541c0e4__item-description,.b9c803da5aae76d5__item[data-highlighted]:not([data-disabled]) .deb952050541c0e4__item-description{--_gcd-heading-color:currentColor;color:inherit}._5f8e4a2a04ecdade__loading-indicator{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-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}.c1bf7c14e9600f0a__status{grid-area:status;&:has(._5f8e4a2a04ecdade__loading-indicator){padding-block:var(--wp-ui-popup-padding)}}._0850de87108c9441__empty:not(:empty){grid-area:main}._0850de87108c9441__empty:not(:empty),.c1bf7c14e9600f0a__status:not(:empty):not(:has([data-visually-hidden],._5f8e4a2a04ecdade__loading-indicator)){--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)}}@layer compositions{.eaec70f7db4a63ef__loading-spinner{height:var(--wpds-dimension-size-3xs,12px);width:var(--wpds-dimension-size-3xs,12px)}}}'); 14270 } 14271 var item_popup_default9 = { "popup": "db3b5361087077bf__popup _069972d5e326bada__dropdown-motion", "is-width-anchor": "_55f74d412c3e00e8__is-width-anchor", "is-width-content": "_90e0b62205351f85__is-width-content", "is-width-sm": "_30ba87899c0b11ce__is-width-sm", "is-width-md": "_402d4db0488da324__is-width-md", "is-width-lg": "_34ead52b2d60b21d__is-width-lg", "is-width-available": "_3fec17b6dc9029c3__is-width-available", "is-align-item-with-trigger": "_89cf8b0bb3319c7e__is-align-item-with-trigger", "list-chrome": "_66636b371582ead4__list-chrome", "item-icon": "b6aeb640498fae5d__item-icon", "list": "_325f1b7764907c29__list _66636b371582ead4__list-chrome", "list-scrollable-container": "_597ea43c6bec63d8__list-scrollable-container", "list-footer": "_5865110cf5678449__list-footer", "group": "_09c9c50e605390ff__group", "group-label": "_6361da5eb54e618d__group-label", "separator": "_88cf016d20b4f2ef__separator", "item-layout": "c466e5465a76d4f6__item-layout", "item": "b9c803da5aae76d5__item c466e5465a76d4f6__item-layout", "is-size-small": "_8931f3eb02e2e0ad__is-size-small", "item-indicator-icon": "_494b2a9f2e72b67f__item-indicator-icon", "item-content": "b40c7d58965ce4a5__item-content", "item-text": "_3c629930ceb193c7__item-text", "item-label": "_5c4aad98ed7a8382__item-label", "item-description": "deb952050541c0e4__item-description", "loading-indicator": "_5f8e4a2a04ecdade__loading-indicator c466e5465a76d4f6__item-layout", "status": "c1bf7c14e9600f0a__status", "empty": "_0850de87108c9441__empty", "loading-spinner": "eaec70f7db4a63ef__loading-spinner" }; 14272 var Separator = (0, import_element30.forwardRef)( 14273 function SelectSeparator2({ 14274 className, 14275 orientation: _orientation, 14276 ...props 14277 }, ref) { 14278 return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)( 14279 index_parts_exports2.Separator, 14280 { 14281 ref, 14282 className: clsx_default(item_popup_default9.separator, className), 14283 ...props 14284 } 14285 ); 14286 } 14287 ); 14288 14289 // packages/ui/build-module/form/primitives/select/trigger.mjs 14290 var import_element31 = __toESM(require_element(), 1); 14291 var import_i18n3 = __toESM(require_i18n(), 1); 14292 var import_jsx_runtime50 = __toESM(require_jsx_runtime(), 1); 14293 var STYLE_HASH_ATTRIBUTE21 = "data-wp-hash"; 14294 function getRuntime21() { 14295 const globalScope = globalThis; 14296 if (globalScope.__wpStyleRuntime) { 14297 return globalScope.__wpStyleRuntime; 14298 } 14299 globalScope.__wpStyleRuntime = { 14300 documents: /* @__PURE__ */ new Map(), 14301 styles: /* @__PURE__ */ new Map(), 14302 injectedStyles: /* @__PURE__ */ new WeakMap() 14303 }; 14304 if (typeof document !== "undefined") { 14305 registerDocument21(document); 14306 } 14307 return globalScope.__wpStyleRuntime; 14308 } 14309 function documentContainsStyleHash21(targetDocument, hash) { 14310 if (!targetDocument.head) { 14311 return false; 14312 } 14313 for (const style of targetDocument.head.querySelectorAll( 14314 `style[$STYLE_HASH_ATTRIBUTE21}]` 14315 )) { 14316 if (style.getAttribute(STYLE_HASH_ATTRIBUTE21) === hash) { 14317 return true; 14318 } 14319 } 14320 return false; 14321 } 14322 function injectStyle21(targetDocument, hash, css) { 14323 if (!targetDocument.head) { 14324 return; 14325 } 14326 const runtime = getRuntime21(); 14327 let injectedStyles = runtime.injectedStyles.get(targetDocument); 14328 if (!injectedStyles) { 14329 injectedStyles = /* @__PURE__ */ new Set(); 14330 runtime.injectedStyles.set(targetDocument, injectedStyles); 14331 } 14332 if (injectedStyles.has(hash)) { 14333 return; 14334 } 14335 if (documentContainsStyleHash21(targetDocument, hash)) { 14336 injectedStyles.add(hash); 14337 return; 14338 } 14339 const style = targetDocument.createElement("style"); 14340 style.setAttribute(STYLE_HASH_ATTRIBUTE21, hash); 14341 style.appendChild(targetDocument.createTextNode(css)); 14342 targetDocument.head.appendChild(style); 14343 injectedStyles.add(hash); 14344 } 14345 function registerDocument21(targetDocument) { 14346 const runtime = getRuntime21(); 14347 runtime.documents.set( 14348 targetDocument, 14349 (runtime.documents.get(targetDocument) ?? 0) + 1 14350 ); 14351 for (const [hash, css] of runtime.styles) { 14352 injectStyle21(targetDocument, hash, css); 14353 } 14354 return () => { 14355 const count = runtime.documents.get(targetDocument); 14356 if (count === void 0) { 14357 return; 14358 } 14359 if (count <= 1) { 14360 runtime.documents.delete(targetDocument); 14361 return; 14362 } 14363 runtime.documents.set(targetDocument, count - 1); 14364 }; 14365 } 14366 function registerStyle21(hash, css) { 14367 const runtime = getRuntime21(); 14368 runtime.styles.set(hash, css); 14369 for (const targetDocument of runtime.documents.keys()) { 14370 injectStyle21(targetDocument, hash, css); 14371 } 14372 } 14373 if (typeof process === "undefined" || true) { 14374 registerStyle21("c13e206e92", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._0f52be5f1d4ce686__outset-ring--focus-within:focus-within,._8f922cee854f2408__outset-ring--focus-visible:focus-visible,.accedd6ae8fd878e__outset-ring--focus:focus{--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}._3ad2c88c126f2bdd__outset-ring--focus-within-except-active:focus-within,.c20f61b115485a7f__outset-ring--focus-except-active:focus{outline:none}._3ad2c88c126f2bdd__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.c20f61b115485a7f__outset-ring--focus-except-active:focus:not(:active){--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}}}"); 14375 } 14376 var focus_module_default = { "outset-ring--focus": "accedd6ae8fd878e__outset-ring--focus", "outset-ring--focus-visible": "_8f922cee854f2408__outset-ring--focus-visible", "outset-ring--focus-within": "_0f52be5f1d4ce686__outset-ring--focus-within", "outset-ring--focus-except-active": "c20f61b115485a7f__outset-ring--focus-except-active", "outset-ring--focus-within-except-active": "_3ad2c88c126f2bdd__outset-ring--focus-within-except-active" }; 14377 if (typeof process === "undefined" || true) { 14378 registerStyle21("56b0509c70", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{.f19aaaa579fccf54__trigger-wrapper{&.bfac6d240be543bd__is-minimal{width:fit-content}}.e1f5987e5bdc9112__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)}&.bfac6d240be543bd__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)}}.ba63264311039401__trigger-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;.e1f5987e5bdc9112__trigger[data-placeholder]:not([data-disabled]) &{color:var(--wpds-color-foreground-interactive-neutral-weak,#707070)}}.cb34834e4f533240__trigger-caret{flex:0 0 auto}}}"); 14379 } 14380 var select_trigger_default = { "trigger-wrapper": "f19aaaa579fccf54__trigger-wrapper", "is-minimal": "bfac6d240be543bd__is-minimal", "trigger": "e1f5987e5bdc9112__trigger", "trigger-value": "ba63264311039401__trigger-value", "trigger-caret": "cb34834e4f533240__trigger-caret" }; 14381 var Trigger = (0, import_element31.forwardRef)( 14382 function UnforwardedTrigger({ 14383 className, 14384 size: size4, 14385 variant, 14386 children, 14387 placeholder = (0, import_i18n3.__)("Select"), 14388 ...restProps 14389 }, ref) { 14390 return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)( 14391 InputLayout2, 14392 { 14393 className: clsx_default( 14394 focus_module_default["outset-ring--focus-within-except-active"], 14395 select_trigger_default["trigger-wrapper"], 14396 variant === "minimal" && select_trigger_default["is-minimal"], 14397 className 14398 ), 14399 size: size4, 14400 isBorderless: variant === "minimal", 14401 children: /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)( 14402 index_parts_exports2.Trigger, 14403 { 14404 ...restProps, 14405 className: clsx_default( 14406 select_trigger_default.trigger, 14407 variant === "minimal" && select_trigger_default["is-minimal"] 14408 ), 14409 "data-can-disable-input-layout": true, 14410 ref, 14411 children: [ 14412 /* @__PURE__ */ (0, import_jsx_runtime50.jsx)( 14413 index_parts_exports2.Value, 14414 { 14415 placeholder, 14416 className: select_trigger_default["trigger-value"], 14417 children 14418 } 14419 ), 14420 /* @__PURE__ */ (0, import_jsx_runtime50.jsx)( 14421 Icon, 14422 { 14423 className: select_trigger_default["trigger-caret"], 14424 icon: chevron_down_default, 14425 size: 18 14426 } 14427 ) 14428 ] 14429 } 14430 ) 14431 } 14432 ); 14433 } 14434 ); 14435 14436 // packages/ui/build-module/form/select-control/select-control.mjs 14437 var import_element34 = __toESM(require_element(), 1); 14438 14439 // packages/ui/build-module/form/select-control/dev-warnings.mjs 14440 var import_warning = __toESM(require_warning(), 1); 14441 function warnSelectControlProps(items, itemToStringValue) { 14442 if (!itemToStringValue && items?.some((item) => item.value === "")) { 14443 (0, import_warning.default)( 14444 "SelectControl: empty string item values are treated as empty selections by default. Use a non-empty item value or return a non-empty string from `itemToStringValue`. Use `null` for an option that clears the selection." 14445 ); 14446 } 14447 } 14448 14449 // packages/ui/build-module/form/select-control/item.mjs 14450 var import_element32 = __toESM(require_element(), 1); 14451 var import_jsx_runtime51 = __toESM(require_jsx_runtime(), 1); 14452 var Item3 = (0, import_element32.forwardRef)( 14453 function UnforwardedItem3(props, ref) { 14454 return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(select_exports.Item, { ref, ...props }); 14455 } 14456 ); 14457 14458 // packages/ui/build-module/form/select-control/trigger.mjs 14459 var import_element33 = __toESM(require_element(), 1); 14460 var import_jsx_runtime52 = __toESM(require_jsx_runtime(), 1); 14461 var Trigger2 = (0, import_element33.forwardRef)(function UnforwardedTrigger2(props, ref) { 14462 return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(select_exports.Trigger, { ref, ...props }); 14463 }); 14464 14465 // packages/ui/build-module/form/select-control/select-control.mjs 14466 var import_jsx_runtime53 = __toESM(require_jsx_runtime(), 1); 14467 var DEFAULT_TRIGGER = /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Trigger2, {}); 14468 var SelectControl = (0, import_element34.forwardRef)(function UnforwardedSelectControl({ 14469 className, 14470 children, 14471 items, 14472 label, 14473 description, 14474 details, 14475 hideLabelFromVision, 14476 placeholder, 14477 popupWidth = "content", 14478 size: size4 = "default", 14479 trigger, 14480 ...restProps 14481 }, ref) { 14482 if (true) { 14483 warnSelectControlProps(items, restProps.itemToStringValue); 14484 } 14485 const triggerElement = useRender({ 14486 render: trigger ?? DEFAULT_TRIGGER, 14487 ref, 14488 props: { placeholder, size: size4 } 14489 }); 14490 return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(field_exports.Root, { className, children: [ 14491 /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(field_exports.Label, { hideFromVision: hideLabelFromVision, children: label }), 14492 /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(select_exports.Root, { items, ...restProps, children: [ 14493 triggerElement, 14494 /* @__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)( 14495 Item3, 14496 { 14497 value: item, 14498 label: item.label, 14499 disabled: item.disabled, 14500 children: [ 14501 /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(select_exports.ItemLabel, { children: item.label }), 14502 item.description ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(select_exports.ItemDescription, { children: item.description }) : null 14503 ] 14504 }, 14505 item.value ?? "null" 14506 )) }) 14507 ] }), 14508 description && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(field_exports.Description, { children: description }), 14509 details && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(field_exports.Details, { children: details }) 14510 ] }); 14511 }); 14512 14513 // packages/ui/build-module/form/select-control/index.mjs 14514 Trigger2.displayName = "SelectControl.Trigger"; 14515 Group.displayName = "SelectControl.Group"; 14516 GroupLabel.displayName = "SelectControl.GroupLabel"; 14517 Item3.displayName = "SelectControl.Item"; 14518 ItemLabel.displayName = "SelectControl.ItemLabel"; 14519 ItemDescription.displayName = "SelectControl.ItemDescription"; 14520 var SelectControl2 = Object.assign(SelectControl, { 14521 /** 14522 * The trigger button, passed through the `trigger` prop to customize 14523 * its props while retaining the control's label and selected content. 14524 */ 14525 Trigger: Trigger2, 14526 /** 14527 * Groups related items together with an associated label rendered by 14528 * `SelectControl.GroupLabel`. 14529 */ 14530 Group, 14531 /** 14532 * Renders a label for a `SelectControl.Group`. 14533 */ 14534 GroupLabel, 14535 /** 14536 * An item rendered inside a `SelectControl` popup. 14537 */ 14538 Item: Item3, 14539 /** 14540 * The primary label of a select item. 14541 */ 14542 ItemLabel, 14543 /** 14544 * Supplementary content that describes a select item via 14545 * `aria-describedby`. 14546 */ 14547 ItemDescription, 14548 /** 14549 * Renders a visual separator between items or groups. 14550 */ 14551 Separator 14552 }); 14553 14554 // packages/widgets/build-module/blocks/legacy-widget/edit/widget-type-selector.mjs 14555 var import_i18n4 = __toESM(require_i18n(), 1); 14556 var import_data = __toESM(require_data(), 1); 14557 var import_core_data = __toESM(require_core_data(), 1); 14558 var import_block_editor = __toESM(require_block_editor(), 1); 14559 var import_jsx_runtime54 = __toESM(require_jsx_runtime(), 1); 14560 function WidgetTypeSelector({ selectedId, onSelect }) { 14561 const widgetTypes = (0, import_data.useSelect)((select2) => { 14562 const hiddenIds = select2(import_block_editor.store).getSettings()?.widgetTypesToHideFromLegacyWidgetBlock ?? []; 14563 return select2(import_core_data.store).getWidgetTypes({ per_page: -1 })?.filter((widgetType) => !hiddenIds.includes(widgetType.id)); 14564 }, []); 14565 if (!widgetTypes) { 14566 return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_components.Spinner, {}); 14567 } 14568 if (widgetTypes.length === 0) { 14569 return (0, import_i18n4.__)("There are no widgets available."); 14570 } 14571 const items = [ 14572 { value: null, label: (0, import_i18n4.__)("Select widget") }, 14573 ...widgetTypes.map((widgetType) => ({ 14574 value: widgetType.id, 14575 label: widgetType.name 14576 })) 14577 ]; 14578 return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( 14579 SelectControl2, 14580 { 14581 label: (0, import_i18n4.__)("Legacy widget"), 14582 value: items.find( 14583 (item) => item.value === (selectedId ?? null) 14584 ) ?? items[0], 14585 items, 14586 onValueChange: (item) => { 14587 const value = item?.value; 14588 if (value) { 14589 const selected = widgetTypes.find( 14590 (widgetType) => widgetType.id === value 14591 ); 14592 onSelect({ 14593 selectedId: selected.id, 14594 isMulti: selected.is_multi 14595 }); 14596 } else { 14597 onSelect({ selectedId: null }); 14598 } 14599 } 14600 } 14601 ); 14602 } 14603 14604 // packages/widgets/build-module/blocks/legacy-widget/edit/inspector-card.mjs 14605 var import_jsx_runtime55 = __toESM(require_jsx_runtime(), 1); 14606 function InspectorCard({ name: name3, description }) { 14607 return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "wp-block-legacy-widget-inspector-card", children: [ 14608 /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("h3", { className: "wp-block-legacy-widget-inspector-card__name", children: name3 }), 14609 /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { children: description }) 14610 ] }); 14611 } 14612 14613 // packages/widgets/build-module/blocks/legacy-widget/edit/form.mjs 14614 var import_element35 = __toESM(require_element(), 1); 14615 var import_data2 = __toESM(require_data(), 1); 14616 var import_notices = __toESM(require_notices(), 1); 14617 var import_i18n6 = __toESM(require_i18n(), 1); 14618 var import_components2 = __toESM(require_components(), 1); 14619 var import_compose2 = __toESM(require_compose(), 1); 14620 14621 // packages/widgets/build-module/blocks/legacy-widget/edit/control.mjs 14622 var import_api_fetch = __toESM(require_api_fetch(), 1); 14623 var import_compose = __toESM(require_compose(), 1); 14624 var import_i18n5 = __toESM(require_i18n(), 1); 14625 var Control2 = class { 14626 /** 14627 * Creates and loads a new control. 14628 * 14629 * @access public 14630 * @param {Object} params 14631 * @param {string} params.id 14632 * @param {string} params.idBase 14633 * @param {Object} params.instance 14634 * @param {Function} params.onChangeInstance 14635 * @param {Function} params.onChangeHasPreview 14636 * @param {Function} params.onError 14637 */ 14638 constructor({ 14639 id, 14640 idBase, 14641 instance, 14642 onChangeInstance, 14643 onChangeHasPreview, 14644 onError 14645 }) { 14646 this.id = id; 14647 this.idBase = idBase; 14648 this._instance = instance; 14649 this._hasPreview = null; 14650 this.onChangeInstance = onChangeInstance; 14651 this.onChangeHasPreview = onChangeHasPreview; 14652 this.onError = onError; 14653 this.number = ++lastNumber; 14654 this.handleFormChange = (0, import_compose.debounce)( 14655 this.handleFormChange.bind(this), 14656 200 14657 ); 14658 this.handleFormSubmit = this.handleFormSubmit.bind(this); 14659 this.initDOM(); 14660 this.bindEvents(); 14661 this.loadContent(); 14662 } 14663 /** 14664 * Clean up the control so that it can be garbage collected. 14665 * 14666 * @access public 14667 */ 14668 destroy() { 14669 this.unbindEvents(); 14670 this.element.remove(); 14671 } 14672 /** 14673 * Creates the control's DOM structure. 14674 * 14675 * @access private 14676 */ 14677 initDOM() { 14678 this.element = el("div", { class: "widget open" }, [ 14679 el("div", { class: "widget-inside" }, [ 14680 this.form = el("form", { class: "form", method: "post" }, [ 14681 // These hidden form inputs are what most widgets' scripts 14682 // use to access data about the widget. 14683 el("input", { 14684 class: "widget-id", 14685 type: "hidden", 14686 name: "widget-id", 14687 value: this.id ?? `$this.idBase}-$this.number}` 14688 }), 14689 el("input", { 14690 class: "id_base", 14691 type: "hidden", 14692 name: "id_base", 14693 value: this.idBase ?? this.id 14694 }), 14695 el("input", { 14696 class: "widget-width", 14697 type: "hidden", 14698 name: "widget-width", 14699 value: "250" 14700 }), 14701 el("input", { 14702 class: "widget-height", 14703 type: "hidden", 14704 name: "widget-height", 14705 value: "200" 14706 }), 14707 el("input", { 14708 class: "widget_number", 14709 type: "hidden", 14710 name: "widget_number", 14711 value: this.idBase ? this.number.toString() : "" 14712 }), 14713 this.content = el("div", { class: "widget-content" }), 14714 // Non-multi widgets can be saved via a Save button. 14715 this.id && el( 14716 "button", 14717 { 14718 class: "button is-primary", 14719 type: "submit" 14720 }, 14721 (0, import_i18n5.__)("Save") 14722 ) 14723 ]) 14724 ]) 14725 ]); 14726 } 14727 /** 14728 * Adds the control's event listeners. 14729 * 14730 * @access private 14731 */ 14732 bindEvents() { 14733 if (window.jQuery) { 14734 const { jQuery: $ } = window; 14735 $(this.form).on("change", null, this.handleFormChange); 14736 $(this.form).on("input", null, this.handleFormChange); 14737 $(this.form).on("submit", this.handleFormSubmit); 14738 } else { 14739 this.form.addEventListener("change", this.handleFormChange); 14740 this.form.addEventListener("input", this.handleFormChange); 14741 this.form.addEventListener("submit", this.handleFormSubmit); 14742 } 14743 } 14744 /** 14745 * Removes the control's event listeners. 14746 * 14747 * @access private 14748 */ 14749 unbindEvents() { 14750 if (window.jQuery) { 14751 const { jQuery: $ } = window; 14752 $(this.form).off("change", null, this.handleFormChange); 14753 $(this.form).off("input", null, this.handleFormChange); 14754 $(this.form).off("submit", this.handleFormSubmit); 14755 } else { 14756 this.form.removeEventListener("change", this.handleFormChange); 14757 this.form.removeEventListener("input", this.handleFormChange); 14758 this.form.removeEventListener("submit", this.handleFormSubmit); 14759 } 14760 } 14761 /** 14762 * Fetches the widget's form HTML from the REST API and loads it into the 14763 * control's form. 14764 * 14765 * @access private 14766 */ 14767 async loadContent() { 14768 try { 14769 if (this.id) { 14770 const { form } = await saveWidget(this.id); 14771 this.content.innerHTML = form; 14772 } else if (this.idBase) { 14773 const { form, preview } = await encodeWidget({ 14774 idBase: this.idBase, 14775 instance: this.instance, 14776 number: this.number 14777 }); 14778 this.content.innerHTML = form; 14779 this.hasPreview = !isEmptyHTML(preview); 14780 if (!this.instance.hash) { 14781 const { instance } = await encodeWidget({ 14782 idBase: this.idBase, 14783 instance: this.instance, 14784 number: this.number, 14785 formData: serializeForm(this.form) 14786 }); 14787 this.instance = instance; 14788 } 14789 } 14790 if (window.jQuery) { 14791 const { jQuery: $ } = window; 14792 $(document).trigger("widget-added", [$(this.element)]); 14793 } 14794 } catch (error2) { 14795 this.onError(error2); 14796 } 14797 } 14798 /** 14799 * Perform a save when a multi widget's form is changed. Non-multi widgets 14800 * are saved manually. 14801 * 14802 * @access private 14803 */ 14804 handleFormChange() { 14805 if (this.idBase) { 14806 this.saveForm(); 14807 } 14808 } 14809 /** 14810 * Perform a save when the control's form is manually submitted. 14811 * 14812 * @access private 14813 * @param {Event} event 14814 */ 14815 handleFormSubmit(event) { 14816 event.preventDefault(); 14817 this.saveForm(); 14818 } 14819 /** 14820 * Serialize the control's form, send it to the REST API, and update the 14821 * instance with the encoded instance that the REST API returns. 14822 * 14823 * @access private 14824 */ 14825 async saveForm() { 14826 const formData = serializeForm(this.form); 14827 try { 14828 if (this.id) { 14829 const { form } = await saveWidget(this.id, formData); 14830 this.content.innerHTML = form; 14831 if (window.jQuery) { 14832 const { jQuery: $ } = window; 14833 $(document).trigger("widget-updated", [ 14834 $(this.element) 14835 ]); 14836 } 14837 } else if (this.idBase) { 14838 const { instance, preview } = await encodeWidget({ 14839 idBase: this.idBase, 14840 instance: this.instance, 14841 number: this.number, 14842 formData 14843 }); 14844 this.instance = instance; 14845 this.hasPreview = !isEmptyHTML(preview); 14846 } 14847 } catch (error2) { 14848 this.onError(error2); 14849 } 14850 } 14851 /** 14852 * The widget's instance object. 14853 * 14854 * @access private 14855 */ 14856 get instance() { 14857 return this._instance; 14858 } 14859 /** 14860 * The widget's instance object. 14861 * 14862 * @access private 14863 */ 14864 set instance(instance) { 14865 if (this._instance !== instance) { 14866 this._instance = instance; 14867 this.onChangeInstance(instance); 14868 } 14869 } 14870 /** 14871 * Whether or not the widget can be previewed. 14872 * 14873 * @access public 14874 */ 14875 get hasPreview() { 14876 return this._hasPreview; 14877 } 14878 /** 14879 * Whether or not the widget can be previewed. 14880 * 14881 * @access private 14882 */ 14883 set hasPreview(hasPreview) { 14884 if (this._hasPreview !== hasPreview) { 14885 this._hasPreview = hasPreview; 14886 this.onChangeHasPreview(hasPreview); 14887 } 14888 } 14889 }; 14890 var lastNumber = 0; 14891 function el(tagName, attributes = {}, content = null) { 14892 const element = document.createElement(tagName); 14893 for (const [attribute, value] of Object.entries(attributes)) { 14894 element.setAttribute(attribute, value); 14895 } 14896 if (Array.isArray(content)) { 14897 for (const child of content) { 14898 if (child) { 14899 element.appendChild(child); 14900 } 14901 } 14902 } else if (typeof content === "string") { 14903 element.innerText = content; 14904 } 14905 return element; 14906 } 14907 async function saveWidget(id, formData = null) { 14908 let widget; 14909 if (formData) { 14910 widget = await (0, import_api_fetch.default)({ 14911 path: `/wp/v2/widgets/$id}?context=edit`, 14912 method: "PUT", 14913 data: { 14914 form_data: formData 14915 } 14916 }); 14917 } else { 14918 widget = await (0, import_api_fetch.default)({ 14919 path: `/wp/v2/widgets/$id}?context=edit`, 14920 method: "GET" 14921 }); 14922 } 14923 return { form: widget.rendered_form }; 14924 } 14925 async function encodeWidget({ idBase, instance, number, formData = null }) { 14926 const response = await (0, import_api_fetch.default)({ 14927 path: `/wp/v2/widget-types/$idBase}/encode`, 14928 method: "POST", 14929 data: { 14930 instance, 14931 number, 14932 form_data: formData 14933 } 14934 }); 14935 return { 14936 instance: response.instance, 14937 form: response.form, 14938 preview: response.preview 14939 }; 14940 } 14941 function isEmptyHTML(html) { 14942 const element = document.createElement("div"); 14943 element.innerHTML = html; 14944 return isEmptyNode(element); 14945 } 14946 function isEmptyNode(node) { 14947 switch (node.nodeType) { 14948 case node.TEXT_NODE: 14949 return node.nodeValue.trim() === ""; 14950 case node.ELEMENT_NODE: 14951 if ([ 14952 "AUDIO", 14953 "CANVAS", 14954 "EMBED", 14955 "IFRAME", 14956 "IMG", 14957 "MATH", 14958 "OBJECT", 14959 "SVG", 14960 "VIDEO" 14961 ].includes(node.tagName)) { 14962 return false; 14963 } 14964 if (!node.hasChildNodes()) { 14965 return true; 14966 } 14967 return Array.from(node.childNodes).every(isEmptyNode); 14968 default: 14969 return true; 14970 } 14971 } 14972 function serializeForm(form) { 14973 return new window.URLSearchParams( 14974 Array.from(new window.FormData(form)) 14975 ).toString(); 14976 } 14977 14978 // packages/widgets/build-module/blocks/legacy-widget/edit/form.mjs 14979 var import_jsx_runtime56 = __toESM(require_jsx_runtime(), 1); 14980 function Form({ 14981 title, 14982 isVisible, 14983 id, 14984 idBase, 14985 instance, 14986 isWide, 14987 onChangeInstance, 14988 onChangeHasPreview 14989 }) { 14990 const ref = (0, import_element35.useRef)(); 14991 const isMediumLargeViewport = (0, import_compose2.useViewportMatch)("small"); 14992 const outgoingInstances = (0, import_element35.useRef)(/* @__PURE__ */ new Set()); 14993 const incomingInstances = (0, import_element35.useRef)(/* @__PURE__ */ new Set()); 14994 const { createNotice } = (0, import_data2.useDispatch)(import_notices.store); 14995 (0, import_element35.useEffect)(() => { 14996 if (incomingInstances.current.has(instance)) { 14997 incomingInstances.current.delete(instance); 14998 return; 14999 } 15000 const control = new Control2({ 15001 id, 15002 idBase, 15003 instance, 15004 onChangeInstance(nextInstance) { 15005 outgoingInstances.current.add(instance); 15006 incomingInstances.current.add(nextInstance); 15007 onChangeInstance(nextInstance); 15008 }, 15009 onChangeHasPreview, 15010 onError(error2) { 15011 window.console.error(error2); 15012 createNotice( 15013 "error", 15014 (0, import_i18n6.sprintf)( 15015 /* translators: %s: the name of the affected block. */ 15016 (0, import_i18n6.__)( 15017 'The "%s" block was affected by errors and may not function properly. Check the developer tools for more details.' 15018 ), 15019 idBase || id 15020 ) 15021 ); 15022 } 15023 }); 15024 ref.current.appendChild(control.element); 15025 return () => { 15026 if (outgoingInstances.current.has(instance)) { 15027 outgoingInstances.current.delete(instance); 15028 return; 15029 } 15030 control.destroy(); 15031 }; 15032 }, [ 15033 id, 15034 idBase, 15035 instance, 15036 onChangeInstance, 15037 onChangeHasPreview, 15038 isMediumLargeViewport 15039 ]); 15040 if (isWide && isMediumLargeViewport) { 15041 return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)( 15042 "div", 15043 { 15044 className: clsx_default({ 15045 "wp-block-legacy-widget__container": isVisible 15046 }), 15047 children: [ 15048 isVisible && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("h3", { className: "wp-block-legacy-widget__edit-form-title", children: title }), 15049 /* @__PURE__ */ (0, import_jsx_runtime56.jsx)( 15050 import_components2.Popover, 15051 { 15052 focusOnMount: false, 15053 placement: "right", 15054 offset: 32, 15055 resize: false, 15056 flip: false, 15057 shift: true, 15058 children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)( 15059 "div", 15060 { 15061 ref, 15062 className: "wp-block-legacy-widget__edit-form", 15063 hidden: !isVisible 15064 } 15065 ) 15066 } 15067 ) 15068 ] 15069 } 15070 ); 15071 } 15072 return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)( 15073 "div", 15074 { 15075 ref, 15076 className: "wp-block-legacy-widget__edit-form", 15077 hidden: !isVisible, 15078 children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("h3", { className: "wp-block-legacy-widget__edit-form-title", children: title }) 15079 } 15080 ); 15081 } 15082 15083 // packages/widgets/build-module/blocks/legacy-widget/edit/preview.mjs 15084 var import_compose3 = __toESM(require_compose(), 1); 15085 var import_element36 = __toESM(require_element(), 1); 15086 var import_components3 = __toESM(require_components(), 1); 15087 var import_i18n7 = __toESM(require_i18n(), 1); 15088 var import_api_fetch2 = __toESM(require_api_fetch(), 1); 15089 var import_jsx_runtime57 = __toESM(require_jsx_runtime(), 1); 15090 function Preview({ idBase, instance, isVisible }) { 15091 const [isLoaded, setIsLoaded] = (0, import_element36.useState)(false); 15092 const [srcDoc, setSrcDoc] = (0, import_element36.useState)(""); 15093 (0, import_element36.useEffect)(() => { 15094 const abortController = typeof window.AbortController === "undefined" ? void 0 : new window.AbortController(); 15095 async function fetchPreviewHTML() { 15096 const restRoute = `/wp/v2/widget-types/$idBase}/render`; 15097 return await (0, import_api_fetch2.default)({ 15098 path: restRoute, 15099 method: "POST", 15100 signal: abortController?.signal, 15101 data: instance ? { instance } : {} 15102 }); 15103 } 15104 fetchPreviewHTML().then((response) => { 15105 setSrcDoc(response.preview); 15106 }).catch((error2) => { 15107 if ("AbortError" === error2.name) { 15108 return; 15109 } 15110 throw error2; 15111 }); 15112 return () => abortController?.abort(); 15113 }, [idBase, instance]); 15114 const ref = (0, import_compose3.useRefEffect)( 15115 (iframe) => { 15116 if (!isLoaded) { 15117 return; 15118 } 15119 function setHeight() { 15120 const height = Math.max( 15121 iframe.contentDocument.documentElement?.offsetHeight ?? 0, 15122 iframe.contentDocument.body?.offsetHeight ?? 0 15123 ); 15124 iframe.style.height = `$height !== 0 ? height : 100}px`; 15125 } 15126 const { IntersectionObserver: IntersectionObserver2 } = iframe.ownerDocument.defaultView; 15127 const intersectionObserver = new IntersectionObserver2( 15128 ([entry]) => { 15129 if (entry.isIntersecting) { 15130 setHeight(); 15131 } 15132 }, 15133 { 15134 threshold: 1 15135 } 15136 ); 15137 intersectionObserver.observe(iframe); 15138 iframe.addEventListener("load", setHeight); 15139 return () => { 15140 intersectionObserver.disconnect(); 15141 iframe.removeEventListener("load", setHeight); 15142 }; 15143 }, 15144 [isLoaded] 15145 ); 15146 return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_jsx_runtime57.Fragment, { children: [ 15147 isVisible && !isLoaded && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_components3.Placeholder, { children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_components3.Spinner, {}) }), 15148 /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( 15149 "div", 15150 { 15151 className: clsx_default("wp-block-legacy-widget__edit-preview", { 15152 "is-offscreen": !isVisible || !isLoaded 15153 }), 15154 children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_components3.Disabled, { children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( 15155 "iframe", 15156 { 15157 ref, 15158 className: "wp-block-legacy-widget__edit-preview-iframe", 15159 tabIndex: "-1", 15160 title: (0, import_i18n7.__)("Legacy Widget Preview"), 15161 srcDoc, 15162 onLoad: (event) => { 15163 event.target.contentDocument.body.style.overflow = "hidden"; 15164 setIsLoaded(true); 15165 }, 15166 height: 100 15167 } 15168 ) }) 15169 } 15170 ) 15171 ] }); 15172 } 15173 15174 // packages/widgets/build-module/blocks/legacy-widget/edit/no-preview.mjs 15175 var import_i18n8 = __toESM(require_i18n(), 1); 15176 var import_jsx_runtime58 = __toESM(require_jsx_runtime(), 1); 15177 function NoPreview({ name: name3 }) { 15178 return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "wp-block-legacy-widget__edit-no-preview", children: [ 15179 name3 && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("h3", { children: name3 }), 15180 /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("p", { children: (0, import_i18n8.__)("No preview available.") }) 15181 ] }); 15182 } 15183 15184 // packages/widgets/build-module/blocks/legacy-widget/edit/convert-to-blocks-button.mjs 15185 var import_data3 = __toESM(require_data(), 1); 15186 var import_block_editor2 = __toESM(require_block_editor(), 1); 15187 var import_components4 = __toESM(require_components(), 1); 15188 var import_blocks = __toESM(require_blocks(), 1); 15189 var import_i18n9 = __toESM(require_i18n(), 1); 15190 var import_jsx_runtime59 = __toESM(require_jsx_runtime(), 1); 15191 function ConvertToBlocksButton({ clientId, rawInstance }) { 15192 const { replaceBlocks } = (0, import_data3.useDispatch)(import_block_editor2.store); 15193 return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( 15194 import_components4.ToolbarButton, 15195 { 15196 onClick: () => { 15197 if (rawInstance.title) { 15198 replaceBlocks(clientId, [ 15199 (0, import_blocks.createBlock)("core/heading", { 15200 content: rawInstance.title 15201 }), 15202 ...(0, import_blocks.rawHandler)({ HTML: rawInstance.text }) 15203 ]); 15204 } else { 15205 replaceBlocks( 15206 clientId, 15207 (0, import_blocks.rawHandler)({ HTML: rawInstance.text }) 15208 ); 15209 } 15210 }, 15211 children: (0, import_i18n9.__)("Convert to blocks") 15212 } 15213 ); 15214 } 15215 15216 // packages/widgets/build-module/blocks/legacy-widget/edit/index.mjs 15217 var import_jsx_runtime60 = __toESM(require_jsx_runtime(), 1); 15218 function Edit(props) { 15219 const { id, idBase } = props.attributes; 15220 const { isWide = false } = props; 15221 const blockProps = (0, import_block_editor3.useBlockProps)({ 15222 className: clsx_default({ 15223 "is-wide-widget": isWide 15224 }) 15225 }); 15226 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 }) }); 15227 } 15228 function Empty({ attributes: { id, idBase }, setAttributes }) { 15229 return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)( 15230 import_components5.Placeholder, 15231 { 15232 icon: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_block_editor3.BlockIcon, { icon: brush_default }), 15233 label: (0, import_i18n10.__)("Legacy Widget"), 15234 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)( 15235 WidgetTypeSelector, 15236 { 15237 selectedId: id ?? idBase, 15238 onSelect: ({ selectedId, isMulti }) => { 15239 if (!selectedId) { 15240 setAttributes({ 15241 id: null, 15242 idBase: null, 15243 instance: null 15244 }); 15245 } else if (isMulti) { 15246 setAttributes({ 15247 id: null, 15248 idBase: selectedId, 15249 instance: {} 15250 }); 15251 } else { 15252 setAttributes({ 15253 id: selectedId, 15254 idBase: null, 15255 instance: null 15256 }); 15257 } 15258 } 15259 } 15260 ) }) }) 15261 } 15262 ); 15263 } 15264 function NotEmpty({ 15265 attributes: { id, idBase, instance }, 15266 setAttributes, 15267 clientId, 15268 isSelected, 15269 isWide = false 15270 }) { 15271 const [hasPreview, setHasPreview] = (0, import_element37.useState)(null); 15272 const widgetTypeId = id ?? idBase; 15273 const { record: widgetType, hasResolved: hasResolvedWidgetType } = (0, import_core_data2.useEntityRecord)("root", "widgetType", widgetTypeId); 15274 const setInstance = (0, import_element37.useCallback)((nextInstance) => { 15275 setAttributes({ instance: nextInstance }); 15276 }, []); 15277 if (!widgetType && hasResolvedWidgetType) { 15278 return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)( 15279 import_components5.Placeholder, 15280 { 15281 icon: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_block_editor3.BlockIcon, { icon: brush_default }), 15282 label: (0, import_i18n10.__)("Legacy Widget"), 15283 children: (0, import_i18n10.__)("Widget is missing.") 15284 } 15285 ); 15286 } 15287 if (!hasResolvedWidgetType) { 15288 return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_components5.Placeholder, { children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_components5.Spinner, {}) }); 15289 } 15290 const mode = idBase && !isSelected ? "preview" : "edit"; 15291 return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(import_jsx_runtime60.Fragment, { children: [ 15292 idBase === "text" && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_block_editor3.BlockControls, { group: "other", children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)( 15293 ConvertToBlocksButton, 15294 { 15295 clientId, 15296 rawInstance: instance.raw 15297 } 15298 ) }), 15299 /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_block_editor3.InspectorControls, { children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)( 15300 InspectorCard, 15301 { 15302 name: widgetType.name, 15303 description: widgetType.description 15304 } 15305 ) }), 15306 /* @__PURE__ */ (0, import_jsx_runtime60.jsx)( 15307 Form, 15308 { 15309 title: widgetType.name, 15310 isVisible: mode === "edit", 15311 id, 15312 idBase, 15313 instance, 15314 isWide, 15315 onChangeInstance: setInstance, 15316 onChangeHasPreview: setHasPreview 15317 } 15318 ), 15319 idBase && /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(import_jsx_runtime60.Fragment, { children: [ 15320 hasPreview === null && mode === "preview" && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_components5.Placeholder, { children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_components5.Spinner, {}) }), 15321 hasPreview === true && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)( 15322 Preview, 15323 { 15324 idBase, 15325 instance, 15326 isVisible: mode === "preview" 15327 } 15328 ), 15329 hasPreview === false && mode === "preview" && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(NoPreview, { name: widgetType.name }) 15330 ] }) 15331 ] }); 15332 } 15333 15334 // packages/widgets/build-module/blocks/legacy-widget/transforms.mjs 15335 var import_blocks2 = __toESM(require_blocks(), 1); 15336 var legacyWidgetTransforms = [ 15337 { 15338 block: "core/calendar", 15339 widget: "calendar" 15340 }, 15341 { 15342 block: "core/search", 15343 widget: "search" 15344 }, 15345 { 15346 block: "core/html", 15347 widget: "custom_html", 15348 transformBlock: ({ content }) => (0, import_blocks2.createBlock)("core/html", {}, [], [content]) 15349 }, 15350 { 15351 block: "core/archives", 15352 widget: "archives", 15353 transform: ({ count, dropdown }) => { 15354 return { 15355 displayAsDropdown: !!dropdown, 15356 showPostCounts: !!count 15357 }; 15358 } 15359 }, 15360 { 15361 block: "core/latest-posts", 15362 widget: "recent-posts", 15363 transform: ({ show_date: displayPostDate, number }) => { 15364 return { 15365 displayPostDate: !!displayPostDate, 15366 postsToShow: number 15367 }; 15368 } 15369 }, 15370 { 15371 block: "core/latest-comments", 15372 widget: "recent-comments", 15373 transform: ({ number }) => { 15374 return { 15375 commentsToShow: number 15376 }; 15377 } 15378 }, 15379 { 15380 block: "core/tag-cloud", 15381 widget: "tag_cloud", 15382 transform: ({ taxonomy, count }) => { 15383 return { 15384 showTagCounts: !!count, 15385 taxonomy 15386 }; 15387 } 15388 }, 15389 { 15390 block: "core/categories", 15391 widget: "categories", 15392 transform: ({ count, dropdown, hierarchical }) => { 15393 return { 15394 displayAsDropdown: !!dropdown, 15395 showPostCounts: !!count, 15396 showHierarchy: !!hierarchical 15397 }; 15398 } 15399 }, 15400 { 15401 block: "core/audio", 15402 widget: "media_audio", 15403 transform: ({ url, preload, loop, attachment_id: id }) => { 15404 return { 15405 src: url, 15406 id, 15407 preload, 15408 loop 15409 }; 15410 } 15411 }, 15412 { 15413 block: "core/video", 15414 widget: "media_video", 15415 transform: ({ url, preload, loop, attachment_id: id }) => { 15416 return { 15417 src: url, 15418 id, 15419 preload, 15420 loop 15421 }; 15422 } 15423 }, 15424 { 15425 block: "core/image", 15426 widget: "media_image", 15427 transform: ({ 15428 alt, 15429 attachment_id: id, 15430 caption, 15431 height, 15432 link_classes: linkClass, 15433 link_rel: rel, 15434 link_target_blank: targetBlack, 15435 link_type: linkDestination, 15436 link_url: link, 15437 size: sizeSlug, 15438 url, 15439 width 15440 }) => { 15441 return { 15442 alt, 15443 caption, 15444 height, 15445 id, 15446 link, 15447 linkClass, 15448 linkDestination, 15449 linkTarget: targetBlack ? "_blank" : void 0, 15450 rel, 15451 sizeSlug, 15452 url, 15453 width 15454 }; 15455 } 15456 }, 15457 { 15458 block: "core/gallery", 15459 widget: "media_gallery", 15460 transform: ({ ids, link_type: linkTo, size: size4, number }) => { 15461 return { 15462 ids, 15463 columns: number, 15464 linkTo, 15465 sizeSlug: size4, 15466 images: ids.map((id) => ({ 15467 id 15468 })) 15469 }; 15470 } 15471 }, 15472 { 15473 block: "core/rss", 15474 widget: "rss", 15475 transform: ({ 15476 url, 15477 show_author: displayAuthor, 15478 show_date: displayDate, 15479 show_summary: displayExcerpt, 15480 items 15481 }) => { 15482 return { 15483 feedURL: url, 15484 displayAuthor: !!displayAuthor, 15485 displayDate: !!displayDate, 15486 displayExcerpt: !!displayExcerpt, 15487 itemsToShow: items 15488 }; 15489 } 15490 } 15491 ].map(({ block, widget, transform, transformBlock }) => { 15492 return { 15493 type: "block", 15494 blocks: [block], 15495 isMatch: ({ idBase, instance }) => { 15496 return idBase === widget && !!instance?.raw; 15497 }, 15498 transform: ({ instance }) => { 15499 const transformedBlock = transformBlock ? transformBlock(instance.raw) : (0, import_blocks2.createBlock)( 15500 block, 15501 transform ? transform(instance.raw) : void 0 15502 ); 15503 if (!instance.raw?.title) { 15504 return transformedBlock; 15505 } 15506 return [ 15507 (0, import_blocks2.createBlock)("core/heading", { 15508 content: instance.raw.title 15509 }), 15510 transformedBlock 15511 ]; 15512 } 15513 }; 15514 }); 15515 var transforms = { 15516 to: legacyWidgetTransforms 15517 }; 15518 var transforms_default = transforms; 15519 15520 // packages/widgets/build-module/blocks/legacy-widget/index.mjs 15521 var { name } = block_default; 15522 var settings = { 15523 icon: widget_default, 15524 edit: Edit, 15525 transforms: transforms_default 15526 }; 15527 15528 // packages/widgets/build-module/blocks/widget-group/index.mjs 15529 var widget_group_exports = {}; 15530 __export(widget_group_exports, { 15531 metadata: () => block_default2, 15532 name: () => name2, 15533 settings: () => settings2 15534 }); 15535 var import_i18n12 = __toESM(require_i18n(), 1); 15536 var import_blocks3 = __toESM(require_blocks(), 1); 15537 15538 // packages/widgets/build-module/blocks/widget-group/block.json 15539 var block_default2 = { 15540 $schema: "https://schemas.wp.org/trunk/block.json", 15541 apiVersion: 3, 15542 name: "core/widget-group", 15543 title: "Widget Group", 15544 category: "widgets", 15545 attributes: { 15546 title: { 15547 type: "string" 15548 } 15549 }, 15550 supports: { 15551 html: false, 15552 inserter: true, 15553 customClassName: true, 15554 reusable: false 15555 }, 15556 editorStyle: "wp-block-widget-group-editor", 15557 style: "wp-block-widget-group" 15558 }; 15559 15560 // packages/widgets/build-module/blocks/widget-group/edit.mjs 15561 var import_block_editor4 = __toESM(require_block_editor(), 1); 15562 var import_components6 = __toESM(require_components(), 1); 15563 var import_i18n11 = __toESM(require_i18n(), 1); 15564 var import_data4 = __toESM(require_data(), 1); 15565 var import_jsx_runtime61 = __toESM(require_jsx_runtime(), 1); 15566 function Edit2(props) { 15567 const { clientId } = props; 15568 const hasInnerBlocks = (0, import_data4.useSelect)( 15569 (select2) => select2(import_block_editor4.store).getBlockCount(clientId) > 0, 15570 [clientId] 15571 ); 15572 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 }) }); 15573 } 15574 function PlaceholderContent({ clientId }) { 15575 return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_jsx_runtime61.Fragment, { children: [ 15576 /* @__PURE__ */ (0, import_jsx_runtime61.jsx)( 15577 import_components6.Placeholder, 15578 { 15579 className: "wp-block-widget-group__placeholder", 15580 icon: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_block_editor4.BlockIcon, { icon: group_default }), 15581 label: (0, import_i18n11.__)("Widget Group"), 15582 children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_block_editor4.ButtonBlockAppender, { rootClientId: clientId }) 15583 } 15584 ), 15585 /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_block_editor4.InnerBlocks, { renderAppender: false }) 15586 ] }); 15587 } 15588 function PreviewContent({ attributes, setAttributes }) { 15589 return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_jsx_runtime61.Fragment, { children: [ 15590 /* @__PURE__ */ (0, import_jsx_runtime61.jsx)( 15591 import_block_editor4.RichText, 15592 { 15593 tagName: "h2", 15594 identifier: "title", 15595 className: "widget-title", 15596 allowedFormats: [], 15597 placeholder: (0, import_i18n11.__)("Title"), 15598 value: attributes.title ?? "", 15599 onChange: (title) => setAttributes({ title }) 15600 } 15601 ), 15602 /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_block_editor4.InnerBlocks, {}) 15603 ] }); 15604 } 15605 15606 // packages/widgets/build-module/blocks/widget-group/save.mjs 15607 var import_block_editor5 = __toESM(require_block_editor(), 1); 15608 var import_jsx_runtime62 = __toESM(require_jsx_runtime(), 1); 15609 function save({ attributes }) { 15610 return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_jsx_runtime62.Fragment, { children: [ 15611 /* @__PURE__ */ (0, import_jsx_runtime62.jsx)( 15612 import_block_editor5.RichText.Content, 15613 { 15614 tagName: "h2", 15615 className: "widget-title", 15616 value: attributes.title 15617 } 15618 ), 15619 /* @__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, {}) }) 15620 ] }); 15621 } 15622 15623 // packages/widgets/build-module/blocks/widget-group/deprecated.mjs 15624 var import_block_editor6 = __toESM(require_block_editor(), 1); 15625 var import_jsx_runtime63 = __toESM(require_jsx_runtime(), 1); 15626 var v1 = { 15627 attributes: { 15628 title: { 15629 type: "string" 15630 } 15631 }, 15632 supports: { 15633 html: false, 15634 inserter: true, 15635 customClassName: true, 15636 reusable: false 15637 }, 15638 save({ attributes }) { 15639 return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_jsx_runtime63.Fragment, { children: [ 15640 /* @__PURE__ */ (0, import_jsx_runtime63.jsx)( 15641 import_block_editor6.RichText.Content, 15642 { 15643 tagName: "h2", 15644 className: "widget-title", 15645 value: attributes.title 15646 } 15647 ), 15648 /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_block_editor6.InnerBlocks.Content, {}) 15649 ] }); 15650 } 15651 }; 15652 var deprecated_default = [v1]; 15653 15654 // packages/widgets/build-module/blocks/widget-group/index.mjs 15655 var { name: name2 } = block_default2; 15656 var settings2 = { 15657 title: (0, import_i18n12.__)("Widget Group"), 15658 description: (0, import_i18n12.__)( 15659 "Create a classic widget layout with a title that\u2019s styled by your theme for your widget areas." 15660 ), 15661 icon: group_default, 15662 __experimentalLabel: ({ name: label }) => label, 15663 edit: Edit2, 15664 save, 15665 transforms: { 15666 from: [ 15667 { 15668 type: "block", 15669 isMultiBlock: true, 15670 blocks: ["*"], 15671 isMatch(attributes, blocks) { 15672 return !blocks.some( 15673 (block) => block.name === "core/widget-group" 15674 ); 15675 }, 15676 __experimentalConvert(blocks) { 15677 let innerBlocks = blocks.map( 15678 (block) => (0, import_blocks3.cloneSanitizedBlock)(block) 15679 ); 15680 const firstHeadingBlock = innerBlocks[0].name === "core/heading" ? innerBlocks[0] : null; 15681 innerBlocks = innerBlocks.filter( 15682 (block) => block !== firstHeadingBlock 15683 ); 15684 return (0, import_blocks3.createBlock)( 15685 "core/widget-group", 15686 { 15687 ...firstHeadingBlock && { 15688 title: firstHeadingBlock.attributes.content 15689 } 15690 }, 15691 innerBlocks 15692 ); 15693 } 15694 } 15695 ] 15696 }, 15697 deprecated: deprecated_default 15698 }; 15699 15700 // packages/widgets/build-module/components/move-to-widget-area/index.mjs 15701 var import_components7 = __toESM(require_components(), 1); 15702 var import_i18n13 = __toESM(require_i18n(), 1); 15703 var import_jsx_runtime64 = __toESM(require_jsx_runtime(), 1); 15704 function MoveToWidgetArea({ 15705 currentWidgetAreaId, 15706 widgetAreas, 15707 onSelect 15708 }) { 15709 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)( 15710 import_components7.DropdownMenu, 15711 { 15712 icon: move_to_default, 15713 label: (0, import_i18n13.__)("Move to widget area"), 15714 toggleProps, 15715 children: ({ onClose }) => /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_components7.MenuGroup, { label: (0, import_i18n13.__)("Move to"), children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)( 15716 import_components7.MenuItemsChoice, 15717 { 15718 choices: widgetAreas.map( 15719 (widgetArea) => ({ 15720 value: widgetArea.id, 15721 label: widgetArea.name, 15722 info: widgetArea.description 15723 }) 15724 ), 15725 value: currentWidgetAreaId, 15726 onSelect: (value) => { 15727 onSelect(value); 15728 onClose(); 15729 } 15730 } 15731 ) }) 15732 } 15733 ) }) }); 15734 } 15735 15736 // packages/widgets/build-module/utils.mjs 15737 function getWidgetIdFromBlock(block) { 15738 return block.attributes.__internalWidgetId; 15739 } 15740 function addWidgetIdToBlock(block, widgetId) { 15741 return { 15742 ...block, 15743 attributes: { 15744 ...block.attributes || {}, 15745 __internalWidgetId: widgetId 15746 } 15747 }; 15748 } 15749 15750 // packages/widgets/build-module/register-legacy-widget-variations.mjs 15751 var import_data5 = __toESM(require_data(), 1); 15752 var import_core_data3 = __toESM(require_core_data(), 1); 15753 var import_blocks4 = __toESM(require_blocks(), 1); 15754 function registerLegacyWidgetVariations(settings3) { 15755 const unsubscribe = (0, import_data5.subscribe)(() => { 15756 const hiddenIds = settings3?.widgetTypesToHideFromLegacyWidgetBlock ?? []; 15757 const widgetTypes = (0, import_data5.select)(import_core_data3.store).getWidgetTypes({ per_page: -1 })?.filter((widgetType) => !hiddenIds.includes(widgetType.id)); 15758 if (widgetTypes) { 15759 unsubscribe(); 15760 (0, import_data5.dispatch)(import_blocks4.store).addBlockVariations( 15761 "core/legacy-widget", 15762 widgetTypes.map((widgetType) => ({ 15763 name: widgetType.id, 15764 title: widgetType.name, 15765 description: widgetType.description, 15766 attributes: widgetType.is_multi ? { 15767 idBase: widgetType.id, 15768 instance: {} 15769 } : { 15770 id: widgetType.id 15771 } 15772 })) 15773 ); 15774 } 15775 }); 15776 } 15777 15778 // packages/widgets/build-module/index.mjs 15779 function registerLegacyWidgetBlock(supports = {}) { 15780 const { metadata, settings: settings3, name: name3 } = legacy_widget_exports; 15781 (0, import_blocks5.registerBlockType)( 15782 { name: name3, ...metadata }, 15783 { 15784 ...settings3, 15785 supports: { 15786 ...settings3.supports, 15787 ...supports 15788 } 15789 } 15790 ); 15791 } 15792 function registerWidgetGroupBlock(supports = {}) { 15793 const { metadata, settings: settings3, name: name3 } = widget_group_exports; 15794 (0, import_blocks5.registerBlockType)( 15795 { name: name3, ...metadata }, 15796 { 15797 ...settings3, 15798 supports: { 15799 ...settings3.supports, 15800 ...supports 15801 } 15802 } 15803 ); 15804 } 15805 return __toCommonJS(index_exports); 15806 })(); 15807 /*! Bundled license information: 15808 15809 use-sync-external-store/cjs/use-sync-external-store-shim.development.js: 15810 (** 15811 * @license React 15812 * use-sync-external-store-shim.development.js 15813 * 15814 * Copyright (c) Meta Platforms, Inc. and affiliates. 15815 * 15816 * This source code is licensed under the MIT license found in the 15817 * LICENSE file in the root directory of this source tree. 15818 *) 15819 15820 use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js: 15821 (** 15822 * @license React 15823 * use-sync-external-store-shim/with-selector.development.js 15824 * 15825 * Copyright (c) Meta Platforms, Inc. and affiliates. 15826 * 15827 * This source code is licensed under the MIT license found in the 15828 * LICENSE file in the root directory of this source tree. 15829 *) 15830 */ 15831 (window.wp ||= {}).widgets = wp.widgets; 15832 })();
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated : Wed Nov 11 08:20:02 2026 | Cross-referenced by PHPXref |