| [ Index ] |
PHP Cross Reference of WordPress Trunk (Updated Daily) |
[Summary view] [Print] [Text view]
1 (function() { 2 "use strict"; 3 var wp; 4 (wp ||= {}).formatLibrary = (() => { 5 var __create = Object.create; 6 var __defProp = Object.defineProperty; 7 var __getOwnPropDesc = Object.getOwnPropertyDescriptor; 8 var __getOwnPropNames = Object.getOwnPropertyNames; 9 var __getProtoOf = Object.getPrototypeOf; 10 var __hasOwnProp = Object.prototype.hasOwnProperty; 11 var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { 12 get: (a, b) => (typeof require !== "undefined" ? require : a)[b] 13 }) : x)(function(x) { 14 if (typeof require !== "undefined") return require.apply(this, arguments); 15 throw Error('Dynamic require of "' + x + '" is not supported'); 16 }); 17 var __commonJS = (cb, mod) => function __require2() { 18 return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; 19 }; 20 var __export = (target, all) => { 21 for (var name16 in all) 22 __defProp(target, name16, { get: all[name16], enumerable: true }); 23 }; 24 var __copyProps = (to, from, except, desc) => { 25 if (from && typeof from === "object" || typeof from === "function") { 26 for (let key of __getOwnPropNames(from)) 27 if (!__hasOwnProp.call(to, key) && key !== except) 28 __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); 29 } 30 return to; 31 }; 32 var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( 33 // If the importer is in node compatibility mode or this is not an ESM 34 // file that has been converted to a CommonJS file using a Babel- 35 // compatible transform (i.e. "__esModule" has not been set), then set 36 // "default" to the CommonJS "module.exports" for node compatibility. 37 isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, 38 mod 39 )); 40 41 // package-external:@wordpress/rich-text 42 var require_rich_text = __commonJS({ 43 "package-external:@wordpress/rich-text"(exports, module) { 44 module.exports = window.wp.richText; 45 } 46 }); 47 48 // package-external:@wordpress/i18n 49 var require_i18n = __commonJS({ 50 "package-external:@wordpress/i18n"(exports, module) { 51 module.exports = window.wp.i18n; 52 } 53 }); 54 55 // package-external:@wordpress/block-editor 56 var require_block_editor = __commonJS({ 57 "package-external:@wordpress/block-editor"(exports, module) { 58 module.exports = window.wp.blockEditor; 59 } 60 }); 61 62 // package-external:@wordpress/element 63 var require_element = __commonJS({ 64 "package-external:@wordpress/element"(exports, module) { 65 module.exports = window.wp.element; 66 } 67 }); 68 69 // package-external:@wordpress/primitives 70 var require_primitives = __commonJS({ 71 "package-external:@wordpress/primitives"(exports, module) { 72 module.exports = window.wp.primitives; 73 } 74 }); 75 76 // vendor-external:react/jsx-runtime 77 var require_jsx_runtime = __commonJS({ 78 "vendor-external:react/jsx-runtime"(exports, module) { 79 module.exports = window.ReactJSXRuntime; 80 } 81 }); 82 83 // package-external:@wordpress/components 84 var require_components = __commonJS({ 85 "package-external:@wordpress/components"(exports, module) { 86 module.exports = window.wp.components; 87 } 88 }); 89 90 // vendor-external:react 91 var require_react = __commonJS({ 92 "vendor-external:react"(exports, module) { 93 module.exports = window.React; 94 } 95 }); 96 97 // vendor-external:react-dom 98 var require_react_dom = __commonJS({ 99 "vendor-external:react-dom"(exports, module) { 100 module.exports = window.ReactDOM; 101 } 102 }); 103 104 // 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 105 var require_use_sync_external_store_shim_development = __commonJS({ 106 "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) { 107 "use strict"; 108 (function() { 109 function is(x, y) { 110 return x === y && (0 !== x || 1 / x === 1 / y) || x !== x && y !== y; 111 } 112 function useSyncExternalStore$2(subscribe, getSnapshot) { 113 didWarnOld18Alpha || void 0 === React101.startTransition || (didWarnOld18Alpha = true, console.error( 114 "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." 115 )); 116 var value = getSnapshot(); 117 if (!didWarnUncachedGetSnapshot) { 118 var cachedValue = getSnapshot(); 119 objectIs(value, cachedValue) || (console.error( 120 "The result of getSnapshot should be cached to avoid an infinite loop" 121 ), didWarnUncachedGetSnapshot = true); 122 } 123 cachedValue = useState32({ 124 inst: { value, getSnapshot } 125 }); 126 var inst = cachedValue[0].inst, forceUpdate = cachedValue[1]; 127 useLayoutEffect4( 128 function() { 129 inst.value = value; 130 inst.getSnapshot = getSnapshot; 131 checkIfSnapshotChanged(inst) && forceUpdate({ inst }); 132 }, 133 [subscribe, value, getSnapshot] 134 ); 135 useEffect21( 136 function() { 137 checkIfSnapshotChanged(inst) && forceUpdate({ inst }); 138 return subscribe(function() { 139 checkIfSnapshotChanged(inst) && forceUpdate({ inst }); 140 }); 141 }, 142 [subscribe] 143 ); 144 useDebugValue2(value); 145 return value; 146 } 147 function checkIfSnapshotChanged(inst) { 148 var latestGetSnapshot = inst.getSnapshot; 149 inst = inst.value; 150 try { 151 var nextValue = latestGetSnapshot(); 152 return !objectIs(inst, nextValue); 153 } catch (error2) { 154 return true; 155 } 156 } 157 function useSyncExternalStore$1(subscribe, getSnapshot) { 158 return getSnapshot(); 159 } 160 "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error()); 161 var React101 = require_react(), objectIs = "function" === typeof Object.is ? Object.is : is, useState32 = React101.useState, useEffect21 = React101.useEffect, useLayoutEffect4 = React101.useLayoutEffect, useDebugValue2 = React101.useDebugValue, didWarnOld18Alpha = false, didWarnUncachedGetSnapshot = false, shim = "undefined" === typeof window || "undefined" === typeof window.document || "undefined" === typeof window.document.createElement ? useSyncExternalStore$1 : useSyncExternalStore$2; 162 exports.useSyncExternalStore = void 0 !== React101.useSyncExternalStore ? React101.useSyncExternalStore : shim; 163 "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error()); 164 })(); 165 } 166 }); 167 168 // node_modules/.store/use-sync-external-store@1.7.0-jHNF5n8408rkWhZ5NHKclA/node_modules/use-sync-external-store/shim/index.js 169 var require_shim = __commonJS({ 170 "node_modules/.store/use-sync-external-store@1.7.0-jHNF5n8408rkWhZ5NHKclA/node_modules/use-sync-external-store/shim/index.js"(exports, module) { 171 "use strict"; 172 if (false) { 173 module.exports = null; 174 } else { 175 module.exports = require_use_sync_external_store_shim_development(); 176 } 177 } 178 }); 179 180 // 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 181 var require_with_selector_development = __commonJS({ 182 "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) { 183 "use strict"; 184 (function() { 185 function is(x, y) { 186 return x === y && (0 !== x || 1 / x === 1 / y) || x !== x && y !== y; 187 } 188 "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error()); 189 var React101 = require_react(), shim = require_shim(), objectIs = "function" === typeof Object.is ? Object.is : is, useSyncExternalStore3 = shim.useSyncExternalStore, useRef46 = React101.useRef, useEffect21 = React101.useEffect, useMemo31 = React101.useMemo, useDebugValue2 = React101.useDebugValue; 190 exports.useSyncExternalStoreWithSelector = function(subscribe, getSnapshot, getServerSnapshot, selector, isEqual) { 191 var instRef = useRef46(null); 192 if (null === instRef.current) { 193 var inst = { hasValue: false, value: null }; 194 instRef.current = inst; 195 } else inst = instRef.current; 196 instRef = useMemo31( 197 function() { 198 function memoizedSelector(nextSnapshot) { 199 if (!hasMemo) { 200 hasMemo = true; 201 memoizedSnapshot = nextSnapshot; 202 nextSnapshot = selector(nextSnapshot); 203 if (void 0 !== isEqual && inst.hasValue) { 204 var currentSelection = inst.value; 205 if (isEqual(currentSelection, nextSnapshot)) 206 return memoizedSelection = currentSelection; 207 } 208 return memoizedSelection = nextSnapshot; 209 } 210 currentSelection = memoizedSelection; 211 if (objectIs(memoizedSnapshot, nextSnapshot)) 212 return currentSelection; 213 var nextSelection = selector(nextSnapshot); 214 if (void 0 !== isEqual && isEqual(currentSelection, nextSelection)) 215 return memoizedSnapshot = nextSnapshot, currentSelection; 216 memoizedSnapshot = nextSnapshot; 217 return memoizedSelection = nextSelection; 218 } 219 var hasMemo = false, memoizedSnapshot, memoizedSelection, maybeGetServerSnapshot = void 0 === getServerSnapshot ? null : getServerSnapshot; 220 return [ 221 function() { 222 return memoizedSelector(getSnapshot()); 223 }, 224 null === maybeGetServerSnapshot ? void 0 : function() { 225 return memoizedSelector(maybeGetServerSnapshot()); 226 } 227 ]; 228 }, 229 [getSnapshot, getServerSnapshot, selector, isEqual] 230 ); 231 var value = useSyncExternalStore3(subscribe, instRef[0], instRef[1]); 232 useEffect21( 233 function() { 234 inst.hasValue = true; 235 inst.value = value; 236 }, 237 [value] 238 ); 239 useDebugValue2(value); 240 return value; 241 }; 242 "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error()); 243 })(); 244 } 245 }); 246 247 // node_modules/.store/use-sync-external-store@1.7.0-jHNF5n8408rkWhZ5NHKclA/node_modules/use-sync-external-store/shim/with-selector.js 248 var require_with_selector = __commonJS({ 249 "node_modules/.store/use-sync-external-store@1.7.0-jHNF5n8408rkWhZ5NHKclA/node_modules/use-sync-external-store/shim/with-selector.js"(exports, module) { 250 "use strict"; 251 if (false) { 252 module.exports = null; 253 } else { 254 module.exports = require_with_selector_development(); 255 } 256 } 257 }); 258 259 // package-external:@wordpress/compose 260 var require_compose = __commonJS({ 261 "package-external:@wordpress/compose"(exports, module) { 262 module.exports = window.wp.compose; 263 } 264 }); 265 266 // package-external:@wordpress/a11y 267 var require_a11y = __commonJS({ 268 "package-external:@wordpress/a11y"(exports, module) { 269 module.exports = window.wp.a11y; 270 } 271 }); 272 273 // package-external:@wordpress/url 274 var require_url = __commonJS({ 275 "package-external:@wordpress/url"(exports, module) { 276 module.exports = window.wp.url; 277 } 278 }); 279 280 // package-external:@wordpress/html-entities 281 var require_html_entities = __commonJS({ 282 "package-external:@wordpress/html-entities"(exports, module) { 283 module.exports = window.wp.htmlEntities; 284 } 285 }); 286 287 // package-external:@wordpress/data 288 var require_data = __commonJS({ 289 "package-external:@wordpress/data"(exports, module) { 290 module.exports = window.wp.data; 291 } 292 }); 293 294 // packages/format-library/build-module/index.mjs 295 var import_rich_text18 = __toESM(require_rich_text(), 1); 296 297 // packages/format-library/build-module/bold/index.mjs 298 var import_i18n = __toESM(require_i18n(), 1); 299 var import_rich_text = __toESM(require_rich_text(), 1); 300 var import_block_editor = __toESM(require_block_editor(), 1); 301 302 // packages/icons/build-module/icon/index.mjs 303 var import_element = __toESM(require_element(), 1); 304 var icon_default = (0, import_element.forwardRef)( 305 ({ icon: icon2, size: size4 = 24, style, ...props }, ref) => { 306 const intrinsicStyle = icon2.props.style; 307 const mergedStyle = intrinsicStyle || style ? { ...intrinsicStyle, ...style } : void 0; 308 return (0, import_element.cloneElement)(icon2, { 309 width: size4, 310 height: size4, 311 ...props, 312 // Merge styles so the icon's intrinsic style (e.g. `fill: none` on 313 // stroke-based icons) is preserved unless the consumer overrides 314 // the same property explicitly. 315 ...mergedStyle ? { style: mergedStyle } : {}, 316 ref 317 }); 318 } 319 ); 320 321 // packages/icons/build-module/library/button.mjs 322 var import_primitives = __toESM(require_primitives(), 1); 323 var import_jsx_runtime = __toESM(require_jsx_runtime(), 1); 324 var button_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: "M8 11.75H16M5 16.25H19C19.6904 16.25 20.25 15.6904 20.25 15V8.5C20.25 7.80964 19.6904 7.25 19 7.25H5C4.30964 7.25 3.75 7.80964 3.75 8.5V15C3.75 15.6904 4.30964 16.25 5 16.25Z" }) }); 325 326 // packages/icons/build-module/library/check.mjs 327 var import_primitives2 = __toESM(require_primitives(), 1); 328 var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1); 329 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" }) }); 330 331 // packages/icons/build-module/library/chevron-down.mjs 332 var import_primitives3 = __toESM(require_primitives(), 1); 333 var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1); 334 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" }) }); 335 336 // packages/icons/build-module/library/code.mjs 337 var import_primitives4 = __toESM(require_primitives(), 1); 338 var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1); 339 var code_default = /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives4.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives4.Path, { d: "M7.99997 7L3.70708 11.2929C3.31655 11.6834 3.31655 12.3166 3.70708 12.7071L7.99997 17M16 17L20.2929 12.7071C20.6834 12.3166 20.6834 11.6834 20.2929 11.2929L16 7", strokeLinejoin: "round" }) }); 340 341 // packages/icons/build-module/library/color.mjs 342 var import_primitives5 = __toESM(require_primitives(), 1); 343 var import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1); 344 var color_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: "M17.25 14C17.25 16.8995 14.8995 19.25 12 19.25C9.10051 19.25 6.75 16.8995 6.75 14C6.75 11.1005 10 7.37 12 5.12C14 7.37 17.25 11.1005 17.25 14Z" }) }); 345 346 // packages/icons/build-module/library/error.mjs 347 var import_primitives6 = __toESM(require_primitives(), 1); 348 var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1); 349 var error_default = /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives6.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives6.Path, { d: "M12 9L12 14M12 15.5V17M11.1284 5.04947L3.83827 18.0097C3.46331 18.6763 3.94502 19.5 4.70985 19.5H19.2902C20.055 19.5 20.5367 18.6763 20.1617 18.0097L12.8716 5.04947C12.4893 4.36982 11.5107 4.36982 11.1284 5.04947Z" }) }); 350 351 // packages/icons/build-module/library/format-bold.mjs 352 var import_primitives7 = __toESM(require_primitives(), 1); 353 var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1); 354 var format_bold_default = /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_primitives7.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [ 355 /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_primitives7.Path, { d: "M7.75 11.5V18H13.25C15.0449 18 16.5 16.5449 16.5 14.75C16.5 12.9551 15.0449 11.5 13.25 11.5H13M7.75 11.5V6H12.7441C14.2661 6 15.5 7.23387 15.5 8.75592C15.5 10.1718 14.4088 11.3591 13 11.5M7.75 11.5H13" }), 356 /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_primitives7.Path, { d: "M8.25 11.75V17.5H12.8642C14.5503 17.5 15.8744 16.0557 15.7283 14.3759C15.5992 12.8903 14.3554 11.75 12.8642 11.75H8.25ZM8.25 11.75V11.25M8.25 11.25V6.5H12.625C13.9367 6.5 15 7.56332 15 8.875C15 10.1867 13.9367 11.25 12.625 11.25H8.25Z" }) 357 ] }); 358 359 // packages/icons/build-module/library/format-italic.mjs 360 var import_primitives8 = __toESM(require_primitives(), 1); 361 var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1); 362 var format_italic_default = /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_primitives8.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_primitives8.Path, { d: "M11 19L13.5 5" }) }); 363 364 // packages/icons/build-module/library/format-strikethrough.mjs 365 var import_primitives9 = __toESM(require_primitives(), 1); 366 var import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1); 367 var format_strikethrough_default = /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_primitives9.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_primitives9.Path, { d: "M9 16.1554C12 18.02 15 16.5283 15 14.2908C15 13.6314 14.6839 12.999 14.1213 12.5328C14.108 12.5217 14.0945 12.5108 14.081 12.5M9 9.31845C9 7.49773 11.4313 6.3247 13.9199 7.4278M5.5 12.5H14.081M18.5 12.5H14.081", strokeLinecap: "square" }) }); 368 369 // packages/icons/build-module/library/help.mjs 370 var import_primitives10 = __toESM(require_primitives(), 1); 371 var import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1); 372 var help_default = /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_primitives10.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [ 373 /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_primitives10.Path, { d: "M9.75 10.25C9.75 9.00736 10.7574 8 12 8C13.2426 8 14.25 9.00736 14.25 10.25C14.25 11.4083 13.3748 12.3621 12.2496 12.4863C12.1124 12.5015 12 12.6119 12 12.75V14M12 15V16.5" }), 374 /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_primitives10.Path, { d: "M19.25 12C19.25 16.0041 16.0041 19.25 12 19.25C7.99594 19.25 4.75 16.0041 4.75 12C4.75 7.99594 7.99594 4.75 12 4.75C16.0041 4.75 19.25 7.99594 19.25 12Z", strokeLinejoin: "round" }) 375 ] }); 376 377 // packages/icons/build-module/library/inline-image.mjs 378 var import_primitives11 = __toESM(require_primitives(), 1); 379 var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1); 380 var inline_image_default = /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_primitives11.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_primitives11.Path, { d: "M13.25 11.3197L11.4155 9.48453C11.3765 9.44547 11.3132 9.44546 11.2741 9.48452L9.05837 11.7003C9.02448 11.7341 8.97132 11.7392 8.93163 11.7124L7.0648 10.4495C7.03003 10.426 6.98426 10.4267 6.95022 10.4513L4.75 12.0405M13.25 11.3197V7C13.25 6.30964 12.6904 5.75 12 5.75H6C5.30964 5.75 4.75 6.30965 4.75 7V12.0405M13.25 11.3197V13C13.25 13.6904 12.6904 14.25 12 14.25H6C5.30964 14.25 4.75 13.6904 4.75 13V12.0405M16 14H20M4 18H20" }) }); 381 382 // packages/icons/build-module/library/language.mjs 383 var import_primitives12 = __toESM(require_primitives(), 1); 384 var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1); 385 var language_default = /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_primitives12.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [ 386 /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_primitives12.Path, { d: "M3 6H9.5M16 6H13.5M9.5 6V3M9.5 6H13.5M13.5 6C13.0477 7.24386 11.7361 9.79194 9.44037 12.5512M5.5 16.5C7.04336 15.2139 8.35238 13.8588 9.44037 12.5512M6.5 8C6.9232 8.9522 7.93743 10.7507 9.44037 12.5512M12.5 15.5C11.3314 14.6235 10.305 13.587 9.44037 12.5512" }), 387 /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_primitives12.Path, { d: "M13.75 20V19.75L14.6667 17M14.6667 17L16.75 10.75H17.25L19.3333 17L20.25 19.75V20M19.3333 17H14.6667" }) 388 ] }); 389 390 // packages/icons/build-module/library/link.mjs 391 var import_primitives13 = __toESM(require_primitives(), 1); 392 var import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1); 393 var link_default = /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_primitives13.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_runtime13.jsx)(import_primitives13.Path, { d: "M9.5 12L14.5 12M10 7.75H8.25C5.90279 7.75 4 9.65279 4 12C4 14.3472 5.90279 16.25 8.25 16.25H10M14 16.25H15.75C18.0972 16.25 20 14.3472 20 12C20 9.65279 18.0972 7.75 15.75 7.75L14 7.75" }) }); 394 395 // packages/icons/build-module/library/math.mjs 396 var import_primitives14 = __toESM(require_primitives(), 1); 397 var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1); 398 var math_default = /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_primitives14.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_runtime14.jsx)(import_primitives14.Path, { d: "M3 14H5L6.8916 16.3645C6.93974 16.4247 7.03496 16.4101 7.06289 16.3383L10.2521 8.13755C10.4015 7.75318 10.7717 7.5 11.1841 7.5H19M17 11L14.5 13.5M12 16L14.5 13.5M14.5 13.5L17 16M14.5 13.5L12 11" }) }); 399 400 // packages/icons/build-module/library/published.mjs 401 var import_primitives15 = __toESM(require_primitives(), 1); 402 var import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1); 403 var published_default = /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_primitives15.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [ 404 /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_primitives15.Path, { d: "M12 19.25C16.0041 19.25 19.25 16.0041 19.25 12C19.25 7.99594 16.0041 4.75 12 4.75C7.99594 4.75 4.75 7.99594 4.75 12C4.75 16.0041 7.99594 19.25 12 19.25Z", strokeLinejoin: "round" }), 405 /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_primitives15.Path, { d: "M9 12L11 14L15 10" }) 406 ] }); 407 408 // packages/icons/build-module/library/subscript.mjs 409 var import_primitives16 = __toESM(require_primitives(), 1); 410 var import_jsx_runtime16 = __toESM(require_jsx_runtime(), 1); 411 var subscript_default = /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_primitives16.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [ 412 /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_primitives16.Path, { d: "M17.75 18.5988H15.75C15.75 16.5322 17.75 17.0489 17.75 15.4989C17.75 14.7239 16.75 14.0738 15.75 14.8488", strokeLinecap: "square" }), 413 /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_primitives16.Path, { d: "M10 12L13 7.4V7M10 12L7 7.4L7.00004 7M10 12L7 16.6V17M10 12L13 16.6V17" }) 414 ] }); 415 416 // packages/icons/build-module/library/superscript.mjs 417 var import_primitives17 = __toESM(require_primitives(), 1); 418 var import_jsx_runtime17 = __toESM(require_jsx_runtime(), 1); 419 var superscript_default = /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_primitives17.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: [ 420 /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_primitives17.Path, { d: "M17.75 8.59884H15.75C15.75 6.53219 17.75 7.04885 17.75 5.49887C17.75 4.72388 16.75 4.07384 15.75 4.84884", strokeLinecap: "square" }), 421 /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_primitives17.Path, { d: "M10 12L13 7.4V7M10 12L7 7.4L7.00004 7M10 12L7 16.6V17M10 12L13 16.6V17" }) 422 ] }); 423 424 // packages/icons/build-module/library/text-color.mjs 425 var import_primitives18 = __toESM(require_primitives(), 1); 426 var import_jsx_runtime18 = __toESM(require_jsx_runtime(), 1); 427 var text_color_default = /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_primitives18.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", style: { fill: "none" }, stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_primitives18.Path, { d: "M8 17.5V17.223L9.01577 14.1757M9.01577 14.1757L11.3243 7.25H11.8784L14.1869 14.1757L15.2027 17.223V17.5M14.1869 14.1757H9.01577" }) }); 428 429 // packages/format-library/build-module/bold/index.mjs 430 var import_jsx_runtime19 = __toESM(require_jsx_runtime(), 1); 431 var name = "core/bold"; 432 var title = (0, import_i18n.__)("Bold"); 433 var bold = { 434 name, 435 title, 436 tagName: "strong", 437 className: null, 438 edit({ 439 isActive, 440 value, 441 onChange, 442 onFocus, 443 isVisible = true 444 }) { 445 function onToggle() { 446 onChange((0, import_rich_text.toggleFormat)(value, { type: name, title })); 447 } 448 function onClick() { 449 onChange((0, import_rich_text.toggleFormat)(value, { type: name, title })); 450 onFocus(); 451 } 452 return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_jsx_runtime19.Fragment, { children: [ 453 /* @__PURE__ */ (0, import_jsx_runtime19.jsx)( 454 import_block_editor.RichTextShortcut, 455 { 456 type: "primary", 457 character: "b", 458 onUse: onToggle 459 } 460 ), 461 isVisible && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)( 462 import_block_editor.RichTextToolbarButton, 463 { 464 name: "bold", 465 icon: format_bold_default, 466 title, 467 onClick, 468 isActive, 469 shortcutType: "primary", 470 shortcutCharacter: "b" 471 } 472 ), 473 /* @__PURE__ */ (0, import_jsx_runtime19.jsx)( 474 import_block_editor.__unstableRichTextInputEvent, 475 { 476 inputType: "formatBold", 477 onInput: onToggle 478 } 479 ) 480 ] }); 481 } 482 }; 483 484 // packages/format-library/build-module/code/index.mjs 485 var import_i18n2 = __toESM(require_i18n(), 1); 486 var import_rich_text2 = __toESM(require_rich_text(), 1); 487 var import_block_editor2 = __toESM(require_block_editor(), 1); 488 var import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1); 489 var name2 = "core/code"; 490 var title2 = (0, import_i18n2.__)("Inline code"); 491 var code = { 492 name: name2, 493 title: title2, 494 tagName: "code", 495 className: null, 496 __unstableInputRule(value) { 497 const BACKTICK = "`"; 498 const { start, text } = value; 499 if (start === void 0) { 500 return value; 501 } 502 const characterBefore = text[start - 1]; 503 if (characterBefore !== BACKTICK) { 504 return value; 505 } 506 if (start - 2 < 0) { 507 return value; 508 } 509 const indexBefore = text.lastIndexOf(BACKTICK, start - 2); 510 if (indexBefore === -1) { 511 return value; 512 } 513 const startIndex = indexBefore; 514 const endIndex = start - 2; 515 if (startIndex === endIndex) { 516 return value; 517 } 518 value = (0, import_rich_text2.remove)(value, startIndex, startIndex + 1); 519 value = (0, import_rich_text2.remove)(value, endIndex, endIndex + 1); 520 value = (0, import_rich_text2.applyFormat)(value, { type: name2 }, startIndex, endIndex); 521 return value; 522 }, 523 edit({ 524 value, 525 onChange, 526 onFocus, 527 isActive 528 }) { 529 function onClick() { 530 onChange((0, import_rich_text2.toggleFormat)(value, { type: name2, title: title2 })); 531 onFocus(); 532 } 533 return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_jsx_runtime20.Fragment, { children: [ 534 /* @__PURE__ */ (0, import_jsx_runtime20.jsx)( 535 import_block_editor2.RichTextShortcut, 536 { 537 type: "access", 538 character: "x", 539 onUse: onClick 540 } 541 ), 542 /* @__PURE__ */ (0, import_jsx_runtime20.jsx)( 543 import_block_editor2.RichTextToolbarButton, 544 { 545 icon: code_default, 546 title: title2, 547 onClick, 548 isActive, 549 role: "menuitemcheckbox" 550 } 551 ) 552 ] }); 553 } 554 }; 555 556 // packages/format-library/build-module/image/index.mjs 557 var import_components = __toESM(require_components(), 1); 558 559 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useRenderElement.mjs 560 var React4 = __toESM(require_react(), 1); 561 562 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useRefWithInit.mjs 563 var React = __toESM(require_react(), 1); 564 var UNINITIALIZED = {}; 565 function useRefWithInit(init, initArg) { 566 const ref = React.useRef(UNINITIALIZED); 567 if (ref.current === UNINITIALIZED) { 568 ref.current = init(initArg); 569 } 570 return ref; 571 } 572 573 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useMergedRefs.mjs 574 function useMergedRefs(a, b, c, d) { 575 const forkRef = useRefWithInit(createForkRef).current; 576 if (didChange(forkRef, a, b, c, d)) { 577 update(forkRef, [a, b, c, d]); 578 } 579 return forkRef.callback; 580 } 581 function useMergedRefsN(refs) { 582 const forkRef = useRefWithInit(createForkRef).current; 583 if (didChangeN(forkRef, refs)) { 584 update(forkRef, refs); 585 } 586 return forkRef.callback; 587 } 588 function createForkRef() { 589 return { 590 callback: null, 591 cleanup: null, 592 refs: [] 593 }; 594 } 595 function didChange(forkRef, a, b, c, d) { 596 return forkRef.refs[0] !== a || forkRef.refs[1] !== b || forkRef.refs[2] !== c || forkRef.refs[3] !== d; 597 } 598 function didChangeN(forkRef, newRefs) { 599 return forkRef.refs.length !== newRefs.length || forkRef.refs.some((ref, index3) => ref !== newRefs[index3]); 600 } 601 function update(forkRef, refs) { 602 forkRef.refs = refs; 603 if (refs.every((ref) => ref == null)) { 604 forkRef.callback = null; 605 return; 606 } 607 forkRef.callback = (instance) => { 608 if (forkRef.cleanup) { 609 forkRef.cleanup(); 610 forkRef.cleanup = null; 611 } 612 if (instance != null) { 613 const cleanupCallbacks = Array(refs.length).fill(null); 614 for (let i = 0; i < refs.length; i += 1) { 615 const ref = refs[i]; 616 if (ref == null) { 617 continue; 618 } 619 switch (typeof ref) { 620 case "function": { 621 const refCleanup = ref(instance); 622 if (typeof refCleanup === "function") { 623 cleanupCallbacks[i] = refCleanup; 624 } 625 break; 626 } 627 case "object": { 628 ref.current = instance; 629 break; 630 } 631 default: 632 } 633 } 634 forkRef.cleanup = () => { 635 for (let i = 0; i < refs.length; i += 1) { 636 const ref = refs[i]; 637 if (ref == null) { 638 continue; 639 } 640 switch (typeof ref) { 641 case "function": { 642 const cleanupCallback = cleanupCallbacks[i]; 643 if (typeof cleanupCallback === "function") { 644 cleanupCallback(); 645 } else { 646 void ref(null); 647 } 648 break; 649 } 650 case "object": { 651 ref.current = null; 652 break; 653 } 654 default: 655 } 656 } 657 }; 658 } 659 }; 660 } 661 662 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/getReactElementRef.mjs 663 var React3 = __toESM(require_react(), 1); 664 665 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/reactVersion.mjs 666 var React2 = __toESM(require_react(), 1); 667 var majorVersion = parseInt(React2.version, 10); 668 function isReactVersionAtLeast(reactVersionToCheck) { 669 return majorVersion >= reactVersionToCheck; 670 } 671 672 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/getReactElementRef.mjs 673 function getReactElementRef(element) { 674 if (!/* @__PURE__ */ React3.isValidElement(element)) { 675 return null; 676 } 677 const reactElement = element; 678 const propsWithRef = reactElement.props; 679 return (isReactVersionAtLeast(19) ? propsWithRef?.ref : reactElement.ref) ?? null; 680 } 681 682 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/mergeObjects.mjs 683 function mergeObjects(a, b) { 684 if (a && !b) { 685 return a; 686 } 687 if (!a && b) { 688 return b; 689 } 690 if (a || b) { 691 return { 692 ...a, 693 ...b 694 }; 695 } 696 return void 0; 697 } 698 699 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/createLogOnce.mjs 700 var loggedMessages; 701 if (true) { 702 loggedMessages = /* @__PURE__ */ new Set(); 703 } 704 function createLogOnce(severity, prefix) { 705 return function logOnce(...messages) { 706 if (true) { 707 const message = messages.join(" "); 708 const output = prefix ? `$prefix}: $message}` : message; 709 const key = `$severity}:$output}`; 710 if (!loggedMessages.has(key)) { 711 loggedMessages.add(key); 712 if (severity === "warn") { 713 console.warn(output); 714 } else { 715 console.error(output); 716 } 717 } 718 } 719 }; 720 } 721 722 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/warn.mjs 723 var warn = createLogOnce("warn", "Base UI"); 724 725 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/empty.mjs 726 function NOOP() { 727 } 728 var EMPTY_ARRAY = Object.freeze([]); 729 var EMPTY_OBJECT = Object.freeze({}); 730 731 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/getStateAttributesProps.mjs 732 function getStateAttributesProps(state, customMapping) { 733 const props = {}; 734 for (const key in state) { 735 const value = state[key]; 736 if (customMapping?.hasOwnProperty(key)) { 737 const customProps = customMapping[key](value); 738 if (customProps != null) { 739 Object.assign(props, customProps); 740 } 741 continue; 742 } 743 if (value === true) { 744 props[`data-$key.toLowerCase()}`] = ""; 745 } else if (value) { 746 props[`data-$key.toLowerCase()}`] = value.toString(); 747 } 748 } 749 return props; 750 } 751 752 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/resolveClassName.mjs 753 function resolveClassName(className, state) { 754 return typeof className === "function" ? className(state) : className; 755 } 756 757 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/resolveStyle.mjs 758 function resolveStyle(style, state) { 759 return typeof style === "function" ? style(state) : style; 760 } 761 762 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/merge-props/mergeProps.mjs 763 var EMPTY_PROPS = {}; 764 function mergeProps(a, b, c, d, e) { 765 if (!c && !d && !e && !a) { 766 return createInitialMergedProps(b); 767 } 768 let merged = createInitialMergedProps(a); 769 if (b) { 770 merged = mergeInto(merged, b); 771 } 772 if (c) { 773 merged = mergeInto(merged, c); 774 } 775 if (d) { 776 merged = mergeInto(merged, d); 777 } 778 if (e) { 779 merged = mergeInto(merged, e); 780 } 781 return merged; 782 } 783 function mergePropsN(props) { 784 if (props.length === 0) { 785 return EMPTY_PROPS; 786 } 787 if (props.length === 1) { 788 return createInitialMergedProps(props[0]); 789 } 790 let merged = createInitialMergedProps(props[0]); 791 for (let i = 1; i < props.length; i += 1) { 792 merged = mergeInto(merged, props[i]); 793 } 794 return merged; 795 } 796 function createInitialMergedProps(inputProps) { 797 if (isPropsGetter(inputProps)) { 798 return { 799 ...inputProps(EMPTY_PROPS) 800 }; 801 } 802 return copyInitialProps(inputProps); 803 } 804 function mergeInto(merged, inputProps) { 805 if (isPropsGetter(inputProps)) { 806 return inputProps(merged); 807 } 808 return mutablyMergeInto(merged, inputProps); 809 } 810 function copyInitialProps(inputProps) { 811 const copiedProps = { 812 ...inputProps 813 }; 814 for (const propName in copiedProps) { 815 const propValue = copiedProps[propName]; 816 if (isEventHandler(propName, propValue)) { 817 copiedProps[propName] = wrapEventHandler(propValue); 818 } 819 } 820 return copiedProps; 821 } 822 function mutablyMergeInto(mergedProps, externalProps) { 823 if (!externalProps) { 824 return mergedProps; 825 } 826 for (const propName in externalProps) { 827 const externalPropValue = externalProps[propName]; 828 switch (propName) { 829 case "style": { 830 mergedProps[propName] = mergeObjects(mergedProps.style, externalPropValue); 831 break; 832 } 833 case "className": { 834 mergedProps[propName] = mergeClassNames(mergedProps.className, externalPropValue); 835 break; 836 } 837 default: { 838 if (isEventHandler(propName, externalPropValue)) { 839 mergedProps[propName] = mergeEventHandlers(mergedProps[propName], externalPropValue); 840 } else { 841 mergedProps[propName] = externalPropValue; 842 } 843 } 844 } 845 } 846 return mergedProps; 847 } 848 function isEventHandler(key, value) { 849 const code0 = key.charCodeAt(0); 850 const code1 = key.charCodeAt(1); 851 const code2 = key.charCodeAt(2); 852 return code0 === 111 && code1 === 110 && code2 >= 65 && code2 <= 90 && (typeof value === "function" || typeof value === "undefined"); 853 } 854 function isPropsGetter(inputProps) { 855 return typeof inputProps === "function"; 856 } 857 function mergeEventHandlers(ourHandler, theirHandler) { 858 if (!theirHandler) { 859 return ourHandler; 860 } 861 if (!ourHandler) { 862 return wrapEventHandler(theirHandler); 863 } 864 return (...args) => { 865 const event = args[0]; 866 if (isSyntheticEvent(event)) { 867 const baseUIEvent = event; 868 makeEventPreventable(baseUIEvent); 869 const result2 = theirHandler(...args); 870 if (!baseUIEvent.baseUIHandlerPrevented) { 871 ourHandler?.(...args); 872 } 873 return result2; 874 } 875 const result = theirHandler(...args); 876 ourHandler?.(...args); 877 return result; 878 }; 879 } 880 function wrapEventHandler(handler) { 881 if (!handler) { 882 return handler; 883 } 884 return (...args) => { 885 const event = args[0]; 886 if (isSyntheticEvent(event)) { 887 makeEventPreventable(event); 888 } 889 return handler(...args); 890 }; 891 } 892 function makeEventPreventable(event) { 893 event.preventBaseUIHandler = () => { 894 event.baseUIHandlerPrevented = true; 895 }; 896 return event; 897 } 898 function mergeClassNames(ourClassName, theirClassName) { 899 if (theirClassName) { 900 if (ourClassName) { 901 return theirClassName + " " + ourClassName; 902 } 903 return theirClassName; 904 } 905 return ourClassName; 906 } 907 function isSyntheticEvent(event) { 908 return event != null && typeof event === "object" && "nativeEvent" in event; 909 } 910 911 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useRenderElement.mjs 912 var import_react = __toESM(require_react(), 1); 913 function useRenderElement(element, componentProps, params = {}) { 914 let renderProp = componentProps.render; 915 if (params.enabled !== false) { 916 renderProp = unwrapLazyRenderProp(renderProp); 917 } 918 const outProps = useRenderElementProps(componentProps, params, renderProp); 919 if (params.enabled === false) { 920 return null; 921 } 922 const state = params.state ?? EMPTY_OBJECT; 923 return evaluateRenderProp(element, renderProp, outProps, state); 924 } 925 function useRenderElementProps(componentProps, params, renderProp) { 926 const { 927 className: classNameProp, 928 style: styleProp 929 } = componentProps; 930 const { 931 state = EMPTY_OBJECT, 932 ref, 933 props, 934 stateAttributesMapping: stateAttributesMapping8, 935 enabled = true 936 } = params; 937 const className = enabled ? resolveClassName(classNameProp, state) : void 0; 938 const style = enabled ? resolveStyle(styleProp, state) : void 0; 939 const stateProps = enabled ? getStateAttributesProps(state, stateAttributesMapping8) : EMPTY_OBJECT; 940 const resolvedProps = enabled && props ? resolveRenderFunctionProps(props) : void 0; 941 const outProps = enabled ? mergeObjects(stateProps, resolvedProps) ?? {} : EMPTY_OBJECT; 942 if (typeof document !== "undefined") { 943 if (!enabled) { 944 void useMergedRefs(null, null); 945 } else if (Array.isArray(ref)) { 946 outProps.ref = useMergedRefsN([outProps.ref, getReactElementRef(renderProp), ...ref]); 947 } else { 948 outProps.ref = useMergedRefs(outProps.ref, getReactElementRef(renderProp), ref); 949 } 950 } 951 if (!enabled) { 952 return EMPTY_OBJECT; 953 } 954 if (className !== void 0) { 955 outProps.className = mergeClassNames(outProps.className, className); 956 } 957 if (style !== void 0) { 958 outProps.style = mergeObjects(outProps.style, style); 959 } 960 return outProps; 961 } 962 function resolveRenderFunctionProps(props) { 963 if (Array.isArray(props)) { 964 return mergePropsN(props); 965 } 966 return mergeProps(void 0, props); 967 } 968 var REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for("react.lazy"); 969 var COMPONENT_IDENTIFIER_PATTERN = /^[A-Z][A-Za-z0-9$]*$/; 970 var LOWERCASE_CHARACTER_PATTERN = /[a-z]/; 971 function unwrapLazyRenderProp(render) { 972 if (render?.$$typeof !== REACT_LAZY_TYPE) { 973 return render; 974 } 975 const unwrapped = React4.Children.toArray(render)[0]; 976 return /* @__PURE__ */ React4.isValidElement(unwrapped) ? unwrapped : render; 977 } 978 function evaluateRenderProp(element, render, props, state) { 979 if (render) { 980 if (typeof render === "function") { 981 if (true) { 982 warnIfRenderPropLooksLikeComponent(render); 983 } 984 return render(props, state); 985 } 986 const mergedProps = mergeProps(props, render.props); 987 mergedProps.ref = props.ref; 988 if (true) { 989 if (!/* @__PURE__ */ React4.isValidElement(render)) { 990 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")); 991 } 992 } 993 return /* @__PURE__ */ React4.cloneElement(render, mergedProps); 994 } 995 return renderTag(element, props); 996 } 997 function warnIfRenderPropLooksLikeComponent(renderFn) { 998 const functionName = renderFn.name; 999 if (functionName.length === 0) { 1000 return; 1001 } 1002 if (!COMPONENT_IDENTIFIER_PATTERN.test(functionName)) { 1003 return; 1004 } 1005 if (!LOWERCASE_CHARACTER_PATTERN.test(functionName)) { 1006 return; 1007 } 1008 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"); 1009 } 1010 function renderTag(Tag, props) { 1011 if (Tag === "button") { 1012 return /* @__PURE__ */ (0, import_react.createElement)("button", { 1013 type: "button", 1014 ...props, 1015 key: props.key 1016 }); 1017 } 1018 if (Tag === "img") { 1019 return /* @__PURE__ */ (0, import_react.createElement)("img", { 1020 alt: "", 1021 ...props, 1022 key: props.key 1023 }); 1024 } 1025 return /* @__PURE__ */ React4.createElement(Tag, props); 1026 } 1027 1028 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/safeReact.mjs 1029 var React5 = __toESM(require_react(), 1); 1030 var SafeReact = { 1031 ...React5 1032 }; 1033 1034 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useStableCallback.mjs 1035 var useInsertionEffect = SafeReact.useInsertionEffect; 1036 var useSafeInsertionEffect = ( 1037 // React 17 doesn't have useInsertionEffect. 1038 useInsertionEffect && // Preact replaces useInsertionEffect with useLayoutEffect and fires too late. 1039 useInsertionEffect !== SafeReact.useLayoutEffect ? useInsertionEffect : (fn) => fn() 1040 ); 1041 function useStableCallback(callback) { 1042 const stable = useRefWithInit(createStableCallback).current; 1043 stable.next = callback; 1044 useSafeInsertionEffect(stable.effect); 1045 return stable.trampoline; 1046 } 1047 function createStableCallback() { 1048 const stable = { 1049 next: void 0, 1050 callback: assertNotCalled, 1051 trampoline: (...args) => stable.callback?.(...args), 1052 effect: () => { 1053 stable.callback = stable.next; 1054 } 1055 }; 1056 return stable; 1057 } 1058 function assertNotCalled() { 1059 if (true) { 1060 throw ( 1061 /* minify-error-disabled */ 1062 new Error("Base UI: Cannot call an event handler while rendering.") 1063 ); 1064 } 1065 } 1066 1067 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useIsoLayoutEffect.mjs 1068 var React6 = __toESM(require_react(), 1); 1069 var noop = () => { 1070 }; 1071 var useIsoLayoutEffect = typeof document !== "undefined" ? React6.useLayoutEffect : noop; 1072 1073 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useOpenChangeComplete.mjs 1074 var React8 = __toESM(require_react(), 1); 1075 1076 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useAnimationsFinished.mjs 1077 var ReactDOM = __toESM(require_react_dom(), 1); 1078 1079 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useOnMount.mjs 1080 var React7 = __toESM(require_react(), 1); 1081 function useOnMount(fn) { 1082 React7.useEffect(fn, EMPTY_ARRAY); 1083 } 1084 1085 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useAnimationFrame.mjs 1086 var EMPTY = null; 1087 var LAST_RAF = globalThis.requestAnimationFrame; 1088 var Scheduler = class { 1089 /* This implementation uses an array as a backing data-structure for frame callbacks. 1090 * It allows `O(1)` callback cancelling by inserting a `null` in the array, though it 1091 * never calls the native `cancelAnimationFrame` if there are no frames left. This can 1092 * be much more efficient if there is a call pattern that alterns as 1093 * "request-cancel-request-cancel-…". 1094 * But in the case of "request-request-…-cancel-cancel-…", it leaves the final animation 1095 * frame to run anyway. We turn that frame into a `O(1)` no-op via `callbacksCount`. */ 1096 callbacks = []; 1097 callbacksCount = 0; 1098 nextId = 1; 1099 startId = 1; 1100 isScheduled = false; 1101 tick = (timestamp) => { 1102 this.isScheduled = false; 1103 const currentCallbacks = this.callbacks; 1104 const currentCallbacksCount = this.callbacksCount; 1105 this.callbacks = []; 1106 this.callbacksCount = 0; 1107 this.startId = this.nextId; 1108 if (currentCallbacksCount > 0) { 1109 for (let i = 0; i < currentCallbacks.length; i += 1) { 1110 currentCallbacks[i]?.(timestamp); 1111 } 1112 } 1113 }; 1114 request(fn) { 1115 const id = this.nextId; 1116 this.nextId += 1; 1117 this.callbacks.push(fn); 1118 this.callbacksCount += 1; 1119 const didRAFChange = LAST_RAF !== requestAnimationFrame && (LAST_RAF = requestAnimationFrame, true); 1120 if (!this.isScheduled || didRAFChange) { 1121 requestAnimationFrame(this.tick); 1122 this.isScheduled = true; 1123 } 1124 return id; 1125 } 1126 cancel(id) { 1127 const index3 = id - this.startId; 1128 if (index3 < 0 || index3 >= this.callbacks.length) { 1129 return; 1130 } 1131 if (this.callbacks[index3] === null) { 1132 return; 1133 } 1134 this.callbacks[index3] = null; 1135 this.callbacksCount -= 1; 1136 } 1137 }; 1138 var scheduler = new Scheduler(); 1139 var AnimationFrame = class _AnimationFrame { 1140 static create() { 1141 return new _AnimationFrame(); 1142 } 1143 static request(fn) { 1144 return scheduler.request(fn); 1145 } 1146 static cancel(id) { 1147 return scheduler.cancel(id); 1148 } 1149 currentId = EMPTY; 1150 /** 1151 * Executes `fn` after `delay`, clearing any previously scheduled call. 1152 */ 1153 request(fn) { 1154 this.cancel(); 1155 this.currentId = scheduler.request(() => { 1156 this.currentId = EMPTY; 1157 fn(); 1158 }); 1159 } 1160 cancel = () => { 1161 if (this.currentId !== EMPTY) { 1162 scheduler.cancel(this.currentId); 1163 this.currentId = EMPTY; 1164 } 1165 }; 1166 disposeEffect = () => { 1167 return this.cancel; 1168 }; 1169 }; 1170 function useAnimationFrame() { 1171 const timeout = useRefWithInit(AnimationFrame.create).current; 1172 useOnMount(timeout.disposeEffect); 1173 return timeout; 1174 } 1175 1176 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/resolveRef.mjs 1177 function resolveRef(maybeRef) { 1178 if (maybeRef == null) { 1179 return maybeRef; 1180 } 1181 return "current" in maybeRef ? maybeRef.current : maybeRef; 1182 } 1183 1184 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/getFiniteAnimations.mjs 1185 function getFiniteAnimations(element, options) { 1186 return element.getAnimations(options).filter((animation) => { 1187 const timing = animation.effect?.getTiming(); 1188 return timing?.duration !== Infinity && timing?.iterations !== Infinity; 1189 }); 1190 } 1191 1192 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/TransitionStatusDataAttributes.mjs 1193 var TransitionStatusDataAttributes_exports = {}; 1194 __export(TransitionStatusDataAttributes_exports, { 1195 endingStyle: () => endingStyle, 1196 startingStyle: () => startingStyle 1197 }); 1198 var startingStyle = "data-starting-style"; 1199 var endingStyle = "data-ending-style"; 1200 1201 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useAnimationsFinished.mjs 1202 var pendingCallbacks = null; 1203 function flushBeforePaint(fn) { 1204 if (!pendingCallbacks) { 1205 const callbacks = []; 1206 pendingCallbacks = callbacks; 1207 queueMicrotask(() => { 1208 pendingCallbacks = null; 1209 ReactDOM.flushSync(() => { 1210 for (const callback of callbacks) { 1211 callback(); 1212 } 1213 }); 1214 }); 1215 } 1216 pendingCallbacks.push(fn); 1217 } 1218 function useAnimationsFinished(elementOrRef, waitForStartingStyleRemoved = false, batch = false) { 1219 const frame = useAnimationFrame(); 1220 return useStableCallback((fnToExecute, signal = null) => { 1221 frame.cancel(); 1222 const element = resolveRef(elementOrRef); 1223 if (element == null) { 1224 return; 1225 } 1226 const resolvedElement = element; 1227 const done = () => { 1228 if (!batch) { 1229 ReactDOM.flushSync(fnToExecute); 1230 return; 1231 } 1232 flushBeforePaint(() => { 1233 if (!signal?.aborted) { 1234 fnToExecute(); 1235 } 1236 }); 1237 }; 1238 if (typeof resolvedElement.getAnimations !== "function" || globalThis.BASE_UI_ANIMATIONS_DISABLED) { 1239 fnToExecute(); 1240 return; 1241 } 1242 function exec() { 1243 Promise.all(getFiniteAnimations(resolvedElement).map((animation) => animation.finished.then(NOOP))).then(() => { 1244 if (!signal?.aborted) { 1245 done(); 1246 } 1247 }, () => { 1248 if (signal?.aborted) { 1249 return; 1250 } 1251 const currentAnimations = getFiniteAnimations(resolvedElement); 1252 if (currentAnimations.some((animation) => animation.pending || animation.playState !== "finished")) { 1253 exec(); 1254 return; 1255 } 1256 done(); 1257 }); 1258 } 1259 if (waitForStartingStyleRemoved) { 1260 const startingStyleAttribute = startingStyle; 1261 if (!resolvedElement.hasAttribute(startingStyleAttribute)) { 1262 frame.request(exec); 1263 return; 1264 } 1265 const attributeObserver = new MutationObserver(() => { 1266 if (!resolvedElement.hasAttribute(startingStyleAttribute)) { 1267 attributeObserver.disconnect(); 1268 exec(); 1269 } 1270 }); 1271 attributeObserver.observe(resolvedElement, { 1272 attributes: true, 1273 attributeFilter: [startingStyleAttribute] 1274 }); 1275 signal?.addEventListener("abort", () => attributeObserver.disconnect(), { 1276 once: true 1277 }); 1278 return; 1279 } 1280 frame.request(exec); 1281 }); 1282 } 1283 1284 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useOpenChangeComplete.mjs 1285 function useOpenChangeComplete(parameters) { 1286 const { 1287 enabled = true, 1288 open: open2, 1289 ref, 1290 batch = false, 1291 onComplete: onCompleteParam 1292 } = parameters; 1293 const onComplete = useStableCallback(onCompleteParam); 1294 const runOnceAnimationsFinish = useAnimationsFinished(ref, open2, batch); 1295 React8.useEffect(() => { 1296 if (!enabled) { 1297 return void 0; 1298 } 1299 const abortController = new AbortController(); 1300 runOnceAnimationsFinish(onComplete, abortController.signal); 1301 return () => { 1302 abortController.abort(); 1303 }; 1304 }, [enabled, open2, onComplete, runOnceAnimationsFinish]); 1305 } 1306 1307 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/stateAttributesMapping.mjs 1308 var STARTING_HOOK = { 1309 [startingStyle]: "" 1310 }; 1311 var ENDING_HOOK = { 1312 [endingStyle]: "" 1313 }; 1314 var transitionStatusMapping = { 1315 transitionStatus(value) { 1316 if (value === "starting") { 1317 return STARTING_HOOK; 1318 } 1319 if (value === "ending") { 1320 return ENDING_HOOK; 1321 } 1322 return null; 1323 } 1324 }; 1325 1326 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useTransitionStatus.mjs 1327 var React9 = __toESM(require_react(), 1); 1328 function useTransitionStatus(open2, enableIdleState = false, deferEndingState = false, animateInitialOpen = false) { 1329 const [transitionStatus, setTransitionStatus] = React9.useState(open2 && enableIdleState ? "idle" : void 0); 1330 const [mounted, setMounted] = React9.useState(open2 && !animateInitialOpen); 1331 if (open2 && !mounted) { 1332 setMounted(true); 1333 setTransitionStatus("starting"); 1334 } 1335 if (!open2 && mounted && transitionStatus !== "ending" && !deferEndingState) { 1336 setTransitionStatus("ending"); 1337 } 1338 if (!open2 && !mounted && transitionStatus === "ending") { 1339 setTransitionStatus(void 0); 1340 } 1341 useIsoLayoutEffect(() => { 1342 if (!open2 && mounted && transitionStatus !== "ending" && deferEndingState) { 1343 const frame = AnimationFrame.request(() => { 1344 setTransitionStatus("ending"); 1345 }); 1346 return () => { 1347 AnimationFrame.cancel(frame); 1348 }; 1349 } 1350 return void 0; 1351 }, [open2, mounted, transitionStatus, deferEndingState]); 1352 useIsoLayoutEffect(() => { 1353 if (!open2 || enableIdleState || transitionStatus === void 0) { 1354 return void 0; 1355 } 1356 const frame = AnimationFrame.request(() => { 1357 setTransitionStatus(void 0); 1358 }); 1359 return () => { 1360 AnimationFrame.cancel(frame); 1361 }; 1362 }, [enableIdleState, open2, transitionStatus]); 1363 useIsoLayoutEffect(() => { 1364 if (!open2 || !enableIdleState) { 1365 return void 0; 1366 } 1367 if (open2 && mounted && transitionStatus !== "idle") { 1368 setTransitionStatus("starting"); 1369 } 1370 const frame = AnimationFrame.request(() => { 1371 setTransitionStatus("idle"); 1372 }); 1373 return () => { 1374 AnimationFrame.cancel(frame); 1375 }; 1376 }, [enableIdleState, open2, mounted, transitionStatus]); 1377 return { 1378 mounted, 1379 setMounted, 1380 transitionStatus 1381 }; 1382 } 1383 1384 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useTimeout.mjs 1385 var EMPTY2 = 0; 1386 var Timeout = class _Timeout { 1387 static create() { 1388 return new _Timeout(); 1389 } 1390 currentId = EMPTY2; 1391 /** 1392 * Executes `fn` after `delay`, clearing any previously scheduled call. 1393 */ 1394 start(delay, fn) { 1395 this.clear(); 1396 this.currentId = setTimeout(() => { 1397 this.currentId = EMPTY2; 1398 fn(); 1399 }, delay); 1400 } 1401 isStarted() { 1402 return this.currentId !== EMPTY2; 1403 } 1404 clear = () => { 1405 if (this.currentId !== EMPTY2) { 1406 clearTimeout(this.currentId); 1407 this.currentId = EMPTY2; 1408 } 1409 }; 1410 disposeEffect = () => { 1411 return this.clear; 1412 }; 1413 }; 1414 function useTimeout() { 1415 const timeout = useRefWithInit(Timeout.create).current; 1416 useOnMount(timeout.disposeEffect); 1417 return timeout; 1418 } 1419 1420 // node_modules/.store/clsx@2.1.1-XOLP1vUL9vEGfpiXm37fAw/node_modules/clsx/dist/clsx.mjs 1421 function r(e) { 1422 var t, f, n = ""; 1423 if ("string" == typeof e || "number" == typeof e) n += e; 1424 else if ("object" == typeof e) if (Array.isArray(e)) { 1425 var o = e.length; 1426 for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f); 1427 } else for (f in e) e[f] && (n && (n += " "), n += f); 1428 return n; 1429 } 1430 function clsx() { 1431 for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t); 1432 return n; 1433 } 1434 var clsx_default = clsx; 1435 1436 // packages/ui/build-module/icon/icon.mjs 1437 var import_element2 = __toESM(require_element(), 1); 1438 var import_primitives19 = __toESM(require_primitives(), 1); 1439 var import_jsx_runtime21 = __toESM(require_jsx_runtime(), 1); 1440 var Icon = (0, import_element2.forwardRef)( 1441 function UnforwardedIcon({ icon: icon2, size: size4 = 24, style, ...restProps }, ref) { 1442 const mergedStyle = icon2.props.style || style ? { ...icon2.props.style, ...style } : void 0; 1443 return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)( 1444 import_primitives19.SVG, 1445 { 1446 ref, 1447 ...icon2.props, 1448 ...restProps, 1449 ...mergedStyle ? { style: mergedStyle } : {}, 1450 width: size4, 1451 height: size4 1452 } 1453 ); 1454 } 1455 ); 1456 1457 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useControlled.mjs 1458 var React10 = __toESM(require_react(), 1); 1459 1460 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/error.mjs 1461 var error = createLogOnce("error", "Base UI"); 1462 1463 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useControlled.mjs 1464 function useControlled({ 1465 controlled, 1466 default: defaultProp, 1467 name: name16, 1468 state = "value" 1469 }) { 1470 const { 1471 current: isControlled 1472 } = React10.useRef(controlled !== void 0); 1473 const [valueState, setValue] = React10.useState(() => defaultProp); 1474 const value = isControlled && controlled !== void 0 ? controlled : valueState; 1475 if (true) { 1476 React10.useEffect(() => { 1477 if (isControlled !== (controlled !== void 0)) { 1478 error([`A component is changing the $isControlled ? "" : "un"}controlled $state} state of $name16} to be $isControlled ? "un" : ""}controlled.`, "Elements should not switch from uncontrolled to controlled (or vice versa).", `Decide between using a controlled or uncontrolled $name16} 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")); 1479 } 1480 }, [state, name16, controlled]); 1481 const { 1482 current: defaultValue 1483 } = React10.useRef(defaultProp); 1484 React10.useEffect(() => { 1485 if (!isControlled && serializeToDevModeString(defaultValue) !== serializeToDevModeString(defaultProp)) { 1486 error([`A component is changing the default $state} state of an uncontrolled $name16} after being initialized. To suppress this warning opt to use a controlled $name16}.`].join("\n")); 1487 } 1488 }, [defaultProp]); 1489 } 1490 const setValueIfUncontrolled = React10.useCallback((newValue) => { 1491 if (!isControlled) { 1492 setValue(newValue); 1493 } 1494 }, []); 1495 return [value, setValueIfUncontrolled]; 1496 } 1497 function serializeToDevModeString(input) { 1498 let nextId = 0; 1499 const seen = /* @__PURE__ */ new WeakMap(); 1500 try { 1501 const result = JSON.stringify(input, function replacer(key, value) { 1502 if (key === "_owner" && this != null && typeof this === "object" && "$$typeof" in this) { 1503 return void 0; 1504 } 1505 if (typeof value === "bigint") { 1506 return `__bigint__:$value}`; 1507 } 1508 if (value !== null && typeof value === "object") { 1509 const id = seen.get(value); 1510 if (id !== void 0) { 1511 return `__object__:$id}`; 1512 } 1513 seen.set(value, nextId); 1514 nextId += 1; 1515 } 1516 return value; 1517 }); 1518 return result ?? `__top__:$typeof input}`; 1519 } catch { 1520 return "__unserializable__"; 1521 } 1522 } 1523 1524 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/list/CompositeList.mjs 1525 var React12 = __toESM(require_react(), 1); 1526 1527 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/list/CompositeListContext.mjs 1528 var React11 = __toESM(require_react(), 1); 1529 var CompositeListContext = /* @__PURE__ */ React11.createContext({ 1530 register: () => { 1531 }, 1532 unregister: () => { 1533 }, 1534 subscribeMapChange: () => () => { 1535 }, 1536 nextIndexRef: { 1537 current: 0 1538 } 1539 }); 1540 if (true) CompositeListContext.displayName = "CompositeListContext"; 1541 function useCompositeListContext() { 1542 return React11.useContext(CompositeListContext); 1543 } 1544 1545 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/list/CompositeList.mjs 1546 var import_jsx_runtime22 = __toESM(require_jsx_runtime(), 1); 1547 function CompositeList(props) { 1548 const { 1549 children, 1550 elementsRef, 1551 labelsRef, 1552 onMapChange: onMapChangeProp 1553 } = props; 1554 const onMapChange = useStableCallback(onMapChangeProp); 1555 const [, setMapTick] = React12.useState(0); 1556 const listeners = useRefWithInit(createListeners).current; 1557 const map = useRefWithInit(createMap).current; 1558 const nextIndexRef = React12.useRef(0); 1559 const isDirtyRef = React12.useRef(true); 1560 const itemsRef = React12.useRef(null); 1561 const mutationObserverRef = React12.useRef(null); 1562 const scheduleMapUpdate = useStableCallback(() => { 1563 if (isDirtyRef.current) { 1564 return; 1565 } 1566 isDirtyRef.current = true; 1567 setMapTick((tick) => tick + 1); 1568 }); 1569 const register2 = useStableCallback((node, registration) => { 1570 map.set(node, registration); 1571 scheduleMapUpdate(); 1572 }); 1573 const unregister = useStableCallback((node) => { 1574 map.delete(node); 1575 scheduleMapUpdate(); 1576 }); 1577 const syncRefs = useStableCallback((items) => { 1578 const nextMap = /* @__PURE__ */ new Map(); 1579 elementsRef.current.length = 0; 1580 if (labelsRef) { 1581 labelsRef.current.length = 0; 1582 } 1583 items.forEach((item) => { 1584 nextMap.set(item.element, { 1585 ...item.registration.metadata ?? {}, 1586 index: item.index 1587 }); 1588 elementsRef.current[item.index] = item.element; 1589 if (labelsRef) { 1590 labelsRef.current[item.index] = item.registration.label !== void 0 ? item.registration.label : item.registration.textRef?.current?.textContent ?? item.element.textContent; 1591 } 1592 }); 1593 nextIndexRef.current = elementsRef.current.length; 1594 return nextMap; 1595 }); 1596 function observe(sortedNodes) { 1597 mutationObserverRef.current?.disconnect(); 1598 mutationObserverRef.current = null; 1599 if (typeof MutationObserver !== "function" || sortedNodes.length < 2) { 1600 return; 1601 } 1602 const mutationObserver = new MutationObserver((entries) => { 1603 if (!hasMovedNode(entries)) { 1604 return; 1605 } 1606 let previousConnectedNode = null; 1607 for (const node of sortedNodes) { 1608 if (!node.isConnected) { 1609 continue; 1610 } 1611 if (previousConnectedNode && sortByDocumentPosition(previousConnectedNode, node) > 0) { 1612 mutationObserver.disconnect(); 1613 scheduleMapUpdate(); 1614 return; 1615 } 1616 previousConnectedNode = node; 1617 } 1618 }); 1619 mutationObserverRef.current = mutationObserver; 1620 const roots = /* @__PURE__ */ new Set(); 1621 for (let i = 1; i < sortedNodes.length; i += 1) { 1622 const root = getCommonAncestor(sortedNodes[i - 1], sortedNodes[i]); 1623 if (root) { 1624 roots.add(root); 1625 } 1626 } 1627 roots.forEach((root) => mutationObserver.observe(root, { 1628 childList: true 1629 })); 1630 } 1631 const flush = useStableCallback(() => { 1632 const [items, automaticNodes] = getCompositeListSnapshot(map); 1633 const nextMap = syncRefs(items); 1634 const previousItems = itemsRef.current; 1635 const changed = !previousItems || previousItems.length !== items.length || items.some((item, index3) => { 1636 const previousItem = previousItems[index3]; 1637 return item.index !== previousItem.index || item.element !== previousItem.element || item.registration.index !== previousItem.registration.index || item.registration.metadata !== previousItem.registration.metadata; 1638 }); 1639 observe(automaticNodes); 1640 itemsRef.current = items; 1641 isDirtyRef.current = false; 1642 if (!changed) { 1643 return; 1644 } 1645 listeners.forEach((listener) => listener(nextMap)); 1646 onMapChange(nextMap); 1647 }); 1648 useIsoLayoutEffect(() => { 1649 if (!isDirtyRef.current && itemsRef.current) { 1650 syncRefs(itemsRef.current); 1651 } 1652 return () => { 1653 elementsRef.current = []; 1654 if (labelsRef) { 1655 labelsRef.current = []; 1656 } 1657 }; 1658 }, [elementsRef, labelsRef, syncRefs]); 1659 useIsoLayoutEffect(() => { 1660 if (isDirtyRef.current) { 1661 flush(); 1662 } 1663 }); 1664 useIsoLayoutEffect(() => { 1665 return () => { 1666 mutationObserverRef.current?.disconnect(); 1667 isDirtyRef.current = true; 1668 }; 1669 }, []); 1670 const subscribeMapChange = useStableCallback((fn) => { 1671 listeners.add(fn); 1672 return () => { 1673 listeners.delete(fn); 1674 }; 1675 }); 1676 const contextValue = React12.useMemo(() => ({ 1677 register: register2, 1678 unregister, 1679 subscribeMapChange, 1680 nextIndexRef 1681 }), [register2, unregister, subscribeMapChange, nextIndexRef]); 1682 return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(CompositeListContext.Provider, { 1683 value: contextValue, 1684 children 1685 }); 1686 } 1687 function createMap() { 1688 return /* @__PURE__ */ new Map(); 1689 } 1690 function createListeners() { 1691 return /* @__PURE__ */ new Set(); 1692 } 1693 function getCompositeListSnapshot(map) { 1694 const reservedIndices = /* @__PURE__ */ new Set(); 1695 const items = []; 1696 const automaticItems = []; 1697 map.forEach((registration, node) => { 1698 if (!node.isConnected) { 1699 return; 1700 } 1701 const index3 = registration.index; 1702 const item = { 1703 index: index3 ?? -1, 1704 element: node, 1705 registration 1706 }; 1707 if (index3 === null) { 1708 automaticItems.push(item); 1709 } else if (index3 >= 0) { 1710 reservedIndices.add(index3); 1711 items.push(item); 1712 } 1713 }); 1714 let nextAutomaticIndex = 0; 1715 automaticItems.sort((a, b) => sortByDocumentPosition(a.element, b.element)); 1716 automaticItems.forEach((item) => { 1717 while (reservedIndices.has(nextAutomaticIndex)) { 1718 nextAutomaticIndex += 1; 1719 } 1720 item.index = nextAutomaticIndex; 1721 items.push(item); 1722 nextAutomaticIndex += 1; 1723 }); 1724 if (reservedIndices.size > 0) { 1725 items.sort((a, b) => a.index - b.index); 1726 } 1727 return [items, automaticItems.map((item) => item.element)]; 1728 } 1729 function getCommonAncestor(firstNode, lastNode) { 1730 let ancestor = firstNode.parentElement; 1731 while (ancestor && !ancestor.contains(lastNode)) { 1732 ancestor = ancestor.parentElement; 1733 } 1734 return ancestor; 1735 } 1736 function hasMovedNode(entries) { 1737 for (const entry of entries) { 1738 for (let i = 0; i < entry.removedNodes.length; i += 1) { 1739 if (entry.removedNodes[i].isConnected) { 1740 return true; 1741 } 1742 } 1743 } 1744 return false; 1745 } 1746 function sortByDocumentPosition(a, b) { 1747 if (a.nextElementSibling === b) { 1748 return -1; 1749 } 1750 if (b.nextElementSibling === a) { 1751 return 1; 1752 } 1753 return a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1; 1754 } 1755 1756 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useId.mjs 1757 var React14 = __toESM(require_react(), 1); 1758 1759 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useForcedRerendering.mjs 1760 var React13 = __toESM(require_react(), 1); 1761 function useForcedRerendering() { 1762 const [, setState] = React13.useState({}); 1763 return React13.useCallback(() => { 1764 setState({}); 1765 }, []); 1766 } 1767 1768 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useId.mjs 1769 var globalId = 0; 1770 function useGlobalId(idOverride, prefix = "mui") { 1771 const defaultId = React14.useRef(void 0); 1772 const forceRerender = useForcedRerendering(); 1773 const id = idOverride ?? defaultId.current; 1774 React14.useEffect(() => { 1775 if (defaultId.current == null) { 1776 globalId += 1; 1777 defaultId.current = `$prefix}-$globalId}`; 1778 if (idOverride == null) { 1779 forceRerender(); 1780 } 1781 } 1782 }, [idOverride, prefix, forceRerender]); 1783 return id; 1784 } 1785 var maybeReactUseId = SafeReact.useId; 1786 function useId(idOverride, prefix) { 1787 if (maybeReactUseId !== void 0) { 1788 const reactId = maybeReactUseId(); 1789 return idOverride ?? (prefix ? `$prefix}-$reactId}` : reactId); 1790 } 1791 return useGlobalId(idOverride, prefix); 1792 } 1793 1794 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useBaseUiId.mjs 1795 function useBaseUiId(idOverride) { 1796 return useId(idOverride, "base-ui"); 1797 } 1798 1799 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/createBaseUIEventDetails.mjs 1800 function createChangeEventDetails(reason, event, trigger, customProperties) { 1801 let canceled = false; 1802 let allowPropagation = false; 1803 const custom = customProperties ?? EMPTY_OBJECT; 1804 const details = { 1805 reason, 1806 event: event ?? new Event("base-ui"), 1807 cancel() { 1808 canceled = true; 1809 }, 1810 allowPropagation() { 1811 allowPropagation = true; 1812 }, 1813 get isCanceled() { 1814 return canceled; 1815 }, 1816 get isPropagationAllowed() { 1817 return allowPropagation; 1818 }, 1819 trigger, 1820 ...custom 1821 }; 1822 return details; 1823 } 1824 1825 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/reason-parts.mjs 1826 var reason_parts_exports = {}; 1827 __export(reason_parts_exports, { 1828 cancelOpen: () => cancelOpen, 1829 chipRemovePress: () => chipRemovePress, 1830 clearPress: () => clearPress, 1831 closePress: () => closePress, 1832 closeWatcher: () => closeWatcher, 1833 decrementPress: () => decrementPress, 1834 disabled: () => disabled, 1835 drag: () => drag, 1836 escapeKey: () => escapeKey, 1837 focusOut: () => focusOut, 1838 imperativeAction: () => imperativeAction, 1839 incrementPress: () => incrementPress, 1840 initial: () => initial, 1841 inputBlur: () => inputBlur, 1842 inputChange: () => inputChange, 1843 inputClear: () => inputClear, 1844 inputPaste: () => inputPaste, 1845 inputPress: () => inputPress, 1846 itemPress: () => itemPress, 1847 keyboard: () => keyboard, 1848 linkPress: () => linkPress, 1849 listNavigation: () => listNavigation, 1850 missing: () => missing, 1851 none: () => none, 1852 outsidePress: () => outsidePress, 1853 pointer: () => pointer, 1854 popupClose: () => popupClose, 1855 scrub: () => scrub, 1856 siblingOpen: () => siblingOpen, 1857 swipe: () => swipe, 1858 trackPress: () => trackPress, 1859 triggerFocus: () => triggerFocus, 1860 triggerHover: () => triggerHover, 1861 triggerPress: () => triggerPress, 1862 wheel: () => wheel, 1863 windowResize: () => windowResize 1864 }); 1865 var none = "none"; 1866 var triggerPress = "trigger-press"; 1867 var triggerHover = "trigger-hover"; 1868 var triggerFocus = "trigger-focus"; 1869 var outsidePress = "outside-press"; 1870 var itemPress = "item-press"; 1871 var closePress = "close-press"; 1872 var linkPress = "link-press"; 1873 var clearPress = "clear-press"; 1874 var chipRemovePress = "chip-remove-press"; 1875 var trackPress = "track-press"; 1876 var incrementPress = "increment-press"; 1877 var decrementPress = "decrement-press"; 1878 var inputChange = "input-change"; 1879 var inputClear = "input-clear"; 1880 var inputBlur = "input-blur"; 1881 var inputPaste = "input-paste"; 1882 var inputPress = "input-press"; 1883 var focusOut = "focus-out"; 1884 var escapeKey = "escape-key"; 1885 var closeWatcher = "close-watcher"; 1886 var listNavigation = "list-navigation"; 1887 var keyboard = "keyboard"; 1888 var pointer = "pointer"; 1889 var drag = "drag"; 1890 var wheel = "wheel"; 1891 var scrub = "scrub"; 1892 var popupClose = "popup-close"; 1893 var cancelOpen = "cancel-open"; 1894 var siblingOpen = "sibling-open"; 1895 var disabled = "disabled"; 1896 var missing = "missing"; 1897 var initial = "initial"; 1898 var imperativeAction = "imperative-action"; 1899 var swipe = "swipe"; 1900 var windowResize = "window-resize"; 1901 1902 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/list/useCompositeListItem.mjs 1903 var React15 = __toESM(require_react(), 1); 1904 function useCompositeListItem(params = {}) { 1905 const { 1906 guess, 1907 label, 1908 metadata, 1909 textRef, 1910 index: externalIndex 1911 } = params; 1912 const { 1913 register: register2, 1914 unregister, 1915 subscribeMapChange, 1916 nextIndexRef 1917 } = useCompositeListContext(); 1918 const indexRef = React15.useRef(-1); 1919 const [internalIndex, setInternalIndex] = React15.useState(externalIndex == null && guess ? () => { 1920 if (indexRef.current === -1) { 1921 const newIndex = nextIndexRef.current; 1922 nextIndexRef.current += 1; 1923 indexRef.current = newIndex; 1924 } 1925 return indexRef.current; 1926 } : -1); 1927 const index3 = externalIndex ?? internalIndex; 1928 const componentRef = React15.useRef(null); 1929 const ref = React15.useCallback((node) => { 1930 const previousNode = componentRef.current; 1931 if (previousNode) { 1932 unregister(previousNode); 1933 } 1934 componentRef.current = node; 1935 if (node) { 1936 register2(node, { 1937 metadata: metadata ?? null, 1938 index: externalIndex ?? null, 1939 label, 1940 textRef 1941 }); 1942 } 1943 }, [externalIndex, register2, unregister, metadata, label, textRef]); 1944 useIsoLayoutEffect(() => { 1945 if (externalIndex != null) { 1946 return void 0; 1947 } 1948 return subscribeMapChange((map) => { 1949 const i = componentRef.current ? map.get(componentRef.current)?.index : null; 1950 if (i != null) { 1951 setInternalIndex(i); 1952 } 1953 }); 1954 }, [externalIndex, subscribeMapChange]); 1955 return { 1956 ref, 1957 index: index3 1958 }; 1959 } 1960 1961 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/use-button/useButton.mjs 1962 var React18 = __toESM(require_react(), 1); 1963 1964 // node_modules/.store/@floating-ui/utils@0.2.12-gOxTzMf36nCrbeHpEew-rw/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs 1965 function hasWindow() { 1966 return typeof window !== "undefined"; 1967 } 1968 function getNodeName(node) { 1969 if (isNode(node)) { 1970 return (node.nodeName || "").toLowerCase(); 1971 } 1972 return "#document"; 1973 } 1974 function getWindow(node) { 1975 var _node$ownerDocument; 1976 return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window; 1977 } 1978 function getDocumentElement(node) { 1979 var _ref; 1980 return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement; 1981 } 1982 function isNode(value) { 1983 if (!hasWindow()) { 1984 return false; 1985 } 1986 return value instanceof Node || value instanceof getWindow(value).Node; 1987 } 1988 function isElement(value) { 1989 if (!hasWindow()) { 1990 return false; 1991 } 1992 return value instanceof Element || value instanceof getWindow(value).Element; 1993 } 1994 function isHTMLElement(value) { 1995 if (!hasWindow()) { 1996 return false; 1997 } 1998 return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement; 1999 } 2000 function isShadowRoot(value) { 2001 if (!hasWindow() || typeof ShadowRoot === "undefined") { 2002 return false; 2003 } 2004 return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot; 2005 } 2006 function isOverflowElement(element) { 2007 const { 2008 overflow, 2009 overflowX, 2010 overflowY, 2011 display 2012 } = getComputedStyle2(element); 2013 return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== "inline" && display !== "contents"; 2014 } 2015 function isTableElement(element) { 2016 return /^(table|td|th)$/.test(getNodeName(element)); 2017 } 2018 function isTopLayer(element) { 2019 try { 2020 if (element.matches(":popover-open")) { 2021 return true; 2022 } 2023 } catch (_e) { 2024 } 2025 try { 2026 return element.matches(":modal"); 2027 } catch (_e) { 2028 return false; 2029 } 2030 } 2031 var willChangeRe = /transform|translate|scale|rotate|perspective|filter/; 2032 var containRe = /paint|layout|strict|content/; 2033 var isNotNone = (value) => !!value && value !== "none"; 2034 var isWebKitValue; 2035 function isContainingBlock(elementOrCss) { 2036 const css = isElement(elementOrCss) ? getComputedStyle2(elementOrCss) : elementOrCss; 2037 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 || ""); 2038 } 2039 function getContainingBlock(element) { 2040 let currentNode = getParentNode(element); 2041 while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) { 2042 if (isContainingBlock(currentNode)) { 2043 return currentNode; 2044 } else if (isTopLayer(currentNode)) { 2045 return null; 2046 } 2047 currentNode = getParentNode(currentNode); 2048 } 2049 return null; 2050 } 2051 function isWebKit() { 2052 if (isWebKitValue == null) { 2053 isWebKitValue = typeof CSS !== "undefined" && CSS.supports && CSS.supports("-webkit-backdrop-filter", "none"); 2054 } 2055 return isWebKitValue; 2056 } 2057 function isLastTraversableNode(node) { 2058 return /^(html|body|#document)$/.test(getNodeName(node)); 2059 } 2060 function getComputedStyle2(element) { 2061 return getWindow(element).getComputedStyle(element); 2062 } 2063 function getNodeScroll(element) { 2064 if (isElement(element)) { 2065 return { 2066 scrollLeft: element.scrollLeft, 2067 scrollTop: element.scrollTop 2068 }; 2069 } 2070 return { 2071 scrollLeft: element.scrollX, 2072 scrollTop: element.scrollY 2073 }; 2074 } 2075 function getParentNode(node) { 2076 if (getNodeName(node) === "html") { 2077 return node; 2078 } 2079 const result = ( 2080 // Step into the shadow DOM of the parent of a slotted node. 2081 node.assignedSlot || // DOM Element detected. 2082 node.parentNode || // ShadowRoot detected. 2083 isShadowRoot(node) && node.host || // Fallback. 2084 getDocumentElement(node) 2085 ); 2086 return isShadowRoot(result) ? result.host : result; 2087 } 2088 function getNearestOverflowAncestor(node) { 2089 const parentNode = getParentNode(node); 2090 if (isLastTraversableNode(parentNode)) { 2091 return (node.ownerDocument || node).body; 2092 } 2093 if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) { 2094 return parentNode; 2095 } 2096 return getNearestOverflowAncestor(parentNode); 2097 } 2098 function getOverflowAncestors(node, list, traverseIframes) { 2099 var _node$ownerDocument2; 2100 if (list === void 0) { 2101 list = []; 2102 } 2103 if (traverseIframes === void 0) { 2104 traverseIframes = true; 2105 } 2106 const scrollableAncestor = getNearestOverflowAncestor(node); 2107 const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body); 2108 const win = getWindow(scrollableAncestor); 2109 if (isBody) { 2110 const frameElement = getFrameElement(win); 2111 return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []); 2112 } else { 2113 return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes)); 2114 } 2115 } 2116 function getFrameElement(win) { 2117 return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null; 2118 } 2119 2120 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/root/CompositeRootContext.mjs 2121 var React16 = __toESM(require_react(), 1); 2122 var CompositeRootContext = /* @__PURE__ */ React16.createContext(void 0); 2123 if (true) CompositeRootContext.displayName = "CompositeRootContext"; 2124 function useCompositeRootContext(optional = false) { 2125 const context = React16.useContext(CompositeRootContext); 2126 if (context === void 0 && !optional) { 2127 throw new Error(true ? "Base UI: CompositeRootContext is missing. Composite parts must be placed within <Composite.Root>." : formatErrorMessage_default(16)); 2128 } 2129 return context; 2130 } 2131 2132 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/useFocusableWhenDisabled.mjs 2133 var React17 = __toESM(require_react(), 1); 2134 function useFocusableWhenDisabled(parameters) { 2135 const { 2136 focusableWhenDisabled, 2137 disabled: disabled2, 2138 composite = false, 2139 tabIndex: tabIndexProp = 0, 2140 isNativeButton 2141 } = parameters; 2142 const isFocusableComposite = composite && focusableWhenDisabled !== false; 2143 const isNonFocusableComposite = composite && focusableWhenDisabled === false; 2144 const props = React17.useMemo(() => { 2145 const additionalProps = { 2146 // allow Tabbing away from focusableWhenDisabled elements 2147 onKeyDown(event) { 2148 if (disabled2 && focusableWhenDisabled && event.key !== "Tab") { 2149 event.preventDefault(); 2150 } 2151 } 2152 }; 2153 if (!composite) { 2154 additionalProps.tabIndex = tabIndexProp; 2155 if (!isNativeButton && disabled2) { 2156 additionalProps.tabIndex = focusableWhenDisabled ? tabIndexProp : -1; 2157 } 2158 } 2159 if (isNativeButton && (focusableWhenDisabled || isFocusableComposite) || !isNativeButton && disabled2) { 2160 additionalProps["aria-disabled"] = disabled2; 2161 } 2162 if (isNativeButton && (!focusableWhenDisabled || isNonFocusableComposite)) { 2163 additionalProps.disabled = disabled2; 2164 } 2165 return additionalProps; 2166 }, [composite, disabled2, focusableWhenDisabled, isFocusableComposite, isNonFocusableComposite, isNativeButton, tabIndexProp]); 2167 return { 2168 props 2169 }; 2170 } 2171 2172 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/owner.mjs 2173 function ownerDocument(node) { 2174 return node?.ownerDocument || document; 2175 } 2176 2177 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/dispatchClickWithModifiers.mjs 2178 function dispatchClickWithModifiers(target, sourceEvent, { 2179 detail = 0, 2180 pointerType = "" 2181 } = {}) { 2182 target.dispatchEvent(new (getWindow(target)).PointerEvent("click", { 2183 bubbles: true, 2184 cancelable: true, 2185 composed: true, 2186 detail, 2187 pointerType, 2188 shiftKey: sourceEvent.shiftKey, 2189 ctrlKey: sourceEvent.ctrlKey, 2190 altKey: sourceEvent.altKey, 2191 metaKey: sourceEvent.metaKey 2192 })); 2193 } 2194 2195 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/use-button/useButton.mjs 2196 function useButton(parameters = {}) { 2197 const { 2198 disabled: disabled2 = false, 2199 focusableWhenDisabled, 2200 tabIndex = 0, 2201 native: isNativeButton = true, 2202 composite: compositeProp 2203 } = parameters; 2204 const elementRef = React18.useRef(null); 2205 const compositeRootContext = useCompositeRootContext(true); 2206 const isCompositeItem = compositeProp ?? compositeRootContext !== void 0; 2207 const { 2208 props: focusableWhenDisabledProps 2209 } = useFocusableWhenDisabled({ 2210 focusableWhenDisabled, 2211 disabled: disabled2, 2212 composite: isCompositeItem, 2213 tabIndex, 2214 isNativeButton 2215 }); 2216 if (true) { 2217 React18.useEffect(() => { 2218 if (!elementRef.current) { 2219 return; 2220 } 2221 const isButtonTag = isButtonElement(elementRef.current); 2222 if (isNativeButton) { 2223 if (!isButtonTag) { 2224 const ownerStackMessage = SafeReact.captureOwnerStack?.() || ""; 2225 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`."; 2226 error(`$message}$ownerStackMessage}`); 2227 } 2228 } else if (isButtonTag) { 2229 const ownerStackMessage = SafeReact.captureOwnerStack?.() || ""; 2230 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`."; 2231 error(`$message}$ownerStackMessage}`); 2232 } 2233 }, [isNativeButton]); 2234 } 2235 const updateDisabled = React18.useCallback(() => { 2236 const element = elementRef.current; 2237 if (!isButtonElement(element)) { 2238 return; 2239 } 2240 if (isCompositeItem && disabled2 && focusableWhenDisabledProps.disabled === void 0 && element.disabled) { 2241 element.disabled = false; 2242 } 2243 }, [disabled2, focusableWhenDisabledProps.disabled, isCompositeItem]); 2244 useIsoLayoutEffect(updateDisabled, [updateDisabled]); 2245 const getButtonProps = React18.useCallback((externalProps = {}) => { 2246 const { 2247 onClick: externalOnClick, 2248 onMouseDown: externalOnMouseDown, 2249 onKeyUp: externalOnKeyUp, 2250 onKeyDown: externalOnKeyDown, 2251 onPointerDown: externalOnPointerDown, 2252 ...otherExternalProps 2253 } = externalProps; 2254 return mergeProps({ 2255 onClick(event) { 2256 if (disabled2) { 2257 event.preventDefault(); 2258 return; 2259 } 2260 externalOnClick?.(event); 2261 }, 2262 onMouseDown(event) { 2263 if (!disabled2) { 2264 externalOnMouseDown?.(event); 2265 } 2266 }, 2267 onKeyDown(event) { 2268 if (disabled2) { 2269 return; 2270 } 2271 makeEventPreventable(event); 2272 externalOnKeyDown?.(event); 2273 if (event.baseUIHandlerPrevented) { 2274 return; 2275 } 2276 const isCurrentTarget = event.target === event.currentTarget; 2277 const currentTarget = event.currentTarget; 2278 const isButton = isButtonElement(currentTarget); 2279 const isLink = !isNativeButton && isValidLinkElement(currentTarget); 2280 const shouldClick = isCurrentTarget && (isNativeButton ? isButton : !isLink); 2281 const isEnterKey = event.key === "Enter"; 2282 const isSpaceKey = event.key === " "; 2283 const role = currentTarget.getAttribute("role"); 2284 const isTextNavigationRole = role?.startsWith("menuitem") || role === "option" || role === "gridcell"; 2285 if (isCurrentTarget && isCompositeItem && isSpaceKey) { 2286 if (event.defaultPrevented && isTextNavigationRole) { 2287 return; 2288 } 2289 event.preventDefault(); 2290 if (!isNativeButton || isButton) { 2291 event.preventBaseUIHandler(); 2292 dispatchClickWithModifiers(currentTarget, event); 2293 } 2294 return; 2295 } 2296 if (!shouldClick || isNativeButton || !isSpaceKey && !isEnterKey) { 2297 if (isCurrentTarget && isLink && isSpaceKey) { 2298 event.preventDefault(); 2299 } 2300 return; 2301 } 2302 if (event.defaultPrevented) { 2303 return; 2304 } 2305 event.preventDefault(); 2306 if (isEnterKey) { 2307 event.preventBaseUIHandler(); 2308 dispatchClickWithModifiers(currentTarget, event); 2309 } 2310 }, 2311 onKeyUp(event) { 2312 if (disabled2) { 2313 return; 2314 } 2315 makeEventPreventable(event); 2316 externalOnKeyUp?.(event); 2317 if (event.target === event.currentTarget && isNativeButton && isCompositeItem && isButtonElement(event.currentTarget) && event.key === " ") { 2318 event.preventDefault(); 2319 return; 2320 } 2321 if (event.baseUIHandlerPrevented) { 2322 return; 2323 } 2324 if (event.target === event.currentTarget && !isNativeButton && !isCompositeItem && !event.defaultPrevented && event.key === " ") { 2325 event.preventBaseUIHandler(); 2326 dispatchClickWithModifiers(event.currentTarget, event); 2327 } 2328 }, 2329 onPointerDown(event) { 2330 if (disabled2) { 2331 event.preventDefault(); 2332 return; 2333 } 2334 externalOnPointerDown?.(event); 2335 } 2336 }, isNativeButton ? { 2337 type: "button" 2338 } : { 2339 role: "button" 2340 }, focusableWhenDisabledProps, otherExternalProps); 2341 }, [disabled2, focusableWhenDisabledProps, isCompositeItem, isNativeButton]); 2342 const buttonRef = useStableCallback((element) => { 2343 elementRef.current = element; 2344 updateDisabled(); 2345 }); 2346 return { 2347 getButtonProps, 2348 buttonRef 2349 }; 2350 } 2351 function isButtonElement(elem) { 2352 return isHTMLElement(elem) && elem.tagName === "BUTTON"; 2353 } 2354 function isValidLinkElement(elem) { 2355 return isHTMLElement(elem) && elem.tagName === "A" && Boolean(elem.href); 2356 } 2357 2358 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/addEventListener.mjs 2359 function addEventListener(target, type, listener, options) { 2360 target.addEventListener(type, listener, options); 2361 return () => { 2362 target.removeEventListener(type, listener, options); 2363 }; 2364 } 2365 2366 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useValueAsRef.mjs 2367 function useValueAsRef(value) { 2368 const latest = useRefWithInit(createLatestRef, value).current; 2369 latest.next = value; 2370 useIsoLayoutEffect(latest.effect); 2371 return latest; 2372 } 2373 function createLatestRef(value) { 2374 const latest = { 2375 current: value, 2376 next: value, 2377 effect: () => { 2378 latest.current = latest.next; 2379 } 2380 }; 2381 return latest; 2382 } 2383 2384 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/parts.mjs 2385 var parts_exports = {}; 2386 __export(parts_exports, { 2387 engine: () => engine_exports, 2388 env: () => env_exports, 2389 mediaQuery: () => media_query_exports, 2390 os: () => os_exports, 2391 screenReader: () => screen_reader_exports 2392 }); 2393 2394 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/os.mjs 2395 var os_exports = {}; 2396 __export(os_exports, { 2397 android: () => android, 2398 apple: () => apple, 2399 ios: () => ios, 2400 linux: () => linux, 2401 mac: () => mac, 2402 windows: () => windows 2403 }); 2404 2405 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/shared.mjs 2406 function readRawData() { 2407 if (typeof navigator === "undefined") { 2408 return { 2409 userAgent: "", 2410 platform: "", 2411 maxTouchPoints: 0 2412 }; 2413 } 2414 if (true) { 2415 const uaData = navigator.userAgentData; 2416 if (uaData && Array.isArray(uaData.brands)) { 2417 return { 2418 userAgent: uaData.brands.map(({ 2419 brand, 2420 version: version2 2421 }) => `$brand}/$version2}`).join(" "), 2422 platform: uaData.platform ?? navigator.platform ?? "", 2423 maxTouchPoints: navigator.maxTouchPoints ?? 0 2424 }; 2425 } 2426 } 2427 return { 2428 userAgent: navigator.userAgent, 2429 platform: navigator.platform ?? "", 2430 maxTouchPoints: navigator.maxTouchPoints ?? 0 2431 }; 2432 } 2433 var { 2434 userAgent, 2435 platform, 2436 maxTouchPoints 2437 } = readRawData(); 2438 var lowerUserAgent = userAgent.toLowerCase(); 2439 var lowerPlatform = platform.toLowerCase(); 2440 2441 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/os.mjs 2442 var ios = /^i(os$|p)/.test(lowerPlatform) || lowerPlatform === "macintel" && maxTouchPoints > 1; 2443 var ANDROID_STRING = "android"; 2444 var android = lowerPlatform === ANDROID_STRING || lowerUserAgent.includes(ANDROID_STRING); 2445 var mac = !ios && lowerPlatform.startsWith("mac"); 2446 var windows = lowerPlatform.startsWith("win"); 2447 var linux = !android && /^(linux|chrome os)/.test(lowerPlatform); 2448 var apple = mac || ios; 2449 2450 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/engine.mjs 2451 var engine_exports = {}; 2452 __export(engine_exports, { 2453 blink: () => blink, 2454 gecko: () => gecko, 2455 webkit: () => webkit 2456 }); 2457 var webkit = typeof CSS !== "undefined" && !!CSS.supports?.("-webkit-backdrop-filter:none"); 2458 var gecko = !webkit && lowerUserAgent.includes("firefox"); 2459 var blink = !webkit && lowerUserAgent.includes("chrom"); 2460 2461 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/screen-reader.mjs 2462 var screen_reader_exports = {}; 2463 __export(screen_reader_exports, { 2464 voiceOver: () => voiceOver 2465 }); 2466 var voiceOver = apple; 2467 2468 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/env.mjs 2469 var env_exports = {}; 2470 __export(env_exports, { 2471 jsdom: () => jsdom 2472 }); 2473 var jsdom = /jsdom|happydom/.test(lowerUserAgent); 2474 2475 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/platform/media-query.mjs 2476 var media_query_exports = {}; 2477 __export(media_query_exports, { 2478 iOS: () => iOS 2479 }); 2480 var iOS = "@supports (-webkit-touch-callout: none)"; 2481 2482 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useScrollLock.mjs 2483 var originalHtmlStyles = {}; 2484 var originalBodyStyles = {}; 2485 var originalHtmlScrollBehavior = ""; 2486 function getViewportScroller(html, body) { 2487 return isOverflowElement(html) ? html : body; 2488 } 2489 function isPageScrollLocked(win, html, body) { 2490 return /hidden|clip/.test(win.getComputedStyle(getViewportScroller(html, body)).overflowY); 2491 } 2492 function hasInsetScrollbars(referenceElement) { 2493 if (typeof document === "undefined") { 2494 return false; 2495 } 2496 const doc = ownerDocument(referenceElement); 2497 const win = getWindow(doc); 2498 return win.innerWidth - doc.documentElement.clientWidth > 0; 2499 } 2500 function supportsStableScrollbarGutter(referenceElement) { 2501 const supported = typeof CSS !== "undefined" && CSS.supports && CSS.supports("scrollbar-gutter", "stable"); 2502 if (!supported || typeof document === "undefined") { 2503 return false; 2504 } 2505 const doc = ownerDocument(referenceElement); 2506 const html = doc.documentElement; 2507 const body = doc.body; 2508 const scrollContainer = getViewportScroller(html, body); 2509 const originalScrollContainerOverflowY = scrollContainer.style.overflowY; 2510 const originalHtmlStyleGutter = html.style.scrollbarGutter; 2511 html.style.scrollbarGutter = "stable"; 2512 scrollContainer.style.overflowY = "scroll"; 2513 const before = scrollContainer.offsetWidth; 2514 scrollContainer.style.overflowY = "hidden"; 2515 const after = scrollContainer.offsetWidth; 2516 scrollContainer.style.overflowY = originalScrollContainerOverflowY; 2517 html.style.scrollbarGutter = originalHtmlStyleGutter; 2518 return before === after; 2519 } 2520 function preventScrollOverlayScrollbars(referenceElement) { 2521 const doc = ownerDocument(referenceElement); 2522 const html = doc.documentElement; 2523 const body = doc.body; 2524 const elementToLock = getViewportScroller(html, body); 2525 const originalElementToLockStyles = { 2526 overflowY: elementToLock.style.overflowY, 2527 overflowX: elementToLock.style.overflowX 2528 }; 2529 Object.assign(elementToLock.style, { 2530 overflowY: "hidden", 2531 overflowX: "hidden" 2532 }); 2533 return () => { 2534 Object.assign(elementToLock.style, originalElementToLockStyles); 2535 }; 2536 } 2537 function preventScrollInsetScrollbars(referenceElement) { 2538 const doc = ownerDocument(referenceElement); 2539 const html = doc.documentElement; 2540 const body = doc.body; 2541 const win = getWindow(html); 2542 let scrollTop = 0; 2543 let scrollLeft = 0; 2544 let updateGutterOnly = false; 2545 const resizeFrame = AnimationFrame.create(); 2546 if (parts_exports.engine.webkit && (win.visualViewport?.scale ?? 1) !== 1) { 2547 return () => { 2548 }; 2549 } 2550 function lockScroll() { 2551 const htmlStyles = win.getComputedStyle(html); 2552 const bodyStyles = win.getComputedStyle(body); 2553 const htmlScrollbarGutterValue = htmlStyles.scrollbarGutter || ""; 2554 const hasBothEdges = htmlScrollbarGutterValue.includes("both-edges"); 2555 const scrollbarGutterValue = hasBothEdges ? "stable both-edges" : "stable"; 2556 scrollTop = html.scrollTop; 2557 scrollLeft = html.scrollLeft; 2558 originalHtmlStyles = { 2559 scrollbarGutter: html.style.scrollbarGutter, 2560 overflowY: html.style.overflowY, 2561 overflowX: html.style.overflowX 2562 }; 2563 originalHtmlScrollBehavior = html.style.scrollBehavior; 2564 originalBodyStyles = { 2565 position: body.style.position, 2566 height: body.style.height, 2567 width: body.style.width, 2568 boxSizing: body.style.boxSizing, 2569 overflowY: body.style.overflowY, 2570 overflowX: body.style.overflowX, 2571 scrollBehavior: body.style.scrollBehavior 2572 }; 2573 const isScrollableY = html.scrollHeight > html.clientHeight; 2574 const isScrollableX = html.scrollWidth > html.clientWidth; 2575 const hasConstantOverflowY = htmlStyles.overflowY === "scroll" || bodyStyles.overflowY === "scroll"; 2576 const hasConstantOverflowX = htmlStyles.overflowX === "scroll" || bodyStyles.overflowX === "scroll"; 2577 const scrollbarWidth = Math.max(0, win.innerWidth - body.clientWidth); 2578 const scrollbarHeight = Math.max(0, win.innerHeight - body.clientHeight); 2579 const marginY = parseFloat(bodyStyles.marginTop) + parseFloat(bodyStyles.marginBottom); 2580 const marginX = parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight); 2581 const elementToLock = getViewportScroller(html, body); 2582 updateGutterOnly = supportsStableScrollbarGutter(referenceElement); 2583 if (updateGutterOnly) { 2584 html.style.scrollbarGutter = scrollbarGutterValue; 2585 elementToLock.style.overflowY = "hidden"; 2586 elementToLock.style.overflowX = "hidden"; 2587 return; 2588 } 2589 Object.assign(html.style, { 2590 scrollbarGutter: scrollbarGutterValue, 2591 overflowY: "hidden", 2592 overflowX: "hidden" 2593 }); 2594 if (isScrollableY || hasConstantOverflowY) { 2595 html.style.overflowY = "scroll"; 2596 } 2597 if (isScrollableX || hasConstantOverflowX) { 2598 html.style.overflowX = "scroll"; 2599 } 2600 Object.assign(body.style, { 2601 position: "relative", 2602 height: marginY || scrollbarHeight ? `calc(100dvh - $marginY + scrollbarHeight}px)` : "100dvh", 2603 width: marginX || scrollbarWidth ? `calc(100vw - $marginX + scrollbarWidth}px)` : "100vw", 2604 boxSizing: "border-box", 2605 // Assign the longhands that `cleanup` restores, so nothing is left behind. 2606 overflowY: "hidden", 2607 overflowX: "hidden", 2608 scrollBehavior: "unset" 2609 }); 2610 body.scrollTop = scrollTop; 2611 body.scrollLeft = scrollLeft; 2612 html.setAttribute("data-base-ui-scroll-locked", ""); 2613 html.style.scrollBehavior = "unset"; 2614 } 2615 function cleanup() { 2616 Object.assign(html.style, originalHtmlStyles); 2617 Object.assign(body.style, originalBodyStyles); 2618 if (!updateGutterOnly) { 2619 html.scrollTop = scrollTop; 2620 html.scrollLeft = scrollLeft; 2621 html.removeAttribute("data-base-ui-scroll-locked"); 2622 html.style.scrollBehavior = originalHtmlScrollBehavior; 2623 } 2624 } 2625 function handleResize() { 2626 cleanup(); 2627 resizeFrame.request(lockScroll); 2628 } 2629 lockScroll(); 2630 const unsubscribeResize = addEventListener(win, "resize", handleResize); 2631 return () => { 2632 resizeFrame.cancel(); 2633 cleanup(); 2634 if (typeof win.removeEventListener === "function") { 2635 unsubscribeResize(); 2636 } 2637 }; 2638 } 2639 var ScrollLocker = class { 2640 lockCount = 0; 2641 restore = null; 2642 timeoutLock = Timeout.create(); 2643 timeoutUnlock = Timeout.create(); 2644 acquire(referenceElement) { 2645 this.lockCount += 1; 2646 if (this.lockCount === 1 && this.restore === null) { 2647 this.timeoutLock.start(0, () => this.lock(referenceElement)); 2648 } 2649 return this.release; 2650 } 2651 release = () => { 2652 this.lockCount -= 1; 2653 if (this.lockCount === 0 && this.restore) { 2654 this.timeoutUnlock.start(0, this.unlock); 2655 } 2656 }; 2657 unlock = () => { 2658 if (this.lockCount === 0 && this.restore) { 2659 this.restore?.(); 2660 this.restore = null; 2661 } 2662 }; 2663 lock(referenceElement) { 2664 if (this.lockCount === 0 || this.restore !== null) { 2665 return; 2666 } 2667 const doc = ownerDocument(referenceElement); 2668 const html = doc.documentElement; 2669 const body = doc.body; 2670 const win = getWindow(html); 2671 if (isPageScrollLocked(win, html, body)) { 2672 const observer = new win.MutationObserver(() => { 2673 if (isPageScrollLocked(win, html, body)) { 2674 return; 2675 } 2676 observer.disconnect(); 2677 this.restore = null; 2678 this.lock(referenceElement); 2679 }); 2680 const options = { 2681 attributes: true 2682 }; 2683 observer.observe(html, options); 2684 observer.observe(body, options); 2685 this.restore = () => observer.disconnect(); 2686 return; 2687 } 2688 const hasOverlayScrollbars = parts_exports.os.ios || !hasInsetScrollbars(referenceElement); 2689 this.restore = hasOverlayScrollbars ? preventScrollOverlayScrollbars(referenceElement) : preventScrollInsetScrollbars(referenceElement); 2690 } 2691 }; 2692 var SCROLL_LOCKER = new ScrollLocker(); 2693 function useScrollLock(enabled = true, referenceElement = null) { 2694 useIsoLayoutEffect(() => { 2695 if (!enabled) { 2696 return void 0; 2697 } 2698 return SCROLL_LOCKER.acquire(referenceElement); 2699 }, [enabled, referenceElement]); 2700 } 2701 2702 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/event.mjs 2703 function stopEvent(event) { 2704 event.preventDefault(); 2705 event.stopPropagation(); 2706 } 2707 function isReactEvent(event) { 2708 return "nativeEvent" in event; 2709 } 2710 function isVirtualClick(event) { 2711 if (event.pointerType === "" && event.isTrusted) { 2712 return true; 2713 } 2714 if (parts_exports.os.android && event.pointerType) { 2715 return event.type === "click" && event.buttons === 1; 2716 } 2717 return event.detail === 0 && !event.pointerType; 2718 } 2719 function isVirtualPointerEvent(event) { 2720 if (parts_exports.env.jsdom) { 2721 return false; 2722 } 2723 return !parts_exports.os.android && event.width === 0 && event.height === 0 || // Chrome synthesizes a screen reader press (TalkBack, VoiceOver, NVDA) as a 1x1 mouse 2724 // `pointerdown` with no pressure. TalkBack can report a pressed button, while desktop 2725 // mouse presses can report no pressure, so only require no pressed button off Android. 2726 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. 2727 event.width < 1 && event.height < 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === "touch"; 2728 } 2729 function isMouseLikePointerType(pointerType, strict) { 2730 const values = ["mouse", "pen"]; 2731 if (!strict) { 2732 values.push("", void 0); 2733 } 2734 return values.includes(pointerType); 2735 } 2736 function isClickLikeEvent(event) { 2737 const type = event.type; 2738 return type === "click" || type === "mousedown" || type === "keydown" || type === "keyup"; 2739 } 2740 2741 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/shadowDom.mjs 2742 function activeElement(doc) { 2743 let element = doc.activeElement; 2744 while (element?.shadowRoot?.activeElement != null) { 2745 element = element.shadowRoot.activeElement; 2746 } 2747 return element; 2748 } 2749 function contains(parent, child) { 2750 if (!parent || !child) { 2751 return false; 2752 } 2753 const rootNode = child.getRootNode?.(); 2754 if (parent.contains(child)) { 2755 return true; 2756 } 2757 if (rootNode && isShadowRoot(rootNode)) { 2758 let next = child; 2759 while (next) { 2760 if (parent === next) { 2761 return true; 2762 } 2763 next = next.parentNode || next.host; 2764 } 2765 } 2766 return false; 2767 } 2768 function closest(node, selector) { 2769 let current = node; 2770 while (current) { 2771 if (isElement(current) && current.matches(selector)) { 2772 return current; 2773 } 2774 current = current.assignedSlot ?? current.parentNode ?? (isShadowRoot(current) ? current.host : null); 2775 } 2776 return null; 2777 } 2778 function getTarget(event) { 2779 if ("composedPath" in event) { 2780 return event.composedPath()[0] ?? event.target; 2781 } 2782 return event.target; 2783 } 2784 2785 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/constants.mjs 2786 var FOCUSABLE_ATTRIBUTE = "data-base-ui-focusable"; 2787 var TYPEABLE_SELECTOR = "input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])"; 2788 var ARROW_LEFT = "ArrowLeft"; 2789 var ARROW_RIGHT = "ArrowRight"; 2790 var ARROW_UP = "ArrowUp"; 2791 var ARROW_DOWN = "ArrowDown"; 2792 2793 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/CommonPopupDataAttributes.mjs 2794 var open = "data-open"; 2795 var closed = "data-closed"; 2796 var anchorHidden = "data-anchor-hidden"; 2797 2798 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/CommonTriggerDataAttributes.mjs 2799 var CommonTriggerDataAttributes_exports = {}; 2800 __export(CommonTriggerDataAttributes_exports, { 2801 popupOpen: () => popupOpen, 2802 pressed: () => pressed 2803 }); 2804 var popupOpen = "data-popup-open"; 2805 var pressed = "data-pressed"; 2806 2807 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popupStateMapping.mjs 2808 var TRIGGER_HOOK = { 2809 [popupOpen]: "" 2810 }; 2811 var PRESSABLE_TRIGGER_HOOK = { 2812 [popupOpen]: "", 2813 [pressed]: "" 2814 }; 2815 var POPUP_OPEN_HOOK = { 2816 [open]: "" 2817 }; 2818 var POPUP_CLOSED_HOOK = { 2819 [closed]: "" 2820 }; 2821 var ANCHOR_HIDDEN_HOOK = { 2822 [anchorHidden]: "" 2823 }; 2824 var triggerOpenStateMapping = { 2825 open(value) { 2826 if (value) { 2827 return TRIGGER_HOOK; 2828 } 2829 return null; 2830 } 2831 }; 2832 var pressableTriggerOpenStateMapping = { 2833 open(value) { 2834 if (value) { 2835 return PRESSABLE_TRIGGER_HOOK; 2836 } 2837 return null; 2838 } 2839 }; 2840 var popupStateMapping = { 2841 open(value) { 2842 if (value) { 2843 return POPUP_OPEN_HOOK; 2844 } 2845 return POPUP_CLOSED_HOOK; 2846 }, 2847 anchorHidden(value) { 2848 if (value) { 2849 return ANCHOR_HIDDEN_HOOK; 2850 } 2851 return null; 2852 } 2853 }; 2854 var popupTransitionStateMapping = { 2855 ...popupStateMapping, 2856 ...transitionStatusMapping 2857 }; 2858 2859 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/element.mjs 2860 function isEventTargetWithin(event, node) { 2861 if (node == null) { 2862 return false; 2863 } 2864 if ("composedPath" in event) { 2865 return event.composedPath().includes(node); 2866 } 2867 const eventAgain = event; 2868 return eventAgain.target != null && node.contains(eventAgain.target); 2869 } 2870 function isRootElement(element) { 2871 return element.matches("html,body"); 2872 } 2873 function isTypeableElement(element) { 2874 return isHTMLElement(element) && element.matches(TYPEABLE_SELECTOR); 2875 } 2876 function isTypeableCombobox(element) { 2877 if (!element) { 2878 return false; 2879 } 2880 return element.getAttribute("role") === "combobox" && isTypeableElement(element); 2881 } 2882 function getFloatingFocusElement(floatingElement) { 2883 if (!floatingElement) { 2884 return null; 2885 } 2886 return floatingElement.hasAttribute(FOCUSABLE_ATTRIBUTE) ? floatingElement : floatingElement.querySelector(`[$FOCUSABLE_ATTRIBUTE}]`) || floatingElement; 2887 } 2888 2889 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingFocusManager.mjs 2890 var React22 = __toESM(require_react(), 1); 2891 2892 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/mergeCleanups.mjs 2893 function mergeCleanups(...cleanups) { 2894 return () => { 2895 for (let i = 0; i < cleanups.length; i += 1) { 2896 const cleanup = cleanups[i]; 2897 if (cleanup) { 2898 cleanup(); 2899 } 2900 } 2901 }; 2902 } 2903 2904 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/FocusGuard.mjs 2905 var React19 = __toESM(require_react(), 1); 2906 2907 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/visuallyHidden.mjs 2908 var visuallyHiddenBase = { 2909 clipPath: "inset(50%)", 2910 overflow: "hidden", 2911 whiteSpace: "nowrap", 2912 border: 0, 2913 padding: 0, 2914 width: 1, 2915 height: 1, 2916 margin: -1 2917 }; 2918 var visuallyHidden = { 2919 ...visuallyHiddenBase, 2920 position: "fixed", 2921 margin: 0, 2922 top: 0, 2923 left: 0 2924 }; 2925 var visuallyHiddenInput = { 2926 ...visuallyHiddenBase, 2927 position: "absolute" 2928 }; 2929 2930 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/FocusGuard.mjs 2931 var import_jsx_runtime23 = __toESM(require_jsx_runtime(), 1); 2932 var FocusGuard = /* @__PURE__ */ React19.forwardRef(function FocusGuard2(props, ref) { 2933 const [role, setRole] = React19.useState(); 2934 useIsoLayoutEffect(() => { 2935 if (parts_exports.screenReader.voiceOver && parts_exports.engine.webkit) { 2936 setRole("button"); 2937 } 2938 }, []); 2939 const restProps = { 2940 tabIndex: 0, 2941 // Role is only for VoiceOver 2942 role 2943 }; 2944 return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { 2945 ...props, 2946 ref, 2947 style: visuallyHidden, 2948 "aria-hidden": role ? void 0 : true, 2949 ...restProps, 2950 "data-base-ui-focus-guard": "" 2951 }); 2952 }); 2953 if (true) FocusGuard.displayName = "FocusGuard"; 2954 2955 // node_modules/.store/@floating-ui/utils@0.2.12-gOxTzMf36nCrbeHpEew-rw/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs 2956 var min = Math.min; 2957 var max = Math.max; 2958 var round = Math.round; 2959 var floor = Math.floor; 2960 var createCoords = (v) => ({ 2961 x: v, 2962 y: v 2963 }); 2964 var oppositeSideMap = { 2965 left: "right", 2966 right: "left", 2967 bottom: "top", 2968 top: "bottom" 2969 }; 2970 function clamp(start, value, end) { 2971 return max(start, min(value, end)); 2972 } 2973 function evaluate(value, param) { 2974 return typeof value === "function" ? value(param) : value; 2975 } 2976 function getSide(placement) { 2977 return placement.split("-")[0]; 2978 } 2979 function getAlignment(placement) { 2980 return placement.split("-")[1]; 2981 } 2982 function getOppositeAxis(axis) { 2983 return axis === "x" ? "y" : "x"; 2984 } 2985 function getAxisLength(axis) { 2986 return axis === "y" ? "height" : "width"; 2987 } 2988 function getSideAxis(placement) { 2989 const firstChar = placement[0]; 2990 return firstChar === "t" || firstChar === "b" ? "y" : "x"; 2991 } 2992 function getAlignmentAxis(placement) { 2993 return getOppositeAxis(getSideAxis(placement)); 2994 } 2995 function getAlignmentSides(placement, rects, rtl) { 2996 if (rtl === void 0) { 2997 rtl = false; 2998 } 2999 const alignment = getAlignment(placement); 3000 const alignmentAxis = getAlignmentAxis(placement); 3001 const length = getAxisLength(alignmentAxis); 3002 let mainAlignmentSide = alignmentAxis === "x" ? alignment === (rtl ? "end" : "start") ? "right" : "left" : alignment === "start" ? "bottom" : "top"; 3003 if (rects.reference[length] > rects.floating[length]) { 3004 mainAlignmentSide = getOppositePlacement(mainAlignmentSide); 3005 } 3006 return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)]; 3007 } 3008 function getExpandedPlacements(placement) { 3009 const oppositePlacement = getOppositePlacement(placement); 3010 return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)]; 3011 } 3012 function getOppositeAlignmentPlacement(placement) { 3013 return placement.includes("start") ? placement.replace("start", "end") : placement.replace("end", "start"); 3014 } 3015 var lrPlacement = ["left", "right"]; 3016 var rlPlacement = ["right", "left"]; 3017 var tbPlacement = ["top", "bottom"]; 3018 var btPlacement = ["bottom", "top"]; 3019 function getSideList(side, isStart, rtl) { 3020 switch (side) { 3021 case "top": 3022 case "bottom": 3023 if (rtl) return isStart ? rlPlacement : lrPlacement; 3024 return isStart ? lrPlacement : rlPlacement; 3025 case "left": 3026 case "right": 3027 return isStart ? tbPlacement : btPlacement; 3028 default: 3029 return []; 3030 } 3031 } 3032 function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) { 3033 const alignment = getAlignment(placement); 3034 let list = getSideList(getSide(placement), direction === "start", rtl); 3035 if (alignment) { 3036 list = list.map((side) => side + "-" + alignment); 3037 if (flipAlignment) { 3038 list = list.concat(list.map(getOppositeAlignmentPlacement)); 3039 } 3040 } 3041 return list; 3042 } 3043 function getOppositePlacement(placement) { 3044 const side = getSide(placement); 3045 return oppositeSideMap[side] + placement.slice(side.length); 3046 } 3047 function expandPaddingObject(padding) { 3048 var _padding$top, _padding$right, _padding$bottom, _padding$left; 3049 return { 3050 top: (_padding$top = padding.top) != null ? _padding$top : 0, 3051 right: (_padding$right = padding.right) != null ? _padding$right : 0, 3052 bottom: (_padding$bottom = padding.bottom) != null ? _padding$bottom : 0, 3053 left: (_padding$left = padding.left) != null ? _padding$left : 0 3054 }; 3055 } 3056 function getPaddingObject(padding) { 3057 return typeof padding !== "number" ? expandPaddingObject(padding) : { 3058 top: padding, 3059 right: padding, 3060 bottom: padding, 3061 left: padding 3062 }; 3063 } 3064 function rectToClientRect(rect) { 3065 const { 3066 x, 3067 y, 3068 width, 3069 height 3070 } = rect; 3071 return { 3072 width, 3073 height, 3074 top: y, 3075 left: x, 3076 right: x + width, 3077 bottom: y + height, 3078 x, 3079 y 3080 }; 3081 } 3082 3083 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/composite.mjs 3084 function isIndexOutOfListBounds(list, index3) { 3085 return index3 < 0 || index3 >= list.length; 3086 } 3087 function getMinListIndex(listRef, disabledIndices) { 3088 return findNonDisabledListIndex(listRef.current, { 3089 disabledIndices 3090 }); 3091 } 3092 function getMaxListIndex(listRef, disabledIndices) { 3093 return findNonDisabledListIndex(listRef.current, { 3094 decrement: true, 3095 startingIndex: listRef.current.length, 3096 disabledIndices 3097 }); 3098 } 3099 function getNextListIndex(list, currentIndex, options) { 3100 const { 3101 decrement, 3102 loopFocus, 3103 allowEscape, 3104 disabledIndices, 3105 minIndex, 3106 maxIndex 3107 } = options; 3108 const step = () => findNonDisabledListIndex(list, { 3109 startingIndex: currentIndex, 3110 decrement, 3111 disabledIndices 3112 }); 3113 let index3; 3114 let wrapped = false; 3115 if (!loopFocus) { 3116 index3 = decrement ? Math.max(minIndex, step()) : Math.min(maxIndex, step()); 3117 } else if (decrement ? currentIndex <= minIndex : currentIndex >= maxIndex) { 3118 const outside = decrement ? -1 : list.length; 3119 if (allowEscape && currentIndex !== outside) { 3120 index3 = -1; 3121 } else { 3122 index3 = decrement ? maxIndex : minIndex; 3123 wrapped = true; 3124 } 3125 } else { 3126 index3 = step(); 3127 } 3128 return { 3129 index: isIndexOutOfListBounds(list, index3) ? -1 : index3, 3130 wrapped 3131 }; 3132 } 3133 function findNonDisabledListIndex(list, { 3134 startingIndex = -1, 3135 decrement = false, 3136 disabledIndices, 3137 amount = 1 3138 } = {}) { 3139 let index3 = startingIndex; 3140 do { 3141 index3 += decrement ? -amount : amount; 3142 } while (index3 >= 0 && index3 <= list.length - 1 && isListIndexDisabled(list, index3, disabledIndices)); 3143 return index3; 3144 } 3145 function isListIndexDisabled(list, index3, disabledIndices) { 3146 const isExplicitlyDisabled = typeof disabledIndices === "function" ? disabledIndices(index3) : disabledIndices?.includes(index3) ?? false; 3147 if (isExplicitlyDisabled) { 3148 return true; 3149 } 3150 const element = list[index3]; 3151 if (!element) { 3152 return false; 3153 } 3154 if (!isElementVisible(element)) { 3155 return true; 3156 } 3157 if (element.matches(":disabled")) { 3158 return true; 3159 } 3160 return !disabledIndices && (element.hasAttribute("disabled") || element.getAttribute("aria-disabled") === "true"); 3161 } 3162 function isHiddenByStyles(styles) { 3163 return styles.visibility === "hidden" || styles.visibility === "collapse"; 3164 } 3165 function isElementVisible(element, styles = element ? getComputedStyle2(element) : null) { 3166 if (!element || !element.isConnected || !styles || isHiddenByStyles(styles)) { 3167 return false; 3168 } 3169 if (typeof element.checkVisibility === "function") { 3170 return element.checkVisibility(); 3171 } 3172 return styles.display !== "none" && styles.display !== "contents"; 3173 } 3174 3175 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/tabbable.mjs 3176 var CANDIDATE_SELECTOR = 'a[href],button,input,select,textarea,summary,details,iframe,object,embed,[tabindex],[contenteditable]:not([contenteditable="false"]),audio[controls],video[controls]'; 3177 function getParentElement(element) { 3178 const assignedSlot = element.assignedSlot; 3179 if (assignedSlot) { 3180 return assignedSlot; 3181 } 3182 if (element.parentElement) { 3183 return element.parentElement; 3184 } 3185 const rootNode = element.getRootNode(); 3186 return isShadowRoot(rootNode) ? rootNode.host : null; 3187 } 3188 function getDetailsSummary(details) { 3189 for (const child of Array.from(details.children)) { 3190 if (getNodeName(child) === "summary") { 3191 return child; 3192 } 3193 } 3194 return null; 3195 } 3196 function isWithinOpenDetailsSummary(element, details) { 3197 const summary = getDetailsSummary(details); 3198 return !!summary && (element === summary || contains(summary, element)); 3199 } 3200 function isFocusableCandidate(element) { 3201 const nodeName = element ? getNodeName(element) : ""; 3202 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"); 3203 } 3204 function isFocusableElement(element) { 3205 if (!isFocusableCandidate(element) || !element.isConnected || element.matches(":disabled")) { 3206 return false; 3207 } 3208 for (let current = element; current; current = getParentElement(current)) { 3209 const isAncestor = current !== element; 3210 const isSlot = getNodeName(current) === "slot"; 3211 if (current.hasAttribute("inert")) { 3212 return false; 3213 } 3214 if (isAncestor && getNodeName(current) === "details" && !current.open && !isWithinOpenDetailsSummary(element, current) || current.hasAttribute("hidden") || !isSlot && !isVisibleInTabbableTree(current, isAncestor)) { 3215 return false; 3216 } 3217 } 3218 return true; 3219 } 3220 function isVisibleInTabbableTree(element, isAncestor) { 3221 const styles = getComputedStyle2(element); 3222 if (!isAncestor) { 3223 return isElementVisible(element, styles); 3224 } 3225 return styles.display !== "none"; 3226 } 3227 function getTabIndex(element) { 3228 const tabIndex = element.tabIndex; 3229 if (tabIndex < 0) { 3230 const nodeName = getNodeName(element); 3231 if (nodeName === "details" || nodeName === "audio" || nodeName === "video" || isHTMLElement(element) && element.isContentEditable) { 3232 return 0; 3233 } 3234 } 3235 return tabIndex; 3236 } 3237 function getNamedRadioInput(element) { 3238 if (getNodeName(element) !== "input") { 3239 return null; 3240 } 3241 const input = element; 3242 return input.type === "radio" && input.name !== "" ? input : null; 3243 } 3244 function isTabbableRadio(element, candidates) { 3245 const input = getNamedRadioInput(element); 3246 if (!input) { 3247 return true; 3248 } 3249 const checkedRadio = candidates.find((candidate) => { 3250 const radio = getNamedRadioInput(candidate); 3251 return radio?.name === input.name && radio.form === input.form && radio.checked; 3252 }); 3253 if (checkedRadio) { 3254 return checkedRadio === input; 3255 } 3256 return candidates.find((candidate) => { 3257 const radio = getNamedRadioInput(candidate); 3258 return radio?.name === input.name && radio.form === input.form; 3259 }) === input; 3260 } 3261 function getComposedChildren(container) { 3262 if (isHTMLElement(container) && getNodeName(container) === "slot") { 3263 const assignedElements = container.assignedElements({ 3264 flatten: true 3265 }); 3266 if (assignedElements.length > 0) { 3267 return assignedElements; 3268 } 3269 } 3270 if (isHTMLElement(container) && container.shadowRoot) { 3271 return Array.from(container.shadowRoot.children); 3272 } 3273 return Array.from(container.children); 3274 } 3275 function appendCandidates(container, list) { 3276 getComposedChildren(container).forEach((child) => { 3277 if (isFocusableCandidate(child)) { 3278 list.push(child); 3279 } 3280 appendCandidates(child, list); 3281 }); 3282 } 3283 function appendMatchingElements(container, selector, list) { 3284 getComposedChildren(container).forEach((child) => { 3285 if (isHTMLElement(child) && child.matches(selector)) { 3286 list.push(child); 3287 } 3288 appendMatchingElements(child, selector, list); 3289 }); 3290 } 3291 function isTabbable(element) { 3292 return isFocusableElement(element) && getTabIndex(element) >= 0; 3293 } 3294 function focusable(container) { 3295 const candidates = []; 3296 appendCandidates(container, candidates); 3297 return candidates.filter(isFocusableElement); 3298 } 3299 function tabbable(container) { 3300 const candidates = focusable(container); 3301 return candidates.filter((element) => getTabIndex(element) >= 0 && isTabbableRadio(element, candidates)); 3302 } 3303 function getTabbableIn(container, dir) { 3304 const list = tabbable(container); 3305 const len = list.length; 3306 if (len === 0) { 3307 return void 0; 3308 } 3309 const active = activeElement(ownerDocument(container)); 3310 const index3 = list.indexOf(active); 3311 const nextIndex = index3 === -1 ? dir === 1 ? 0 : len - 1 : index3 + dir; 3312 return list[nextIndex]; 3313 } 3314 function getNextTabbable(referenceElement) { 3315 return getTabbableIn(ownerDocument(referenceElement).body, 1) || referenceElement; 3316 } 3317 function getPreviousTabbable(referenceElement) { 3318 return getTabbableIn(ownerDocument(referenceElement).body, -1) || referenceElement; 3319 } 3320 function isOutsideEvent(event, container) { 3321 const containerElement = container || event.currentTarget; 3322 const relatedTarget = event.relatedTarget; 3323 return !relatedTarget || !contains(containerElement, relatedTarget); 3324 } 3325 function disableFocusInside(container) { 3326 const tabbableElements = tabbable(container); 3327 tabbableElements.forEach((element) => { 3328 element.dataset.tabindex = element.getAttribute("tabindex") || ""; 3329 element.setAttribute("tabindex", "-1"); 3330 }); 3331 } 3332 function enableFocusInside(container) { 3333 const elements = []; 3334 appendMatchingElements(container, "[data-tabindex]", elements); 3335 elements.forEach((element) => { 3336 const tabindex = element.dataset.tabindex; 3337 delete element.dataset.tabindex; 3338 if (tabindex) { 3339 element.setAttribute("tabindex", tabindex); 3340 } else { 3341 element.removeAttribute("tabindex"); 3342 } 3343 }); 3344 } 3345 3346 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/nodes.mjs 3347 function getNodeChildren(nodes, id, onlyOpenChildren = true) { 3348 const directChildren = nodes.filter((node) => node.parentId === id); 3349 return directChildren.flatMap((child) => [...!onlyOpenChildren || child.context?.open ? [child] : [], ...getNodeChildren(nodes, child.id, onlyOpenChildren)]); 3350 } 3351 function getNodeAncestors(nodes, id) { 3352 let allAncestors = []; 3353 let currentParentId = nodes.find((node) => node.id === id)?.parentId; 3354 while (currentParentId) { 3355 const currentNode = nodes.find((node) => node.id === currentParentId); 3356 currentParentId = currentNode?.parentId; 3357 if (currentNode) { 3358 allAncestors = allAncestors.concat(currentNode); 3359 } 3360 } 3361 return allAncestors; 3362 } 3363 3364 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/createAttribute.mjs 3365 function createAttribute(name16) { 3366 return `data-base-ui-$name16}`; 3367 } 3368 3369 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/enqueueFocus.mjs 3370 var rafId = 0; 3371 function enqueueFocus(el, options = {}) { 3372 const { 3373 preventScroll = false, 3374 sync = false, 3375 shouldFocus 3376 } = options; 3377 cancelAnimationFrame(rafId); 3378 function exec() { 3379 if (shouldFocus && !shouldFocus()) { 3380 return; 3381 } 3382 el?.focus({ 3383 preventScroll 3384 }); 3385 } 3386 if (sync) { 3387 exec(); 3388 return NOOP; 3389 } 3390 const currentRafId = requestAnimationFrame(exec); 3391 rafId = currentRafId; 3392 return () => { 3393 if (rafId === currentRafId) { 3394 cancelAnimationFrame(currentRafId); 3395 rafId = 0; 3396 } 3397 }; 3398 } 3399 3400 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/markOthers.mjs 3401 var markerName = "data-base-ui-inert"; 3402 var ariaHiddenCounterMap = /* @__PURE__ */ new WeakMap(); 3403 var uncontrolledElementsSet = /* @__PURE__ */ new WeakSet(); 3404 var markerCounterMap = /* @__PURE__ */ new WeakMap(); 3405 var lockCount = 0; 3406 function unwrapHost(node) { 3407 if (!node) { 3408 return null; 3409 } 3410 return isShadowRoot(node) ? node.host : unwrapHost(node.parentNode); 3411 } 3412 var correctElements = (parent, targets) => targets.map((target) => { 3413 if (parent.contains(target)) { 3414 return target; 3415 } 3416 const correctedTarget = unwrapHost(target); 3417 if (parent.contains(correctedTarget)) { 3418 return correctedTarget; 3419 } 3420 return null; 3421 }).filter((x) => x != null); 3422 var buildKeepSet = (targets) => { 3423 const keep = /* @__PURE__ */ new Set(); 3424 targets.forEach((target) => { 3425 let node = target; 3426 while (node && !keep.has(node)) { 3427 keep.add(node); 3428 node = node.parentNode; 3429 } 3430 }); 3431 return keep; 3432 }; 3433 var collectOutsideElements = (root, keepElements, stopElements) => { 3434 const outside = []; 3435 const walk = (parent) => { 3436 if (!parent || stopElements.has(parent)) { 3437 return; 3438 } 3439 Array.from(parent.children).forEach((node) => { 3440 if (getNodeName(node) === "script") { 3441 return; 3442 } 3443 if (keepElements.has(node)) { 3444 walk(node); 3445 } else { 3446 outside.push(node); 3447 } 3448 }); 3449 }; 3450 walk(root); 3451 return outside; 3452 }; 3453 function applyAttributeToOthers(uncorrectedAvoidElements, body, ariaHidden, { 3454 mark = true 3455 }) { 3456 const avoidElements = correctElements(body, uncorrectedAvoidElements); 3457 const markerTargets = mark ? collectOutsideElements(body, buildKeepSet(avoidElements), new Set(avoidElements)) : []; 3458 const hiddenElements = []; 3459 const markedElements = []; 3460 if (ariaHidden) { 3461 const ariaLiveElements = correctElements(body, Array.from(body.querySelectorAll("[aria-live]"))); 3462 const controlElements = avoidElements.concat(ariaLiveElements); 3463 const controlTargets = collectOutsideElements(body, buildKeepSet(controlElements), new Set(controlElements)); 3464 controlTargets.forEach((node) => { 3465 const attr2 = node.getAttribute("aria-hidden"); 3466 const alreadyHidden = attr2 !== null && attr2 !== "false"; 3467 const counterValue = (ariaHiddenCounterMap.get(node) || 0) + 1; 3468 ariaHiddenCounterMap.set(node, counterValue); 3469 hiddenElements.push(node); 3470 if (counterValue === 1 && alreadyHidden) { 3471 uncontrolledElementsSet.add(node); 3472 } 3473 if (!alreadyHidden) { 3474 node.setAttribute("aria-hidden", "true"); 3475 } 3476 }); 3477 } 3478 if (mark) { 3479 markerTargets.forEach((node) => { 3480 const markerValue = (markerCounterMap.get(node) || 0) + 1; 3481 markerCounterMap.set(node, markerValue); 3482 markedElements.push(node); 3483 if (markerValue === 1) { 3484 node.setAttribute(markerName, ""); 3485 } 3486 }); 3487 } 3488 lockCount += 1; 3489 return () => { 3490 hiddenElements.forEach((element) => { 3491 const counterValue = (ariaHiddenCounterMap.get(element) || 0) - 1; 3492 ariaHiddenCounterMap.set(element, counterValue); 3493 if (!counterValue) { 3494 if (!uncontrolledElementsSet.has(element)) { 3495 element.removeAttribute("aria-hidden"); 3496 } 3497 uncontrolledElementsSet.delete(element); 3498 } 3499 }); 3500 if (mark) { 3501 markedElements.forEach((element) => { 3502 const markerValue = (markerCounterMap.get(element) || 0) - 1; 3503 markerCounterMap.set(element, markerValue); 3504 if (!markerValue) { 3505 element.removeAttribute(markerName); 3506 } 3507 }); 3508 } 3509 lockCount -= 1; 3510 if (!lockCount) { 3511 ariaHiddenCounterMap = /* @__PURE__ */ new WeakMap(); 3512 uncontrolledElementsSet = /* @__PURE__ */ new WeakSet(); 3513 markerCounterMap = /* @__PURE__ */ new WeakMap(); 3514 } 3515 }; 3516 } 3517 function markOthers(avoidElements, options = {}) { 3518 const { 3519 ariaHidden = false, 3520 mark = true 3521 } = options; 3522 const body = ownerDocument(avoidElements[0]).body; 3523 return applyAttributeToOthers(avoidElements, body, ariaHidden, { 3524 mark 3525 }); 3526 } 3527 3528 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingPortal.mjs 3529 var React20 = __toESM(require_react(), 1); 3530 var ReactDOM2 = __toESM(require_react_dom(), 1); 3531 3532 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/constants.mjs 3533 var DISABLED_TRANSITIONS_STYLE = { 3534 style: { 3535 transition: "none" 3536 } 3537 }; 3538 var CLICK_TRIGGER_IDENTIFIER = "data-base-ui-click-trigger"; 3539 var BASE_UI_SWIPE_IGNORE_ATTRIBUTE = "data-base-ui-swipe-ignore"; 3540 var LEGACY_SWIPE_IGNORE_ATTRIBUTE = "data-swipe-ignore"; 3541 var BASE_UI_SWIPE_IGNORE_SELECTOR = `[$BASE_UI_SWIPE_IGNORE_ATTRIBUTE}]`; 3542 var LEGACY_SWIPE_IGNORE_SELECTOR = `[$LEGACY_SWIPE_IGNORE_ATTRIBUTE}]`; 3543 var DROPDOWN_COLLISION_AVOIDANCE = { 3544 fallbackAxisSide: "none" 3545 }; 3546 var ownerVisuallyHidden = { 3547 clipPath: "inset(50%)", 3548 position: "fixed", 3549 top: 0, 3550 left: 0 3551 }; 3552 3553 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingPortal.mjs 3554 var import_jsx_runtime24 = __toESM(require_jsx_runtime(), 1); 3555 var PortalContext = /* @__PURE__ */ React20.createContext(null); 3556 if (true) PortalContext.displayName = "PortalContext"; 3557 var usePortalContext = () => React20.useContext(PortalContext); 3558 var attr = createAttribute("portal"); 3559 function useFloatingPortalNode(props = {}) { 3560 const { 3561 ref, 3562 container: containerProp, 3563 componentProps = EMPTY_OBJECT, 3564 elementProps 3565 } = props; 3566 const uniqueId = useId(); 3567 const portalContext = usePortalContext(); 3568 const parentPortalNode = portalContext?.portalNode; 3569 const [containerElement, setContainerElement] = React20.useState(null); 3570 const [portalNode, setPortalNode] = React20.useState(null); 3571 const setPortalNodeRef = useStableCallback((node) => { 3572 if (node !== null) { 3573 setPortalNode(node); 3574 } 3575 }); 3576 const containerRef = React20.useRef(null); 3577 useIsoLayoutEffect(() => { 3578 if (containerProp === null) { 3579 if (containerRef.current) { 3580 containerRef.current = null; 3581 setPortalNode(null); 3582 setContainerElement(null); 3583 } 3584 return; 3585 } 3586 const resolvedContainer = (containerProp && (isNode(containerProp) ? containerProp : containerProp.current)) ?? parentPortalNode ?? document.body; 3587 if (resolvedContainer == null) { 3588 if (containerRef.current) { 3589 containerRef.current = null; 3590 setPortalNode(null); 3591 setContainerElement(null); 3592 } 3593 return; 3594 } 3595 if (containerRef.current !== resolvedContainer) { 3596 containerRef.current = resolvedContainer; 3597 setPortalNode(null); 3598 setContainerElement(resolvedContainer); 3599 } 3600 }, [containerProp, parentPortalNode]); 3601 const portalElement = useRenderElement("div", componentProps, { 3602 ref: [ref, setPortalNodeRef], 3603 props: [{ 3604 id: uniqueId, 3605 [attr]: "" 3606 }, elementProps] 3607 }); 3608 const portalSubtree = containerElement && portalElement ? /* @__PURE__ */ ReactDOM2.createPortal(portalElement, containerElement) : null; 3609 return { 3610 node: portalNode, 3611 // `id` and `render` props can override or remove the generated ID. Use the exact 3612 // rendered value so `aria-owns` never points at an ID absent from the DOM. 3613 nodeId: /* @__PURE__ */ React20.isValidElement(portalElement) ? portalElement.props.id : void 0, 3614 subtree: portalSubtree 3615 }; 3616 } 3617 var FloatingPortal = /* @__PURE__ */ React20.forwardRef(function FloatingPortal2(componentProps, forwardedRef) { 3618 const { 3619 render, 3620 className, 3621 style, 3622 children, 3623 container, 3624 portalOwnerRole, 3625 ...elementProps 3626 } = componentProps; 3627 const { 3628 node: portalNode, 3629 nodeId: portalNodeId, 3630 subtree: portalSubtree 3631 } = useFloatingPortalNode({ 3632 container, 3633 ref: forwardedRef, 3634 componentProps, 3635 elementProps 3636 }); 3637 const beforeOutsideRef = React20.useRef(null); 3638 const afterOutsideRef = React20.useRef(null); 3639 const beforeInsideRef = React20.useRef(null); 3640 const afterInsideRef = React20.useRef(null); 3641 const [focusManagerState, setFocusManagerState] = React20.useState(null); 3642 const focusInsideDisabledRef = React20.useRef(false); 3643 const modal = focusManagerState?.modal; 3644 const open2 = focusManagerState?.open; 3645 const shouldRenderGuards = !!focusManagerState && !focusManagerState.modal && focusManagerState.open && !!portalNode; 3646 React20.useEffect(() => { 3647 if (!portalNode || modal) { 3648 return void 0; 3649 } 3650 function onFocus(event) { 3651 if (portalNode && event.relatedTarget && isOutsideEvent(event)) { 3652 if (event.type === "focusin") { 3653 if (focusInsideDisabledRef.current) { 3654 enableFocusInside(portalNode); 3655 focusInsideDisabledRef.current = false; 3656 } 3657 } else { 3658 disableFocusInside(portalNode); 3659 focusInsideDisabledRef.current = true; 3660 } 3661 } 3662 } 3663 return mergeCleanups(addEventListener(portalNode, "focusin", onFocus, true), addEventListener(portalNode, "focusout", onFocus, true)); 3664 }, [portalNode, modal]); 3665 useIsoLayoutEffect(() => { 3666 if (!portalNode || open2 !== true || !focusInsideDisabledRef.current) { 3667 return; 3668 } 3669 enableFocusInside(portalNode); 3670 focusInsideDisabledRef.current = false; 3671 }, [open2, portalNode]); 3672 const portalContextValue = React20.useMemo(() => ({ 3673 beforeOutsideRef, 3674 afterOutsideRef, 3675 beforeInsideRef, 3676 afterInsideRef, 3677 portalNode, 3678 setFocusManagerState 3679 }), [portalNode]); 3680 return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(React20.Fragment, { 3681 children: [portalSubtree, /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(PortalContext.Provider, { 3682 value: portalContextValue, 3683 children: [shouldRenderGuards && portalNode && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(FocusGuard, { 3684 "data-type": "outside", 3685 ref: beforeOutsideRef, 3686 onFocus: (event) => { 3687 if (isOutsideEvent(event, portalNode)) { 3688 beforeInsideRef.current?.focus(); 3689 } else { 3690 const domReference = focusManagerState ? focusManagerState.domReference : null; 3691 const prevTabbable = getPreviousTabbable(domReference); 3692 prevTabbable?.focus(); 3693 } 3694 } 3695 }), shouldRenderGuards && portalNode && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { 3696 role: portalOwnerRole, 3697 "aria-owns": portalNodeId, 3698 style: ownerVisuallyHidden 3699 }), portalNode && /* @__PURE__ */ ReactDOM2.createPortal(children, portalNode), shouldRenderGuards && portalNode && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(FocusGuard, { 3700 "data-type": "outside", 3701 ref: afterOutsideRef, 3702 onFocus: (event) => { 3703 if (isOutsideEvent(event, portalNode)) { 3704 afterInsideRef.current?.focus(); 3705 } else { 3706 const domReference = focusManagerState ? focusManagerState.domReference : null; 3707 const nextTabbable = getNextTabbable(domReference); 3708 nextTabbable?.focus(); 3709 if (focusManagerState?.closeOnFocusOut) { 3710 focusManagerState?.onOpenChange(false, createChangeEventDetails(reason_parts_exports.focusOut, event.nativeEvent)); 3711 } 3712 } 3713 } 3714 })] 3715 })] 3716 }); 3717 }); 3718 if (true) FloatingPortal.displayName = "FloatingPortal"; 3719 3720 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingTree.mjs 3721 var React21 = __toESM(require_react(), 1); 3722 3723 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/utils/createEventEmitter.mjs 3724 function createEventEmitter() { 3725 const map = /* @__PURE__ */ new Map(); 3726 return { 3727 emit(event, data) { 3728 map.get(event)?.forEach((listener) => listener(data)); 3729 }, 3730 on(event, listener) { 3731 if (!map.has(event)) { 3732 map.set(event, /* @__PURE__ */ new Set()); 3733 } 3734 map.get(event).add(listener); 3735 }, 3736 off(event, listener) { 3737 map.get(event)?.delete(listener); 3738 } 3739 }; 3740 } 3741 3742 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingTree.mjs 3743 var import_jsx_runtime25 = __toESM(require_jsx_runtime(), 1); 3744 var FloatingNodeContext = /* @__PURE__ */ React21.createContext(null); 3745 if (true) FloatingNodeContext.displayName = "FloatingNodeContext"; 3746 var FloatingTreeContext = /* @__PURE__ */ React21.createContext(null); 3747 if (true) FloatingTreeContext.displayName = "FloatingTreeContext"; 3748 var useFloatingParentNodeId = () => React21.useContext(FloatingNodeContext)?.id || null; 3749 var useFloatingTree = (externalTree) => { 3750 const contextTree = React21.useContext(FloatingTreeContext); 3751 return externalTree ?? contextTree; 3752 }; 3753 3754 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingFocusManager.mjs 3755 var import_jsx_runtime26 = __toESM(require_jsx_runtime(), 1); 3756 function getEventType(event, lastInteractionType) { 3757 const win = getWindow(getTarget(event)); 3758 if (event instanceof win.KeyboardEvent) { 3759 return "keyboard"; 3760 } 3761 if (event instanceof win.FocusEvent) { 3762 return lastInteractionType || "keyboard"; 3763 } 3764 if ("pointerType" in event) { 3765 return event.pointerType || (isVirtualClick(event) ? "keyboard" : lastInteractionType || "mouse"); 3766 } 3767 if ("touches" in event) { 3768 return "touch"; 3769 } 3770 if (event instanceof win.MouseEvent) { 3771 return lastInteractionType || (event.detail === 0 ? "keyboard" : "mouse"); 3772 } 3773 return ""; 3774 } 3775 var LIST_LIMIT = 20; 3776 var previouslyFocusedElements = []; 3777 function clearDisconnectedPreviouslyFocusedElements() { 3778 previouslyFocusedElements = previouslyFocusedElements.filter((entry) => { 3779 return entry.deref()?.isConnected; 3780 }); 3781 } 3782 function addPreviouslyFocusedElement(element) { 3783 clearDisconnectedPreviouslyFocusedElements(); 3784 if (element && getNodeName(element) !== "body") { 3785 previouslyFocusedElements.push(new WeakRef(element)); 3786 if (previouslyFocusedElements.length > LIST_LIMIT) { 3787 previouslyFocusedElements = previouslyFocusedElements.slice(-LIST_LIMIT); 3788 } 3789 } 3790 } 3791 function getPreviouslyFocusedElement() { 3792 clearDisconnectedPreviouslyFocusedElements(); 3793 return previouslyFocusedElements[previouslyFocusedElements.length - 1]?.deref(); 3794 } 3795 function getFirstTabbableElement(container) { 3796 if (!container) { 3797 return null; 3798 } 3799 if (isTabbable(container)) { 3800 return container; 3801 } 3802 return tabbable(container)[0] || container; 3803 } 3804 function handleTabIndex(floatingFocusElement) { 3805 if (floatingFocusElement.hasAttribute("tabindex") && !floatingFocusElement.hasAttribute("data-tabindex")) { 3806 return; 3807 } 3808 if (!floatingFocusElement.getAttribute("role")?.includes("dialog")) { 3809 return; 3810 } 3811 const focusableElements = focusable(floatingFocusElement); 3812 const tabbableContent = focusableElements.filter((element) => { 3813 const dataTabIndex = element.getAttribute("data-tabindex") || ""; 3814 return isTabbable(element) || element.hasAttribute("data-tabindex") && !dataTabIndex.startsWith("-"); 3815 }); 3816 const tabIndex = floatingFocusElement.getAttribute("tabindex"); 3817 if (tabbableContent.length === 0) { 3818 if (tabIndex !== "0") { 3819 floatingFocusElement.setAttribute("tabindex", "0"); 3820 floatingFocusElement.setAttribute("data-tabindex", "0"); 3821 } 3822 } else if (tabIndex !== "-1" || floatingFocusElement.hasAttribute("data-tabindex") && floatingFocusElement.getAttribute("data-tabindex") !== "-1") { 3823 floatingFocusElement.setAttribute("tabindex", "-1"); 3824 floatingFocusElement.setAttribute("data-tabindex", "-1"); 3825 } 3826 } 3827 function FloatingFocusManager(props) { 3828 const { 3829 context: store, 3830 children, 3831 disabled: disabled2 = false, 3832 initialFocus = true, 3833 returnFocus = true, 3834 explicitReturnFocus, 3835 restoreFocus = false, 3836 modal = true, 3837 closeOnFocusOut = true, 3838 openInteractionType = "", 3839 nextFocusableElement, 3840 previousFocusableElement, 3841 beforeContentFocusGuardRef, 3842 externalTree, 3843 getInsideElements 3844 } = props; 3845 const open2 = store.useState("open"); 3846 const domReference = store.useState("domReferenceElement"); 3847 const floating = store.useState("floatingElement"); 3848 const { 3849 events, 3850 dataRef 3851 } = store.context; 3852 const getNodeId = useStableCallback(() => dataRef.current.floatingContext?.nodeId); 3853 const ignoreInitialFocus = initialFocus === false; 3854 const isUntrappedTypeableCombobox = isTypeableCombobox(domReference) && ignoreInitialFocus; 3855 const initialFocusRef = useValueAsRef(initialFocus); 3856 const returnFocusRef = useValueAsRef(returnFocus); 3857 const explicitReturnFocusRef = useValueAsRef(explicitReturnFocus); 3858 const openInteractionTypeRef = useValueAsRef(openInteractionType); 3859 const openRef = useValueAsRef(open2); 3860 const tree = useFloatingTree(externalTree); 3861 const portalContext = usePortalContext(); 3862 const preventReturnFocusRef = React22.useRef(false); 3863 const isPointerDownRef = React22.useRef(false); 3864 const pointerDownOutsideRef = React22.useRef(false); 3865 const lastFocusedTabbableRef = React22.useRef(null); 3866 const closeTypeRef = React22.useRef(""); 3867 const lastInteractionTypeRef = React22.useRef(""); 3868 const beforeGuardRef = React22.useRef(null); 3869 const afterGuardRef = React22.useRef(null); 3870 const mergedBeforeGuardRef = useMergedRefs(beforeGuardRef, beforeContentFocusGuardRef, portalContext?.beforeInsideRef); 3871 const mergedAfterGuardRef = useMergedRefs(afterGuardRef, portalContext?.afterInsideRef); 3872 const blurTimeout = useTimeout(); 3873 const pointerDownTimeout = useTimeout(); 3874 const restoreFocusFrame = useAnimationFrame(); 3875 const isInsidePortal = portalContext != null; 3876 const floatingFocusElement = getFloatingFocusElement(floating); 3877 const getTabbableContent = useStableCallback((container = floatingFocusElement) => { 3878 return container ? tabbable(container) : []; 3879 }); 3880 const getResolvedInsideElements = useStableCallback(() => getInsideElements?.().filter((element) => element != null) ?? []); 3881 React22.useEffect(() => { 3882 if (disabled2 || !modal) { 3883 return void 0; 3884 } 3885 function onKeyDown(event) { 3886 if (event.key === "Tab") { 3887 if (contains(floatingFocusElement, activeElement(ownerDocument(floatingFocusElement))) && getTabbableContent().length === 0 && !isUntrappedTypeableCombobox) { 3888 stopEvent(event); 3889 } 3890 } 3891 } 3892 const doc = ownerDocument(floatingFocusElement); 3893 return addEventListener(doc, "keydown", onKeyDown); 3894 }, [disabled2, floatingFocusElement, modal, isUntrappedTypeableCombobox, getTabbableContent]); 3895 React22.useEffect(() => { 3896 if (disabled2 || !open2) { 3897 return void 0; 3898 } 3899 const doc = ownerDocument(floatingFocusElement); 3900 function clearPointerDownOutside() { 3901 pointerDownOutsideRef.current = false; 3902 } 3903 function onPointerDown(event) { 3904 const target = getTarget(event); 3905 const insideElements = getResolvedInsideElements(); 3906 const pointerTargetInside = contains(floating, target) || contains(domReference, target) || contains(portalContext?.portalNode, target) || insideElements.some((element) => element === target || contains(element, target)); 3907 pointerDownOutsideRef.current = !pointerTargetInside; 3908 lastInteractionTypeRef.current = event.pointerType || "keyboard"; 3909 if (closest(target, `[$CLICK_TRIGGER_IDENTIFIER}]`)) { 3910 isPointerDownRef.current = true; 3911 pointerDownTimeout.start(0, () => { 3912 isPointerDownRef.current = false; 3913 }); 3914 } 3915 } 3916 function onKeyDown() { 3917 lastInteractionTypeRef.current = "keyboard"; 3918 } 3919 return mergeCleanups( 3920 addEventListener(doc, "pointerdown", onPointerDown, true), 3921 addEventListener(doc, "pointerup", clearPointerDownOutside, true), 3922 addEventListener(doc, "pointercancel", clearPointerDownOutside, true), 3923 addEventListener(doc, "keydown", onKeyDown, true), 3924 // Avoid a stale `true` leaking into the next open (e.g. keep-mounted popups) 3925 // if the popup dismissed between pointerdown and pointerup. 3926 clearPointerDownOutside 3927 ); 3928 }, [disabled2, floating, domReference, floatingFocusElement, open2, portalContext, pointerDownTimeout, getResolvedInsideElements]); 3929 React22.useEffect(() => { 3930 if (disabled2 || !closeOnFocusOut) { 3931 return void 0; 3932 } 3933 const doc = ownerDocument(floatingFocusElement); 3934 function handlePointerDown() { 3935 isPointerDownRef.current = true; 3936 pointerDownTimeout.start(0, () => { 3937 isPointerDownRef.current = false; 3938 }); 3939 } 3940 function handleFocusIn(event) { 3941 const target = getTarget(event); 3942 if (isTabbable(target)) { 3943 lastFocusedTabbableRef.current = target; 3944 } 3945 } 3946 function handleFocusOutside(event) { 3947 const relatedTarget = event.relatedTarget; 3948 const currentTarget = event.currentTarget; 3949 const target = getTarget(event); 3950 if (modal && relatedTarget == null && target != null && contains(floating, target)) { 3951 addPreviouslyFocusedElement(target); 3952 } 3953 queueMicrotask(() => { 3954 const nodeId = getNodeId(); 3955 const triggers = store.context.triggerElements; 3956 const insideElements = getResolvedInsideElements(); 3957 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); 3958 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))); 3959 if (currentTarget === domReference && floatingFocusElement) { 3960 handleTabIndex(floatingFocusElement); 3961 } 3962 if (restoreFocus && currentTarget !== domReference && !isElementVisible(target) && activeElement(doc) === doc.body) { 3963 if (isHTMLElement(floatingFocusElement)) { 3964 floatingFocusElement.focus(); 3965 if (restoreFocus === "popup") { 3966 restoreFocusFrame.request(() => { 3967 floatingFocusElement.focus(); 3968 }); 3969 return; 3970 } 3971 } 3972 const tabbableContent = getTabbableContent(); 3973 const prevTabbable = lastFocusedTabbableRef.current; 3974 const nodeToFocus = (prevTabbable && tabbableContent.includes(prevTabbable) ? prevTabbable : null) || tabbableContent[tabbableContent.length - 1] || floatingFocusElement; 3975 if (isHTMLElement(nodeToFocus)) { 3976 nodeToFocus.focus(); 3977 } 3978 } 3979 if (dataRef.current.insideReactTree) { 3980 dataRef.current.insideReactTree = false; 3981 return; 3982 } 3983 if ((isUntrappedTypeableCombobox ? true : !modal) && relatedTarget && movedToUnrelatedNode && !isPointerDownRef.current && // Fix React 18 Strict Mode returnFocus due to double rendering. 3984 // For an "untrapped" typeable combobox (input role=combobox with 3985 // initialFocus=false), re-opening the popup and tabbing out should still close it even 3986 // when the previously focused element (e.g. the next tabbable outside the popup) is 3987 // focused again. Otherwise, the popup remains open on the second Tab sequence: 3988 // click input -> Tab (closes) -> click input -> Tab. 3989 // Allow closing when `isUntrappedTypeableCombobox` regardless of the previously focused element. 3990 (isUntrappedTypeableCombobox || relatedTarget !== getPreviouslyFocusedElement())) { 3991 preventReturnFocusRef.current = true; 3992 store.setOpen(false, createChangeEventDetails(reason_parts_exports.focusOut, event)); 3993 } 3994 }); 3995 } 3996 function markInsideReactTree() { 3997 if (pointerDownOutsideRef.current) { 3998 return; 3999 } 4000 dataRef.current.insideReactTree = true; 4001 blurTimeout.start(0, () => { 4002 dataRef.current.insideReactTree = false; 4003 }); 4004 } 4005 const domReferenceElement = isHTMLElement(domReference) ? domReference : null; 4006 if (!floating && !domReferenceElement) { 4007 return void 0; 4008 } 4009 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)); 4010 }, [disabled2, domReference, floating, floatingFocusElement, modal, tree, portalContext, store, closeOnFocusOut, restoreFocus, getTabbableContent, isUntrappedTypeableCombobox, getNodeId, dataRef, blurTimeout, pointerDownTimeout, restoreFocusFrame, nextFocusableElement, previousFocusableElement, getResolvedInsideElements]); 4011 React22.useEffect(() => { 4012 if (disabled2 || !floating || !open2) { 4013 return void 0; 4014 } 4015 const portalNodes = Array.from(portalContext?.portalNode?.querySelectorAll(`[$createAttribute("portal")}]`) || []); 4016 const ancestors = tree ? getNodeAncestors(tree.nodesRef.current, getNodeId()) : []; 4017 const rootAncestorComboboxDomReference = ancestors.find((node) => isTypeableCombobox(node.context?.elements.domReference || null))?.context?.elements.domReference; 4018 const controlInsideElements = [floating, ...portalNodes, beforeGuardRef.current, afterGuardRef.current, portalContext?.beforeOutsideRef.current, portalContext?.afterOutsideRef.current, ...getResolvedInsideElements()]; 4019 const insideElements = [...controlInsideElements, rootAncestorComboboxDomReference, resolveRef(previousFocusableElement), resolveRef(nextFocusableElement), isUntrappedTypeableCombobox ? domReference : null].filter((x) => x != null); 4020 const ariaHiddenCleanup = markOthers(insideElements, { 4021 ariaHidden: modal || isUntrappedTypeableCombobox, 4022 mark: false 4023 }); 4024 const markerInsideElements = [floating, ...portalNodes].filter((x) => x != null); 4025 const markerCleanup = markOthers(markerInsideElements); 4026 return () => { 4027 markerCleanup(); 4028 ariaHiddenCleanup(); 4029 }; 4030 }, [open2, disabled2, domReference, floating, modal, portalContext, isUntrappedTypeableCombobox, tree, getNodeId, nextFocusableElement, previousFocusableElement, getResolvedInsideElements]); 4031 useIsoLayoutEffect(() => { 4032 if (!open2 || disabled2 || !isHTMLElement(floatingFocusElement)) { 4033 return; 4034 } 4035 closeTypeRef.current = ""; 4036 lastInteractionTypeRef.current = ""; 4037 const doc = ownerDocument(floatingFocusElement); 4038 const previouslyFocusedElement = activeElement(doc); 4039 queueMicrotask(() => { 4040 const initialFocusValueOrFn = initialFocusRef.current; 4041 const resolvedInitialFocus = typeof initialFocusValueOrFn === "function" ? initialFocusValueOrFn(openInteractionTypeRef.current || "") : initialFocusValueOrFn; 4042 if (resolvedInitialFocus === void 0 || resolvedInitialFocus === false) { 4043 return; 4044 } 4045 const focusAlreadyInsideFloatingEl = contains(floatingFocusElement, previouslyFocusedElement); 4046 if (focusAlreadyInsideFloatingEl) { 4047 return; 4048 } 4049 let focusableElements = null; 4050 const getDefaultFocusElement = () => { 4051 if (focusableElements == null) { 4052 focusableElements = getTabbableContent(floatingFocusElement); 4053 } 4054 return focusableElements[0] || floatingFocusElement; 4055 }; 4056 let elToFocus; 4057 if (resolvedInitialFocus === true || resolvedInitialFocus === null) { 4058 elToFocus = getDefaultFocusElement(); 4059 } else { 4060 elToFocus = resolveRef(resolvedInitialFocus); 4061 } 4062 elToFocus = elToFocus || getDefaultFocusElement(); 4063 const hadFocusInside = contains(floatingFocusElement, activeElement(doc)); 4064 const openEvent = dataRef.current.openEvent; 4065 const openedByVirtualPress = openEvent?.type === "mousedown" && isVirtualClick(openEvent); 4066 void enqueueFocus(elToFocus, { 4067 sync: openedByVirtualPress, 4068 preventScroll: elToFocus === floatingFocusElement, 4069 shouldFocus() { 4070 if (!openRef.current) { 4071 return false; 4072 } 4073 if (hadFocusInside) { 4074 return true; 4075 } 4076 const currentActiveElement = activeElement(doc); 4077 const focusMovedInside = currentActiveElement !== elToFocus && contains(floatingFocusElement, currentActiveElement); 4078 return !focusMovedInside; 4079 } 4080 }); 4081 }); 4082 }, [disabled2, open2, floatingFocusElement, getTabbableContent, initialFocusRef, openInteractionTypeRef, openRef, dataRef]); 4083 const pendingReturnFocusRef = React22.useRef(null); 4084 useIsoLayoutEffect(() => { 4085 if (disabled2 || !floatingFocusElement) { 4086 pendingReturnFocusRef.current = null; 4087 return void 0; 4088 } 4089 if (pendingReturnFocusRef.current) { 4090 pendingReturnFocusRef.current.cancelled = true; 4091 pendingReturnFocusRef.current = null; 4092 } 4093 const doc = ownerDocument(floatingFocusElement); 4094 const elementFocusedBeforeOpen = activeElement(doc); 4095 const preferPreviousFocus = openInteractionTypeRef.current == null; 4096 addPreviouslyFocusedElement(elementFocusedBeforeOpen); 4097 function onOpenChangeLocal(details) { 4098 if (!details.open) { 4099 closeTypeRef.current = getEventType(details.nativeEvent, lastInteractionTypeRef.current); 4100 } 4101 if (details.reason === reason_parts_exports.focusOut && details.triggerElement?.hasAttribute(createAttribute("focus-guard")) || details.reason === reason_parts_exports.triggerHover && details.nativeEvent.type === "mouseleave") { 4102 preventReturnFocusRef.current = true; 4103 } 4104 if (details.reason !== reason_parts_exports.outsidePress) { 4105 return; 4106 } 4107 if (details.nested) { 4108 preventReturnFocusRef.current = false; 4109 } else if (isVirtualClick(details.nativeEvent) || isVirtualPointerEvent(details.nativeEvent)) { 4110 preventReturnFocusRef.current = false; 4111 } else { 4112 let isPreventScrollSupported = false; 4113 ownerDocument(floatingFocusElement).createElement("div").focus({ 4114 get preventScroll() { 4115 isPreventScrollSupported = true; 4116 return false; 4117 } 4118 }); 4119 if (isPreventScrollSupported) { 4120 preventReturnFocusRef.current = false; 4121 } else { 4122 preventReturnFocusRef.current = true; 4123 } 4124 } 4125 } 4126 events.on("openchange", onOpenChangeLocal); 4127 function getReturnElement(closeType) { 4128 const returnFocusValueOrFn = returnFocusRef.current; 4129 let resolvedReturnFocusValue = typeof returnFocusValueOrFn === "function" ? returnFocusValueOrFn(closeType) : returnFocusValueOrFn; 4130 if (resolvedReturnFocusValue === void 0 || resolvedReturnFocusValue === false) { 4131 return null; 4132 } 4133 if (resolvedReturnFocusValue === null) { 4134 resolvedReturnFocusValue = true; 4135 } 4136 const referenceReturnElement = domReference?.isConnected ? domReference : null; 4137 const previousReturnElement = elementFocusedBeforeOpen?.isConnected && getNodeName(elementFocusedBeforeOpen) !== "body" ? elementFocusedBeforeOpen : null; 4138 let defaultReturnElement = preferPreviousFocus ? previousReturnElement || referenceReturnElement : referenceReturnElement || previousReturnElement; 4139 if (!defaultReturnElement) { 4140 defaultReturnElement = getPreviouslyFocusedElement() || null; 4141 } 4142 if (typeof resolvedReturnFocusValue === "boolean") { 4143 return defaultReturnElement; 4144 } 4145 return resolveRef(resolvedReturnFocusValue) || defaultReturnElement || null; 4146 } 4147 return () => { 4148 events.off("openchange", onOpenChangeLocal); 4149 const activeEl = activeElement(doc); 4150 const insideElements = getResolvedInsideElements(); 4151 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)); 4152 const returnFocusValueOrFn = returnFocusRef.current; 4153 const closeType = closeTypeRef.current; 4154 const returnElement = getReturnElement(closeType); 4155 const job = { 4156 cancelled: false 4157 }; 4158 pendingReturnFocusRef.current = job; 4159 queueMicrotask(() => { 4160 if (pendingReturnFocusRef.current === job) { 4161 pendingReturnFocusRef.current = null; 4162 } 4163 const tabbableReturnElement = getFirstTabbableElement(returnElement); 4164 const hasExplicitReturnFocus = ( 4165 // eslint-disable-next-line react-hooks/exhaustive-deps 4166 explicitReturnFocusRef.current ?? typeof returnFocusValueOrFn !== "boolean" 4167 ); 4168 if (!job.cancelled && returnFocusValueOrFn && !preventReturnFocusRef.current && isHTMLElement(tabbableReturnElement) && // If the focus moved somewhere else after mount, avoid returning focus 4169 // since it likely entered a different element which should be 4170 // respected: https://github.com/floating-ui/floating-ui/issues/2607 4171 (!hasExplicitReturnFocus && tabbableReturnElement !== activeEl && activeEl !== doc.body ? isFocusInsideFloatingTree : true)) { 4172 const focusOptions = { 4173 preventScroll: true 4174 }; 4175 if (closeType === "keyboard") { 4176 focusOptions.focusVisible = true; 4177 } 4178 tabbableReturnElement.focus(focusOptions); 4179 } 4180 preventReturnFocusRef.current = false; 4181 }); 4182 }; 4183 }, [disabled2, floating, floatingFocusElement, returnFocusRef, explicitReturnFocusRef, openInteractionTypeRef, events, tree, domReference, getNodeId, getResolvedInsideElements]); 4184 useIsoLayoutEffect(() => { 4185 if (!parts_exports.engine.webkit || open2 || !floating) { 4186 return; 4187 } 4188 const activeEl = activeElement(ownerDocument(floating)); 4189 if (!isHTMLElement(activeEl) || !isTypeableElement(activeEl)) { 4190 return; 4191 } 4192 if (contains(floating, activeEl)) { 4193 activeEl.blur(); 4194 } 4195 }, [open2, floating]); 4196 useIsoLayoutEffect(() => { 4197 if (disabled2 || !portalContext) { 4198 return void 0; 4199 } 4200 portalContext.setFocusManagerState({ 4201 modal, 4202 closeOnFocusOut, 4203 open: open2, 4204 onOpenChange: store.setOpen, 4205 domReference 4206 }); 4207 return () => { 4208 portalContext.setFocusManagerState(null); 4209 }; 4210 }, [disabled2, portalContext, modal, open2, store, closeOnFocusOut, domReference]); 4211 useIsoLayoutEffect(() => { 4212 if (disabled2 || !floatingFocusElement) { 4213 return void 0; 4214 } 4215 handleTabIndex(floatingFocusElement); 4216 return () => { 4217 queueMicrotask(clearDisconnectedPreviouslyFocusedElements); 4218 }; 4219 }, [disabled2, floatingFocusElement]); 4220 const shouldRenderGuards = !disabled2 && (modal ? !isUntrappedTypeableCombobox : true) && (isInsidePortal || modal); 4221 return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(React22.Fragment, { 4222 children: [shouldRenderGuards && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(FocusGuard, { 4223 "data-type": "inside", 4224 ref: mergedBeforeGuardRef, 4225 onFocus: (event) => { 4226 if (modal) { 4227 const els = getTabbableContent(); 4228 void enqueueFocus(els[els.length - 1]); 4229 } else if (portalContext?.portalNode) { 4230 preventReturnFocusRef.current = false; 4231 if (isOutsideEvent(event, portalContext.portalNode)) { 4232 const nextTabbable = getNextTabbable(domReference); 4233 nextTabbable?.focus(); 4234 } else { 4235 resolveRef(previousFocusableElement ?? portalContext.beforeOutsideRef)?.focus(); 4236 } 4237 } 4238 } 4239 }), children, shouldRenderGuards && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(FocusGuard, { 4240 "data-type": "inside", 4241 ref: mergedAfterGuardRef, 4242 onFocus: (event) => { 4243 if (modal) { 4244 void enqueueFocus(getTabbableContent()[0]); 4245 } else if (portalContext?.portalNode) { 4246 if (closeOnFocusOut) { 4247 preventReturnFocusRef.current = true; 4248 } 4249 if (isOutsideEvent(event, portalContext.portalNode)) { 4250 const prevTabbable = getPreviousTabbable(domReference); 4251 prevTabbable?.focus(); 4252 } else { 4253 resolveRef(nextFocusableElement ?? portalContext.afterOutsideRef)?.focus(); 4254 } 4255 } 4256 } 4257 })] 4258 }); 4259 } 4260 4261 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useClick.mjs 4262 var React23 = __toESM(require_react(), 1); 4263 function useClick(store, props = {}) { 4264 const { 4265 enabled = true, 4266 event: eventOption = "click", 4267 toggle = true, 4268 ignoreMouse = false, 4269 stickIfOpen = true, 4270 touchOpenDelay = 0, 4271 reason = reason_parts_exports.triggerPress 4272 } = props; 4273 const dataRef = store.context.dataRef; 4274 const pointerTypeRef = React23.useRef(void 0); 4275 const frame = useAnimationFrame(); 4276 const touchOpenTimeout = useTimeout(); 4277 const reference = React23.useMemo(() => { 4278 function setOpenWithTouchDelay(nextOpen, nativeEvent, target, pointerType) { 4279 const details = createChangeEventDetails(reason, nativeEvent, target); 4280 if (nextOpen && pointerType === "touch" && touchOpenDelay > 0) { 4281 touchOpenTimeout.start(touchOpenDelay, () => { 4282 store.setOpen(true, details); 4283 }); 4284 } else { 4285 store.setOpen(nextOpen, details); 4286 } 4287 } 4288 function getNextOpen(open2, currentTarget, isClickLikeOpenEvent) { 4289 const openEvent = dataRef.current.openEvent; 4290 const hasClickedOnInactiveTrigger = store.select("domReferenceElement") !== currentTarget; 4291 if (open2 && hasClickedOnInactiveTrigger) { 4292 return true; 4293 } 4294 if (!open2) { 4295 return true; 4296 } 4297 if (!toggle) { 4298 return true; 4299 } 4300 if (openEvent && (typeof stickIfOpen === "function" ? stickIfOpen() : stickIfOpen)) { 4301 return !isClickLikeOpenEvent(openEvent.type); 4302 } 4303 return false; 4304 } 4305 return { 4306 onPointerDown(event) { 4307 pointerTypeRef.current = isMouseLikePointerType(event.pointerType, true) && isVirtualPointerEvent(event.nativeEvent) ? "virtual" : event.pointerType; 4308 }, 4309 onMouseDown(event) { 4310 const pointerType = pointerTypeRef.current; 4311 const nativeEvent = event.nativeEvent; 4312 const open2 = store.select("open"); 4313 if (event.button !== 0 || eventOption === "click" || isMouseLikePointerType(pointerType, true) && ignoreMouse) { 4314 return; 4315 } 4316 const nextOpen = getNextOpen(open2, event.currentTarget, (openEventType) => openEventType === "click" || openEventType === "mousedown"); 4317 const target = getTarget(nativeEvent); 4318 const isTypeable = isTypeableElement(target); 4319 if (isTypeable || pointerType === "virtual") { 4320 setOpenWithTouchDelay(nextOpen, nativeEvent, isTypeable ? target : event.currentTarget, pointerType); 4321 return; 4322 } 4323 const eventCurrentTarget = event.currentTarget; 4324 frame.request(() => { 4325 setOpenWithTouchDelay(nextOpen, nativeEvent, eventCurrentTarget, pointerType); 4326 }); 4327 }, 4328 onClick(event) { 4329 if (eventOption === "mousedown-only") { 4330 return; 4331 } 4332 const pointerType = pointerTypeRef.current; 4333 if (eventOption === "mousedown" && pointerType) { 4334 pointerTypeRef.current = void 0; 4335 return; 4336 } 4337 if (isMouseLikePointerType(pointerType, true) && ignoreMouse) { 4338 return; 4339 } 4340 const open2 = store.select("open"); 4341 const nextOpen = getNextOpen(open2, event.currentTarget, (openEventType) => openEventType === "click" || openEventType === "mousedown" || openEventType === "keydown" || openEventType === "keyup"); 4342 setOpenWithTouchDelay(nextOpen, event.nativeEvent, event.currentTarget, pointerType); 4343 }, 4344 onKeyDown() { 4345 pointerTypeRef.current = void 0; 4346 } 4347 }; 4348 }, [dataRef, eventOption, ignoreMouse, reason, store, stickIfOpen, toggle, frame, touchOpenTimeout, touchOpenDelay]); 4349 return React23.useMemo(() => enabled ? { 4350 reference 4351 } : EMPTY_OBJECT, [enabled, reference]); 4352 } 4353 4354 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useDismiss.mjs 4355 var React24 = __toESM(require_react(), 1); 4356 function alwaysFalse() { 4357 return false; 4358 } 4359 function normalizeProp(normalizable) { 4360 return { 4361 escapeKey: typeof normalizable === "boolean" ? normalizable : normalizable?.escapeKey ?? false, 4362 outsidePress: typeof normalizable === "boolean" ? normalizable : normalizable?.outsidePress ?? true 4363 }; 4364 } 4365 function useDismiss(store, props = {}) { 4366 const { 4367 enabled = true, 4368 escapeKey: escapeKey2 = true, 4369 outsidePress: outsidePressProp = true, 4370 outsidePressEvent = "sloppy", 4371 referencePress = alwaysFalse, 4372 bubbles, 4373 externalTree 4374 } = props; 4375 const open2 = store.useState("open"); 4376 const floatingElement = store.useState("floatingElement"); 4377 const { 4378 dataRef, 4379 events 4380 } = store.context; 4381 const tree = useFloatingTree(externalTree); 4382 const outsidePressFn = useStableCallback(typeof outsidePressProp === "function" ? outsidePressProp : () => false); 4383 const outsidePress2 = typeof outsidePressProp === "function" ? outsidePressFn : outsidePressProp; 4384 const outsidePressEnabled = outsidePress2 !== false; 4385 const getOutsidePressEventProp = useStableCallback(() => outsidePressEvent); 4386 const { 4387 escapeKey: escapeKeyBubbles, 4388 outsidePress: outsidePressBubbles 4389 } = normalizeProp(bubbles); 4390 const pressStartedInsideRef = React24.useRef(false); 4391 const pressStartPreventedRef = React24.useRef(false); 4392 const suppressNextOutsideClickRef = React24.useRef(false); 4393 const sawPressWhileOpenRef = React24.useRef(false); 4394 const isComposingRef = React24.useRef(false); 4395 const currentPointerTypeRef = React24.useRef(""); 4396 const touchStateRef = React24.useRef(null); 4397 const cancelDismissOnEndTimeout = useTimeout(); 4398 const clearInsideReactTreeTimeout = useTimeout(); 4399 const compositionTimeout = useTimeout(); 4400 const clearInsideReactTree = useStableCallback(() => { 4401 clearInsideReactTreeTimeout.clear(); 4402 dataRef.current.insideReactTree = false; 4403 }); 4404 const hasBlockingChild = useStableCallback((bubbleKey) => { 4405 const nodeId = dataRef.current.floatingContext?.nodeId; 4406 const children = tree ? getNodeChildren(tree.nodesRef.current, nodeId) : []; 4407 return children.some((child) => child.context?.open && !child.context.dataRef.current[bubbleKey]); 4408 }); 4409 const isEventWithinOwnElements = useStableCallback((event) => { 4410 return isEventTargetWithin(event, store.select("floatingElement")) || isEventTargetWithin(event, store.select("domReferenceElement")); 4411 }); 4412 const closeOnReferencePress = useStableCallback((event) => { 4413 if (!referencePress()) { 4414 return; 4415 } 4416 store.setOpen(false, createChangeEventDetails(reason_parts_exports.triggerPress, event.nativeEvent)); 4417 }); 4418 const closeOnEscapeKeyDown = useStableCallback((event) => { 4419 if (!open2 || !enabled || !escapeKey2 || event.key !== "Escape") { 4420 return; 4421 } 4422 const native = isReactEvent(event) ? event.nativeEvent : event; 4423 if (isComposingRef.current || native.isComposing) { 4424 return; 4425 } 4426 if (!escapeKeyBubbles && hasBlockingChild("__escapeKeyBubbles")) { 4427 return; 4428 } 4429 const eventDetails = createChangeEventDetails(reason_parts_exports.escapeKey, native); 4430 store.setOpen(false, eventDetails); 4431 if (!eventDetails.isCanceled) { 4432 event.preventDefault(); 4433 } 4434 if (!escapeKeyBubbles && !eventDetails.isPropagationAllowed) { 4435 event.stopPropagation(); 4436 } 4437 }); 4438 const markInsideReactTree = useStableCallback(() => { 4439 dataRef.current.insideReactTree = true; 4440 clearInsideReactTreeTimeout.start(0, clearInsideReactTree); 4441 }); 4442 const markPressStartedInsideReactTree = useStableCallback((event) => { 4443 if (!open2 || !enabled || event.button !== 0) { 4444 return; 4445 } 4446 const target = getTarget(event.nativeEvent); 4447 if (!contains(store.select("floatingElement"), target)) { 4448 return; 4449 } 4450 if (!pressStartedInsideRef.current) { 4451 pressStartedInsideRef.current = true; 4452 pressStartPreventedRef.current = false; 4453 } 4454 }); 4455 const markInsidePressStartPrevented = useStableCallback((event) => { 4456 if (!open2 || !enabled) { 4457 return; 4458 } 4459 if (!(event.defaultPrevented || event.nativeEvent.defaultPrevented)) { 4460 return; 4461 } 4462 if (pressStartedInsideRef.current) { 4463 pressStartPreventedRef.current = true; 4464 } 4465 }); 4466 React24.useEffect(() => { 4467 function handleOpenChange(details) { 4468 if (!details.open) { 4469 sawPressWhileOpenRef.current = false; 4470 } 4471 } 4472 events.on("openchange", handleOpenChange); 4473 return () => { 4474 events.off("openchange", handleOpenChange); 4475 }; 4476 }, [events]); 4477 React24.useEffect(() => clearInsideReactTree, [clearInsideReactTree]); 4478 React24.useEffect(() => { 4479 if (!open2 || !enabled) { 4480 if (!open2) { 4481 sawPressWhileOpenRef.current = false; 4482 isComposingRef.current = false; 4483 currentPointerTypeRef.current = ""; 4484 touchStateRef.current = null; 4485 } 4486 return clearInsideReactTree; 4487 } 4488 dataRef.current.__escapeKeyBubbles = escapeKeyBubbles; 4489 dataRef.current.__outsidePressBubbles = outsidePressBubbles; 4490 const preventedPressSuppressionTimeout = new Timeout(); 4491 const doc = ownerDocument(floatingElement); 4492 function handleCompositionStart() { 4493 compositionTimeout.clear(); 4494 isComposingRef.current = true; 4495 } 4496 function handleCompositionEnd() { 4497 isComposingRef.current = true; 4498 compositionTimeout.start( 4499 // 0ms or 1ms don't work in Safari. 5ms appears to consistently work. 4500 // Only apply to WebKit for the test to remain 0ms. 4501 parts_exports.engine.webkit ? 5 : 0, 4502 () => { 4503 isComposingRef.current = false; 4504 } 4505 ); 4506 } 4507 function suppressImmediateOutsideClickAfterPreventedStart() { 4508 suppressNextOutsideClickRef.current = true; 4509 preventedPressSuppressionTimeout.start(0, () => { 4510 suppressNextOutsideClickRef.current = false; 4511 }); 4512 } 4513 function resetPressStartState() { 4514 pressStartedInsideRef.current = false; 4515 pressStartPreventedRef.current = false; 4516 } 4517 function getOutsidePressEvent() { 4518 const type = currentPointerTypeRef.current; 4519 const computedType = type === "pen" || !type ? "mouse" : type; 4520 const outsidePressEventValue = getOutsidePressEventProp(); 4521 const resolved = typeof outsidePressEventValue === "function" ? outsidePressEventValue() : outsidePressEventValue; 4522 if (typeof resolved === "string") { 4523 return resolved; 4524 } 4525 return resolved[computedType]; 4526 } 4527 function shouldIgnoreEvent(event) { 4528 const computedOutsidePressEvent = getOutsidePressEvent(); 4529 return computedOutsidePressEvent === "intentional" && event.type !== "click" || computedOutsidePressEvent === "sloppy" && event.type === "click"; 4530 } 4531 function isEventWithinFloatingTree(event) { 4532 const nodeId = dataRef.current.floatingContext?.nodeId; 4533 const targetIsInsideChildren = tree && getNodeChildren(tree.nodesRef.current, nodeId).some((node) => isEventTargetWithin(event, node.context?.elements.floating)); 4534 return isEventWithinOwnElements(event) || targetIsInsideChildren; 4535 } 4536 function closeOnPressOutside(event) { 4537 if (shouldIgnoreEvent(event)) { 4538 if (event.type !== "click" && !isEventWithinOwnElements(event)) { 4539 preventedPressSuppressionTimeout.clear(); 4540 suppressNextOutsideClickRef.current = false; 4541 } 4542 clearInsideReactTree(); 4543 return; 4544 } 4545 if (dataRef.current.insideReactTree) { 4546 clearInsideReactTree(); 4547 return; 4548 } 4549 const target = getTarget(event); 4550 const inertSelector = `[$createAttribute("inert")}]`; 4551 const targetRoot = isElement(target) ? target.getRootNode() : null; 4552 const markers = Array.from((isShadowRoot(targetRoot) ? targetRoot : ownerDocument(store.select("floatingElement"))).querySelectorAll(inertSelector)); 4553 const triggers = store.context.triggerElements; 4554 if (target && (triggers.hasElement(target) || triggers.hasMatchingElement((trigger) => contains(trigger, target)))) { 4555 return; 4556 } 4557 let targetRootAncestor = isElement(target) ? target : null; 4558 while (targetRootAncestor && !isLastTraversableNode(targetRootAncestor)) { 4559 const nextParent = getParentNode(targetRootAncestor); 4560 if (isLastTraversableNode(nextParent) || !isElement(nextParent)) { 4561 break; 4562 } 4563 targetRootAncestor = nextParent; 4564 } 4565 if (markers.length && isElement(target) && !isRootElement(target) && // Clicked on a direct ancestor (e.g. FloatingOverlay). 4566 !contains(target, store.select("floatingElement")) && // If the target root element contains none of the markers, then the 4567 // element was injected after the floating element rendered. 4568 markers.every((marker) => !contains(targetRootAncestor, marker))) { 4569 return; 4570 } 4571 if (isHTMLElement(target) && !("touches" in event)) { 4572 const lastTraversableNode = isLastTraversableNode(target); 4573 const style = getComputedStyle2(target); 4574 const scrollRe = /auto|scroll/; 4575 const isScrollableX = lastTraversableNode || scrollRe.test(style.overflowX); 4576 const isScrollableY = lastTraversableNode || scrollRe.test(style.overflowY); 4577 const canScrollX = isScrollableX && target.clientWidth > 0 && target.scrollWidth > target.clientWidth; 4578 const canScrollY = isScrollableY && target.clientHeight > 0 && target.scrollHeight > target.clientHeight; 4579 const isRTL3 = style.direction === "rtl"; 4580 const pressedVerticalScrollbar = canScrollY && (isRTL3 ? event.offsetX <= target.offsetWidth - target.clientWidth : event.offsetX > target.clientWidth); 4581 const pressedHorizontalScrollbar = canScrollX && event.offsetY > target.clientHeight; 4582 if (pressedVerticalScrollbar || pressedHorizontalScrollbar) { 4583 return; 4584 } 4585 } 4586 if (isEventWithinFloatingTree(event)) { 4587 return; 4588 } 4589 if (getOutsidePressEvent() === "intentional") { 4590 if (event.detail !== 0 && !isVirtualClick(event) && !sawPressWhileOpenRef.current) { 4591 return; 4592 } 4593 if (suppressNextOutsideClickRef.current) { 4594 preventedPressSuppressionTimeout.clear(); 4595 suppressNextOutsideClickRef.current = false; 4596 return; 4597 } 4598 } 4599 if (typeof outsidePress2 === "function" && !outsidePress2(event)) { 4600 return; 4601 } 4602 if (hasBlockingChild("__outsidePressBubbles")) { 4603 return; 4604 } 4605 store.setOpen(false, createChangeEventDetails(reason_parts_exports.outsidePress, event)); 4606 clearInsideReactTree(); 4607 } 4608 function handlePointerDown(event) { 4609 if (getOutsidePressEvent() !== "sloppy" || event.pointerType === "touch" || !store.select("open") || !enabled || isEventWithinOwnElements(event)) { 4610 return; 4611 } 4612 closeOnPressOutside(event); 4613 } 4614 function handleTouchStart(event) { 4615 if (getOutsidePressEvent() !== "sloppy" || !store.select("open") || !enabled || isEventWithinOwnElements(event)) { 4616 return; 4617 } 4618 const touch = event.touches[0]; 4619 if (touch) { 4620 touchStateRef.current = { 4621 startTime: Date.now(), 4622 startX: touch.clientX, 4623 startY: touch.clientY, 4624 dismissOnTouchEnd: false, 4625 dismissOnMouseDown: true 4626 }; 4627 cancelDismissOnEndTimeout.start(1e3, () => { 4628 if (touchStateRef.current) { 4629 touchStateRef.current.dismissOnTouchEnd = false; 4630 touchStateRef.current.dismissOnMouseDown = false; 4631 } 4632 }); 4633 } 4634 } 4635 function addTargetEventListenerOnce(event, listener) { 4636 const target = getTarget(event); 4637 if (!target) { 4638 return; 4639 } 4640 const unsubscribe2 = addEventListener(target, event.type, () => { 4641 listener(event); 4642 unsubscribe2(); 4643 }); 4644 } 4645 function handleTouchStartCapture(event) { 4646 currentPointerTypeRef.current = "touch"; 4647 addTargetEventListenerOnce(event, handleTouchStart); 4648 } 4649 function closeOnPressOutsideCapture(event) { 4650 cancelDismissOnEndTimeout.clear(); 4651 if (event.type === "pointerdown") { 4652 if (event.button === 0) { 4653 sawPressWhileOpenRef.current = true; 4654 } 4655 currentPointerTypeRef.current = event.pointerType; 4656 } 4657 if (event.type === "mousedown" && touchStateRef.current && !touchStateRef.current.dismissOnMouseDown) { 4658 return; 4659 } 4660 addTargetEventListenerOnce(event, (targetEvent) => { 4661 if (targetEvent.type === "pointerdown") { 4662 handlePointerDown(targetEvent); 4663 } else { 4664 closeOnPressOutside(targetEvent); 4665 } 4666 }); 4667 } 4668 function handlePressEndCapture(event) { 4669 if (event.type === "pointercancel") { 4670 sawPressWhileOpenRef.current = false; 4671 } 4672 if (!pressStartedInsideRef.current) { 4673 return; 4674 } 4675 const pressStartedInsideDefaultPrevented = pressStartPreventedRef.current; 4676 resetPressStartState(); 4677 if (getOutsidePressEvent() !== "intentional") { 4678 return; 4679 } 4680 if (event.type === "pointercancel") { 4681 if (pressStartedInsideDefaultPrevented) { 4682 suppressImmediateOutsideClickAfterPreventedStart(); 4683 } 4684 return; 4685 } 4686 if (isEventWithinFloatingTree(event)) { 4687 return; 4688 } 4689 if (pressStartedInsideDefaultPrevented) { 4690 suppressImmediateOutsideClickAfterPreventedStart(); 4691 return; 4692 } 4693 if (typeof outsidePress2 === "function" && !outsidePress2(event)) { 4694 return; 4695 } 4696 preventedPressSuppressionTimeout.clear(); 4697 suppressNextOutsideClickRef.current = true; 4698 clearInsideReactTree(); 4699 } 4700 function handleTouchMove(event) { 4701 if (getOutsidePressEvent() !== "sloppy" || !touchStateRef.current || isEventWithinOwnElements(event)) { 4702 return; 4703 } 4704 const touch = event.touches[0]; 4705 if (!touch) { 4706 return; 4707 } 4708 const deltaX = Math.abs(touch.clientX - touchStateRef.current.startX); 4709 const deltaY = Math.abs(touch.clientY - touchStateRef.current.startY); 4710 const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY); 4711 if (distance > 5) { 4712 touchStateRef.current.dismissOnTouchEnd = true; 4713 } 4714 if (distance > 10) { 4715 closeOnPressOutside(event); 4716 cancelDismissOnEndTimeout.clear(); 4717 touchStateRef.current = null; 4718 } 4719 } 4720 function handleTouchMoveCapture(event) { 4721 addTargetEventListenerOnce(event, handleTouchMove); 4722 } 4723 function handleTouchEnd(event) { 4724 if (getOutsidePressEvent() !== "sloppy" || !touchStateRef.current || isEventWithinOwnElements(event)) { 4725 return; 4726 } 4727 if (touchStateRef.current.dismissOnTouchEnd) { 4728 closeOnPressOutside(event); 4729 } 4730 cancelDismissOnEndTimeout.clear(); 4731 touchStateRef.current = null; 4732 } 4733 function handleTouchEndCapture(event) { 4734 addTargetEventListenerOnce(event, handleTouchEnd); 4735 } 4736 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, { 4737 capture: true, 4738 passive: true 4739 }), addEventListener(doc, "touchmove", handleTouchMoveCapture, { 4740 capture: true, 4741 passive: true 4742 }), addEventListener(doc, "touchend", handleTouchEndCapture, { 4743 capture: true, 4744 passive: true 4745 }))); 4746 return () => { 4747 unsubscribe(); 4748 preventedPressSuppressionTimeout.clear(); 4749 resetPressStartState(); 4750 suppressNextOutsideClickRef.current = false; 4751 }; 4752 }, [dataRef, floatingElement, escapeKey2, outsidePressEnabled, outsidePress2, open2, enabled, escapeKeyBubbles, outsidePressBubbles, closeOnEscapeKeyDown, clearInsideReactTree, getOutsidePressEventProp, hasBlockingChild, isEventWithinOwnElements, tree, store, cancelDismissOnEndTimeout, compositionTimeout]); 4753 const reference = React24.useMemo(() => ({ 4754 onKeyDown: closeOnEscapeKeyDown, 4755 onPointerDown: closeOnReferencePress, 4756 onClick: closeOnReferencePress 4757 }), [closeOnEscapeKeyDown, closeOnReferencePress]); 4758 const floating = React24.useMemo(() => ({ 4759 onKeyDown: closeOnEscapeKeyDown, 4760 // `onMouseDown` may be blocked if `event.preventDefault()` is called in 4761 // `onPointerDown`, such as with <NumberField.ScrubArea>. 4762 // See https://github.com/mui/base-ui/pull/3379 4763 onPointerDown: markInsidePressStartPrevented, 4764 onMouseDown: markInsidePressStartPrevented, 4765 onClickCapture: markInsideReactTree, 4766 onMouseDownCapture(event) { 4767 markInsideReactTree(); 4768 markPressStartedInsideReactTree(event); 4769 }, 4770 onPointerDownCapture(event) { 4771 markInsideReactTree(); 4772 markPressStartedInsideReactTree(event); 4773 }, 4774 onMouseUpCapture: markInsideReactTree, 4775 onTouchEndCapture: markInsideReactTree, 4776 onTouchMoveCapture: markInsideReactTree 4777 }), [closeOnEscapeKeyDown, markInsideReactTree, markPressStartedInsideReactTree, markInsidePressStartPrevented]); 4778 return React24.useMemo(() => enabled ? { 4779 reference, 4780 floating, 4781 trigger: reference 4782 } : {}, [enabled, reference, floating]); 4783 } 4784 4785 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popups/popupStoreUtils.mjs 4786 var React26 = __toESM(require_react(), 1); 4787 var ReactDOM3 = __toESM(require_react_dom(), 1); 4788 4789 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useUnmountAfterClose.mjs 4790 var React25 = __toESM(require_react(), 1); 4791 function useUnmountAfterClose(parameters) { 4792 const { 4793 open: open2, 4794 ref, 4795 preventUnmountOnClose, 4796 setPreventUnmountOnClose: setPreventUnmountOnCloseParam, 4797 onUnmount, 4798 animateInitialOpen 4799 } = parameters; 4800 const setPreventUnmountOnClose = useStableCallback(setPreventUnmountOnCloseParam); 4801 const { 4802 mounted, 4803 setMounted, 4804 transitionStatus 4805 } = useTransitionStatus(open2, false, false, animateInitialOpen); 4806 const preventUnmountingOnClose = open2 ? false : preventUnmountOnClose; 4807 useIsoLayoutEffect(() => { 4808 if (open2) { 4809 setPreventUnmountOnClose(false); 4810 } 4811 }, [open2, setPreventUnmountOnClose]); 4812 const mountedRef = React25.useRef(mounted); 4813 const pendingUnmountRef = React25.useRef(false); 4814 const rerender = useForcedRerendering(); 4815 const unmount = () => { 4816 mountedRef.current = false; 4817 setMounted(false); 4818 onUnmount(); 4819 }; 4820 useIsoLayoutEffect(() => { 4821 mountedRef.current = mounted; 4822 if (pendingUnmountRef.current) { 4823 pendingUnmountRef.current = false; 4824 if (!open2 && mounted) { 4825 unmount(); 4826 } 4827 } 4828 }); 4829 const forceUnmount = useStableCallback(() => { 4830 if (!mountedRef.current) { 4831 return; 4832 } 4833 if (open2) { 4834 pendingUnmountRef.current = true; 4835 rerender(); 4836 return; 4837 } 4838 unmount(); 4839 }); 4840 useOpenChangeComplete({ 4841 enabled: mounted && !open2 && !preventUnmountingOnClose, 4842 open: open2, 4843 ref, 4844 onComplete() { 4845 if (!open2) { 4846 forceUnmount(); 4847 } 4848 } 4849 }); 4850 return { 4851 mounted, 4852 transitionStatus, 4853 preventUnmountingOnClose, 4854 forceUnmount 4855 }; 4856 } 4857 4858 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popups/popupStoreUtils.mjs 4859 var FOCUSABLE_POPUP_PROPS = { 4860 tabIndex: -1, 4861 [FOCUSABLE_ATTRIBUTE]: "" 4862 }; 4863 function attachPreventUnmountOnClose(eventDetails) { 4864 let preventUnmountOnClose = false; 4865 eventDetails.preventUnmountOnClose = () => { 4866 preventUnmountOnClose = true; 4867 }; 4868 return () => preventUnmountOnClose; 4869 } 4870 4871 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/popups/popupTriggerMap.mjs 4872 var devElementIdsByMap; 4873 function getDevElementIds(map) { 4874 devElementIdsByMap ??= /* @__PURE__ */ new WeakMap(); 4875 let elementIds = devElementIdsByMap.get(map); 4876 if (!elementIds) { 4877 elementIds = /* @__PURE__ */ new WeakMap(); 4878 devElementIdsByMap.set(map, elementIds); 4879 } 4880 return elementIds; 4881 } 4882 var PopupTriggerMap = class { 4883 idMap = /* @__PURE__ */ new Map(); 4884 /** 4885 * Adds a trigger element with the given ID. 4886 * 4887 * Note: The provided element is assumed to not be registered under multiple IDs. 4888 */ 4889 add(id, element) { 4890 if (true) { 4891 const elementIds = getDevElementIds(this); 4892 const existingId = elementIds.get(element); 4893 if (existingId !== void 0 && existingId !== id) { 4894 throw new Error("Base UI: A trigger element cannot be registered under multiple IDs in PopupTriggerMap."); 4895 } 4896 const previousElement = this.idMap.get(id); 4897 if (previousElement !== void 0 && previousElement !== element) { 4898 elementIds.delete(previousElement); 4899 } 4900 elementIds.set(element, id); 4901 } 4902 this.idMap.set(id, element); 4903 } 4904 /** 4905 * Removes the trigger element with the given ID. 4906 */ 4907 delete(id) { 4908 if (true) { 4909 const element = this.idMap.get(id); 4910 if (element !== void 0) { 4911 devElementIdsByMap?.get(this)?.delete(element); 4912 } 4913 } 4914 this.idMap.delete(id); 4915 } 4916 /** 4917 * Whether the given element is registered as a trigger. 4918 */ 4919 hasElement(element) { 4920 for (const registered of this.idMap.values()) { 4921 if (registered === element) { 4922 return true; 4923 } 4924 } 4925 return false; 4926 } 4927 /** 4928 * Whether there is a registered trigger element matching the given predicate. 4929 */ 4930 hasMatchingElement(predicate) { 4931 for (const element of this.idMap.values()) { 4932 if (predicate(element)) { 4933 return true; 4934 } 4935 } 4936 return false; 4937 } 4938 /** 4939 * Returns the trigger element associated with the given ID, or undefined if no such element exists. 4940 */ 4941 getById(id) { 4942 return this.idMap.get(id); 4943 } 4944 /** 4945 * Returns an iterable of all registered trigger entries, where each entry is a tuple of [id, element]. 4946 */ 4947 entries() { 4948 return this.idMap.entries(); 4949 } 4950 /** 4951 * Returns an iterable of all registered trigger elements. 4952 */ 4953 elements() { 4954 return this.idMap.values(); 4955 } 4956 /** 4957 * Returns the number of registered trigger elements. 4958 */ 4959 get size() { 4960 return this.idMap.size; 4961 } 4962 }; 4963 4964 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/store/useStore.mjs 4965 var React28 = __toESM(require_react(), 1); 4966 var import_shim = __toESM(require_shim(), 1); 4967 var import_with_selector = __toESM(require_with_selector(), 1); 4968 4969 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/fastHooks.mjs 4970 var React27 = __toESM(require_react(), 1); 4971 var hooks = []; 4972 var currentInstance = void 0; 4973 function getInstance() { 4974 return currentInstance; 4975 } 4976 function register(hook) { 4977 hooks.push(hook); 4978 } 4979 4980 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/store/useStore.mjs 4981 var canUseRawUseSyncExternalStore = isReactVersionAtLeast(19); 4982 var useStoreImplementation = canUseRawUseSyncExternalStore ? useStoreFast : useStoreLegacy; 4983 function useStore(store, selector, a1, a2, a3) { 4984 return useStoreImplementation(store, selector, a1, a2, a3); 4985 } 4986 function useStoreR19(store, selector, a1, a2, a3) { 4987 const getSelection = React28.useCallback(() => selector(store.getSnapshot(), a1, a2, a3), [store, selector, a1, a2, a3]); 4988 return (0, import_shim.useSyncExternalStore)(store.subscribe, getSelection, getSelection); 4989 } 4990 register({ 4991 before(instance) { 4992 instance.syncIndex = 0; 4993 if (!instance.didInitialize) { 4994 instance.syncTick = 1; 4995 instance.syncHooks = []; 4996 instance.didChangeStore = true; 4997 instance.getSnapshot = () => { 4998 let didChange2 = false; 4999 for (let i = 0; i < instance.syncHooks.length; i += 1) { 5000 const hook = instance.syncHooks[i]; 5001 const value = hook.selector(hook.store.state, hook.a1, hook.a2, hook.a3); 5002 if (!Object.is(hook.value, value)) { 5003 didChange2 = true; 5004 hook.value = value; 5005 } 5006 } 5007 if (didChange2) { 5008 instance.syncTick += 1; 5009 } 5010 return instance.syncTick; 5011 }; 5012 } 5013 }, 5014 after(instance) { 5015 if (instance.syncHooks.length > 0) { 5016 if (instance.didChangeStore) { 5017 instance.didChangeStore = false; 5018 instance.subscribe = (onStoreChange) => { 5019 const stores = /* @__PURE__ */ new Set(); 5020 for (const hook of instance.syncHooks) { 5021 stores.add(hook.store); 5022 } 5023 const unsubscribes = []; 5024 for (const store of stores) { 5025 unsubscribes.push(store.subscribe(onStoreChange)); 5026 } 5027 return () => { 5028 for (const unsubscribe of unsubscribes) { 5029 unsubscribe(); 5030 } 5031 }; 5032 }; 5033 } 5034 (0, import_shim.useSyncExternalStore)(instance.subscribe, instance.getSnapshot, instance.getSnapshot); 5035 } 5036 } 5037 }); 5038 function useStoreFast(store, selector, a1, a2, a3) { 5039 const instance = getInstance(); 5040 if (!instance) { 5041 return useStoreR19(store, selector, a1, a2, a3); 5042 } 5043 const index3 = instance.syncIndex; 5044 instance.syncIndex += 1; 5045 let hook; 5046 if (!instance.didInitialize) { 5047 hook = { 5048 store, 5049 selector, 5050 a1, 5051 a2, 5052 a3, 5053 value: selector(store.getSnapshot(), a1, a2, a3) 5054 }; 5055 instance.syncHooks.push(hook); 5056 } else { 5057 hook = instance.syncHooks[index3]; 5058 if (hook.store !== store || hook.selector !== selector || !Object.is(hook.a1, a1) || !Object.is(hook.a2, a2) || !Object.is(hook.a3, a3)) { 5059 if (hook.store !== store) { 5060 instance.didChangeStore = true; 5061 } 5062 hook.store = store; 5063 hook.selector = selector; 5064 hook.a1 = a1; 5065 hook.a2 = a2; 5066 hook.a3 = a3; 5067 hook.value = selector(store.getSnapshot(), a1, a2, a3); 5068 } 5069 } 5070 return hook.value; 5071 } 5072 function useStoreLegacy(store, selector, a1, a2, a3) { 5073 return (0, import_with_selector.useSyncExternalStoreWithSelector)(store.subscribe, store.getSnapshot, store.getSnapshot, (state) => selector(state, a1, a2, a3)); 5074 } 5075 5076 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/store/Store.mjs 5077 var Store = class { 5078 /** 5079 * Creates a store with the given initial state, constructing the class it is called on. 5080 * Calling it on a generic base class (e.g. `ReactStore.create(...)`) constructs that 5081 * class but degrades the inferred instance type to `Store`; use `new` there instead. 5082 */ 5083 static create(state) { 5084 return new this(state); 5085 } 5086 /** 5087 * The current state of the store. 5088 * This property is updated immediately when the state changes as a result of calling {@link setState}, {@link update}, or {@link set}. 5089 * 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). 5090 * The values can be used directly (to avoid subscribing to the store) in effects or event handlers. 5091 * 5092 * Do not modify properties in state directly. Instead, use the provided methods to ensure proper state management and listener notification. 5093 */ 5094 // Internal state to handle recursive `setState()` calls 5095 constructor(state) { 5096 this.state = state; 5097 this.listeners = /* @__PURE__ */ new Set(); 5098 this.updateTick = 0; 5099 } 5100 /** 5101 * Registers a listener that will be called whenever the store's state changes. 5102 * 5103 * @param fn The listener function to be called on state changes. 5104 * @returns A function to unsubscribe the listener. 5105 */ 5106 subscribe = (fn) => { 5107 this.listeners.add(fn); 5108 return () => { 5109 this.listeners.delete(fn); 5110 }; 5111 }; 5112 /** 5113 * Returns the current state of the store. 5114 */ 5115 getSnapshot = () => { 5116 return this.state; 5117 }; 5118 /** 5119 * Updates the entire store's state and notifies all registered listeners. 5120 * 5121 * @param newState The new state to set for the store. 5122 */ 5123 setState(newState) { 5124 if (this.state === newState) { 5125 return; 5126 } 5127 this.state = newState; 5128 this.updateTick += 1; 5129 const currentTick = this.updateTick; 5130 for (const listener of this.listeners) { 5131 if (currentTick !== this.updateTick) { 5132 return; 5133 } 5134 listener(newState); 5135 } 5136 } 5137 /** 5138 * Merges the provided changes into the current state and notifies listeners if there are changes. 5139 * Each value must match its state key. Pass an exact known subset rather than a broad 5140 * `Partial<State>`, which may contain `undefined` for required state fields. 5141 * 5142 * @param changes An object containing the changes to apply to the current state. 5143 */ 5144 update(changes) { 5145 for (const key in changes) { 5146 if (!Object.is(this.state[key], changes[key])) { 5147 this.setState({ 5148 ...this.state, 5149 ...changes 5150 }); 5151 return; 5152 } 5153 } 5154 } 5155 /** 5156 * Sets a specific key in the store's state to a new value and notifies listeners if the value has changed. 5157 * 5158 * @param key The key in the store's state to update. 5159 * @param value The new value to set for the specified key. 5160 */ 5161 set(key, value) { 5162 if (!Object.is(this.state[key], value)) { 5163 this.setState({ 5164 ...this.state, 5165 [key]: value 5166 }); 5167 } 5168 } 5169 /** 5170 * Gives the state a new reference and updates all registered listeners. 5171 */ 5172 notifyAll() { 5173 const newState = { 5174 ...this.state 5175 }; 5176 this.setState(newState); 5177 } 5178 use(selector, a1, a2, a3) { 5179 return useStore(this, selector, a1, a2, a3); 5180 } 5181 }; 5182 5183 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/store/ReactStore.mjs 5184 var React29 = __toESM(require_react(), 1); 5185 var ReactStore = class extends Store { 5186 /** 5187 * Creates a new ReactStore instance. 5188 * 5189 * @param state Initial state of the store. 5190 * @param context Non-reactive context values. 5191 * @param selectors Optional selectors for use with `useState`. 5192 */ 5193 constructor(state, context = {}, selectors3) { 5194 super(state); 5195 this.context = context; 5196 this.selectors = selectors3; 5197 } 5198 /** 5199 * Non-reactive values such as refs, callbacks, etc. 5200 */ 5201 /** 5202 * Synchronizes a single external value into the store. 5203 * 5204 * Note that the while the value in `state` is updated immediately, the value returned 5205 * by `useState` is updated before the next render (similarly to React's `useState`). 5206 */ 5207 useSyncedValue(key, value) { 5208 React29.useDebugValue(key); 5209 const store = this; 5210 useIsoLayoutEffect(() => { 5211 if (store.state[key] !== value) { 5212 store.set(key, value); 5213 } 5214 }, [store, key, value]); 5215 } 5216 /** 5217 * Synchronizes a single external value into the store and 5218 * cleans it up (sets to `undefined`) on unmount. 5219 * 5220 * Note that the while the value in `state` is updated immediately, the value returned 5221 * by `useState` is updated before the next render (similarly to React's `useState`). 5222 */ 5223 useSyncedValueWithCleanup(key, value) { 5224 const store = this; 5225 useIsoLayoutEffect(() => { 5226 if (store.state[key] !== value) { 5227 store.set(key, value); 5228 } 5229 return () => { 5230 store.set(key, void 0); 5231 }; 5232 }, [store, key, value]); 5233 } 5234 /** 5235 * Synchronizes multiple external values into the store. 5236 * Each value must match its state key. Pass an exact known subset rather than a broad 5237 * `Partial<State>`, which may contain `undefined` for required state fields. 5238 * 5239 * Note that the while the values in `state` are updated immediately, the values returned 5240 * by `useState` are updated before the next render (similarly to React's `useState`). 5241 * 5242 * @param statePart An exact subset of state fields to synchronize. Unknown keys are not accepted. 5243 */ 5244 useSyncedValues(statePart) { 5245 const store = this; 5246 if (true) { 5247 React29.useDebugValue(statePart, (p) => Object.keys(p)); 5248 const keys = React29.useRef(Object.keys(statePart)).current; 5249 const nextKeys = Object.keys(statePart); 5250 if (keys.length !== nextKeys.length || keys.some((key, index3) => key !== nextKeys[index3])) { 5251 console.error("ReactStore.useSyncedValues expects the same prop keys on every render. Keys should be stable."); 5252 } 5253 } 5254 const dependencies = Object.values(statePart); 5255 useIsoLayoutEffect(() => { 5256 store.update(statePart); 5257 }, [store, ...dependencies]); 5258 } 5259 /** 5260 * Registers a controllable prop pair (`controlled`, `defaultValue`) for a specific key. If `controlled` 5261 * is non-undefined, the store's state at `key` is updated to match `controlled`. 5262 */ 5263 useControlledProp(key, controlled) { 5264 React29.useDebugValue(key); 5265 const store = this; 5266 const isControlled = controlled !== void 0; 5267 useIsoLayoutEffect(() => { 5268 if (isControlled && !Object.is(store.state[key], controlled)) { 5269 store.setState({ 5270 ...store.state, 5271 [key]: controlled 5272 }); 5273 } 5274 }, [store, key, controlled, isControlled]); 5275 if (true) { 5276 const cache = this.controlledValues ??= /* @__PURE__ */ new Map(); 5277 if (!cache.has(key)) { 5278 cache.set(key, isControlled); 5279 } 5280 const previouslyControlled = cache.get(key); 5281 if (previouslyControlled !== void 0 && previouslyControlled !== isControlled) { 5282 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).`); 5283 } 5284 } 5285 } 5286 /** Gets the current value from the store using a selector with the provided key. 5287 * 5288 * @param key Key of the selector to use. 5289 */ 5290 select(key, a1, a2, a3) { 5291 const selector = this.selectors[key]; 5292 return selector(this.state, a1, a2, a3); 5293 } 5294 /** 5295 * Returns a value from the store's state using a selector function. 5296 * Used to subscribe to specific parts of the state. 5297 * This methods causes a rerender whenever the selected state changes. 5298 * 5299 * @param key Key of the selector to use. 5300 */ 5301 useState(key, a1, a2, a3) { 5302 React29.useDebugValue(key); 5303 return useStore(this, this.selectors[key], a1, a2, a3); 5304 } 5305 /** 5306 * Wraps a function with `useStableCallback` to ensure it has a stable reference 5307 * and assigns it to the context. 5308 * 5309 * @param key Key of the event callback. Must be a function in the context. 5310 * @param fn Function to assign. 5311 */ 5312 useContextCallback(key, fn) { 5313 React29.useDebugValue(key); 5314 const stableFunction = useStableCallback(fn ?? NOOP); 5315 this.context[key] = stableFunction; 5316 } 5317 /** 5318 * Returns a stable setter function for a specific key in the store's state. 5319 * It's commonly used to pass as a ref callback to React elements. 5320 * 5321 * @param key Key of the state to set. 5322 */ 5323 useStateSetter(key) { 5324 const ref = React29.useRef(void 0); 5325 if (ref.current === void 0) { 5326 ref.current = (value) => { 5327 this.set(key, value); 5328 }; 5329 } 5330 return ref.current; 5331 } 5332 /** 5333 * Observes changes derived from the store's selectors and calls the listener when the selected value changes. 5334 * 5335 * @param key Key of the selector to observe. 5336 * @param listener Listener function called when the selector result changes. 5337 */ 5338 observe(selector, listener) { 5339 let selectFn; 5340 if (typeof selector === "function") { 5341 selectFn = selector; 5342 } else { 5343 selectFn = this.selectors[selector]; 5344 } 5345 let prevValue = selectFn(this.state); 5346 listener(prevValue, prevValue, this); 5347 return this.subscribe((nextState) => { 5348 const nextValue = selectFn(nextState); 5349 if (!Object.is(prevValue, nextValue)) { 5350 const oldValue = prevValue; 5351 prevValue = nextValue; 5352 listener(nextValue, oldValue, this); 5353 } 5354 }); 5355 } 5356 }; 5357 5358 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/components/FloatingRootStore.mjs 5359 var selectors = { 5360 open: (state) => state.open, 5361 transitionStatus: (state) => state.transitionStatus, 5362 domReferenceElement: (state) => state.domReferenceElement, 5363 referenceElement: (state) => state.positionReference ?? state.referenceElement, 5364 floatingElement: (state) => state.floatingElement, 5365 floatingId: (state) => state.floatingId 5366 }; 5367 var FloatingRootStore = class extends ReactStore { 5368 constructor(options) { 5369 const { 5370 syncOnly, 5371 nested, 5372 onOpenChange, 5373 triggerElements, 5374 ...initialState 5375 } = options; 5376 super({ 5377 ...initialState, 5378 positionReference: initialState.referenceElement, 5379 domReferenceElement: initialState.referenceElement 5380 }, { 5381 onOpenChange, 5382 dataRef: { 5383 current: {} 5384 }, 5385 events: createEventEmitter(), 5386 nested, 5387 triggerElements 5388 }, selectors); 5389 this.syncOnly = syncOnly; 5390 } 5391 /** 5392 * Syncs the event used by hover logic to distinguish hover-open from click-like interaction. 5393 */ 5394 syncOpenEvent = (newOpen, event) => { 5395 if (!newOpen || !this.state.open || // Prevent a pending hover-open from overwriting a click-open event, while allowing 5396 // click events to upgrade a hover-open. 5397 event != null && isClickLikeEvent(event)) { 5398 this.context.dataRef.current.openEvent = newOpen ? event : void 0; 5399 } 5400 }; 5401 /** 5402 * Runs the root-owned side effects for an open state change. 5403 */ 5404 dispatchOpenChange = (newOpen, eventDetails) => { 5405 this.syncOpenEvent(newOpen, eventDetails.event); 5406 const details = { 5407 open: newOpen, 5408 reason: eventDetails.reason, 5409 nativeEvent: eventDetails.event, 5410 nested: this.context.nested, 5411 triggerElement: eventDetails.trigger 5412 }; 5413 this.context.events.emit("openchange", details); 5414 }; 5415 /** 5416 * Emits the `openchange` event through the internal event emitter and calls the `onOpenChange` handler with the provided arguments. 5417 * 5418 * @param newOpen The new open state. 5419 * @param eventDetails Details about the event that triggered the open state change. 5420 */ 5421 setOpen = (newOpen, eventDetails) => { 5422 if (this.syncOnly) { 5423 this.context.onOpenChange?.(newOpen, eventDetails); 5424 return; 5425 } 5426 this.dispatchOpenChange(newOpen, eventDetails); 5427 this.context.onOpenChange?.(newOpen, eventDetails); 5428 }; 5429 }; 5430 5431 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useFloatingRootContext.mjs 5432 function useFloatingRootContext(options) { 5433 const { 5434 open: open2 = false, 5435 onOpenChange, 5436 elements = {} 5437 } = options; 5438 const floatingId = useId(); 5439 const nested = useFloatingParentNodeId() != null; 5440 if (true) { 5441 const optionDomReference = elements.reference; 5442 if (optionDomReference && !isElement(optionDomReference)) { 5443 console.error("Cannot pass a virtual element to the `elements.reference` option,", "as it must be a real DOM element. Use `context.setPositionReference()`", "instead."); 5444 } 5445 } 5446 const store = useRefWithInit(() => new FloatingRootStore({ 5447 open: open2, 5448 transitionStatus: void 0, 5449 onOpenChange, 5450 referenceElement: elements.reference ?? null, 5451 floatingElement: elements.floating ?? null, 5452 triggerElements: new PopupTriggerMap(), 5453 floatingId, 5454 syncOnly: false, 5455 nested 5456 })).current; 5457 useIsoLayoutEffect(() => { 5458 const valuesToSync = { 5459 open: open2, 5460 floatingId 5461 }; 5462 if (elements.reference !== void 0) { 5463 valuesToSync.referenceElement = elements.reference; 5464 valuesToSync.domReferenceElement = isElement(elements.reference) ? elements.reference : null; 5465 } 5466 if (elements.floating !== void 0) { 5467 valuesToSync.floatingElement = elements.floating; 5468 } 5469 store.update(valuesToSync); 5470 }, [open2, floatingId, elements.reference, elements.floating, store]); 5471 store.context.onOpenChange = onOpenChange; 5472 store.context.nested = nested; 5473 return store; 5474 } 5475 5476 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useListNavigation.mjs 5477 var React30 = __toESM(require_react(), 1); 5478 function isStationaryWebKitPointer(event) { 5479 return parts_exports.engine.webkit && event.movementX === 0 && event.movementY === 0; 5480 } 5481 function doSwitch(orientation, vertical, horizontal) { 5482 switch (orientation) { 5483 case "vertical": 5484 return vertical; 5485 case "horizontal": 5486 return horizontal; 5487 default: 5488 return vertical || horizontal; 5489 } 5490 } 5491 function isMainOrientationKey(key, orientation) { 5492 const vertical = key === ARROW_UP || key === ARROW_DOWN; 5493 const horizontal = key === ARROW_LEFT || key === ARROW_RIGHT; 5494 return doSwitch(orientation, vertical, horizontal); 5495 } 5496 function isMainOrientationToEndKey(key, orientation, rtl) { 5497 const vertical = key === ARROW_DOWN; 5498 const horizontal = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT; 5499 return doSwitch(orientation, vertical, horizontal) || key === "Enter" || key === " " || key === ""; 5500 } 5501 function isCrossOrientationOpenKey(key, orientation, rtl) { 5502 const vertical = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT; 5503 const horizontal = key === ARROW_DOWN; 5504 return doSwitch(orientation, vertical, horizontal); 5505 } 5506 function isCrossOrientationCloseKey(key, orientation, rtl, grid) { 5507 const vertical = rtl ? key === ARROW_RIGHT : key === ARROW_LEFT; 5508 const horizontal = key === ARROW_UP; 5509 if (orientation === "both" || orientation === "horizontal" && grid) { 5510 return key === "Escape"; 5511 } 5512 return doSwitch(orientation, vertical, horizontal); 5513 } 5514 function useListNavigation(store, props) { 5515 const { 5516 listRef, 5517 activeIndex, 5518 onNavigate: onNavigateProp = () => { 5519 }, 5520 enabled = true, 5521 selectedIndex = null, 5522 allowEscape = false, 5523 loopFocus = false, 5524 nested = false, 5525 rtl = false, 5526 virtual = false, 5527 focusItemOnOpen = "auto", 5528 focusItemOnHover = true, 5529 openOnArrowKeyDown = true, 5530 disabledIndices = void 0, 5531 orientation = "vertical", 5532 triggerOrientation = orientation, 5533 parentOrientation, 5534 id, 5535 resetOnPointerLeave = true, 5536 externalTree, 5537 nestedReturnFocusRef, 5538 grid: navigateGrid 5539 } = props; 5540 const isGrid = navigateGrid != null; 5541 if (true) { 5542 if (allowEscape) { 5543 if (!loopFocus) { 5544 console.warn("`useListNavigation` looping must be enabled to allow escaping."); 5545 } 5546 if (!virtual) { 5547 console.warn("`useListNavigation` must be virtual to allow escaping."); 5548 } 5549 } 5550 if (orientation === "vertical" && isGrid) { 5551 console.warn("In grid list navigation mode, the `orientation` should", 'be either "horizontal" or "both".'); 5552 } 5553 } 5554 const open2 = store.useState("open"); 5555 const floatingElement = store.useState("floatingElement"); 5556 const domReferenceElement = store.useState("domReferenceElement"); 5557 const dataRef = store.context.dataRef; 5558 const floatingFocusElement = getFloatingFocusElement(floatingElement); 5559 const typeableComboboxReference = isTypeableCombobox(domReferenceElement); 5560 const floatingFocusElementRef = useValueAsRef(floatingFocusElement); 5561 const parentId = useFloatingParentNodeId(); 5562 const tree = useFloatingTree(externalTree); 5563 const focusItemOnOpenRef = React30.useRef(focusItemOnOpen); 5564 const indexRef = React30.useRef(selectedIndex ?? -1); 5565 const keyRef = React30.useRef(null); 5566 const isPointerModalityRef = React30.useRef(true); 5567 const onNavigate = useStableCallback((event) => { 5568 onNavigateProp(indexRef.current === -1 ? null : indexRef.current, event); 5569 }); 5570 const previousMountedRef = React30.useRef(!!floatingElement); 5571 const previousOpenRef = React30.useRef(open2); 5572 const forceSyncFocusRef = React30.useRef(false); 5573 const forceScrollIntoViewRef = React30.useRef(false); 5574 const cancelQueuedFocusRef = React30.useRef(null); 5575 const disabledIndicesRef = useValueAsRef(disabledIndices); 5576 const latestOpenRef = useValueAsRef(open2); 5577 const selectedIndexRef = useValueAsRef(selectedIndex); 5578 const resetOnPointerLeaveRef = useValueAsRef(resetOnPointerLeave); 5579 const focusFrame = useAnimationFrame(); 5580 const waitForListPopulatedFrame = useAnimationFrame(); 5581 const focusItem = useStableCallback(() => { 5582 focusFrame.cancel(); 5583 function runFocus(item2) { 5584 if (!virtual) { 5585 cancelQueuedFocusRef.current = enqueueFocus(item2, { 5586 sync: forceSyncFocusRef.current, 5587 preventScroll: true 5588 }); 5589 } 5590 } 5591 const initialItem = listRef.current[indexRef.current]; 5592 const forceScrollIntoView = forceScrollIntoViewRef.current; 5593 if (initialItem) { 5594 runFocus(initialItem); 5595 } 5596 const scheduler2 = forceSyncFocusRef.current ? (callback) => callback() : (callback) => focusFrame.request(callback); 5597 scheduler2(() => { 5598 const waitedItem = listRef.current[indexRef.current] || initialItem; 5599 if (!waitedItem) { 5600 return; 5601 } 5602 if (!initialItem) { 5603 runFocus(waitedItem); 5604 } 5605 const shouldScrollIntoView = ( 5606 // eslint-disable-next-line @typescript-eslint/no-use-before-define 5607 item && (forceScrollIntoView || !isPointerModalityRef.current) 5608 ); 5609 if (shouldScrollIntoView) { 5610 waitedItem.scrollIntoView?.({ 5611 block: "nearest", 5612 inline: "nearest" 5613 }); 5614 } 5615 }); 5616 }); 5617 useIsoLayoutEffect(() => { 5618 dataRef.current.orientation = orientation; 5619 }, [dataRef, orientation]); 5620 useIsoLayoutEffect(() => { 5621 if (!open2) { 5622 keyRef.current = null; 5623 } 5624 if (!open2 || focusItemOnOpen !== "auto") { 5625 focusItemOnOpenRef.current = focusItemOnOpen; 5626 } 5627 }, [open2, focusItemOnOpen]); 5628 useIsoLayoutEffect(() => { 5629 if (!enabled) { 5630 return; 5631 } 5632 if (open2 && floatingElement) { 5633 indexRef.current = selectedIndex ?? -1; 5634 if (focusItemOnOpenRef.current && selectedIndex != null) { 5635 forceScrollIntoViewRef.current = true; 5636 onNavigate(); 5637 } 5638 } else if (previousMountedRef.current) { 5639 indexRef.current = -1; 5640 onNavigate(); 5641 } 5642 }, [enabled, open2, floatingElement, selectedIndex, onNavigate]); 5643 useIsoLayoutEffect(() => { 5644 if (!enabled) { 5645 return; 5646 } 5647 if (!open2) { 5648 forceSyncFocusRef.current = false; 5649 return; 5650 } 5651 if (!floatingElement) { 5652 return; 5653 } 5654 if (activeIndex == null) { 5655 forceSyncFocusRef.current = false; 5656 if (selectedIndexRef.current != null) { 5657 return; 5658 } 5659 if (previousMountedRef.current) { 5660 indexRef.current = -1; 5661 focusItem(); 5662 } 5663 if ((!previousOpenRef.current || !previousMountedRef.current) && focusItemOnOpenRef.current && (keyRef.current != null || focusItemOnOpenRef.current === true && keyRef.current == null)) { 5664 let runs = 0; 5665 const waitForListPopulated = () => { 5666 if (listRef.current[0] == null) { 5667 if (runs < 2) { 5668 const scheduler2 = runs ? (callback) => waitForListPopulatedFrame.request(callback) : queueMicrotask; 5669 scheduler2(waitForListPopulated); 5670 } 5671 runs += 1; 5672 } else { 5673 indexRef.current = keyRef.current == null || isMainOrientationToEndKey(keyRef.current, triggerOrientation, rtl) || nested ? getMinListIndex(listRef) : getMaxListIndex(listRef); 5674 keyRef.current = null; 5675 onNavigate(); 5676 } 5677 }; 5678 waitForListPopulated(); 5679 } 5680 } else if (!isIndexOutOfListBounds(listRef.current, activeIndex)) { 5681 indexRef.current = activeIndex; 5682 focusItem(); 5683 forceScrollIntoViewRef.current = false; 5684 } 5685 }, [enabled, open2, floatingElement, activeIndex, selectedIndexRef, nested, listRef, triggerOrientation, rtl, onNavigate, focusItem, waitForListPopulatedFrame]); 5686 useIsoLayoutEffect(() => { 5687 if (!enabled || floatingElement || !tree || virtual || !previousMountedRef.current) { 5688 return; 5689 } 5690 const nodes = tree.nodesRef.current; 5691 const parent = nodes.find((node) => node.id === parentId)?.context?.elements.floating; 5692 const activeEl = activeElement(ownerDocument(domReferenceElement ?? parent ?? null)); 5693 const treeContainsActiveEl = nodes.some((node) => node.context && contains(node.context.elements.floating, activeEl)); 5694 if (parent && !treeContainsActiveEl && isPointerModalityRef.current) { 5695 parent.focus({ 5696 preventScroll: true 5697 }); 5698 } 5699 }, [enabled, floatingElement, domReferenceElement, tree, parentId, virtual]); 5700 useIsoLayoutEffect(() => { 5701 previousOpenRef.current = open2; 5702 previousMountedRef.current = !!floatingElement; 5703 }); 5704 const hasActiveIndex = activeIndex != null; 5705 const syncCurrentTarget = useStableCallback((event) => { 5706 if (!latestOpenRef.current) { 5707 return; 5708 } 5709 const index3 = listRef.current.indexOf(event.currentTarget); 5710 if (index3 !== -1 && (indexRef.current !== index3 || activeIndex !== index3)) { 5711 indexRef.current = index3; 5712 onNavigate(event); 5713 } 5714 }); 5715 const getParentOrientation = useStableCallback(() => { 5716 return parentOrientation ?? tree?.nodesRef.current.find((node) => node.id === parentId)?.context?.dataRef?.current.orientation; 5717 }); 5718 const getMinEnabledIndex = useStableCallback(() => { 5719 return getMinListIndex(listRef, disabledIndicesRef.current); 5720 }); 5721 const commonOnKeyDown = useStableCallback((event) => { 5722 isPointerModalityRef.current = false; 5723 forceSyncFocusRef.current = true; 5724 if (event.which === 229) { 5725 return; 5726 } 5727 if (!latestOpenRef.current && event.currentTarget === floatingFocusElementRef.current) { 5728 return; 5729 } 5730 if (nested && isCrossOrientationCloseKey(event.key, orientation, rtl, isGrid)) { 5731 if (!isMainOrientationKey(event.key, getParentOrientation())) { 5732 stopEvent(event); 5733 } 5734 store.setOpen(false, createChangeEventDetails(reason_parts_exports.listNavigation, event.nativeEvent)); 5735 const returnElement = nestedReturnFocusRef?.current ?? domReferenceElement; 5736 if (isHTMLElement(returnElement)) { 5737 returnElement.focus(); 5738 } 5739 return; 5740 } 5741 if (activeIndex != null && activeIndex !== indexRef.current && !isIndexOutOfListBounds(listRef.current, activeIndex)) { 5742 indexRef.current = activeIndex; 5743 } 5744 const currentIndex = indexRef.current; 5745 const minIndex = getMinListIndex(listRef, disabledIndices); 5746 const maxIndex = getMaxListIndex(listRef, disabledIndices); 5747 if (!typeableComboboxReference) { 5748 if (event.key === "Home") { 5749 stopEvent(event); 5750 indexRef.current = minIndex; 5751 onNavigate(event); 5752 } 5753 if (event.key === "End") { 5754 stopEvent(event); 5755 indexRef.current = maxIndex; 5756 onNavigate(event); 5757 } 5758 } 5759 if (navigateGrid != null) { 5760 const index3 = navigateGrid(event, indexRef.current, listRef, orientation, loopFocus, rtl, disabledIndices, minIndex, maxIndex); 5761 if (index3 != null && index3 !== indexRef.current) { 5762 indexRef.current = index3; 5763 onNavigate(event); 5764 } 5765 if (orientation === "both") { 5766 return; 5767 } 5768 } 5769 if (isMainOrientationKey(event.key, orientation)) { 5770 stopEvent(event); 5771 const focusedElement = activeElement(event.currentTarget.ownerDocument); 5772 if (open2 && !virtual && contains(event.currentTarget, focusedElement) && !listRef.current.some((item2) => item2 != null && contains(item2, focusedElement))) { 5773 indexRef.current = isMainOrientationToEndKey(event.key, orientation, rtl) ? minIndex : maxIndex; 5774 onNavigate(event); 5775 if (activeIndex === indexRef.current) { 5776 focusItem(); 5777 } 5778 return; 5779 } 5780 const { 5781 index: index3, 5782 wrapped 5783 } = getNextListIndex(listRef.current, currentIndex, { 5784 decrement: !isMainOrientationToEndKey(event.key, orientation, rtl), 5785 loopFocus, 5786 allowEscape, 5787 disabledIndices, 5788 minIndex, 5789 maxIndex 5790 }); 5791 if (wrapped) { 5792 forceSyncFocusRef.current = false; 5793 } 5794 indexRef.current = index3; 5795 onNavigate(event); 5796 } 5797 }); 5798 const item = React30.useMemo(() => { 5799 const itemProps = { 5800 onFocus(event) { 5801 forceSyncFocusRef.current = true; 5802 syncCurrentTarget(event); 5803 }, 5804 onClick({ 5805 currentTarget 5806 }) { 5807 if (!virtual) { 5808 currentTarget.focus({ 5809 preventScroll: true 5810 }); 5811 } 5812 }, 5813 onMouseMove(event) { 5814 if (isStationaryWebKitPointer(event)) { 5815 return; 5816 } 5817 forceSyncFocusRef.current = true; 5818 forceScrollIntoViewRef.current = false; 5819 if (focusItemOnHover) { 5820 syncCurrentTarget(event); 5821 } 5822 }, 5823 onPointerLeave(event) { 5824 if (!latestOpenRef.current || !isPointerModalityRef.current || event.pointerType === "touch") { 5825 return; 5826 } 5827 forceSyncFocusRef.current = true; 5828 const relatedTarget = event.relatedTarget; 5829 if (!focusItemOnHover || listRef.current.includes(relatedTarget)) { 5830 return; 5831 } 5832 if (!resetOnPointerLeaveRef.current) { 5833 return; 5834 } 5835 cancelQueuedFocusRef.current?.(); 5836 cancelQueuedFocusRef.current = null; 5837 indexRef.current = -1; 5838 onNavigate(event); 5839 if (!virtual) { 5840 const floatingFocusEl = floatingFocusElementRef.current; 5841 const activeEl = activeElement(ownerDocument(floatingFocusEl)); 5842 if (floatingFocusEl && contains(floatingFocusEl, activeEl)) { 5843 floatingFocusEl.focus({ 5844 preventScroll: true 5845 }); 5846 } 5847 } 5848 } 5849 }; 5850 return itemProps; 5851 }, [syncCurrentTarget, latestOpenRef, floatingFocusElementRef, focusItemOnHover, listRef, onNavigate, resetOnPointerLeaveRef, virtual]); 5852 const ariaActiveDescendantProp = React30.useMemo(() => { 5853 return virtual && open2 && hasActiveIndex && { 5854 "aria-activedescendant": `$id}-$activeIndex}` 5855 }; 5856 }, [virtual, open2, hasActiveIndex, id, activeIndex]); 5857 const floating = React30.useMemo(() => { 5858 return { 5859 ...!typeableComboboxReference ? ariaActiveDescendantProp : {}, 5860 onKeyDown(event) { 5861 if (event.key === "Tab" && event.shiftKey && open2 && !virtual) { 5862 const target = getTarget(event.nativeEvent); 5863 if (target && !contains(floatingFocusElementRef.current, target)) { 5864 return; 5865 } 5866 stopEvent(event); 5867 const details = createChangeEventDetails(reason_parts_exports.focusOut, event.nativeEvent); 5868 store.setOpen(false, details); 5869 const returnElement = nestedReturnFocusRef?.current ?? domReferenceElement; 5870 if (!details.isCanceled && isHTMLElement(returnElement)) { 5871 returnElement.focus(); 5872 } 5873 return; 5874 } 5875 commonOnKeyDown(event); 5876 }, 5877 onPointerMove(event) { 5878 if (isStationaryWebKitPointer(event)) { 5879 return; 5880 } 5881 isPointerModalityRef.current = true; 5882 } 5883 }; 5884 }, [ariaActiveDescendantProp, commonOnKeyDown, floatingFocusElementRef, typeableComboboxReference, store, open2, virtual, domReferenceElement, nestedReturnFocusRef]); 5885 const trigger = React30.useMemo(() => { 5886 function openOnNavigationKeyDown(event) { 5887 store.setOpen(true, createChangeEventDetails(reason_parts_exports.listNavigation, event.nativeEvent, event.currentTarget)); 5888 } 5889 function checkVirtualMouse(event) { 5890 if (focusItemOnOpen === "auto" && isVirtualClick(event.nativeEvent)) { 5891 focusItemOnOpenRef.current = !virtual; 5892 } 5893 } 5894 function checkVirtualPointer(event) { 5895 focusItemOnOpenRef.current = focusItemOnOpen; 5896 if (focusItemOnOpen === "auto" && isVirtualPointerEvent(event.nativeEvent)) { 5897 focusItemOnOpenRef.current = true; 5898 } 5899 } 5900 return { 5901 onKeyDown(event) { 5902 const currentOpen = store.select("open"); 5903 isPointerModalityRef.current = false; 5904 const isArrowKey = event.key.startsWith("Arrow"); 5905 const isParentCrossOpenKey = isCrossOrientationOpenKey(event.key, getParentOrientation(), rtl); 5906 const isMainKey = isMainOrientationKey(event.key, currentOpen ? orientation : triggerOrientation); 5907 const isNavigationKey = (nested ? isParentCrossOpenKey : isMainKey) || event.key === "Enter" || event.key.trim() === ""; 5908 if (virtual && currentOpen && (!nested || isTypeableElement(event.currentTarget))) { 5909 return commonOnKeyDown(event); 5910 } 5911 if (!currentOpen && !openOnArrowKeyDown && isArrowKey) { 5912 return void 0; 5913 } 5914 if (isNavigationKey) { 5915 const isParentMainKey = isMainOrientationKey(event.key, getParentOrientation()); 5916 keyRef.current = nested && isParentMainKey ? null : event.key; 5917 } 5918 if (nested) { 5919 if (isParentCrossOpenKey) { 5920 stopEvent(event); 5921 if (currentOpen) { 5922 indexRef.current = getMinEnabledIndex(); 5923 onNavigate(event); 5924 if (virtual) { 5925 floatingFocusElementRef.current?.focus(); 5926 } 5927 } else { 5928 openOnNavigationKeyDown(event); 5929 } 5930 } 5931 return void 0; 5932 } 5933 if (isMainKey) { 5934 if (selectedIndexRef.current != null) { 5935 indexRef.current = selectedIndexRef.current; 5936 } 5937 stopEvent(event); 5938 if (!currentOpen && openOnArrowKeyDown) { 5939 openOnNavigationKeyDown(event); 5940 } else { 5941 commonOnKeyDown(event); 5942 } 5943 if (currentOpen) { 5944 onNavigate(event); 5945 } 5946 } 5947 return void 0; 5948 }, 5949 onFocus(event) { 5950 if (event.target !== event.currentTarget) { 5951 return; 5952 } 5953 if (store.select("open") && !virtual) { 5954 indexRef.current = -1; 5955 onNavigate(event); 5956 } 5957 }, 5958 onPointerDown: checkVirtualPointer, 5959 onPointerEnter: checkVirtualPointer, 5960 onMouseDown: checkVirtualMouse, 5961 onClick: checkVirtualMouse 5962 }; 5963 }, [commonOnKeyDown, focusItemOnOpen, getMinEnabledIndex, nested, onNavigate, store, openOnArrowKeyDown, orientation, triggerOrientation, getParentOrientation, rtl, selectedIndexRef, virtual, floatingFocusElementRef]); 5964 const reference = React30.useMemo(() => { 5965 return { 5966 ...ariaActiveDescendantProp, 5967 ...trigger 5968 }; 5969 }, [ariaActiveDescendantProp, trigger]); 5970 return React30.useMemo(() => enabled ? { 5971 reference, 5972 floating, 5973 item, 5974 trigger 5975 } : {}, [enabled, reference, floating, trigger, item]); 5976 } 5977 5978 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useTypeahead.mjs 5979 var React31 = __toESM(require_react(), 1); 5980 function useTypeahead(store, props) { 5981 const { 5982 listRef, 5983 elementsRef, 5984 activeIndex, 5985 onMatch: onMatchProp, 5986 disabledIndices, 5987 onTyping: onTypingProp, 5988 enabled = true, 5989 resetMs = 750, 5990 selectedIndex = null 5991 } = props; 5992 const onTyping = useStableCallback(onTypingProp); 5993 const open2 = store.useState("open"); 5994 const timeout = useTimeout(); 5995 const stringRef = React31.useRef(""); 5996 const prevIndexRef = React31.useRef(selectedIndex ?? activeIndex ?? -1); 5997 const matchIndexRef = React31.useRef(null); 5998 const onKeyDown = useStableCallback((event) => { 5999 function getElement(index4) { 6000 return elementsRef?.current[index4]; 6001 } 6002 function isItemAvailable(index4) { 6003 const element = getElement(index4); 6004 if (element && !isElementVisible(element) || element?.matches(":disabled")) { 6005 return false; 6006 } 6007 return disabledIndices == null || !isListIndexDisabled(EMPTY_ARRAY, index4, disabledIndices); 6008 } 6009 function getMatchingIndex(list, string, startIndex2 = 0) { 6010 if (list.length === 0) { 6011 return -1; 6012 } 6013 const normalizedStartIndex = (startIndex2 % list.length + list.length) % list.length; 6014 const lowerString = string.toLowerCase(); 6015 for (let offset4 = 0; offset4 < list.length; offset4 += 1) { 6016 const index4 = (normalizedStartIndex + offset4) % list.length; 6017 const text = list[index4]; 6018 if (!text?.toLowerCase().startsWith(lowerString) || !isItemAvailable(index4)) { 6019 continue; 6020 } 6021 return index4; 6022 } 6023 return -1; 6024 } 6025 const listContent = listRef.current; 6026 if (stringRef.current.length > 0 && event.key === " ") { 6027 stopEvent(event); 6028 onTyping?.(true); 6029 } 6030 if (stringRef.current.length > 0 && stringRef.current[0] !== " ") { 6031 if (getMatchingIndex(listContent, stringRef.current) === -1 && event.key !== " ") { 6032 onTyping?.(false); 6033 } 6034 } 6035 if (listContent == null || // Character key. 6036 event.key.length !== 1 || // Modifier key. 6037 event.ctrlKey || event.metaKey || event.altKey) { 6038 return; 6039 } 6040 if (open2 && event.key !== " ") { 6041 stopEvent(event); 6042 onTyping?.(true); 6043 } 6044 const isNewSession = stringRef.current === ""; 6045 if (isNewSession) { 6046 prevIndexRef.current = selectedIndex ?? activeIndex ?? -1; 6047 } 6048 const allowRapidSuccessionOfFirstLetter = listContent.every((text, index4) => text && isItemAvailable(index4) ? text[0]?.toLowerCase() !== text[1]?.toLowerCase() : true); 6049 if (allowRapidSuccessionOfFirstLetter && stringRef.current === event.key) { 6050 stringRef.current = ""; 6051 prevIndexRef.current = matchIndexRef.current; 6052 } 6053 stringRef.current += event.key; 6054 timeout.start(resetMs, () => { 6055 stringRef.current = ""; 6056 prevIndexRef.current = matchIndexRef.current; 6057 onTyping?.(false); 6058 }); 6059 const prevIndex = isNewSession ? selectedIndex ?? activeIndex ?? -1 : prevIndexRef.current; 6060 const startIndex = (prevIndex ?? 0) + 1; 6061 const index3 = getMatchingIndex(listContent, stringRef.current, startIndex); 6062 if (index3 !== -1) { 6063 onMatchProp?.(index3, event); 6064 matchIndexRef.current = index3; 6065 } else if (event.key !== " ") { 6066 stringRef.current = ""; 6067 onTyping?.(false); 6068 } 6069 }); 6070 const onBlur = useStableCallback((event) => { 6071 const next = event.relatedTarget; 6072 const currentDomReferenceElement = store.select("domReferenceElement"); 6073 const currentFloatingElement = store.select("floatingElement"); 6074 const withinComposite = contains(currentDomReferenceElement, next) || contains(currentFloatingElement, next); 6075 if (withinComposite) { 6076 return; 6077 } 6078 timeout.clear(); 6079 stringRef.current = ""; 6080 prevIndexRef.current = matchIndexRef.current; 6081 onTyping?.(false); 6082 }); 6083 useIsoLayoutEffect(() => { 6084 if (!open2 && selectedIndex !== null) { 6085 return; 6086 } 6087 timeout.clear(); 6088 matchIndexRef.current = null; 6089 if (stringRef.current !== "") { 6090 stringRef.current = ""; 6091 onTyping?.(false); 6092 } 6093 }, [open2, selectedIndex, timeout, onTyping]); 6094 const sharedProps = React31.useMemo(() => ({ 6095 onKeyDown, 6096 onBlur 6097 }), [onKeyDown, onBlur]); 6098 return React31.useMemo(() => enabled ? { 6099 reference: sharedProps, 6100 floating: sharedProps 6101 } : {}, [enabled, sharedProps]); 6102 } 6103 6104 // node_modules/.store/@floating-ui/core@1.8.0-3V8aS7jJHHGcsCINjP9-5A/node_modules/@floating-ui/core/dist/floating-ui.core.mjs 6105 function computeCoordsFromPlacement(_ref, placement, rtl) { 6106 let { 6107 reference, 6108 floating 6109 } = _ref; 6110 const sideAxis = getSideAxis(placement); 6111 const alignmentAxis = getAlignmentAxis(placement); 6112 const alignLength = getAxisLength(alignmentAxis); 6113 const side = getSide(placement); 6114 const isVertical = sideAxis === "y"; 6115 const commonX = reference.x + reference.width / 2 - floating.width / 2; 6116 const commonY = reference.y + reference.height / 2 - floating.height / 2; 6117 const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2; 6118 let coords; 6119 switch (side) { 6120 case "top": 6121 coords = { 6122 x: commonX, 6123 y: reference.y - floating.height 6124 }; 6125 break; 6126 case "bottom": 6127 coords = { 6128 x: commonX, 6129 y: reference.y + reference.height 6130 }; 6131 break; 6132 case "right": 6133 coords = { 6134 x: reference.x + reference.width, 6135 y: commonY 6136 }; 6137 break; 6138 case "left": 6139 coords = { 6140 x: reference.x - floating.width, 6141 y: commonY 6142 }; 6143 break; 6144 default: 6145 coords = { 6146 x: reference.x, 6147 y: reference.y 6148 }; 6149 } 6150 const alignment = getAlignment(placement); 6151 if (alignment) { 6152 coords[alignmentAxis] += commonAlign * (alignment === "end" ? 1 : -1) * (rtl && isVertical ? -1 : 1); 6153 } 6154 return coords; 6155 } 6156 async function detectOverflow(state, options) { 6157 var _await$platform$isEle; 6158 if (options === void 0) { 6159 options = {}; 6160 } 6161 const { 6162 x, 6163 y, 6164 platform: platform3, 6165 rects, 6166 elements, 6167 strategy 6168 } = state; 6169 const { 6170 boundary = "clippingAncestors", 6171 rootBoundary = "viewport", 6172 elementContext = "floating", 6173 altBoundary = false, 6174 padding = 0 6175 } = evaluate(options, state); 6176 const paddingObject = getPaddingObject(padding); 6177 const altContext = elementContext === "floating" ? "reference" : "floating"; 6178 const element = elements[altBoundary ? altContext : elementContext]; 6179 const clippingClientRect = rectToClientRect(await platform3.getClippingRect({ 6180 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)), 6181 boundary, 6182 rootBoundary, 6183 strategy 6184 })); 6185 const rect = elementContext === "floating" ? { 6186 x, 6187 y, 6188 width: rects.floating.width, 6189 height: rects.floating.height 6190 } : rects.reference; 6191 const offsetParent = await (platform3.getOffsetParent == null ? void 0 : platform3.getOffsetParent(elements.floating)); 6192 const offsetScale = await (platform3.isElement == null ? void 0 : platform3.isElement(offsetParent)) && await (platform3.getScale == null ? void 0 : platform3.getScale(offsetParent)) || { 6193 x: 1, 6194 y: 1 6195 }; 6196 const elementClientRect = rectToClientRect(platform3.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform3.convertOffsetParentRelativeRectToViewportRelativeRect({ 6197 elements, 6198 rect, 6199 offsetParent, 6200 strategy 6201 }) : rect); 6202 return { 6203 top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y, 6204 bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y, 6205 left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x, 6206 right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x 6207 }; 6208 } 6209 var MAX_RESET_COUNT = 50; 6210 var computePosition = async (reference, floating, config) => { 6211 const { 6212 placement = "bottom", 6213 strategy = "absolute", 6214 middleware = [], 6215 platform: platform3 6216 } = config; 6217 const platformWithDetectOverflow = platform3.detectOverflow ? platform3 : { 6218 ...platform3, 6219 detectOverflow 6220 }; 6221 const rtl = await (platform3.isRTL == null ? void 0 : platform3.isRTL(floating)); 6222 let rects = await platform3.getElementRects({ 6223 reference, 6224 floating, 6225 strategy 6226 }); 6227 let { 6228 x, 6229 y 6230 } = computeCoordsFromPlacement(rects, placement, rtl); 6231 let statefulPlacement = placement; 6232 let resetCount = 0; 6233 const middlewareData = {}; 6234 for (let i = 0; i < middleware.length; i++) { 6235 const currentMiddleware = middleware[i]; 6236 if (!currentMiddleware) { 6237 continue; 6238 } 6239 const { 6240 name: name16, 6241 fn 6242 } = currentMiddleware; 6243 const { 6244 x: nextX, 6245 y: nextY, 6246 data, 6247 reset 6248 } = await fn({ 6249 x, 6250 y, 6251 initialPlacement: placement, 6252 placement: statefulPlacement, 6253 strategy, 6254 middlewareData, 6255 rects, 6256 platform: platformWithDetectOverflow, 6257 elements: { 6258 reference, 6259 floating 6260 } 6261 }); 6262 x = nextX != null ? nextX : x; 6263 y = nextY != null ? nextY : y; 6264 middlewareData[name16] = { 6265 ...middlewareData[name16], 6266 ...data 6267 }; 6268 if (reset && resetCount < MAX_RESET_COUNT) { 6269 resetCount++; 6270 if (typeof reset === "object") { 6271 if (reset.placement) { 6272 statefulPlacement = reset.placement; 6273 } 6274 if (reset.rects) { 6275 rects = reset.rects === true ? await platform3.getElementRects({ 6276 reference, 6277 floating, 6278 strategy 6279 }) : reset.rects; 6280 } 6281 ({ 6282 x, 6283 y 6284 } = computeCoordsFromPlacement(rects, statefulPlacement, rtl)); 6285 } 6286 i = -1; 6287 } 6288 } 6289 return { 6290 x, 6291 y, 6292 placement: statefulPlacement, 6293 strategy, 6294 middlewareData 6295 }; 6296 }; 6297 var flip = function(options) { 6298 if (options === void 0) { 6299 options = {}; 6300 } 6301 return { 6302 name: "flip", 6303 options, 6304 async fn(state) { 6305 var _middlewareData$arrow, _middlewareData$flip; 6306 const { 6307 placement, 6308 middlewareData, 6309 rects, 6310 initialPlacement, 6311 platform: platform3, 6312 elements 6313 } = state; 6314 const { 6315 mainAxis: checkMainAxis = true, 6316 crossAxis: checkCrossAxis = true, 6317 fallbackPlacements: specifiedFallbackPlacements, 6318 fallbackStrategy = "bestFit", 6319 fallbackAxisSideDirection = "none", 6320 flipAlignment = true, 6321 ...detectOverflowOptions 6322 } = evaluate(options, state); 6323 if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) { 6324 return {}; 6325 } 6326 const side = getSide(placement); 6327 const initialSideAxis = getSideAxis(initialPlacement); 6328 const isBasePlacement = getSide(initialPlacement) === initialPlacement; 6329 const rtl = await (platform3.isRTL == null ? void 0 : platform3.isRTL(elements.floating)); 6330 const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement)); 6331 const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== "none"; 6332 if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) { 6333 fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl)); 6334 } 6335 const placements2 = [initialPlacement, ...fallbackPlacements]; 6336 const overflow = await platform3.detectOverflow(state, detectOverflowOptions); 6337 const overflows = []; 6338 let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || []; 6339 if (checkMainAxis) { 6340 overflows.push(overflow[side]); 6341 } 6342 if (checkCrossAxis) { 6343 const sides2 = getAlignmentSides(placement, rects, rtl); 6344 overflows.push(overflow[sides2[0]], overflow[sides2[1]]); 6345 } 6346 overflowsData = [...overflowsData, { 6347 placement, 6348 overflows 6349 }]; 6350 if (!overflows.every((side2) => side2 <= 0)) { 6351 var _middlewareData$flip2, _overflowsData$filter; 6352 const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1; 6353 const nextPlacement = placements2[nextIndex]; 6354 if (nextPlacement) { 6355 const ignoreCrossAxisOverflow = checkCrossAxis === "alignment" ? initialSideAxis !== getSideAxis(nextPlacement) : false; 6356 if (!ignoreCrossAxisOverflow || // We leave the current main axis only if every placement on that axis 6357 // overflows the main axis. 6358 overflowsData.every((d) => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) { 6359 return { 6360 data: { 6361 index: nextIndex, 6362 overflows: overflowsData 6363 }, 6364 reset: { 6365 placement: nextPlacement 6366 } 6367 }; 6368 } 6369 } 6370 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; 6371 if (!resetPlacement) { 6372 switch (fallbackStrategy) { 6373 case "bestFit": { 6374 var _overflowsData$filter2; 6375 const placement2 = (_overflowsData$filter2 = overflowsData.filter((d) => { 6376 if (hasFallbackAxisSideDirection) { 6377 const currentSideAxis = getSideAxis(d.placement); 6378 return currentSideAxis === initialSideAxis || // Create a bias to the `y` side axis due to horizontal 6379 // reading directions favoring greater width. 6380 currentSideAxis === "y"; 6381 } 6382 return true; 6383 }).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]; 6384 if (placement2) { 6385 resetPlacement = placement2; 6386 } 6387 break; 6388 } 6389 case "initialPlacement": 6390 resetPlacement = initialPlacement; 6391 break; 6392 } 6393 } 6394 if (placement !== resetPlacement) { 6395 return { 6396 reset: { 6397 placement: resetPlacement 6398 } 6399 }; 6400 } 6401 } 6402 return {}; 6403 } 6404 }; 6405 }; 6406 var originSides = /* @__PURE__ */ new Set(["left", "top"]); 6407 async function convertValueToCoords(state, options) { 6408 const { 6409 placement, 6410 platform: platform3, 6411 elements 6412 } = state; 6413 const rtl = await (platform3.isRTL == null ? void 0 : platform3.isRTL(elements.floating)); 6414 const side = getSide(placement); 6415 const alignment = getAlignment(placement); 6416 const isVertical = getSideAxis(placement) === "y"; 6417 const mainAxisMulti = originSides.has(side) ? -1 : 1; 6418 const crossAxisMulti = rtl && isVertical ? -1 : 1; 6419 const rawValue = evaluate(options, state); 6420 let { 6421 mainAxis, 6422 crossAxis, 6423 alignmentAxis 6424 } = typeof rawValue === "number" ? { 6425 mainAxis: rawValue, 6426 crossAxis: 0, 6427 alignmentAxis: null 6428 } : { 6429 mainAxis: rawValue.mainAxis || 0, 6430 crossAxis: rawValue.crossAxis || 0, 6431 alignmentAxis: rawValue.alignmentAxis 6432 }; 6433 if (alignment && typeof alignmentAxis === "number") { 6434 crossAxis = alignment === "end" ? alignmentAxis * -1 : alignmentAxis; 6435 } 6436 return isVertical ? { 6437 x: crossAxis * crossAxisMulti, 6438 y: mainAxis * mainAxisMulti 6439 } : { 6440 x: mainAxis * mainAxisMulti, 6441 y: crossAxis * crossAxisMulti 6442 }; 6443 } 6444 var offset = function(options) { 6445 if (options === void 0) { 6446 options = 0; 6447 } 6448 return { 6449 name: "offset", 6450 options, 6451 async fn(state) { 6452 var _middlewareData$offse, _middlewareData$arrow; 6453 const { 6454 x, 6455 y, 6456 placement, 6457 middlewareData 6458 } = state; 6459 const diffCoords = await convertValueToCoords(state, options); 6460 if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) { 6461 return {}; 6462 } 6463 return { 6464 x: x + diffCoords.x, 6465 y: y + diffCoords.y, 6466 data: { 6467 ...diffCoords, 6468 placement 6469 } 6470 }; 6471 } 6472 }; 6473 }; 6474 var shift = function(options) { 6475 if (options === void 0) { 6476 options = {}; 6477 } 6478 return { 6479 name: "shift", 6480 options, 6481 async fn(state) { 6482 const { 6483 x, 6484 y, 6485 placement, 6486 platform: platform3 6487 } = state; 6488 const { 6489 mainAxis: checkMainAxis = true, 6490 crossAxis: checkCrossAxis = false, 6491 limiter = { 6492 fn: (_ref) => { 6493 let { 6494 x: x2, 6495 y: y2 6496 } = _ref; 6497 return { 6498 x: x2, 6499 y: y2 6500 }; 6501 } 6502 }, 6503 ...detectOverflowOptions 6504 } = evaluate(options, state); 6505 const coords = { 6506 x, 6507 y 6508 }; 6509 const overflow = await platform3.detectOverflow(state, detectOverflowOptions); 6510 const crossAxis = getSideAxis(placement); 6511 const mainAxis = getOppositeAxis(crossAxis); 6512 let mainAxisCoord = coords[mainAxis]; 6513 let crossAxisCoord = coords[crossAxis]; 6514 const clampCoord = (axis, coord) => clamp(coord + overflow[axis === "y" ? "top" : "left"], coord, coord - overflow[axis === "y" ? "bottom" : "right"]); 6515 if (checkMainAxis) { 6516 mainAxisCoord = clampCoord(mainAxis, mainAxisCoord); 6517 } 6518 if (checkCrossAxis) { 6519 crossAxisCoord = clampCoord(crossAxis, crossAxisCoord); 6520 } 6521 const limitedCoords = limiter.fn({ 6522 ...state, 6523 [mainAxis]: mainAxisCoord, 6524 [crossAxis]: crossAxisCoord 6525 }); 6526 return { 6527 ...limitedCoords, 6528 data: { 6529 x: limitedCoords.x - x, 6530 y: limitedCoords.y - y, 6531 enabled: { 6532 [mainAxis]: checkMainAxis, 6533 [crossAxis]: checkCrossAxis 6534 } 6535 } 6536 }; 6537 } 6538 }; 6539 }; 6540 var limitShift = function(options) { 6541 if (options === void 0) { 6542 options = {}; 6543 } 6544 return { 6545 options, 6546 fn(state) { 6547 var _rawOffset$mainAxis, _rawOffset$crossAxis; 6548 const { 6549 x, 6550 y, 6551 placement, 6552 rects, 6553 middlewareData 6554 } = state; 6555 const { 6556 offset: offset4 = 0, 6557 mainAxis: checkMainAxis = true, 6558 crossAxis: checkCrossAxis = true 6559 } = evaluate(options, state); 6560 const coords = { 6561 x, 6562 y 6563 }; 6564 const crossAxis = getSideAxis(placement); 6565 const mainAxis = getOppositeAxis(crossAxis); 6566 let mainAxisCoord = coords[mainAxis]; 6567 let crossAxisCoord = coords[crossAxis]; 6568 const rawOffset = evaluate(offset4, state); 6569 const computedOffset = typeof rawOffset === "number" ? { 6570 mainAxis: rawOffset, 6571 crossAxis: 0 6572 } : { 6573 mainAxis: (_rawOffset$mainAxis = rawOffset.mainAxis) != null ? _rawOffset$mainAxis : 0, 6574 crossAxis: (_rawOffset$crossAxis = rawOffset.crossAxis) != null ? _rawOffset$crossAxis : 0 6575 }; 6576 if (checkMainAxis) { 6577 const len = mainAxis === "y" ? "height" : "width"; 6578 const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis; 6579 const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis; 6580 if (mainAxisCoord < limitMin) { 6581 mainAxisCoord = limitMin; 6582 } else if (mainAxisCoord > limitMax) { 6583 mainAxisCoord = limitMax; 6584 } 6585 } 6586 if (checkCrossAxis) { 6587 var _middlewareData$offse, _middlewareData$offse2; 6588 const len = mainAxis === "y" ? "width" : "height"; 6589 const isOriginSide = originSides.has(getSide(placement)); 6590 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); 6591 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); 6592 if (crossAxisCoord < limitMin) { 6593 crossAxisCoord = limitMin; 6594 } else if (crossAxisCoord > limitMax) { 6595 crossAxisCoord = limitMax; 6596 } 6597 } 6598 return { 6599 [mainAxis]: mainAxisCoord, 6600 [crossAxis]: crossAxisCoord 6601 }; 6602 } 6603 }; 6604 }; 6605 var size = function(options) { 6606 if (options === void 0) { 6607 options = {}; 6608 } 6609 return { 6610 name: "size", 6611 options, 6612 async fn(state) { 6613 const { 6614 placement, 6615 rects, 6616 platform: platform3, 6617 elements 6618 } = state; 6619 const { 6620 apply = () => { 6621 }, 6622 ...detectOverflowOptions 6623 } = evaluate(options, state); 6624 const overflow = await platform3.detectOverflow(state, detectOverflowOptions); 6625 const side = getSide(placement); 6626 const alignment = getAlignment(placement); 6627 const isYAxis = getSideAxis(placement) === "y"; 6628 const { 6629 width, 6630 height 6631 } = rects.floating; 6632 let heightSide; 6633 let widthSide; 6634 if (side === "top" || side === "bottom") { 6635 heightSide = side; 6636 widthSide = alignment === (await (platform3.isRTL == null ? void 0 : platform3.isRTL(elements.floating)) ? "start" : "end") ? "left" : "right"; 6637 } else { 6638 widthSide = side; 6639 heightSide = alignment === "end" ? "top" : "bottom"; 6640 } 6641 const maximumClippingHeight = height - overflow.top - overflow.bottom; 6642 const maximumClippingWidth = width - overflow.left - overflow.right; 6643 const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight); 6644 const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth); 6645 const shiftData = state.middlewareData.shift; 6646 const noShift = !shiftData; 6647 let availableHeight2 = overflowAvailableHeight; 6648 let availableWidth2 = overflowAvailableWidth; 6649 if (shiftData != null && shiftData.enabled.x) { 6650 availableWidth2 = maximumClippingWidth; 6651 } 6652 if (shiftData != null && shiftData.enabled.y) { 6653 availableHeight2 = maximumClippingHeight; 6654 } 6655 if (noShift && !alignment) { 6656 if (isYAxis) { 6657 availableWidth2 = width - 2 * max(overflow.left, overflow.right); 6658 } else { 6659 availableHeight2 = height - 2 * max(overflow.top, overflow.bottom); 6660 } 6661 } 6662 await apply({ 6663 ...state, 6664 availableWidth: availableWidth2, 6665 availableHeight: availableHeight2 6666 }); 6667 const nextDimensions = await platform3.getDimensions(elements.floating); 6668 if (width !== nextDimensions.width || height !== nextDimensions.height) { 6669 return { 6670 reset: { 6671 rects: true 6672 } 6673 }; 6674 } 6675 return {}; 6676 } 6677 }; 6678 }; 6679 6680 // node_modules/.store/@floating-ui/dom@1.8.0-vHXcr4FgWneV0cgwFw-d7A/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs 6681 function getCssDimensions(element) { 6682 const css = getComputedStyle2(element); 6683 let width = parseFloat(css.width) || 0; 6684 let height = parseFloat(css.height) || 0; 6685 const hasOffset = isHTMLElement(element); 6686 const offsetWidth = hasOffset ? element.offsetWidth : width; 6687 const offsetHeight = hasOffset ? element.offsetHeight : height; 6688 const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight; 6689 if (shouldFallback) { 6690 width = offsetWidth; 6691 height = offsetHeight; 6692 } 6693 return { 6694 width, 6695 height, 6696 $: shouldFallback 6697 }; 6698 } 6699 function unwrapElement(element) { 6700 return !isElement(element) ? element.contextElement : element; 6701 } 6702 function getScale(element) { 6703 const domElement = unwrapElement(element); 6704 if (!isHTMLElement(domElement)) { 6705 return createCoords(1); 6706 } 6707 const rect = domElement.getBoundingClientRect(); 6708 const { 6709 width, 6710 height, 6711 $ 6712 } = getCssDimensions(domElement); 6713 let x = ($ ? round(rect.width) : rect.width) / width; 6714 let y = ($ ? round(rect.height) : rect.height) / height; 6715 if (!x || !Number.isFinite(x)) { 6716 x = 1; 6717 } 6718 if (!y || !Number.isFinite(y)) { 6719 y = 1; 6720 } 6721 return { 6722 x, 6723 y 6724 }; 6725 } 6726 var noOffsets = /* @__PURE__ */ createCoords(0); 6727 function getVisualOffsets(element) { 6728 const win = getWindow(element); 6729 if (!isWebKit() || !win.visualViewport) { 6730 return noOffsets; 6731 } 6732 return { 6733 x: win.visualViewport.offsetLeft, 6734 y: win.visualViewport.offsetTop 6735 }; 6736 } 6737 function shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) { 6738 if (isFixed === void 0) { 6739 isFixed = false; 6740 } 6741 return !!floatingOffsetParent && isFixed && floatingOffsetParent === getWindow(element); 6742 } 6743 function getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) { 6744 if (includeScale === void 0) { 6745 includeScale = false; 6746 } 6747 if (isFixedStrategy === void 0) { 6748 isFixedStrategy = false; 6749 } 6750 const clientRect = element.getBoundingClientRect(); 6751 const domElement = unwrapElement(element); 6752 let scale = createCoords(1); 6753 if (includeScale) { 6754 if (offsetParent) { 6755 if (isElement(offsetParent)) { 6756 scale = getScale(offsetParent); 6757 } 6758 } else { 6759 scale = getScale(element); 6760 } 6761 } 6762 const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0); 6763 let x = (clientRect.left + visualOffsets.x) / scale.x; 6764 let y = (clientRect.top + visualOffsets.y) / scale.y; 6765 let width = clientRect.width / scale.x; 6766 let height = clientRect.height / scale.y; 6767 if (domElement && offsetParent) { 6768 const win = getWindow(domElement); 6769 const offsetWin = isElement(offsetParent) ? getWindow(offsetParent) : offsetParent; 6770 let currentWin = win; 6771 let currentIFrame = getFrameElement(currentWin); 6772 while (currentIFrame && offsetWin !== currentWin) { 6773 const iframeScale = getScale(currentIFrame); 6774 const iframeRect = currentIFrame.getBoundingClientRect(); 6775 const css = getComputedStyle2(currentIFrame); 6776 const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x; 6777 const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y; 6778 x *= iframeScale.x; 6779 y *= iframeScale.y; 6780 width *= iframeScale.x; 6781 height *= iframeScale.y; 6782 x += left; 6783 y += top; 6784 currentWin = getWindow(currentIFrame); 6785 currentIFrame = getFrameElement(currentWin); 6786 } 6787 } 6788 return rectToClientRect({ 6789 width, 6790 height, 6791 x, 6792 y 6793 }); 6794 } 6795 function getWindowScrollBarX(element, rect) { 6796 const leftScroll = getNodeScroll(element).scrollLeft; 6797 if (!rect) { 6798 return getBoundingClientRect(getDocumentElement(element)).left + leftScroll; 6799 } 6800 return rect.left + leftScroll; 6801 } 6802 function getHTMLOffset(documentElement, scroll) { 6803 const htmlRect = documentElement.getBoundingClientRect(); 6804 const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect); 6805 const y = htmlRect.top + scroll.scrollTop; 6806 return { 6807 x, 6808 y 6809 }; 6810 } 6811 function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) { 6812 let { 6813 elements, 6814 rect, 6815 offsetParent, 6816 strategy 6817 } = _ref; 6818 const isFixed = strategy === "fixed"; 6819 const documentElement = getDocumentElement(offsetParent); 6820 const topLayer = elements ? isTopLayer(elements.floating) : false; 6821 if (offsetParent === documentElement || topLayer && isFixed) { 6822 return rect; 6823 } 6824 let scroll = { 6825 scrollLeft: 0, 6826 scrollTop: 0 6827 }; 6828 let scale = createCoords(1); 6829 const offsets = createCoords(0); 6830 const isOffsetParentAnElement = isHTMLElement(offsetParent); 6831 if (isOffsetParentAnElement || !isFixed) { 6832 if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) { 6833 scroll = getNodeScroll(offsetParent); 6834 } 6835 if (isOffsetParentAnElement) { 6836 const offsetRect = getBoundingClientRect(offsetParent); 6837 scale = getScale(offsetParent); 6838 offsets.x = offsetRect.x + offsetParent.clientLeft; 6839 offsets.y = offsetRect.y + offsetParent.clientTop; 6840 } 6841 } 6842 const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0); 6843 return { 6844 width: rect.width * scale.x, 6845 height: rect.height * scale.y, 6846 x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x, 6847 y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y 6848 }; 6849 } 6850 function getClientRects(element) { 6851 return element.getClientRects ? Array.from(element.getClientRects()) : []; 6852 } 6853 function getDocumentRect(html) { 6854 const scroll = getNodeScroll(html); 6855 const body = html.ownerDocument.body; 6856 const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth); 6857 const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight); 6858 let x = -scroll.scrollLeft + getWindowScrollBarX(html); 6859 const y = -scroll.scrollTop; 6860 if (getComputedStyle2(body).direction === "rtl") { 6861 x += max(html.clientWidth, body.clientWidth) - width; 6862 } 6863 return { 6864 width, 6865 height, 6866 x, 6867 y 6868 }; 6869 } 6870 var SCROLLBAR_MAX = 25; 6871 function getViewportRect(element, strategy, rootBoundary) { 6872 if (rootBoundary === void 0) { 6873 rootBoundary = "viewport"; 6874 } 6875 const isLayoutViewport = rootBoundary === "layoutViewport"; 6876 const win = getWindow(element); 6877 const html = getDocumentElement(element); 6878 const visualViewport = win.visualViewport; 6879 let width = html.clientWidth; 6880 let height = html.clientHeight; 6881 let x = 0; 6882 let y = 0; 6883 if (visualViewport) { 6884 const layoutRelativeClientCoords = !isWebKit() || strategy === "fixed"; 6885 if (isLayoutViewport) { 6886 if (!layoutRelativeClientCoords) { 6887 x = -visualViewport.offsetLeft; 6888 y = -visualViewport.offsetTop; 6889 } 6890 } else { 6891 width = visualViewport.width; 6892 height = visualViewport.height; 6893 if (layoutRelativeClientCoords) { 6894 x = visualViewport.offsetLeft; 6895 y = visualViewport.offsetTop; 6896 } 6897 } 6898 } 6899 const windowScrollbarX = getWindowScrollBarX(html); 6900 if (windowScrollbarX <= 0) { 6901 const doc = html.ownerDocument; 6902 const body = doc.body; 6903 const bodyStyles = getComputedStyle(body); 6904 const bodyMarginInline = doc.compatMode === "CSS1Compat" ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0; 6905 const reservedWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline); 6906 const gutter = getComputedStyle(html).scrollbarGutter === "stable both-edges" ? reservedWidth / 2 : reservedWidth; 6907 if (gutter <= SCROLLBAR_MAX) { 6908 width -= gutter; 6909 } 6910 } 6911 return { 6912 width, 6913 height, 6914 x, 6915 y 6916 }; 6917 } 6918 function getInnerBoundingClientRect(element, strategy) { 6919 const clientRect = getBoundingClientRect(element, true, strategy === "fixed"); 6920 const top = clientRect.top + element.clientTop; 6921 const left = clientRect.left + element.clientLeft; 6922 const scale = getScale(element); 6923 const width = element.clientWidth * scale.x; 6924 const height = element.clientHeight * scale.y; 6925 const x = left * scale.x; 6926 const y = top * scale.y; 6927 return { 6928 width, 6929 height, 6930 x, 6931 y 6932 }; 6933 } 6934 function getClientRectFromClippingAncestor(element, clippingAncestor, strategy) { 6935 let rect; 6936 if (clippingAncestor === "viewport" || clippingAncestor === "layoutViewport") { 6937 rect = getViewportRect(element, strategy, clippingAncestor); 6938 } else if (clippingAncestor === "document") { 6939 rect = getDocumentRect(getDocumentElement(element)); 6940 } else if (isElement(clippingAncestor)) { 6941 rect = getInnerBoundingClientRect(clippingAncestor, strategy); 6942 } else { 6943 const visualOffsets = getVisualOffsets(element); 6944 rect = { 6945 x: clippingAncestor.x - visualOffsets.x, 6946 y: clippingAncestor.y - visualOffsets.y, 6947 width: clippingAncestor.width, 6948 height: clippingAncestor.height 6949 }; 6950 } 6951 return rectToClientRect(rect); 6952 } 6953 function getClippingElementAncestors(element, cache) { 6954 const cachedResult = cache.get(element); 6955 if (cachedResult) { 6956 return cachedResult; 6957 } 6958 let result = getOverflowAncestors(element, [], false).filter((el) => isElement(el) && getNodeName(el) !== "body"); 6959 let lastKeptComputedStyle = null; 6960 const elementIsFixed = getComputedStyle2(element).position === "fixed"; 6961 let currentNode = elementIsFixed ? getParentNode(element) : element; 6962 while (isElement(currentNode) && !isLastTraversableNode(currentNode)) { 6963 const computedStyle = getComputedStyle2(currentNode); 6964 const currentNodeIsContaining = isContainingBlock(currentNode); 6965 const lastPosition = lastKeptComputedStyle ? lastKeptComputedStyle.position : elementIsFixed ? "fixed" : ""; 6966 const shouldDropCurrentNode = !currentNodeIsContaining && (lastPosition === "fixed" || lastPosition === "absolute" && computedStyle.position === "static"); 6967 if (shouldDropCurrentNode) { 6968 result = result.filter((ancestor) => ancestor !== currentNode); 6969 } else { 6970 lastKeptComputedStyle = computedStyle; 6971 } 6972 currentNode = getParentNode(currentNode); 6973 } 6974 cache.set(element, result); 6975 return result; 6976 } 6977 function getClippingRect(_ref) { 6978 let { 6979 element, 6980 boundary, 6981 rootBoundary, 6982 strategy 6983 } = _ref; 6984 const elementClippingAncestors = boundary === "clippingAncestors" ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary); 6985 const clippingAncestors = [...elementClippingAncestors, rootBoundary]; 6986 const firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy); 6987 let top = firstRect.top; 6988 let right = firstRect.right; 6989 let bottom = firstRect.bottom; 6990 let left = firstRect.left; 6991 for (let i = 1; i < clippingAncestors.length; i++) { 6992 const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i], strategy); 6993 top = max(rect.top, top); 6994 right = min(rect.right, right); 6995 bottom = min(rect.bottom, bottom); 6996 left = max(rect.left, left); 6997 } 6998 return { 6999 width: right - left, 7000 height: bottom - top, 7001 x: left, 7002 y: top 7003 }; 7004 } 7005 function getDimensions(element) { 7006 const { 7007 width, 7008 height 7009 } = getCssDimensions(element); 7010 return { 7011 width, 7012 height 7013 }; 7014 } 7015 function getRectRelativeToOffsetParent(element, offsetParent, strategy) { 7016 const isOffsetParentAnElement = isHTMLElement(offsetParent); 7017 const documentElement = getDocumentElement(offsetParent); 7018 const isFixed = strategy === "fixed"; 7019 const rect = getBoundingClientRect(element, true, isFixed, offsetParent); 7020 let scroll = { 7021 scrollLeft: 0, 7022 scrollTop: 0 7023 }; 7024 const offsets = createCoords(0); 7025 if (isOffsetParentAnElement || !isFixed) { 7026 if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) { 7027 scroll = getNodeScroll(offsetParent); 7028 } 7029 if (isOffsetParentAnElement) { 7030 const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent); 7031 offsets.x = offsetRect.x + offsetParent.clientLeft; 7032 offsets.y = offsetRect.y + offsetParent.clientTop; 7033 } 7034 } 7035 if (!isOffsetParentAnElement && documentElement) { 7036 offsets.x = getWindowScrollBarX(documentElement); 7037 } 7038 const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0); 7039 const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x; 7040 const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y; 7041 return { 7042 x, 7043 y, 7044 width: rect.width, 7045 height: rect.height 7046 }; 7047 } 7048 function isStaticPositioned(element) { 7049 return getComputedStyle2(element).position === "static"; 7050 } 7051 function getTrueOffsetParent(element, polyfill) { 7052 if (!isHTMLElement(element) || getComputedStyle2(element).position === "fixed") { 7053 return null; 7054 } 7055 if (polyfill) { 7056 return polyfill(element); 7057 } 7058 let rawOffsetParent = element.offsetParent; 7059 if (getDocumentElement(element) === rawOffsetParent) { 7060 rawOffsetParent = rawOffsetParent.ownerDocument.body; 7061 } 7062 return rawOffsetParent; 7063 } 7064 function getOffsetParent(element, polyfill) { 7065 const win = getWindow(element); 7066 if (isTopLayer(element)) { 7067 return win; 7068 } 7069 if (!isHTMLElement(element)) { 7070 let svgOffsetParent = getParentNode(element); 7071 while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) { 7072 if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) { 7073 return svgOffsetParent; 7074 } 7075 svgOffsetParent = getParentNode(svgOffsetParent); 7076 } 7077 return win; 7078 } 7079 let offsetParent = getTrueOffsetParent(element, polyfill); 7080 while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) { 7081 offsetParent = getTrueOffsetParent(offsetParent, polyfill); 7082 } 7083 if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) { 7084 return win; 7085 } 7086 return offsetParent || getContainingBlock(element) || win; 7087 } 7088 var getElementRects = async function(data) { 7089 const getOffsetParentFn = this.getOffsetParent || getOffsetParent; 7090 const getDimensionsFn = this.getDimensions; 7091 const floatingDimensions = await getDimensionsFn(data.floating); 7092 return { 7093 reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy), 7094 floating: { 7095 x: 0, 7096 y: 0, 7097 width: floatingDimensions.width, 7098 height: floatingDimensions.height 7099 } 7100 }; 7101 }; 7102 function isRTL(element) { 7103 return getComputedStyle2(element).direction === "rtl"; 7104 } 7105 var platform2 = { 7106 convertOffsetParentRelativeRectToViewportRelativeRect, 7107 getDocumentElement, 7108 getClippingRect, 7109 getOffsetParent, 7110 getElementRects, 7111 getClientRects, 7112 getDimensions, 7113 getScale, 7114 isElement, 7115 isRTL 7116 }; 7117 function rectsAreEqual(a, b) { 7118 return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height; 7119 } 7120 function observeMove(element, onMove, ancestorResize) { 7121 let io = null; 7122 let timeoutId; 7123 const root = getDocumentElement(element); 7124 function cleanup() { 7125 var _io; 7126 clearTimeout(timeoutId); 7127 (_io = io) == null || _io.disconnect(); 7128 io = null; 7129 } 7130 function refresh(skip, threshold) { 7131 if (skip === void 0) { 7132 skip = false; 7133 } 7134 if (threshold === void 0) { 7135 threshold = 1; 7136 } 7137 cleanup(); 7138 const elementRectForRootMargin = element.getBoundingClientRect(); 7139 const { 7140 left, 7141 top, 7142 width, 7143 height 7144 } = elementRectForRootMargin; 7145 if (!skip) { 7146 onMove(); 7147 } 7148 if (!width || !height) { 7149 return; 7150 } 7151 const insetTop = floor(top); 7152 const insetRight = floor(root.clientWidth - (left + width)); 7153 const insetBottom = floor(root.clientHeight - (top + height)); 7154 const insetLeft = floor(left); 7155 const rootMargin = -insetTop + "px " + -insetRight + "px " + -insetBottom + "px " + -insetLeft + "px"; 7156 const options = { 7157 rootMargin, 7158 threshold: max(0, min(1, threshold)) || 1 7159 }; 7160 let isFirstUpdate = true; 7161 function handleObserve(entries) { 7162 const ratio = entries[0].intersectionRatio; 7163 if (!rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) { 7164 return refresh(); 7165 } 7166 if (ratio !== threshold) { 7167 if (!isFirstUpdate) { 7168 return refresh(); 7169 } 7170 if (!ratio) { 7171 timeoutId = setTimeout(() => { 7172 refresh(false, 1e-7); 7173 }, 1e3); 7174 } else { 7175 refresh(false, ratio); 7176 } 7177 } 7178 isFirstUpdate = false; 7179 } 7180 try { 7181 io = new IntersectionObserver(handleObserve, { 7182 ...options, 7183 // Handle <iframe>s 7184 root: root.ownerDocument 7185 }); 7186 } catch (_e) { 7187 io = new IntersectionObserver(handleObserve, options); 7188 } 7189 io.observe(element); 7190 } 7191 const win = getWindow(element); 7192 const handleResize = () => refresh(ancestorResize); 7193 win.addEventListener("resize", handleResize); 7194 refresh(true); 7195 return () => { 7196 win.removeEventListener("resize", handleResize); 7197 cleanup(); 7198 }; 7199 } 7200 function autoUpdate(reference, floating, update2, options) { 7201 if (options === void 0) { 7202 options = {}; 7203 } 7204 const { 7205 ancestorScroll = true, 7206 ancestorResize = true, 7207 elementResize = typeof ResizeObserver === "function", 7208 layoutShift = typeof IntersectionObserver === "function", 7209 animationFrame = false 7210 } = options; 7211 const referenceEl = unwrapElement(reference); 7212 const ancestors = ancestorScroll || ancestorResize ? [...referenceEl ? getOverflowAncestors(referenceEl) : [], ...floating ? getOverflowAncestors(floating) : []] : []; 7213 ancestors.forEach((ancestor) => { 7214 ancestorScroll && ancestor.addEventListener("scroll", update2); 7215 ancestorResize && ancestor.addEventListener("resize", update2); 7216 }); 7217 const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update2, ancestorResize) : null; 7218 let reobserveFrame = -1; 7219 let resizeObserver = null; 7220 if (elementResize) { 7221 resizeObserver = new ResizeObserver((_ref) => { 7222 let [firstEntry] = _ref; 7223 if (firstEntry && firstEntry.target === referenceEl && resizeObserver && floating) { 7224 resizeObserver.unobserve(floating); 7225 cancelAnimationFrame(reobserveFrame); 7226 reobserveFrame = requestAnimationFrame(() => { 7227 var _resizeObserver; 7228 (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating); 7229 }); 7230 } 7231 update2(); 7232 }); 7233 if (referenceEl && !animationFrame) { 7234 resizeObserver.observe(referenceEl); 7235 } 7236 if (floating) { 7237 resizeObserver.observe(floating); 7238 } 7239 } 7240 let frameId; 7241 let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null; 7242 if (animationFrame) { 7243 frameLoop(); 7244 } 7245 function frameLoop() { 7246 const nextRefRect = getBoundingClientRect(reference); 7247 if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) { 7248 update2(); 7249 } 7250 prevRefRect = nextRefRect; 7251 frameId = requestAnimationFrame(frameLoop); 7252 } 7253 update2(); 7254 return () => { 7255 var _resizeObserver2; 7256 ancestors.forEach((ancestor) => { 7257 ancestorScroll && ancestor.removeEventListener("scroll", update2); 7258 ancestorResize && ancestor.removeEventListener("resize", update2); 7259 }); 7260 cleanupIo == null || cleanupIo(); 7261 (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect(); 7262 resizeObserver = null; 7263 if (animationFrame) { 7264 cancelAnimationFrame(frameId); 7265 } 7266 }; 7267 } 7268 var offset2 = offset; 7269 var shift2 = shift; 7270 var flip2 = flip; 7271 var size2 = size; 7272 var limitShift2 = limitShift; 7273 var computePosition2 = (reference, floating, options) => { 7274 const cache = /* @__PURE__ */ new Map(); 7275 const mergedOptions = options != null ? options : {}; 7276 const platformWithCache = { 7277 ...platform2, 7278 ...mergedOptions.platform, 7279 _c: cache 7280 }; 7281 return computePosition(reference, floating, { 7282 ...mergedOptions, 7283 platform: platformWithCache 7284 }); 7285 }; 7286 7287 // node_modules/.store/@floating-ui/react-dom@2.1.9-AxWcAwqlMfOrAFOinFKSVg/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs 7288 var React32 = __toESM(require_react(), 1); 7289 var import_react2 = __toESM(require_react(), 1); 7290 var ReactDOM4 = __toESM(require_react_dom(), 1); 7291 var isClient = typeof document !== "undefined"; 7292 var noop2 = function noop3() { 7293 }; 7294 var index = isClient ? import_react2.useLayoutEffect : noop2; 7295 function deepEqual(a, b) { 7296 if (a === b) { 7297 return true; 7298 } 7299 if (typeof a !== typeof b) { 7300 return false; 7301 } 7302 if (typeof a === "function" && a.toString() === b.toString()) { 7303 return true; 7304 } 7305 let length; 7306 let i; 7307 let keys; 7308 if (a && b && typeof a === "object") { 7309 if (Array.isArray(a)) { 7310 length = a.length; 7311 if (length !== b.length) return false; 7312 for (i = length; i-- !== 0; ) { 7313 if (!deepEqual(a[i], b[i])) { 7314 return false; 7315 } 7316 } 7317 return true; 7318 } 7319 keys = Object.keys(a); 7320 length = keys.length; 7321 if (length !== Object.keys(b).length) { 7322 return false; 7323 } 7324 for (i = length; i-- !== 0; ) { 7325 if (!{}.hasOwnProperty.call(b, keys[i])) { 7326 return false; 7327 } 7328 } 7329 for (i = length; i-- !== 0; ) { 7330 const key = keys[i]; 7331 if (key === "_owner" && a.$$typeof) { 7332 continue; 7333 } 7334 if (!deepEqual(a[key], b[key])) { 7335 return false; 7336 } 7337 } 7338 return true; 7339 } 7340 return a !== a && b !== b; 7341 } 7342 function getDPR(element) { 7343 if (typeof window === "undefined") { 7344 return 1; 7345 } 7346 const win = element.ownerDocument.defaultView || window; 7347 return win.devicePixelRatio || 1; 7348 } 7349 function roundByDPR(element, value) { 7350 const dpr = getDPR(element); 7351 return Math.round(value * dpr) / dpr; 7352 } 7353 function useLatestRef(value) { 7354 const ref = React32.useRef(value); 7355 index(() => { 7356 ref.current = value; 7357 }); 7358 return ref; 7359 } 7360 function useFloating(options) { 7361 if (options === void 0) { 7362 options = {}; 7363 } 7364 const { 7365 placement = "bottom", 7366 strategy = "absolute", 7367 middleware = [], 7368 platform: platform3, 7369 elements: { 7370 reference: externalReference, 7371 floating: externalFloating 7372 } = {}, 7373 transform = true, 7374 whileElementsMounted, 7375 open: open2 7376 } = options; 7377 const [data, setData] = React32.useState({ 7378 x: 0, 7379 y: 0, 7380 strategy, 7381 placement, 7382 middlewareData: {}, 7383 isPositioned: false 7384 }); 7385 const [latestMiddleware, setLatestMiddleware] = React32.useState(middleware); 7386 if (!deepEqual(latestMiddleware, middleware)) { 7387 setLatestMiddleware(middleware); 7388 } 7389 const [_reference, _setReference] = React32.useState(null); 7390 const [_floating, _setFloating] = React32.useState(null); 7391 const setReference = React32.useCallback((node) => { 7392 if (node !== referenceRef.current) { 7393 referenceRef.current = node; 7394 _setReference(node); 7395 } 7396 }, []); 7397 const setFloating = React32.useCallback((node) => { 7398 if (node !== floatingRef.current) { 7399 floatingRef.current = node; 7400 _setFloating(node); 7401 } 7402 }, []); 7403 const referenceEl = externalReference || _reference; 7404 const floatingEl = externalFloating || _floating; 7405 const referenceRef = React32.useRef(null); 7406 const floatingRef = React32.useRef(null); 7407 const dataRef = React32.useRef(data); 7408 const hasWhileElementsMounted = whileElementsMounted != null; 7409 const whileElementsMountedRef = useLatestRef(whileElementsMounted); 7410 const platformRef = useLatestRef(platform3); 7411 const openRef = useLatestRef(open2); 7412 const update2 = React32.useCallback(() => { 7413 if (!referenceRef.current || !floatingRef.current) { 7414 return; 7415 } 7416 const config = { 7417 placement, 7418 strategy, 7419 middleware: latestMiddleware 7420 }; 7421 if (platformRef.current) { 7422 config.platform = platformRef.current; 7423 } 7424 computePosition2(referenceRef.current, floatingRef.current, config).then((data2) => { 7425 const fullData = { 7426 ...data2, 7427 // The floating element's position may be recomputed while it's closed 7428 // but still mounted (such as when transitioning out). To ensure 7429 // `isPositioned` will be `false` initially on the next open, avoid 7430 // setting it to `true` when `open === false` (must be specified). 7431 isPositioned: openRef.current !== false 7432 }; 7433 if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) { 7434 dataRef.current = fullData; 7435 ReactDOM4.flushSync(() => { 7436 setData(fullData); 7437 }); 7438 } 7439 }); 7440 }, [latestMiddleware, placement, strategy, platformRef, openRef]); 7441 index(() => { 7442 if (open2 === false && dataRef.current.isPositioned) { 7443 dataRef.current.isPositioned = false; 7444 setData((data2) => ({ 7445 ...data2, 7446 isPositioned: false 7447 })); 7448 } 7449 }, [open2]); 7450 const isMountedRef = React32.useRef(false); 7451 index(() => { 7452 isMountedRef.current = true; 7453 return () => { 7454 isMountedRef.current = false; 7455 }; 7456 }, []); 7457 index(() => { 7458 if (referenceEl) referenceRef.current = referenceEl; 7459 if (floatingEl) floatingRef.current = floatingEl; 7460 if (referenceEl && floatingEl) { 7461 if (whileElementsMountedRef.current) { 7462 return whileElementsMountedRef.current(referenceEl, floatingEl, update2); 7463 } 7464 update2(); 7465 } 7466 }, [referenceEl, floatingEl, update2, whileElementsMountedRef, hasWhileElementsMounted]); 7467 const refs = React32.useMemo(() => ({ 7468 reference: referenceRef, 7469 floating: floatingRef, 7470 setReference, 7471 setFloating 7472 }), [setReference, setFloating]); 7473 const elements = React32.useMemo(() => ({ 7474 reference: referenceEl, 7475 floating: floatingEl 7476 }), [referenceEl, floatingEl]); 7477 const floatingStyles = React32.useMemo(() => { 7478 const initialStyles = { 7479 position: strategy, 7480 left: 0, 7481 top: 0 7482 }; 7483 if (!elements.floating) { 7484 return initialStyles; 7485 } 7486 const x = roundByDPR(elements.floating, data.x); 7487 const y = roundByDPR(elements.floating, data.y); 7488 if (transform) { 7489 return { 7490 ...initialStyles, 7491 transform: "translate(" + x + "px, " + y + "px)", 7492 ...getDPR(elements.floating) >= 1.5 && { 7493 willChange: "transform" 7494 } 7495 }; 7496 } 7497 return { 7498 position: strategy, 7499 left: x, 7500 top: y 7501 }; 7502 }, [strategy, transform, elements.floating, data.x, data.y]); 7503 return React32.useMemo(() => ({ 7504 ...data, 7505 update: update2, 7506 refs, 7507 elements, 7508 floatingStyles 7509 }), [data, update2, refs, elements, floatingStyles]); 7510 } 7511 var offset3 = (options, deps) => { 7512 const result = offset2(options); 7513 return { 7514 name: result.name, 7515 fn: result.fn, 7516 options: [options, deps] 7517 }; 7518 }; 7519 var shift3 = (options, deps) => { 7520 const result = shift2(options); 7521 return { 7522 name: result.name, 7523 fn: result.fn, 7524 options: [options, deps] 7525 }; 7526 }; 7527 var limitShift3 = (options, deps) => { 7528 const result = limitShift2(options); 7529 return { 7530 fn: result.fn, 7531 options: [options, deps] 7532 }; 7533 }; 7534 var flip3 = (options, deps) => { 7535 const result = flip2(options); 7536 return { 7537 name: result.name, 7538 fn: result.fn, 7539 options: [options, deps] 7540 }; 7541 }; 7542 var size3 = (options, deps) => { 7543 const result = size2(options); 7544 return { 7545 name: result.name, 7546 fn: result.fn, 7547 options: [options, deps] 7548 }; 7549 }; 7550 7551 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/composite.mjs 7552 var ARROW_UP2 = "ArrowUp"; 7553 var ARROW_DOWN2 = "ArrowDown"; 7554 var ARROW_LEFT2 = "ArrowLeft"; 7555 var ARROW_RIGHT2 = "ArrowRight"; 7556 var HOME = "Home"; 7557 var END = "End"; 7558 var COMPOSITE_KEYS = /* @__PURE__ */ new Set([ARROW_UP2, ARROW_DOWN2, ARROW_LEFT2, ARROW_RIGHT2, HOME, END]); 7559 var SHIFT = "Shift"; 7560 var MODIFIER_KEYS = [SHIFT, "Control", "Alt", "Meta"]; 7561 function isInputElement(element) { 7562 return isHTMLElement(element) && element.tagName === "INPUT"; 7563 } 7564 function isNativeInput(element) { 7565 if (isInputElement(element) && element.selectionStart != null) { 7566 return true; 7567 } 7568 if (isHTMLElement(element) && element.tagName === "TEXTAREA") { 7569 return true; 7570 } 7571 return false; 7572 } 7573 function scrollIntoViewIfNeeded(scrollContainer, element, direction, orientation) { 7574 if (!scrollContainer || !element || !element.scrollTo) { 7575 return; 7576 } 7577 let targetX = scrollContainer.scrollLeft; 7578 let targetY = scrollContainer.scrollTop; 7579 const isOverflowingX = scrollContainer.clientWidth < scrollContainer.scrollWidth; 7580 const isOverflowingY = scrollContainer.clientHeight < scrollContainer.scrollHeight; 7581 if (isOverflowingX && orientation !== "vertical") { 7582 const elementOffsetLeft = getOffset(scrollContainer, element, "left"); 7583 const containerStyles = getStyles(scrollContainer); 7584 const elementStyles = getStyles(element); 7585 if (direction === "ltr") { 7586 if (elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight > scrollContainer.scrollLeft + scrollContainer.clientWidth - containerStyles.scrollPaddingRight) { 7587 targetX = elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight - scrollContainer.clientWidth + containerStyles.scrollPaddingRight; 7588 } else if (elementOffsetLeft - elementStyles.scrollMarginLeft < scrollContainer.scrollLeft + containerStyles.scrollPaddingLeft) { 7589 targetX = elementOffsetLeft - elementStyles.scrollMarginLeft - containerStyles.scrollPaddingLeft; 7590 } 7591 } 7592 if (direction === "rtl") { 7593 if (elementOffsetLeft - elementStyles.scrollMarginLeft < scrollContainer.scrollLeft + containerStyles.scrollPaddingLeft) { 7594 targetX = elementOffsetLeft - elementStyles.scrollMarginLeft - containerStyles.scrollPaddingLeft; 7595 } else if (elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight > scrollContainer.scrollLeft + scrollContainer.clientWidth - containerStyles.scrollPaddingRight) { 7596 targetX = elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight - scrollContainer.clientWidth + containerStyles.scrollPaddingRight; 7597 } 7598 } 7599 } 7600 if (isOverflowingY && orientation !== "horizontal") { 7601 const elementOffsetTop = getOffset(scrollContainer, element, "top"); 7602 const containerStyles = getStyles(scrollContainer); 7603 const elementStyles = getStyles(element); 7604 if (elementOffsetTop - elementStyles.scrollMarginTop < scrollContainer.scrollTop + containerStyles.scrollPaddingTop) { 7605 targetY = elementOffsetTop - elementStyles.scrollMarginTop - containerStyles.scrollPaddingTop; 7606 } else if (elementOffsetTop + element.offsetHeight + elementStyles.scrollMarginBottom > scrollContainer.scrollTop + scrollContainer.clientHeight - containerStyles.scrollPaddingBottom) { 7607 targetY = elementOffsetTop + element.offsetHeight + elementStyles.scrollMarginBottom - scrollContainer.clientHeight + containerStyles.scrollPaddingBottom; 7608 } 7609 } 7610 scrollContainer.scrollTo({ 7611 left: targetX, 7612 top: targetY, 7613 behavior: "auto" 7614 }); 7615 } 7616 function getOffset(ancestor, element, side) { 7617 const propName = side === "left" ? "offsetLeft" : "offsetTop"; 7618 let result = 0; 7619 while (element.offsetParent) { 7620 result += element[propName]; 7621 if (element.offsetParent === ancestor) { 7622 break; 7623 } 7624 element = element.offsetParent; 7625 } 7626 return result; 7627 } 7628 function getStyles(element) { 7629 const styles = getComputedStyle(element); 7630 return { 7631 scrollMarginTop: parseFloat(styles.scrollMarginTop) || 0, 7632 scrollMarginRight: parseFloat(styles.scrollMarginRight) || 0, 7633 scrollMarginBottom: parseFloat(styles.scrollMarginBottom) || 0, 7634 scrollMarginLeft: parseFloat(styles.scrollMarginLeft) || 0, 7635 scrollPaddingTop: parseFloat(styles.scrollPaddingTop) || 0, 7636 scrollPaddingRight: parseFloat(styles.scrollPaddingRight) || 0, 7637 scrollPaddingBottom: parseFloat(styles.scrollPaddingBottom) || 0, 7638 scrollPaddingLeft: parseFloat(styles.scrollPaddingLeft) || 0 7639 }; 7640 } 7641 7642 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/inertValue.mjs 7643 function inertValue(value) { 7644 if (isReactVersionAtLeast(19)) { 7645 return value; 7646 } 7647 return value ? "true" : void 0; 7648 } 7649 7650 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/InternalBackdrop.mjs 7651 var React33 = __toESM(require_react(), 1); 7652 var import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1); 7653 var InternalBackdrop = /* @__PURE__ */ React33.forwardRef(function InternalBackdrop2(props, ref) { 7654 const { 7655 cutout, 7656 ...otherProps 7657 } = props; 7658 let clipPath; 7659 if (cutout) { 7660 const rect = cutout.getBoundingClientRect(); 7661 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)`; 7662 } 7663 return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { 7664 ref, 7665 role: "presentation", 7666 "data-base-ui-inert": "", 7667 ...otherProps, 7668 style: { 7669 position: "fixed", 7670 inset: 0, 7671 userSelect: "none", 7672 WebkitUserSelect: "none", 7673 clipPath 7674 } 7675 }); 7676 }); 7677 if (true) InternalBackdrop.displayName = "InternalBackdrop"; 7678 7679 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/useOpenInteractionType.mjs 7680 var React36 = __toESM(require_react(), 1); 7681 7682 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useEnhancedClickHandler.mjs 7683 var React34 = __toESM(require_react(), 1); 7684 function useEnhancedClickHandler(handler) { 7685 const lastClickInteractionTypeRef = React34.useRef(""); 7686 const handlePointerDown = React34.useCallback((event) => { 7687 if (event.defaultPrevented) { 7688 return; 7689 } 7690 lastClickInteractionTypeRef.current = event.pointerType; 7691 handler(event, event.pointerType); 7692 }, [handler]); 7693 const handleClick = React34.useCallback((event) => { 7694 if (event.detail === 0) { 7695 handler(event, "keyboard"); 7696 return; 7697 } 7698 if ("pointerType" in event) { 7699 handler(event, event.pointerType); 7700 } else { 7701 handler(event, lastClickInteractionTypeRef.current); 7702 } 7703 lastClickInteractionTypeRef.current = ""; 7704 }, [handler]); 7705 return { 7706 onClick: handleClick, 7707 onPointerDown: handlePointerDown 7708 }; 7709 } 7710 7711 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useValueChanged.mjs 7712 var React35 = __toESM(require_react(), 1); 7713 function useValueChanged(value, onChange) { 7714 const valueRef = React35.useRef(value); 7715 const onChangeCallback = useStableCallback(onChange); 7716 useIsoLayoutEffect(() => { 7717 if (valueRef.current !== value) { 7718 onChangeCallback(valueRef.current); 7719 } 7720 valueRef.current = value; 7721 }, [value, onChangeCallback]); 7722 } 7723 7724 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/useOpenInteractionType.mjs 7725 function useOpenMethodTriggerProps(open2, setOpenMethod) { 7726 const handleTriggerClick = useStableCallback((_, interactionType) => { 7727 const isOpen = typeof open2 === "function" ? open2() : open2; 7728 if (!isOpen) { 7729 setOpenMethod(interactionType || // On iOS Safari, the hitslop around touch targets means tapping outside an element's 7730 // bounds does not fire `pointerdown` but does fire `mousedown`. The `interactionType` 7731 // will be "" in that case. 7732 (parts_exports.os.ios ? "touch" : "")); 7733 } 7734 }); 7735 const { 7736 onClick, 7737 onPointerDown 7738 } = useEnhancedClickHandler(handleTriggerClick); 7739 return React36.useMemo(() => ({ 7740 onClick, 7741 onPointerDown 7742 }), [onClick, onPointerDown]); 7743 } 7744 function useOpenInteractionType(open2) { 7745 const [openMethod, setOpenMethod] = React36.useState(null); 7746 const triggerProps = useOpenMethodTriggerProps(open2, setOpenMethod); 7747 useValueChanged(open2, (previousOpen) => { 7748 if (previousOpen && !open2) { 7749 setOpenMethod(null); 7750 } 7751 }); 7752 return React36.useMemo(() => ({ 7753 openMethod, 7754 triggerProps 7755 }), [openMethod, triggerProps]); 7756 } 7757 7758 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/useOnFirstRender.mjs 7759 var React37 = __toESM(require_react(), 1); 7760 function useOnFirstRender(fn) { 7761 const ref = React37.useRef(true); 7762 if (ref.current) { 7763 ref.current = false; 7764 fn(); 7765 } 7766 } 7767 7768 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/areArraysEqual.mjs 7769 function areArraysEqual(array1, array2, itemComparer = Object.is) { 7770 const { 7771 length 7772 } = array1; 7773 if (length !== array2.length) { 7774 return false; 7775 } 7776 for (let i = 0; i < length; i += 1) { 7777 if (!itemComparer(array1[i], array2[i])) { 7778 return false; 7779 } 7780 } 7781 return true; 7782 } 7783 7784 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/itemEquality.mjs 7785 var defaultItemEquality = (itemValue, selectedValue) => Object.is(itemValue, selectedValue); 7786 function compareItemEquality(itemValue, selectedValue, comparer) { 7787 if (itemValue == null || selectedValue == null) { 7788 return Object.is(itemValue, selectedValue); 7789 } 7790 return comparer(itemValue, selectedValue); 7791 } 7792 function isSelectedValueDirty(currentValue, initialValue, comparer) { 7793 if (Array.isArray(currentValue) && Array.isArray(initialValue)) { 7794 return !areArraysEqual(currentValue, initialValue, (itemValue, initialItemValue) => compareItemEquality(itemValue, initialItemValue, comparer)); 7795 } 7796 return currentValue !== initialValue; 7797 } 7798 function selectedValueIncludes(selectedValues, itemValue, comparer) { 7799 if (!selectedValues) { 7800 return false; 7801 } 7802 return selectedValues.some((selectedValue) => { 7803 if (selectedValue === void 0) { 7804 return false; 7805 } 7806 return compareItemEquality(itemValue, selectedValue, comparer); 7807 }); 7808 } 7809 function findItemIndex(itemValues, selectedValue, comparer) { 7810 if (!itemValues) { 7811 return -1; 7812 } 7813 return itemValues.findIndex((itemValue) => { 7814 if (itemValue === void 0) { 7815 return false; 7816 } 7817 return compareItemEquality(itemValue, selectedValue, comparer); 7818 }); 7819 } 7820 function createSelectionMatcher(selectedValues, comparer) { 7821 if (comparer !== defaultItemEquality) { 7822 return (itemValue) => selectedValueIncludes(selectedValues, itemValue, comparer); 7823 } 7824 const index3 = new Set(selectedValues); 7825 index3.delete(void 0); 7826 return (itemValue) => index3.has(itemValue) && (itemValue !== 0 || selectedValues.some((v) => Object.is(itemValue, v))); 7827 } 7828 function findSelectionIndex(itemValues, selectedValue, comparer, multiple) { 7829 const index3 = multiple && Array.isArray(selectedValue) ? ( 7830 // Anchor to the first selected item in rendered order so the index does not depend 7831 // on the order in which the values were added to the array. 7832 itemValues.findIndex(createSelectionMatcher(selectedValue, comparer)) 7833 ) : findItemIndex(itemValues, selectedValue, comparer); 7834 return index3 === -1 ? null : index3; 7835 } 7836 function resolveSelectedIndex(index3, itemValue, registry, selectedValues, comparer, currentIndex) { 7837 if (selectedValueIncludes(selectedValues, itemValue, comparer)) { 7838 return currentIndex != null && index3 > currentIndex && selectedValueIncludes(selectedValues, registry[currentIndex], comparer) ? currentIndex : index3; 7839 } 7840 return index3 === currentIndex ? findSelectionIndex(registry, selectedValues, comparer, true) : currentIndex; 7841 } 7842 function removeItem(selectedValues, itemValue, comparer) { 7843 return selectedValues.filter((selectedValue) => !compareItemEquality(itemValue, selectedValue, comparer)); 7844 } 7845 7846 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/resolveValueLabel.mjs 7847 var React38 = __toESM(require_react(), 1); 7848 7849 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/serializeValue.mjs 7850 function serializeValue(value) { 7851 if (value == null) { 7852 return ""; 7853 } 7854 if (typeof value === "string") { 7855 return value; 7856 } 7857 try { 7858 return JSON.stringify(value); 7859 } catch { 7860 return String(value); 7861 } 7862 } 7863 7864 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/resolveValueLabel.mjs 7865 var import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1); 7866 function isGroup(item) { 7867 return typeof item === "object" && item != null && Array.isArray(item.items); 7868 } 7869 function isGroupedItems(items) { 7870 return isGroup(items?.[0]); 7871 } 7872 function flattenLeafItems(items) { 7873 return isGroupedItems(items) ? items.flatMap((group) => group.items) : items; 7874 } 7875 function hasNullItemLabel(items) { 7876 if (!Array.isArray(items)) { 7877 return items != null && "null" in items; 7878 } 7879 const arrayItems = items; 7880 if (isGroupedItems(arrayItems)) { 7881 for (const group of arrayItems) { 7882 for (const item of group.items) { 7883 if (item && item.value == null && item.label != null) { 7884 return true; 7885 } 7886 } 7887 } 7888 return false; 7889 } 7890 for (const item of arrayItems) { 7891 if (item && item.value == null && item.label != null) { 7892 return true; 7893 } 7894 } 7895 return false; 7896 } 7897 function stringifyAsLabel(item, itemToStringLabel) { 7898 if (itemToStringLabel && item != null) { 7899 return itemToStringLabel(item) ?? ""; 7900 } 7901 if (item && typeof item === "object") { 7902 if ("label" in item && item.label != null) { 7903 return String(item.label); 7904 } 7905 if ("value" in item) { 7906 return String(item.value); 7907 } 7908 } 7909 return serializeValue(item); 7910 } 7911 function stringifyAsValue(item, itemToStringValue) { 7912 if (itemToStringValue && item != null) { 7913 return itemToStringValue(item) ?? ""; 7914 } 7915 if (item && typeof item === "object" && "value" in item && "label" in item) { 7916 return serializeValue(item.value); 7917 } 7918 return serializeValue(item); 7919 } 7920 function resolveSelectedLabel(value, items, itemToStringLabel) { 7921 function fallback() { 7922 return stringifyAsLabel(value, itemToStringLabel); 7923 } 7924 if (itemToStringLabel && value != null) { 7925 return itemToStringLabel(value); 7926 } 7927 if (value && typeof value === "object" && "label" in value && value.label != null) { 7928 return value.label; 7929 } 7930 if (items && !Array.isArray(items)) { 7931 const label = Object.hasOwn(items, value) ? items[value] : void 0; 7932 return label ?? fallback(); 7933 } 7934 if (Array.isArray(items)) { 7935 const arrayItems = items; 7936 const flatItems = flattenLeafItems(arrayItems); 7937 if (value == null || typeof value !== "object") { 7938 const match = flatItems.find((item) => item.value === value); 7939 if (match && match.label != null) { 7940 return match.label; 7941 } 7942 return fallback(); 7943 } 7944 if ("value" in value) { 7945 const match = flatItems.find((item) => item && item.value === value.value); 7946 if (match && match.label != null) { 7947 return match.label; 7948 } 7949 } 7950 } 7951 return fallback(); 7952 } 7953 function resolveMultipleLabels(values, items, itemToStringLabel) { 7954 return values.reduce((acc, value, index3) => { 7955 if (index3 > 0) { 7956 acc.push(", "); 7957 } 7958 acc.push(/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(React38.Fragment, { 7959 children: resolveSelectedLabel(value, items, itemToStringLabel) 7960 }, index3)); 7961 return acc; 7962 }, []); 7963 } 7964 7965 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/field-root-context/FieldRootContext.mjs 7966 var React39 = __toESM(require_react(), 1); 7967 7968 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/control/FieldControlDataAttributes.mjs 7969 var valid = "data-valid"; 7970 var invalid = "data-invalid"; 7971 7972 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/field-constants/constants.mjs 7973 var DEFAULT_VALIDITY_STATE = { 7974 badInput: false, 7975 customError: false, 7976 patternMismatch: false, 7977 rangeOverflow: false, 7978 rangeUnderflow: false, 7979 stepMismatch: false, 7980 tooLong: false, 7981 tooShort: false, 7982 typeMismatch: false, 7983 valid: null, 7984 valueMissing: false 7985 }; 7986 var DEFAULT_FIELD_STATE_ATTRIBUTES = { 7987 valid: null, 7988 touched: false, 7989 dirty: false, 7990 filled: false, 7991 focused: false 7992 }; 7993 var DEFAULT_FIELD_ROOT_STATE = { 7994 disabled: false, 7995 ...DEFAULT_FIELD_STATE_ATTRIBUTES 7996 }; 7997 var fieldValidityMapping = { 7998 valid(value) { 7999 if (value === null) { 8000 return null; 8001 } 8002 if (value) { 8003 return { 8004 [valid]: "" 8005 }; 8006 } 8007 return { 8008 [invalid]: "" 8009 }; 8010 } 8011 }; 8012 8013 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/field-root-context/FieldRootContext.mjs 8014 var DEFAULT_FIELD_ROOT_CONTEXT = { 8015 invalid: void 0, 8016 name: void 0, 8017 validityData: { 8018 state: DEFAULT_VALIDITY_STATE, 8019 errors: [], 8020 error: "", 8021 value: "", 8022 initialValue: null 8023 }, 8024 setValidityData: NOOP, 8025 disabled: void 0, 8026 setTouched: NOOP, 8027 setDirty: NOOP, 8028 setFilled: NOOP, 8029 setFocused: NOOP, 8030 focusOwnerRef: { 8031 current: void 0 8032 }, 8033 validationMode: "onSubmit", 8034 shouldValidateOnChange: () => false, 8035 state: DEFAULT_FIELD_ROOT_STATE, 8036 registerFieldControl: NOOP, 8037 validation: { 8038 getValidationProps: (_disabled, props = EMPTY_OBJECT) => props, 8039 inputRef: { 8040 current: null 8041 }, 8042 registeredInputs: /* @__PURE__ */ new Map(), 8043 registerInput: NOOP, 8044 getInputControl: () => null, 8045 commit: async () => { 8046 }, 8047 change: NOOP 8048 } 8049 }; 8050 var FieldRootContext = /* @__PURE__ */ React39.createContext(DEFAULT_FIELD_ROOT_CONTEXT); 8051 if (true) FieldRootContext.displayName = "FieldRootContext"; 8052 function useFieldRootContext(optional = true) { 8053 const context = React39.useContext(FieldRootContext); 8054 if (context.setValidityData === NOOP && !optional) { 8055 throw new Error(true ? "Base UI: FieldRootContext is missing. Field parts must be placed within <Field.Root>." : formatErrorMessage_default(28)); 8056 } 8057 return context; 8058 } 8059 8060 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/field-register-control/useRegisterFieldControl.mjs 8061 function useRegisterFieldControl(controlRef, id, value, getFormValueOverride, enabled = true, name16) { 8062 const { 8063 registerFieldControl 8064 } = useFieldRootContext(); 8065 const sourceRef = useRefWithInit(() => /* @__PURE__ */ Symbol()); 8066 useIsoLayoutEffect(() => { 8067 const source = sourceRef.current; 8068 if (!enabled) { 8069 registerFieldControl(source, void 0); 8070 return; 8071 } 8072 const registration = { 8073 controlRef, 8074 getValue: getFormValueOverride, 8075 id, 8076 name: name16, 8077 value 8078 }; 8079 registerFieldControl(source, registration); 8080 }, [controlRef, enabled, getFormValueOverride, id, name16, registerFieldControl, sourceRef, value]); 8081 useIsoLayoutEffect(() => { 8082 const source = sourceRef.current; 8083 return () => { 8084 registerFieldControl(source, void 0); 8085 }; 8086 }, [registerFieldControl, sourceRef]); 8087 } 8088 8089 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/form-context/FormContext.mjs 8090 var React40 = __toESM(require_react(), 1); 8091 var FormContext = /* @__PURE__ */ React40.createContext({ 8092 elementRef: { 8093 current: null 8094 }, 8095 formRef: { 8096 current: { 8097 fields: /* @__PURE__ */ new Map() 8098 } 8099 }, 8100 errors: {}, 8101 clearErrors: NOOP, 8102 validationMode: "onSubmit", 8103 submitCountRef: { 8104 current: 0 8105 } 8106 }); 8107 if (true) FormContext.displayName = "FormContext"; 8108 function useFormContext() { 8109 return React40.useContext(FormContext); 8110 } 8111 8112 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/labelable-provider/useLabelableId.mjs 8113 var React42 = __toESM(require_react(), 1); 8114 8115 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/labelable-provider/LabelableContext.mjs 8116 var React41 = __toESM(require_react(), 1); 8117 var LabelableContext = /* @__PURE__ */ React41.createContext({ 8118 controlId: void 0, 8119 registerControlId: NOOP, 8120 resetControlId: NOOP, 8121 labelId: void 0, 8122 setLabelId: NOOP, 8123 messageIds: [], 8124 setMessageIds: NOOP, 8125 getDescriptionProps: (externalProps) => externalProps 8126 }); 8127 if (true) LabelableContext.displayName = "LabelableContext"; 8128 function useLabelableContext() { 8129 return React41.useContext(LabelableContext); 8130 } 8131 8132 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/labelable-provider/useLabelableId.mjs 8133 function useLabelableId(params = {}) { 8134 const { 8135 id, 8136 enabled = true 8137 } = params; 8138 const { 8139 controlId, 8140 registerControlId, 8141 resetControlId 8142 } = useLabelableContext(); 8143 const defaultId = useBaseUiId(); 8144 const controlSourceRef = useRefWithInit(() => /* @__PURE__ */ Symbol()); 8145 const hasRegisteredRef = React42.useRef(false); 8146 const hadExplicitIdRef = React42.useRef(false); 8147 const unregisterControlId = useStableCallback(() => { 8148 if (!hasRegisteredRef.current || registerControlId === NOOP) { 8149 return; 8150 } 8151 hasRegisteredRef.current = false; 8152 registerControlId(controlSourceRef.current, void 0); 8153 }); 8154 useIsoLayoutEffect(() => { 8155 if (!enabled || registerControlId === NOOP) { 8156 unregisterControlId(); 8157 return void 0; 8158 } 8159 let nextId; 8160 if (id !== void 0) { 8161 hadExplicitIdRef.current = true; 8162 nextId = id; 8163 } else if (hadExplicitIdRef.current) { 8164 nextId = defaultId; 8165 } else { 8166 resetControlId(); 8167 return void 0; 8168 } 8169 if (nextId === void 0) { 8170 unregisterControlId(); 8171 return void 0; 8172 } 8173 hasRegisteredRef.current = true; 8174 registerControlId(controlSourceRef.current, nextId); 8175 return void 0; 8176 }, [id, enabled, registerControlId, resetControlId, defaultId, controlSourceRef, unregisterControlId]); 8177 useIsoLayoutEffect(() => { 8178 return unregisterControlId; 8179 }, [unregisterControlId]); 8180 return (enabled ? controlId : void 0) ?? id ?? defaultId; 8181 } 8182 8183 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/direction-context/DirectionContext.mjs 8184 var React43 = __toESM(require_react(), 1); 8185 var DirectionContext = /* @__PURE__ */ React43.createContext(void 0); 8186 if (true) DirectionContext.displayName = "DirectionContext"; 8187 function useDirection() { 8188 const context = React43.useContext(DirectionContext); 8189 return context?.direction ?? "ltr"; 8190 } 8191 8192 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/field-root-context/useSetFieldFocused.mjs 8193 function useSetFieldFocused(disabled2, focusTargetRef, onFocusedChange) { 8194 const { 8195 setFocused, 8196 focusOwnerRef 8197 } = useFieldRootContext(); 8198 const setFieldFocused = useStableCallback((focused) => { 8199 if (focused ? !disabled2 : focusOwnerRef.current === setFieldFocused) { 8200 focusOwnerRef.current = focused && setFieldFocused; 8201 onFocusedChange?.(focused); 8202 setFocused(focused); 8203 } 8204 }); 8205 useIsoLayoutEffect(() => { 8206 const el = focusTargetRef.current; 8207 const root = el?.getRootNode(); 8208 if (root?.activeElement === el) { 8209 setFieldFocused(true); 8210 } 8211 return () => setFieldFocused(false); 8212 }, [disabled2, focusTargetRef, setFieldFocused]); 8213 return setFieldFocused; 8214 } 8215 8216 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/getPseudoElementBounds.mjs 8217 var BOUNDARY_OFFSET = 5; 8218 function isMouseWithinBounds(event, element) { 8219 const bounds = getPseudoElementBounds(element); 8220 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; 8221 } 8222 function getPseudoElementBounds(element) { 8223 const elementRect = element.getBoundingClientRect(); 8224 const win = getWindow(element); 8225 if (parts_exports.env.jsdom) { 8226 return elementRect; 8227 } 8228 const beforeStyles = win.getComputedStyle(element, "::before"); 8229 const afterStyles = win.getComputedStyle(element, "::after"); 8230 const hasPseudoElements = beforeStyles.content !== "none" || afterStyles.content !== "none"; 8231 if (!hasPseudoElements) { 8232 return elementRect; 8233 } 8234 const beforeWidth = parseFloat(beforeStyles.width) || 0; 8235 const beforeHeight = parseFloat(beforeStyles.height) || 0; 8236 const afterWidth = parseFloat(afterStyles.width) || 0; 8237 const afterHeight = parseFloat(afterStyles.height) || 0; 8238 const totalWidth = Math.max(elementRect.width, beforeWidth, afterWidth); 8239 const totalHeight = Math.max(elementRect.height, beforeHeight, afterHeight); 8240 const widthDiff = totalWidth - elementRect.width; 8241 const heightDiff = totalHeight - elementRect.height; 8242 return { 8243 left: elementRect.left - widthDiff / 2, 8244 right: elementRect.right + widthDiff / 2, 8245 top: elementRect.top - heightDiff / 2, 8246 bottom: elementRect.bottom + heightDiff / 2 8247 }; 8248 } 8249 8250 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/resolveAriaLabelledBy.mjs 8251 function getDefaultLabelId(id) { 8252 return id == null ? void 0 : `$id}-label`; 8253 } 8254 function resolveAriaLabelledBy(fieldLabelId, localLabelId) { 8255 return fieldLabelId ?? localLabelId; 8256 } 8257 8258 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useAnchorPositioning.mjs 8259 var React45 = __toESM(require_react(), 1); 8260 8261 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/hooks/useFloating.mjs 8262 var React44 = __toESM(require_react(), 1); 8263 function useBaseUIFloating(options) { 8264 const { 8265 nodeId, 8266 externalTree, 8267 rootContext: store 8268 } = options; 8269 const referenceElement = store.useState("referenceElement"); 8270 const floatingElement = store.useState("floatingElement"); 8271 const domReferenceElement = store.useState("domReferenceElement"); 8272 const open2 = store.useState("open"); 8273 const floatingId = store.useState("floatingId"); 8274 const [positionReference, setPositionReferenceRaw] = React44.useState(null); 8275 const domReferenceRef = React44.useRef(null); 8276 const tree = useFloatingTree(externalTree); 8277 const storeElements = React44.useMemo(() => ({ 8278 reference: referenceElement, 8279 floating: floatingElement, 8280 domReference: domReferenceElement 8281 }), [referenceElement, floatingElement, domReferenceElement]); 8282 const position = useFloating({ 8283 ...options, 8284 elements: { 8285 ...storeElements, 8286 ...positionReference && { 8287 reference: positionReference 8288 } 8289 } 8290 }); 8291 const setPositionReference = React44.useCallback((node) => { 8292 const computedPositionReference = isElement(node) ? { 8293 getBoundingClientRect: () => node.getBoundingClientRect(), 8294 getClientRects: () => node.getClientRects(), 8295 contextElement: node 8296 } : node; 8297 setPositionReferenceRaw(computedPositionReference); 8298 position.refs.setReference(computedPositionReference); 8299 }, [position.refs]); 8300 const refs = React44.useMemo(() => ({ 8301 ...position.refs, 8302 setPositionReference, 8303 domReference: domReferenceRef 8304 }), [position.refs, setPositionReference]); 8305 const elements = React44.useMemo(() => ({ 8306 ...position.elements, 8307 domReference: domReferenceElement 8308 }), [position.elements, domReferenceElement]); 8309 const context = React44.useMemo(() => ({ 8310 ...position, 8311 dataRef: store.context.dataRef, 8312 open: open2, 8313 onOpenChange: store.setOpen, 8314 events: store.context.events, 8315 floatingId, 8316 refs, 8317 elements, 8318 nodeId, 8319 rootStore: store 8320 }), [position, refs, elements, nodeId, store, open2, floatingId]); 8321 useIsoLayoutEffect(() => { 8322 if (domReferenceElement) { 8323 domReferenceRef.current = domReferenceElement; 8324 } 8325 }, [domReferenceElement]); 8326 useIsoLayoutEffect(() => { 8327 store.context.dataRef.current.floatingContext = context; 8328 const node = tree?.nodesRef.current.find((n) => n.id === nodeId); 8329 if (node) { 8330 node.context = context; 8331 } 8332 }); 8333 return React44.useMemo(() => ({ 8334 ...position, 8335 context, 8336 refs, 8337 elements, 8338 rootStore: store 8339 }), [position, refs, elements, context, store]); 8340 } 8341 8342 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/floating-ui-react/middleware/arrow.mjs 8343 var baseArrow = (options) => ({ 8344 name: "arrow", 8345 options, 8346 async fn(state) { 8347 const { 8348 x, 8349 y, 8350 placement, 8351 rects, 8352 platform: platform3, 8353 elements, 8354 middlewareData 8355 } = state; 8356 const { 8357 element, 8358 padding = 0 8359 } = evaluate(options, state) || {}; 8360 if (element == null) { 8361 return {}; 8362 } 8363 const paddingObject = getPaddingObject(padding); 8364 const coords = { 8365 x, 8366 y 8367 }; 8368 const axis = getAlignmentAxis(placement); 8369 const length = getAxisLength(axis); 8370 const arrowDimensions = await platform3.getDimensions(element); 8371 const isYAxis = axis === "y"; 8372 const minProp = isYAxis ? "top" : "left"; 8373 const maxProp = isYAxis ? "bottom" : "right"; 8374 const clientProp = isYAxis ? "clientHeight" : "clientWidth"; 8375 const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length]; 8376 const startDiff = coords[axis] - rects.reference[axis]; 8377 const clientSize = elements.floating[clientProp] || rects.floating[length]; 8378 const centerToReference = endDiff / 2 - startDiff / 2; 8379 const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1; 8380 const minPadding = Math.min(paddingObject[minProp], largestPossiblePadding); 8381 const maxPadding = Math.min(paddingObject[maxProp], largestPossiblePadding); 8382 const min2 = minPadding; 8383 const max2 = clientSize - arrowDimensions[length] - maxPadding; 8384 const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference; 8385 const offset4 = clamp(min2, center, max2); 8386 const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset4 && rects.reference[length] / 2 - (center < min2 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0; 8387 const alignmentOffset = shouldAddOffset ? center < min2 ? center - min2 : center - max2 : 0; 8388 return { 8389 [axis]: coords[axis] + alignmentOffset, 8390 data: { 8391 [axis]: offset4, 8392 centerOffset: center - offset4 - alignmentOffset, 8393 ...shouldAddOffset && { 8394 alignmentOffset 8395 } 8396 }, 8397 reset: shouldAddOffset 8398 }; 8399 } 8400 }); 8401 var arrow4 = (options, deps) => { 8402 const { 8403 name: name16, 8404 fn 8405 } = baseArrow(options); 8406 return { 8407 name: name16, 8408 fn, 8409 options: [options, deps] 8410 }; 8411 }; 8412 8413 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/hideMiddleware.mjs 8414 var hide4 = { 8415 name: "hide", 8416 async fn(state) { 8417 const { 8418 width, 8419 height, 8420 x, 8421 y 8422 } = state.rects.reference; 8423 const anchorHidden2 = width === 0 && height === 0 && x === 0 && y === 0; 8424 const overflow = await state.platform.detectOverflow(state, { 8425 elementContext: "reference" 8426 }); 8427 const referenceHidden = overflow.top - height >= 0 || overflow.right - width >= 0 || overflow.bottom - height >= 0 || overflow.left - width >= 0; 8428 return { 8429 data: { 8430 referenceHidden: referenceHidden || anchorHidden2 8431 } 8432 }; 8433 } 8434 }; 8435 8436 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/adaptiveOriginConstants.mjs 8437 var DEFAULT_SIDES = { 8438 sideX: "left", 8439 sideY: "top" 8440 }; 8441 8442 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/CommonPositionerCssVars.mjs 8443 var availableWidth = "--available-width"; 8444 var availableHeight = "--available-height"; 8445 var anchorWidth = "--anchor-width"; 8446 var anchorHeight = "--anchor-height"; 8447 var transformOrigin = "--transform-origin"; 8448 8449 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/useAnchorPositioning.mjs 8450 var AVAILABLE_WIDTH_VAR = availableWidth; 8451 var AVAILABLE_HEIGHT_VAR = availableHeight; 8452 function getLogicalSide(sideParam, renderedSide, isRtl) { 8453 const isLogicalSideParam = sideParam === "inline-start" || sideParam === "inline-end"; 8454 const logicalRight = isRtl ? "inline-start" : "inline-end"; 8455 const logicalLeft = isRtl ? "inline-end" : "inline-start"; 8456 return { 8457 top: "top", 8458 right: isLogicalSideParam ? logicalRight : "right", 8459 bottom: "bottom", 8460 left: isLogicalSideParam ? logicalLeft : "left" 8461 }[renderedSide]; 8462 } 8463 function getOffsetData(state, sideParam, isRtl) { 8464 const { 8465 rects, 8466 placement 8467 } = state; 8468 const data = { 8469 side: getLogicalSide(sideParam, getSide(placement), isRtl), 8470 align: getAlignment(placement) || "center", 8471 anchor: { 8472 width: rects.reference.width, 8473 height: rects.reference.height 8474 }, 8475 positioner: { 8476 width: rects.floating.width, 8477 height: rects.floating.height 8478 } 8479 }; 8480 return data; 8481 } 8482 function useAnchorPositioning(params) { 8483 return useAnchorPositioningWithHook(params, useBaseUIFloating); 8484 } 8485 function useAnchorPositioningWithHook(params, useFloatingHook) { 8486 const { 8487 // Public parameters 8488 anchor, 8489 positionMethod = "absolute", 8490 side: sideParam = "bottom", 8491 sideOffset = 0, 8492 align = "center", 8493 alignOffset = 0, 8494 collisionBoundary, 8495 collisionPadding: collisionPaddingParam = 5, 8496 sticky = false, 8497 arrowPadding = 5, 8498 disableAnchorTracking = false, 8499 inline: inlineMiddleware, 8500 // Private parameters 8501 keepMounted = false, 8502 floatingRootContext, 8503 mounted, 8504 collisionAvoidance, 8505 shift: shift4, 8506 nodeId, 8507 adaptiveOrigin, 8508 lazyFlip = false, 8509 externalTree 8510 } = params; 8511 const collisionAvoidanceSide = collisionAvoidance.side || "flip"; 8512 const collisionAvoidanceAlign = collisionAvoidance.align || "flip"; 8513 const collisionAvoidanceFallbackAxisSide = collisionAvoidance.fallbackAxisSide || "end"; 8514 const shiftCrossAxis = shift4?.crossAxis ?? false; 8515 const shiftRootBoundary = shift4?.rootBoundary; 8516 const anchorFn = typeof anchor === "function" ? anchor : void 0; 8517 const anchorFnCallback = useStableCallback(anchorFn); 8518 const anchorDep = anchorFn ? anchorFnCallback : anchor; 8519 const anchorValueRef = useValueAsRef(anchor); 8520 const mountedRef = useValueAsRef(mounted); 8521 const direction = useDirection(); 8522 const isRtl = direction === "rtl"; 8523 const [mountPlacement, setMountPlacement] = React45.useState(null); 8524 if (!mounted && mountPlacement !== null) { 8525 setMountPlacement(null); 8526 } 8527 const lockAlign = lazyFlip === "placement"; 8528 const mountSide = mountPlacement ? getSide(mountPlacement) : null; 8529 const mountAlign = mountPlacement && lockAlign ? getAlignment(mountPlacement) || "center" : null; 8530 const side = mountSide || { 8531 top: "top", 8532 right: "right", 8533 bottom: "bottom", 8534 left: "left", 8535 "inline-end": isRtl ? "left" : "right", 8536 "inline-start": isRtl ? "right" : "left" 8537 }[sideParam]; 8538 const placementAlign = mountAlign || align; 8539 const placement = placementAlign === "center" ? side : `$side}-$placementAlign}`; 8540 let collisionPadding = collisionPaddingParam; 8541 if (typeof collisionPadding === "number") { 8542 collisionPadding = { 8543 top: collisionPadding, 8544 right: collisionPadding, 8545 bottom: collisionPadding, 8546 left: collisionPadding 8547 }; 8548 } else if (collisionPadding) { 8549 collisionPadding = { 8550 top: collisionPadding.top || 0, 8551 right: collisionPadding.right || 0, 8552 bottom: collisionPadding.bottom || 0, 8553 left: collisionPadding.left || 0 8554 }; 8555 } 8556 const bias = 1; 8557 const biasTop = sideParam === "bottom" ? bias : 0; 8558 const biasBottom = sideParam === "top" ? bias : 0; 8559 const biasLeft = sideParam === "right" ? bias : 0; 8560 const biasRight = sideParam === "left" ? bias : 0; 8561 const commonCollisionProps = { 8562 boundary: collisionBoundary === "clipping-ancestors" ? "clippingAncestors" : collisionBoundary, 8563 padding: collisionPadding 8564 }; 8565 const arrowRef = React45.useRef(null); 8566 const sideOffsetRef = useValueAsRef(sideOffset); 8567 const alignOffsetRef = useValueAsRef(alignOffset); 8568 const sideOffsetDep = typeof sideOffset !== "function" ? sideOffset : 0; 8569 const alignOffsetDep = typeof alignOffset !== "function" ? alignOffset : 0; 8570 const middleware = []; 8571 if (inlineMiddleware) { 8572 middleware.push(inlineMiddleware); 8573 } 8574 middleware.push(offset3((state) => { 8575 const data = getOffsetData(state, sideParam, isRtl); 8576 const sideAxis = typeof sideOffsetRef.current === "function" ? sideOffsetRef.current(data) : sideOffsetRef.current; 8577 const alignAxis = typeof alignOffsetRef.current === "function" ? alignOffsetRef.current(data) : alignOffsetRef.current; 8578 return { 8579 mainAxis: sideAxis, 8580 crossAxis: alignAxis, 8581 alignmentAxis: alignAxis 8582 }; 8583 }, [sideOffsetDep, alignOffsetDep, isRtl, sideParam])); 8584 const shiftDisabled = collisionAvoidanceAlign === "none" && collisionAvoidanceSide !== "shift"; 8585 const crossAxisShiftEnabled = !shiftDisabled && (sticky || shiftCrossAxis || collisionAvoidanceSide === "shift"); 8586 const flipMiddleware = collisionAvoidanceSide === "none" ? null : flip3({ 8587 ...commonCollisionProps, 8588 // Ensure the popup flips if it's been limited by its --available-height and it resizes. 8589 // Since the size() padding is smaller than the flip() padding, flip() will take precedence. 8590 padding: { 8591 top: collisionPadding.top + bias + biasTop, 8592 right: collisionPadding.right + bias + biasRight, 8593 bottom: collisionPadding.bottom + bias + biasBottom, 8594 left: collisionPadding.left + bias + biasLeft 8595 }, 8596 mainAxis: !shiftCrossAxis && collisionAvoidanceSide === "flip", 8597 crossAxis: collisionAvoidanceAlign === "flip" ? "alignment" : false, 8598 fallbackAxisSideDirection: collisionAvoidanceFallbackAxisSide 8599 }); 8600 const shiftMiddleware = shiftDisabled ? null : shift3({ 8601 ...commonCollisionProps, 8602 // Use the Layout Viewport to avoid shifting around when pinch-zooming. 8603 rootBoundary: shiftRootBoundary, 8604 mainAxis: collisionAvoidanceAlign !== "none", 8605 crossAxis: crossAxisShiftEnabled, 8606 limiter: sticky || shiftCrossAxis ? void 0 : limitShift3((limitData) => { 8607 if (!arrowRef.current) { 8608 return {}; 8609 } 8610 const { 8611 width, 8612 height 8613 } = arrowRef.current.getBoundingClientRect(); 8614 const sideAxis = getSideAxis(getSide(limitData.placement)); 8615 const arrowSize = sideAxis === "y" ? width : height; 8616 const offsetAmount = sideAxis === "y" ? collisionPadding.left + collisionPadding.right : collisionPadding.top + collisionPadding.bottom; 8617 return { 8618 offset: arrowSize / 2 + offsetAmount / 2 8619 }; 8620 }) 8621 }, [commonCollisionProps, sticky, shiftCrossAxis, shiftRootBoundary, collisionPadding, collisionAvoidanceAlign]); 8622 if (collisionAvoidanceSide === "shift" || collisionAvoidanceAlign === "shift" || placementAlign === "center") { 8623 middleware.push(shiftMiddleware, flipMiddleware); 8624 } else { 8625 middleware.push(flipMiddleware, shiftMiddleware); 8626 } 8627 middleware.push(size3({ 8628 ...commonCollisionProps, 8629 apply({ 8630 elements: { 8631 floating 8632 }, 8633 availableWidth: availableWidth2, 8634 availableHeight: availableHeight2, 8635 rects 8636 }) { 8637 if (!mountedRef.current) { 8638 return; 8639 } 8640 const floatingStyle = floating.style; 8641 floatingStyle.setProperty(AVAILABLE_WIDTH_VAR, `$availableWidth2}px`); 8642 floatingStyle.setProperty(AVAILABLE_HEIGHT_VAR, `$availableHeight2}px`); 8643 const dpr = getWindow(floating).devicePixelRatio || 1; 8644 const { 8645 x: x2, 8646 y: y2, 8647 width, 8648 height 8649 } = rects.reference; 8650 const anchorWidth2 = (Math.round((x2 + width) * dpr) - Math.round(x2 * dpr)) / dpr; 8651 const anchorHeight2 = (Math.round((y2 + height) * dpr) - Math.round(y2 * dpr)) / dpr; 8652 floatingStyle.setProperty(anchorWidth, `$anchorWidth2}px`); 8653 floatingStyle.setProperty(anchorHeight, `$anchorHeight2}px`); 8654 } 8655 }), arrow4((state) => ({ 8656 // `transform-origin` calculations rely on an element existing. If the arrow hasn't been set, 8657 // we'll create a fake element. 8658 element: arrowRef.current || ownerDocument(state.elements.floating).createElement("div"), 8659 // No padding for the fake arrow: it would displace aligned popups on narrow anchors. 8660 padding: arrowRef.current ? arrowPadding : 0 8661 }), [arrowPadding]), { 8662 name: "transformOrigin", 8663 fn(state) { 8664 const { 8665 elements: { 8666 floating 8667 }, 8668 middlewareData: middlewareData2, 8669 placement: renderedPlacement2, 8670 platform: platform3, 8671 rects, 8672 y: y2 8673 } = state; 8674 const renderedSide2 = getSide(renderedPlacement2); 8675 const renderedAlign2 = getAlignment(renderedPlacement2); 8676 const isVertical = getSideAxis(renderedSide2) === "y"; 8677 const arrowEl = arrowRef.current; 8678 const sideOffsetValue = typeof sideOffset === "function" ? sideOffset(getOffsetData(state, sideParam, isRtl)) : sideOffset; 8679 let crossOrigin; 8680 if (!arrowEl && renderedAlign2 && Math.abs(isVertical ? middlewareData2.shift?.x || 0 : middlewareData2.shift?.y || 0) <= 1) { 8681 crossOrigin = renderedAlign2 === "start" === (isVertical && platform3.isRTL?.(floating) === true) ? "100%" : "0%"; 8682 } else { 8683 const arrowOffset = isVertical ? middlewareData2.arrow?.x || 0 : middlewareData2.arrow?.y || 0; 8684 const arrowSize = isVertical ? arrowEl?.clientWidth || 0 : arrowEl?.clientHeight || 0; 8685 crossOrigin = `$arrowOffset + arrowSize / 2}px`; 8686 } 8687 let sideOrigin = renderedSide2 === "top" || renderedSide2 === "left" ? `calc(100% + $sideOffsetValue}px)` : `${-sideOffsetValue}px`; 8688 if (crossAxisShiftEnabled && isVertical && Math.abs(middlewareData2.shift?.y || 0) > sideOffsetValue) { 8689 sideOrigin = `$rects.reference.y + rects.reference.height / 2 - y2}px`; 8690 } 8691 floating.style.setProperty(transformOrigin, isVertical ? `$crossOrigin} $sideOrigin}` : `$sideOrigin} $crossOrigin}`); 8692 return {}; 8693 } 8694 }, hide4, adaptiveOrigin); 8695 useIsoLayoutEffect(() => { 8696 if (!mounted && floatingRootContext) { 8697 floatingRootContext.update({ 8698 referenceElement: null, 8699 floatingElement: null, 8700 domReferenceElement: null, 8701 positionReference: null 8702 }); 8703 } 8704 }, [mounted, floatingRootContext]); 8705 const autoUpdateOptions = React45.useMemo(() => ({ 8706 ancestorScroll: !disableAnchorTracking, 8707 elementResize: !disableAnchorTracking && typeof ResizeObserver !== "undefined", 8708 layoutShift: !disableAnchorTracking && typeof IntersectionObserver !== "undefined" 8709 }), [disableAnchorTracking]); 8710 const { 8711 refs, 8712 elements, 8713 x, 8714 y, 8715 middlewareData, 8716 update: update2, 8717 placement: renderedPlacement, 8718 context, 8719 isPositioned, 8720 floatingStyles: originalFloatingStyles 8721 } = useFloatingHook({ 8722 rootContext: floatingRootContext, 8723 open: keepMounted ? mounted : void 0, 8724 placement, 8725 middleware, 8726 strategy: positionMethod, 8727 whileElementsMounted: keepMounted ? void 0 : (...args) => autoUpdate(...args, autoUpdateOptions), 8728 nodeId, 8729 externalTree 8730 }); 8731 const { 8732 sideX, 8733 sideY 8734 } = middlewareData.adaptiveOrigin || DEFAULT_SIDES; 8735 const resolvedPosition = isPositioned ? positionMethod : "fixed"; 8736 const floatingStyles = React45.useMemo(() => { 8737 let base; 8738 if (!isPositioned) { 8739 base = { 8740 position: resolvedPosition, 8741 top: 0, 8742 left: 0 8743 }; 8744 } else if (adaptiveOrigin) { 8745 base = { 8746 position: resolvedPosition, 8747 [sideX]: x, 8748 [sideY]: y 8749 }; 8750 } else { 8751 base = { 8752 ...originalFloatingStyles, 8753 position: resolvedPosition 8754 }; 8755 } 8756 base[AVAILABLE_WIDTH_VAR] = "100vw"; 8757 base[AVAILABLE_HEIGHT_VAR] = "100vh"; 8758 if (!isPositioned) { 8759 base.opacity = 0; 8760 } 8761 return base; 8762 }, [adaptiveOrigin, resolvedPosition, sideX, x, sideY, y, originalFloatingStyles, isPositioned]); 8763 const registeredPositionReferenceRef = React45.useRef(null); 8764 useIsoLayoutEffect(() => { 8765 if (!mounted) { 8766 return; 8767 } 8768 const anchorValue = anchorValueRef.current; 8769 const resolvedAnchor = typeof anchorValue === "function" ? anchorValue() : anchorValue; 8770 const unwrappedElement = (isRef(resolvedAnchor) ? resolvedAnchor.current : resolvedAnchor) || null; 8771 const finalAnchor = unwrappedElement || null; 8772 if (finalAnchor !== registeredPositionReferenceRef.current) { 8773 refs.setPositionReference(finalAnchor); 8774 registeredPositionReferenceRef.current = finalAnchor; 8775 } 8776 }, [mounted, refs, anchorDep, anchorValueRef]); 8777 React45.useEffect(() => { 8778 if (!mounted) { 8779 return; 8780 } 8781 const anchorValue = anchorValueRef.current; 8782 if (typeof anchorValue === "function") { 8783 return; 8784 } 8785 if (isRef(anchorValue) && anchorValue.current !== registeredPositionReferenceRef.current) { 8786 refs.setPositionReference(anchorValue.current); 8787 registeredPositionReferenceRef.current = anchorValue.current; 8788 } 8789 }, [mounted, refs, anchorDep, anchorValueRef]); 8790 React45.useEffect(() => { 8791 if (keepMounted && mounted && elements.reference && elements.floating) { 8792 return autoUpdate(elements.reference, elements.floating, update2, autoUpdateOptions); 8793 } 8794 return void 0; 8795 }, [keepMounted, mounted, elements, update2, autoUpdateOptions]); 8796 const renderedSide = getSide(renderedPlacement); 8797 const logicalRenderedSide = getLogicalSide(sideParam, renderedSide, isRtl); 8798 const renderedAlign = getAlignment(renderedPlacement) || "center"; 8799 const anchorHidden2 = Boolean(middlewareData.hide?.referenceHidden); 8800 useIsoLayoutEffect(() => { 8801 if (lazyFlip && mounted && isPositioned && (renderedSide !== side || lockAlign && renderedAlign !== placementAlign)) { 8802 setMountPlacement(renderedPlacement); 8803 } 8804 }, [lazyFlip, lockAlign, mounted, isPositioned, renderedPlacement, renderedSide, renderedAlign, side, placementAlign]); 8805 const arrowStyles = React45.useMemo(() => ({ 8806 position: "absolute", 8807 top: middlewareData.arrow?.y, 8808 left: middlewareData.arrow?.x 8809 }), [middlewareData.arrow]); 8810 const arrowUncentered = middlewareData.arrow?.centerOffset !== 0; 8811 return React45.useMemo(() => ({ 8812 positionerStyles: floatingStyles, 8813 arrowStyles, 8814 arrowRef, 8815 arrowUncentered, 8816 side: logicalRenderedSide, 8817 align: renderedAlign, 8818 physicalSide: renderedSide, 8819 anchorHidden: anchorHidden2, 8820 refs, 8821 context, 8822 isPositioned, 8823 update: update2 8824 }), [floatingStyles, arrowStyles, arrowRef, arrowUncentered, logicalRenderedSide, renderedAlign, renderedSide, anchorHidden2, refs, context, isPositioned, update2]); 8825 } 8826 function isRef(param) { 8827 return param != null && "current" in param; 8828 } 8829 8830 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/getDisabledMountTransitionStyles.mjs 8831 function getDisabledMountTransitionStyles(transitionStatus) { 8832 return transitionStatus === "starting" ? DISABLED_TRANSITIONS_STYLE : EMPTY_OBJECT; 8833 } 8834 8835 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/usePositioner.mjs 8836 function usePositioner(componentProps, state, { 8837 styles, 8838 transitionStatus, 8839 props, 8840 refs, 8841 hidden, 8842 inert = false 8843 }) { 8844 const style = { 8845 ...styles 8846 }; 8847 if (inert) { 8848 style.pointerEvents = "none"; 8849 } 8850 return useRenderElement("div", componentProps, { 8851 state, 8852 ref: refs, 8853 props: [{ 8854 role: "presentation", 8855 hidden, 8856 style 8857 }, getDisabledMountTransitionStyles(transitionStatus), props], 8858 stateAttributesMapping: popupStateMapping 8859 }); 8860 } 8861 8862 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/useAnchoredPopupScrollLock.mjs 8863 var React46 = __toESM(require_react(), 1); 8864 var VIEWPORT_WIDTH_TOLERANCE_PX = 20; 8865 function useAnchoredPopupScrollLock(enabled, touchOpen, positionerElement, referenceElement) { 8866 const [touchOpenShouldLockScroll, setTouchOpenShouldLockScroll] = React46.useState(false); 8867 useIsoLayoutEffect(() => { 8868 if (!enabled || !touchOpen || positionerElement == null) { 8869 setTouchOpenShouldLockScroll(false); 8870 return; 8871 } 8872 const viewportWidth = ownerDocument(positionerElement).documentElement.clientWidth; 8873 const popupWidth = positionerElement.offsetWidth; 8874 setTouchOpenShouldLockScroll(viewportWidth > 0 && popupWidth > 0 && popupWidth >= viewportWidth - VIEWPORT_WIDTH_TOLERANCE_PX); 8875 }, [enabled, touchOpen, positionerElement]); 8876 useScrollLock(enabled && (!touchOpen || touchOpenShouldLockScroll), referenceElement); 8877 } 8878 8879 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/listbox-separator/ListboxSeparator.mjs 8880 var React47 = __toESM(require_react(), 1); 8881 var ListboxSeparator = /* @__PURE__ */ React47.forwardRef(function ListboxSeparator2(componentProps, forwardedRef) { 8882 const { 8883 className, 8884 render, 8885 orientation = "horizontal", 8886 style, 8887 ...elementProps 8888 } = componentProps; 8889 const state = { 8890 orientation 8891 }; 8892 return useRenderElement("div", componentProps, { 8893 state, 8894 ref: forwardedRef, 8895 props: [{ 8896 role: "presentation" 8897 }, elementProps] 8898 }); 8899 }); 8900 if (true) ListboxSeparator.displayName = "ListboxSeparator"; 8901 8902 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/item/FieldItemContext.mjs 8903 var React48 = __toESM(require_react(), 1); 8904 var FieldItemContext = /* @__PURE__ */ React48.createContext({ 8905 disabled: false 8906 }); 8907 if (true) FieldItemContext.displayName = "FieldItemContext"; 8908 function useFieldItemContext() { 8909 const context = React48.useContext(FieldItemContext); 8910 return context; 8911 } 8912 8913 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/root/useFieldValidation.mjs 8914 var React49 = __toESM(require_react(), 1); 8915 8916 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/utils/getCombinedFieldValidityData.mjs 8917 function getCombinedFieldValidityData(validityData, invalid2) { 8918 return { 8919 ...validityData, 8920 state: { 8921 ...validityData.state, 8922 valid: !invalid2 && validityData.state.valid 8923 } 8924 }; 8925 } 8926 8927 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/root/useFieldValidation.mjs 8928 var validityKeys = Object.keys(DEFAULT_VALIDITY_STATE); 8929 function isEligibleInput(input, formElement) { 8930 if (input.matches(":disabled")) { 8931 return false; 8932 } 8933 if (!formElement || input.form === formElement) { 8934 return true; 8935 } 8936 return input.form === null && !input.hasAttribute("form"); 8937 } 8938 function findRepresentativeInput(inputs, formElement) { 8939 let fallback = null; 8940 for (const input of inputs.keys()) { 8941 if (!isEligibleInput(input, formElement)) { 8942 continue; 8943 } 8944 if (!input.validity.valid) { 8945 return input; 8946 } 8947 fallback ??= input; 8948 } 8949 return fallback; 8950 } 8951 function makeState(customError) { 8952 return { 8953 ...DEFAULT_VALIDITY_STATE, 8954 valid: !customError, 8955 customError 8956 }; 8957 } 8958 function getNativeErrors(element) { 8959 return element && element.validationMessage ? [element.validationMessage] : []; 8960 } 8961 function useFieldValidation(params) { 8962 const { 8963 elementRef, 8964 formRef 8965 } = useFormContext(); 8966 const { 8967 setValidityData, 8968 validate, 8969 validityData, 8970 validationDebounceTime, 8971 invalid: invalid2, 8972 markedDirtyRef, 8973 state, 8974 shouldValidateOnChange, 8975 validationMode, 8976 registeredFieldIdRef 8977 } = params; 8978 const { 8979 controlId, 8980 getDescriptionProps 8981 } = useLabelableContext(); 8982 const timeout = useTimeout(); 8983 const inputRef = React49.useRef(null); 8984 const registeredInputs = useRefWithInit(() => /* @__PURE__ */ new Map()).current; 8985 const validationCommitIdRef = React49.useRef(0); 8986 const customValidityRef = React49.useRef(null); 8987 const registerInput = React49.useCallback((element, registration) => { 8988 registeredInputs.set(element, registration); 8989 return () => { 8990 registeredInputs.delete(element); 8991 }; 8992 }, [registeredInputs]); 8993 const getInputControl = useStableCallback(() => { 8994 const element = findRepresentativeInput(registeredInputs, elementRef.current); 8995 return element && registeredInputs.get(element)?.controlRef.current || null; 8996 }); 8997 const commit = useStableCallback(async (value, revalidate = false) => { 8998 validationCommitIdRef.current += 1; 8999 const validationCommitId = validationCommitIdRef.current; 9000 function updateRegisteredFieldValidity(nextValidityData, externalInvalid = invalid2) { 9001 const fieldId = registeredFieldIdRef.current ?? controlId; 9002 if (fieldId == null) { 9003 return; 9004 } 9005 const currentFieldData = formRef.current.fields.get(fieldId); 9006 if (!currentFieldData) { 9007 return; 9008 } 9009 const validityDataWithFormErrors = getCombinedFieldValidityData(nextValidityData, externalInvalid); 9010 formRef.current.fields.set(fieldId, { 9011 ...currentFieldData, 9012 validityData: validityDataWithFormErrors 9013 }); 9014 } 9015 function makeValidityData(validityState, errorMessages) { 9016 const errors = validityState.valid === false ? errorMessages : []; 9017 return { 9018 value, 9019 state: validityState, 9020 error: errors[0] ?? "", 9021 errors, 9022 initialValue: validityData.initialValue 9023 }; 9024 } 9025 function setCustomValidity(element2, message) { 9026 const displaced = element2.validity.customError ? element2.validationMessage : ""; 9027 const ownedMessage = message.replace(/\r\n?/g, "\n"); 9028 element2.setCustomValidity(ownedMessage); 9029 customValidityRef.current = [element2, ownedMessage, displaced]; 9030 } 9031 function clearCustomValidity() { 9032 const record = customValidityRef.current; 9033 customValidityRef.current = null; 9034 if (record && (!record[0].willValidate || record[0].validationMessage === record[1])) { 9035 record[0].setCustomValidity(record[2]); 9036 } 9037 } 9038 function publish(validityState, errorMessages, externalInvalid) { 9039 const nextValidityData = makeValidityData(validityState, errorMessages); 9040 updateRegisteredFieldValidity(nextValidityData, externalInvalid); 9041 setValidityData(nextValidityData); 9042 } 9043 function getState(el) { 9044 const computedState = validityKeys.reduce((acc, key) => { 9045 acc[key] = el.validity[key]; 9046 return acc; 9047 }, {}); 9048 let hasOnlyValueMissingError = false; 9049 for (const key of validityKeys) { 9050 if (key === "valid") { 9051 continue; 9052 } 9053 if (key === "valueMissing" && computedState[key]) { 9054 hasOnlyValueMissingError = true; 9055 } else if (computedState[key]) { 9056 return computedState; 9057 } 9058 } 9059 if (hasOnlyValueMissingError && !markedDirtyRef.current) { 9060 computedState.valid = true; 9061 computedState.valueMissing = false; 9062 } 9063 return computedState; 9064 } 9065 function resolveRepresentativeInput() { 9066 return registeredInputs.size > 0 ? findRepresentativeInput(registeredInputs, elementRef.current) : inputRef.current; 9067 } 9068 let element = resolveRepresentativeInput(); 9069 function refreshState() { 9070 element = resolveRepresentativeInput(); 9071 return element?.willValidate ? getState(element) : makeState(false); 9072 } 9073 if (revalidate) { 9074 if (state.valid !== false || !element) { 9075 return; 9076 } 9077 if (!element.validity.valueMissing) { 9078 clearCustomValidity(); 9079 const currentElement = resolveRepresentativeInput(); 9080 const foreign = currentElement?.validity.customError ? getNativeErrors(currentElement) : []; 9081 publish(makeState(foreign.length > 0), foreign, false); 9082 return; 9083 } 9084 for (const key of validityKeys) { 9085 if (key !== "valid" && key !== "valueMissing" && key !== "customError" && element.validity[key]) { 9086 return; 9087 } 9088 } 9089 } 9090 timeout.clear(); 9091 clearCustomValidity(); 9092 let nextState = refreshState(); 9093 let validationErrors = getNativeErrors(element); 9094 const isValidatingOnChange = shouldValidateOnChange(); 9095 if (validationErrors.length === 0 || isValidatingOnChange) { 9096 const formValues = Array.from(formRef.current.fields.values()).reduce((acc, field) => { 9097 if (field.name) { 9098 acc[field.name] = field.getValue(); 9099 } 9100 return acc; 9101 }, {}); 9102 const resultOrPromise = validate(value, formValues); 9103 let result; 9104 if (typeof resultOrPromise === "object" && resultOrPromise !== null && "then" in resultOrPromise) { 9105 if (nextState.valid === false) { 9106 publish(nextState, validationErrors); 9107 } else if (validationMode === "onSubmit" || !validityData.state.customError) { 9108 nextState.valid = null; 9109 publish(nextState, validationErrors); 9110 } 9111 result = await resultOrPromise; 9112 if (validationCommitId !== validationCommitIdRef.current) { 9113 return; 9114 } 9115 nextState = refreshState(); 9116 } else { 9117 result = resultOrPromise; 9118 } 9119 validationErrors = result ? [].concat(result).filter(Boolean) : []; 9120 if (validationErrors.length > 0) { 9121 nextState.valid = false; 9122 nextState.customError = true; 9123 if (element?.willValidate) { 9124 setCustomValidity(element, validationErrors.join("\n")); 9125 } 9126 } else { 9127 validationErrors = getNativeErrors(element); 9128 } 9129 } 9130 publish(nextState, validationErrors); 9131 }); 9132 const change = useStableCallback((value, cancelPending = false) => { 9133 timeout.clear(); 9134 validationCommitIdRef.current += 1; 9135 if (cancelPending) { 9136 return; 9137 } 9138 const validateOnChange = shouldValidateOnChange(); 9139 if (validateOnChange && value !== "" && validationDebounceTime) { 9140 timeout.start(validationDebounceTime, () => { 9141 commit(value); 9142 }); 9143 } else { 9144 commit(value, !validateOnChange); 9145 } 9146 }); 9147 const getValidationProps = React49.useCallback((disabled2, externalProps = {}) => mergeProps(getDescriptionProps(externalProps), state.valid === false && !state.disabled && !disabled2 ? { 9148 "aria-invalid": true 9149 } : EMPTY_OBJECT), [getDescriptionProps, state.disabled, state.valid]); 9150 return React49.useMemo(() => ({ 9151 getValidationProps, 9152 inputRef, 9153 registeredInputs, 9154 registerInput, 9155 getInputControl, 9156 commit, 9157 change 9158 }), [getValidationProps, registeredInputs, registerInput, getInputControl, commit, change]); 9159 } 9160 9161 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/useRegisteredLabelId.mjs 9162 function useRegisteredLabelId(idProp, setLabelId) { 9163 const id = useBaseUiId(idProp); 9164 useIsoLayoutEffect(() => { 9165 setLabelId(id); 9166 return () => { 9167 setLabelId((currentId) => currentId === id ? void 0 : currentId); 9168 }; 9169 }, [id, setLabelId]); 9170 return id; 9171 } 9172 9173 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/labelable-provider/useLabel.mjs 9174 function useLabel(params = {}) { 9175 const { 9176 id: idProp, 9177 fallbackControlId, 9178 native = false, 9179 setLabelId: setLabelIdProp, 9180 focusControl: focusControlProp 9181 } = params; 9182 const { 9183 controlId: contextControlId, 9184 setLabelId: setContextLabelId 9185 } = useLabelableContext(); 9186 const syncLabelId = useStableCallback((nextLabelId) => { 9187 setContextLabelId(nextLabelId); 9188 setLabelIdProp?.(nextLabelId); 9189 }); 9190 const id = useRegisteredLabelId(idProp, syncLabelId); 9191 const resolvedControlId = contextControlId ?? fallbackControlId; 9192 function focusControl(event) { 9193 if (focusControlProp) { 9194 focusControlProp(event, resolvedControlId); 9195 return; 9196 } 9197 if (!resolvedControlId) { 9198 return; 9199 } 9200 const controlElement = getControlById(event.currentTarget, resolvedControlId); 9201 if (isHTMLElement(controlElement)) { 9202 focusElementWithVisible(controlElement); 9203 } 9204 } 9205 function handleInteraction(event) { 9206 const target = getTarget(event.nativeEvent); 9207 if (closest(target, "button,input,select,textarea")) { 9208 return; 9209 } 9210 if (!event.defaultPrevented && event.detail > 1) { 9211 event.preventDefault(); 9212 } 9213 if (native) { 9214 return; 9215 } 9216 focusControl(event); 9217 } 9218 return native ? { 9219 id, 9220 htmlFor: resolvedControlId, 9221 onMouseDown: handleInteraction 9222 } : { 9223 id, 9224 onClick: handleInteraction, 9225 onPointerDown(event) { 9226 event.preventDefault(); 9227 } 9228 }; 9229 } 9230 function getControlById(label, id) { 9231 let root = label.getRootNode(); 9232 while (isShadowRoot(root)) { 9233 const element = root.getElementById(id); 9234 if (element) { 9235 return element; 9236 } 9237 root = root.host.getRootNode(); 9238 } 9239 return ownerDocument(label).getElementById(id); 9240 } 9241 function focusElementWithVisible(element) { 9242 element.focus({ 9243 // Available from Chrome 144+ (January 2026). 9244 // Safari and Firefox already support it. 9245 focusVisible: true 9246 }); 9247 } 9248 9249 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/ItemIndicator.mjs 9250 var React50 = __toESM(require_react(), 1); 9251 var ItemIndicator = /* @__PURE__ */ React50.memo(/* @__PURE__ */ React50.forwardRef(function ItemIndicator2(componentProps, forwardedRef) { 9252 const { 9253 render, 9254 className, 9255 style, 9256 keepMounted, 9257 selected, 9258 ...elementProps 9259 } = componentProps; 9260 const indicatorRef = React50.useRef(null); 9261 const { 9262 transitionStatus, 9263 setMounted 9264 } = useTransitionStatus(selected); 9265 const state = { 9266 selected, 9267 transitionStatus 9268 }; 9269 const element = useRenderElement("span", componentProps, { 9270 ref: [forwardedRef, indicatorRef], 9271 state, 9272 props: [{ 9273 "aria-hidden": true, 9274 children: "\u2714\uFE0F" 9275 }, elementProps], 9276 stateAttributesMapping: transitionStatusMapping 9277 }); 9278 useOpenChangeComplete({ 9279 batch: true, 9280 enabled: !selected, 9281 open: selected, 9282 ref: indicatorRef, 9283 onComplete() { 9284 if (!selected) { 9285 setMounted(false); 9286 } 9287 } 9288 }); 9289 return element; 9290 })); 9291 if (true) ItemIndicator.displayName = "ItemIndicator"; 9292 9293 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/toolbar/root/ToolbarRootContext.mjs 9294 var React51 = __toESM(require_react(), 1); 9295 var ToolbarRootContext = /* @__PURE__ */ React51.createContext(void 0); 9296 if (true) ToolbarRootContext.displayName = "ToolbarRootContext"; 9297 function useToolbarRootContext(optional) { 9298 const context = React51.useContext(ToolbarRootContext); 9299 if (context === void 0 && !optional) { 9300 throw new Error(true ? "Base UI: ToolbarRootContext is missing. Toolbar parts must be placed within <Toolbar.Root>." : formatErrorMessage_default(69)); 9301 } 9302 return context; 9303 } 9304 9305 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/item/useCompositeItem.mjs 9306 var React52 = __toESM(require_react(), 1); 9307 function useCompositeItem(params = {}) { 9308 const { 9309 highlightItemOnHover, 9310 highlightedIndex, 9311 onHighlightedIndexChange 9312 } = useCompositeRootContext(); 9313 const { 9314 ref, 9315 index: index3 9316 } = useCompositeListItem(params); 9317 const isHighlighted = highlightedIndex === index3; 9318 const itemRef = React52.useRef(null); 9319 const mergedRef = useMergedRefs(ref, itemRef); 9320 const compositeProps = { 9321 tabIndex: isHighlighted ? 0 : -1, 9322 onFocus() { 9323 onHighlightedIndexChange(index3); 9324 }, 9325 onMouseMove() { 9326 const item = itemRef.current; 9327 if (!highlightItemOnHover || !item) { 9328 return; 9329 } 9330 const disabled2 = item.hasAttribute("disabled") || item.ariaDisabled === "true"; 9331 if (!isHighlighted && !disabled2) { 9332 item.focus(); 9333 } 9334 } 9335 }; 9336 return { 9337 compositeProps, 9338 compositeRef: mergedRef, 9339 index: index3 9340 }; 9341 } 9342 9343 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/usePreviousValue.mjs 9344 var React53 = __toESM(require_react(), 1); 9345 function usePreviousValue(value) { 9346 const [state, setState] = React53.useState({ 9347 current: value, 9348 previous: null 9349 }); 9350 if (!Object.is(value, state.current)) { 9351 setState({ 9352 current: value, 9353 previous: state.current 9354 }); 9355 } 9356 return state.previous; 9357 } 9358 9359 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/getCssDimensions.mjs 9360 function getCssDimensions2(element) { 9361 const css = getComputedStyle2(element); 9362 let width = parseFloat(css.width) || 0; 9363 let height = parseFloat(css.height) || 0; 9364 const hasOffset = isHTMLElement(element); 9365 const offsetWidth = hasOffset ? element.offsetWidth : width; 9366 const offsetHeight = hasOffset ? element.offsetHeight : height; 9367 const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight; 9368 if (shouldFallback) { 9369 width = offsetWidth; 9370 height = offsetHeight; 9371 } 9372 return { 9373 width, 9374 height 9375 }; 9376 } 9377 9378 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/direction-provider/DirectionProvider.mjs 9379 var React54 = __toESM(require_react(), 1); 9380 var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1); 9381 var DirectionProvider = function DirectionProvider2(props) { 9382 const { 9383 direction = "ltr" 9384 } = props; 9385 const contextValue = React54.useMemo(() => ({ 9386 direction 9387 }), [direction]); 9388 return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(DirectionContext.Provider, { 9389 value: contextValue, 9390 children: props.children 9391 }); 9392 }; 9393 if (true) DirectionProvider.displayName = "DirectionProvider"; 9394 9395 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/isElementDisabled.mjs 9396 function isElementDisabled(element) { 9397 return element == null || element.hasAttribute("disabled") || element.getAttribute("aria-disabled") === "true"; 9398 } 9399 9400 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/csp-context/CSPContext.mjs 9401 var React55 = __toESM(require_react(), 1); 9402 var CSPContext = /* @__PURE__ */ React55.createContext(void 0); 9403 if (true) CSPContext.displayName = "CSPContext"; 9404 var DEFAULT_CSP_CONTEXT_VALUE = { 9405 disableStyleElements: false 9406 }; 9407 function useCSPContext() { 9408 return React55.useContext(CSPContext) ?? DEFAULT_CSP_CONTEXT_VALUE; 9409 } 9410 9411 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/clamp.mjs 9412 function clamp2(val, min2 = Number.MIN_SAFE_INTEGER, max2 = Number.MAX_SAFE_INTEGER) { 9413 return Math.max(min2, Math.min(val, max2)); 9414 } 9415 9416 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/getElementTransform.mjs 9417 function getElementTransform(element, computedStyle) { 9418 const transform = (computedStyle ?? getWindow(element).getComputedStyle(element)).transform; 9419 let translateX = 0; 9420 let translateY = 0; 9421 let scale = 1; 9422 if (transform && transform !== "none") { 9423 const matrix = transform.match(/matrix(?:3d)?\(([^)]+)\)/); 9424 if (matrix) { 9425 const values = matrix[1].split(", ").map(parseFloat); 9426 if (values.length === 6) { 9427 translateX = values[4]; 9428 translateY = values[5]; 9429 scale = Math.sqrt(values[0] * values[0] + values[1] * values[1]); 9430 } else if (values.length === 16) { 9431 translateX = values[12]; 9432 translateY = values[13]; 9433 scale = values[0]; 9434 } 9435 } 9436 } 9437 return { 9438 x: translateX, 9439 y: translateY, 9440 scale 9441 }; 9442 } 9443 9444 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/index.parts.mjs 9445 var index_parts_exports = {}; 9446 __export(index_parts_exports, { 9447 Control: () => FieldControl, 9448 Description: () => FieldDescription, 9449 Error: () => FieldError, 9450 Item: () => FieldItem, 9451 Label: () => FieldLabel, 9452 Root: () => FieldRoot, 9453 Validity: () => FieldValidity 9454 }); 9455 9456 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/root/FieldRoot.mjs 9457 var React59 = __toESM(require_react(), 1); 9458 9459 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/fieldset/root/FieldsetRootContext.mjs 9460 var React56 = __toESM(require_react(), 1); 9461 var FieldsetRootContext = /* @__PURE__ */ React56.createContext(void 0); 9462 if (true) FieldsetRootContext.displayName = "FieldsetRootContext"; 9463 function useFieldsetRootContext(optional = false) { 9464 const context = React56.useContext(FieldsetRootContext); 9465 if (!context && !optional) { 9466 throw new Error(true ? "Base UI: FieldsetRootContext is missing. Fieldset parts must be placed within <Fieldset.Root>." : formatErrorMessage_default(86)); 9467 } 9468 return context; 9469 } 9470 9471 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/labelable-provider/LabelableProvider.mjs 9472 var React57 = __toESM(require_react(), 1); 9473 var import_jsx_runtime30 = __toESM(require_jsx_runtime(), 1); 9474 var LabelableProvider = function LabelableProvider2(props) { 9475 const defaultId = useBaseUiId(); 9476 const [controlIdState, setControlIdState] = React57.useState(defaultId); 9477 const [labelId, setLabelId] = React57.useState(); 9478 const [messageIds, setMessageIds] = React57.useState([]); 9479 const controlId = controlIdState === void 0 ? defaultId : controlIdState; 9480 const registrationsRef = useRefWithInit(() => /* @__PURE__ */ new Map()); 9481 const { 9482 messageIds: parentMessageIds 9483 } = useLabelableContext(); 9484 const registerControlId = useStableCallback((source, nextId) => { 9485 const registrations = registrationsRef.current; 9486 if (nextId === void 0) { 9487 registrations.delete(source); 9488 } else { 9489 registrations.set(source, nextId); 9490 } 9491 setControlIdState((prev) => { 9492 if (registrations.size === 0) { 9493 return prev; 9494 } 9495 let nextControlId; 9496 for (const id of registrations.values()) { 9497 if (id === prev) { 9498 return prev; 9499 } 9500 if (nextControlId === void 0) { 9501 nextControlId = id; 9502 } 9503 } 9504 return nextControlId; 9505 }); 9506 }); 9507 const resetControlId = useStableCallback(() => { 9508 if (registrationsRef.current.size === 0) { 9509 setControlIdState(defaultId); 9510 } 9511 }); 9512 const getDescriptionProps = React57.useCallback((externalProps) => { 9513 const ids = externalProps["aria-describedby"] ? externalProps["aria-describedby"].split(" ") : []; 9514 ids.push(...parentMessageIds, ...messageIds); 9515 return { 9516 ...externalProps, 9517 "aria-describedby": Array.from(new Set(ids)).join(" ") || void 0 9518 }; 9519 }, [parentMessageIds, messageIds]); 9520 const contextValue = React57.useMemo(() => ({ 9521 controlId, 9522 registerControlId, 9523 resetControlId, 9524 labelId, 9525 setLabelId, 9526 messageIds, 9527 setMessageIds, 9528 getDescriptionProps 9529 }), [controlId, registerControlId, resetControlId, labelId, setLabelId, messageIds, setMessageIds, getDescriptionProps]); 9530 return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(LabelableContext.Provider, { 9531 value: contextValue, 9532 children: props.children 9533 }); 9534 }; 9535 if (true) LabelableProvider.displayName = "LabelableProvider"; 9536 9537 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/field-register-control/useFieldControlRegistration.mjs 9538 var React58 = __toESM(require_react(), 1); 9539 function useFieldControlRegistration(params) { 9540 const { 9541 change, 9542 commit, 9543 invalid: invalid2, 9544 markedDirtyRef, 9545 name: name16, 9546 setRegisteredFieldName, 9547 registeredFieldIdRef, 9548 setValidityData, 9549 validityData 9550 } = params; 9551 const { 9552 formRef 9553 } = useFormContext(); 9554 const activeFieldControlSourceRef = React58.useRef(null); 9555 const registrationRef = React58.useRef(null); 9556 const initialValueCapturedRef = React58.useRef(false); 9557 const getValueForForm = useStableCallback(() => { 9558 const registration = registrationRef.current; 9559 if (!registration) { 9560 return void 0; 9561 } 9562 if (registration.getValue) { 9563 return registration.getValue(); 9564 } 9565 return registration.value; 9566 }); 9567 function getRegistrationValue(registration) { 9568 return registration.value === void 0 ? getValueForForm() : registration.value; 9569 } 9570 const validate = useStableCallback(() => { 9571 const registration = registrationRef.current; 9572 markedDirtyRef.current = true; 9573 if (!registration) { 9574 commit(validityData.value); 9575 return; 9576 } 9577 commit(getRegistrationValue(registration)); 9578 }); 9579 function refreshRegistration() { 9580 const registration = registrationRef.current; 9581 if (!registration || !registration.id) { 9582 return; 9583 } 9584 formRef.current.fields.set(registration.id, { 9585 getValue: getValueForForm, 9586 name: name16 ?? registration.name, 9587 controlRef: registration.controlRef, 9588 validityData: getCombinedFieldValidityData(validityData, invalid2), 9589 validate 9590 }); 9591 } 9592 function deleteRegistration(id = registrationRef.current?.id) { 9593 if (id) { 9594 formRef.current.fields.delete(id); 9595 } 9596 } 9597 function captureInitialValue(registration) { 9598 if (initialValueCapturedRef.current) { 9599 return; 9600 } 9601 initialValueCapturedRef.current = true; 9602 const initialValue = getRegistrationValue(registration); 9603 setValidityData((prev) => prev.initialValue === initialValue ? prev : { 9604 ...prev, 9605 initialValue 9606 }); 9607 } 9608 useIsoLayoutEffect(() => { 9609 const registration = registrationRef.current; 9610 if (!registration || !registration.id) { 9611 return; 9612 } 9613 setRegisteredFieldName(name16 ? void 0 : registration.name); 9614 formRef.current.fields.set(registration.id, { 9615 getValue: getValueForForm, 9616 name: name16 ?? registration.name, 9617 controlRef: registration.controlRef, 9618 validityData: getCombinedFieldValidityData(validityData, invalid2), 9619 validate 9620 }); 9621 }, [formRef, getValueForForm, invalid2, name16, setRegisteredFieldName, validate, validityData]); 9622 useIsoLayoutEffect(() => { 9623 const fields = formRef.current.fields; 9624 return () => { 9625 const id = registrationRef.current?.id; 9626 if (id) { 9627 fields.delete(id); 9628 } 9629 }; 9630 }, [formRef]); 9631 const register2 = useStableCallback((source, registration) => { 9632 if (!registration) { 9633 if (activeFieldControlSourceRef.current === source) { 9634 activeFieldControlSourceRef.current = null; 9635 change(void 0, true); 9636 deleteRegistration(); 9637 registrationRef.current = null; 9638 setRegisteredFieldName(void 0); 9639 registeredFieldIdRef.current = void 0; 9640 } 9641 return; 9642 } 9643 const previousId = registrationRef.current?.id; 9644 const previousSource = activeFieldControlSourceRef.current; 9645 if (previousSource && previousSource !== source) { 9646 change(void 0, true); 9647 } 9648 activeFieldControlSourceRef.current = source; 9649 registrationRef.current = registration; 9650 if (!name16) { 9651 setRegisteredFieldName(registration.name); 9652 } 9653 registeredFieldIdRef.current = registration.id; 9654 if (previousId && previousId !== registration.id) { 9655 deleteRegistration(previousId); 9656 } 9657 captureInitialValue(registration); 9658 refreshRegistration(); 9659 }); 9660 return [validate, register2]; 9661 } 9662 9663 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/root/FieldRoot.mjs 9664 var import_jsx_runtime31 = __toESM(require_jsx_runtime(), 1); 9665 var FieldRootInner = /* @__PURE__ */ React59.forwardRef(function FieldRootInner2(componentProps, forwardedRef) { 9666 const { 9667 errors, 9668 validationMode: formValidationMode, 9669 submitCountRef 9670 } = useFormContext(); 9671 const { 9672 render, 9673 className, 9674 validate: validateProp, 9675 validationDebounceTime = 0, 9676 validationMode = formValidationMode, 9677 name: name16, 9678 disabled: disabledProp = false, 9679 invalid: invalidProp, 9680 dirty: dirtyProp, 9681 touched: touchedProp, 9682 actionsRef, 9683 style, 9684 ...elementProps 9685 } = componentProps; 9686 const disabledFieldset = useFieldsetRootContext(true)?.disabled; 9687 const validate = useStableCallback(validateProp || (() => null)); 9688 const disabled2 = disabledFieldset || disabledProp; 9689 const [touchedState, setTouchedUnwrapped] = React59.useState(false); 9690 const [dirtyState, setDirtyUnwrapped] = React59.useState(false); 9691 const [filled, setFilled] = React59.useState(false); 9692 const [focused, setFocused] = React59.useState(false); 9693 const focusOwnerRef = React59.useRef(void 0); 9694 const dirty = dirtyProp ?? dirtyState; 9695 const touched = touchedProp ?? touchedState; 9696 const markedDirtyRef = React59.useRef(dirty); 9697 const registeredFieldIdRef = React59.useRef(void 0); 9698 const [registeredFieldName, setRegisteredFieldName] = React59.useState(); 9699 const effectiveName = name16 ?? registeredFieldName; 9700 useIsoLayoutEffect(() => { 9701 if (dirtyProp !== void 0) { 9702 markedDirtyRef.current = dirtyProp; 9703 } 9704 }, [dirtyProp]); 9705 const setDirty = useStableCallback((value) => { 9706 if (dirtyProp !== void 0) { 9707 return; 9708 } 9709 if (value) { 9710 markedDirtyRef.current = true; 9711 } 9712 setDirtyUnwrapped(value); 9713 }); 9714 const setTouched = useStableCallback((value) => { 9715 if (touchedProp !== void 0) { 9716 return; 9717 } 9718 setTouchedUnwrapped(value); 9719 }); 9720 const shouldValidateOnChange = useStableCallback(() => validationMode === "onChange" || validationMode === "onSubmit" && submitCountRef.current > 0); 9721 const formError = effectiveName && Object.hasOwn(errors, effectiveName) ? errors[effectiveName] : null; 9722 const hasFormError = !!(Array.isArray(formError) ? formError.length : formError); 9723 const invalid2 = invalidProp === true || hasFormError; 9724 const [validityData, setValidityData] = React59.useState({ 9725 state: DEFAULT_VALIDITY_STATE, 9726 error: "", 9727 errors: [], 9728 value: null, 9729 initialValue: null 9730 }); 9731 const valid2 = !invalid2 && (disabled2 ? null : validityData.state.valid); 9732 const state = React59.useMemo(() => ({ 9733 disabled: disabled2, 9734 touched, 9735 dirty, 9736 valid: valid2, 9737 filled, 9738 focused 9739 }), [disabled2, touched, dirty, valid2, filled, focused]); 9740 const validation = useFieldValidation({ 9741 setValidityData, 9742 validate, 9743 validityData, 9744 validationDebounceTime, 9745 invalid: invalid2, 9746 markedDirtyRef, 9747 state, 9748 shouldValidateOnChange, 9749 validationMode, 9750 registeredFieldIdRef 9751 }); 9752 const [validateFieldControl, registerFieldControl] = useFieldControlRegistration({ 9753 change: validation.change, 9754 commit: validation.commit, 9755 invalid: invalid2, 9756 markedDirtyRef, 9757 name: name16, 9758 setRegisteredFieldName, 9759 registeredFieldIdRef, 9760 setValidityData, 9761 validityData 9762 }); 9763 React59.useImperativeHandle(actionsRef, () => ({ 9764 validate: validateFieldControl 9765 }), [validateFieldControl]); 9766 const contextValue = React59.useMemo(() => ({ 9767 invalid: invalid2, 9768 name: effectiveName, 9769 validityData, 9770 setValidityData, 9771 disabled: disabled2, 9772 setTouched, 9773 setDirty, 9774 setFilled, 9775 setFocused, 9776 focusOwnerRef, 9777 validationMode, 9778 shouldValidateOnChange, 9779 state, 9780 registerFieldControl, 9781 validation 9782 }), [invalid2, effectiveName, validityData, disabled2, setTouched, setDirty, setFilled, setFocused, validationMode, shouldValidateOnChange, state, registerFieldControl, validation]); 9783 const element = useRenderElement("div", componentProps, { 9784 ref: forwardedRef, 9785 state, 9786 props: elementProps, 9787 stateAttributesMapping: fieldValidityMapping 9788 }); 9789 return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(FieldRootContext.Provider, { 9790 value: contextValue, 9791 children: element 9792 }); 9793 }); 9794 if (true) FieldRootInner.displayName = "FieldRootInner"; 9795 var FieldRoot = /* @__PURE__ */ React59.forwardRef(function FieldRoot2(componentProps, forwardedRef) { 9796 return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(LabelableProvider, { 9797 children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(FieldRootInner, { 9798 ...componentProps, 9799 ref: forwardedRef 9800 }) 9801 }); 9802 }); 9803 if (true) FieldRoot.displayName = "FieldRoot"; 9804 9805 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/label/FieldLabel.mjs 9806 var React60 = __toESM(require_react(), 1); 9807 var FieldLabel = /* @__PURE__ */ React60.forwardRef(function FieldLabel2(componentProps, forwardedRef) { 9808 const { 9809 render, 9810 className, 9811 style, 9812 id: idProp, 9813 nativeLabel = true, 9814 ...elementProps 9815 } = componentProps; 9816 const fieldRootContext = useFieldRootContext(false); 9817 const fieldItemContext = useFieldItemContext(); 9818 const { 9819 labelId 9820 } = useLabelableContext(); 9821 const state = { 9822 ...fieldRootContext.state, 9823 disabled: fieldRootContext.disabled || fieldItemContext.disabled 9824 }; 9825 const labelRef = React60.useRef(null); 9826 const labelProps = useLabel({ 9827 id: labelId ?? idProp, 9828 native: nativeLabel 9829 }); 9830 if (true) { 9831 React60.useEffect(() => { 9832 if (!labelRef.current) { 9833 return; 9834 } 9835 const isLabelTag = labelRef.current.tagName === "LABEL"; 9836 if (nativeLabel) { 9837 if (!isLabelTag) { 9838 const ownerStackMessage = SafeReact.captureOwnerStack?.() || ""; 9839 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`."; 9840 error(`$message}$ownerStackMessage}`); 9841 } 9842 } else if (isLabelTag) { 9843 const ownerStackMessage = SafeReact.captureOwnerStack?.() || ""; 9844 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`."; 9845 error(`$message}$ownerStackMessage}`); 9846 } 9847 }, [nativeLabel]); 9848 } 9849 const element = useRenderElement("label", componentProps, { 9850 ref: [forwardedRef, labelRef], 9851 state, 9852 props: [labelProps, elementProps], 9853 stateAttributesMapping: fieldValidityMapping 9854 }); 9855 return element; 9856 }); 9857 if (true) FieldLabel.displayName = "FieldLabel"; 9858 9859 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/error/FieldError.mjs 9860 var React61 = __toESM(require_react(), 1); 9861 var import_jsx_runtime32 = __toESM(require_jsx_runtime(), 1); 9862 var stateAttributesMapping = { 9863 ...fieldValidityMapping, 9864 ...transitionStatusMapping 9865 }; 9866 var FieldError = /* @__PURE__ */ React61.forwardRef(function FieldError2(componentProps, forwardedRef) { 9867 const { 9868 render, 9869 id: idProp, 9870 className, 9871 match, 9872 style, 9873 ...elementProps 9874 } = componentProps; 9875 const id = useBaseUiId(idProp); 9876 const { 9877 validityData, 9878 state: fieldState, 9879 name: name16 9880 } = useFieldRootContext(false); 9881 const { 9882 setMessageIds 9883 } = useLabelableContext(); 9884 const { 9885 errors 9886 } = useFormContext(); 9887 const formError = name16 && Object.hasOwn(errors, name16) ? errors[name16] : null; 9888 const hasFormError = !!(Array.isArray(formError) ? formError.length : formError); 9889 const hasSpecificMatch = typeof match === "string"; 9890 let rendered = false; 9891 if (match === true) { 9892 rendered = true; 9893 } else if (fieldState.disabled) { 9894 rendered = false; 9895 } else if (hasSpecificMatch) { 9896 rendered = Boolean(validityData.state[match]); 9897 } else { 9898 rendered = hasFormError || validityData.state.valid === false; 9899 } 9900 const { 9901 mounted, 9902 transitionStatus, 9903 setMounted 9904 } = useTransitionStatus(rendered); 9905 useIsoLayoutEffect(() => { 9906 if (!rendered || !id) { 9907 return void 0; 9908 } 9909 setMessageIds((v) => v.concat(id)); 9910 return () => { 9911 setMessageIds((v) => v.filter((item) => item !== id)); 9912 }; 9913 }, [rendered, id, setMessageIds]); 9914 const errorRef = React61.useRef(null); 9915 const [lastRenderedMessage, setLastRenderedMessage] = React61.useState(null); 9916 const [lastRenderedMessageKey, setLastRenderedMessageKey] = React61.useState(null); 9917 let error2 = validityData.error; 9918 if (!hasSpecificMatch && hasFormError) { 9919 error2 = formError; 9920 } else if (validityData.errors.length > 1) { 9921 error2 = validityData.errors; 9922 } 9923 let errorMessage = error2; 9924 if (Array.isArray(error2)) { 9925 errorMessage = error2.length > 1 ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("ul", { 9926 children: error2.map((message) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("li", { 9927 children: message 9928 }, message)) 9929 }) : error2[0]; 9930 } 9931 const errorKey = Array.isArray(error2) ? JSON.stringify(error2) : error2; 9932 if (rendered && errorKey !== lastRenderedMessageKey) { 9933 setLastRenderedMessageKey(errorKey); 9934 setLastRenderedMessage(errorMessage); 9935 } 9936 useOpenChangeComplete({ 9937 open: rendered, 9938 ref: errorRef, 9939 onComplete() { 9940 if (!rendered) { 9941 setMounted(false); 9942 } 9943 } 9944 }); 9945 const state = { 9946 ...fieldState, 9947 transitionStatus 9948 }; 9949 const element = useRenderElement("div", componentProps, { 9950 ref: [forwardedRef, errorRef], 9951 state, 9952 props: [{ 9953 id, 9954 children: rendered ? errorMessage : lastRenderedMessage 9955 }, elementProps], 9956 stateAttributesMapping, 9957 enabled: mounted 9958 }); 9959 if (!mounted) { 9960 return null; 9961 } 9962 return element; 9963 }); 9964 if (true) FieldError.displayName = "FieldError"; 9965 9966 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/description/FieldDescription.mjs 9967 var React62 = __toESM(require_react(), 1); 9968 var FieldDescription = /* @__PURE__ */ React62.forwardRef(function FieldDescription2(componentProps, forwardedRef) { 9969 const { 9970 render, 9971 id: idProp, 9972 className, 9973 style, 9974 ...elementProps 9975 } = componentProps; 9976 const id = useBaseUiId(idProp); 9977 const fieldRootContext = useFieldRootContext(false); 9978 const fieldItemContext = useFieldItemContext(); 9979 const { 9980 setMessageIds 9981 } = useLabelableContext(); 9982 const state = { 9983 ...fieldRootContext.state, 9984 disabled: fieldRootContext.disabled || fieldItemContext.disabled 9985 }; 9986 useIsoLayoutEffect(() => { 9987 if (!id) { 9988 return void 0; 9989 } 9990 setMessageIds((v) => v.concat(id)); 9991 return () => { 9992 setMessageIds((v) => v.filter((item) => item !== id)); 9993 }; 9994 }, [id, setMessageIds]); 9995 const element = useRenderElement("p", componentProps, { 9996 ref: forwardedRef, 9997 state, 9998 props: [{ 9999 id 10000 }, elementProps], 10001 stateAttributesMapping: fieldValidityMapping 10002 }); 10003 return element; 10004 }); 10005 if (true) FieldDescription.displayName = "FieldDescription"; 10006 10007 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/control/FieldControl.mjs 10008 var React63 = __toESM(require_react(), 1); 10009 var FieldControl = /* @__PURE__ */ React63.forwardRef(function FieldControl2(componentProps, forwardedRef) { 10010 const { 10011 render, 10012 className, 10013 id: idProp, 10014 name: nameProp, 10015 value, 10016 disabled: disabledProp = false, 10017 onValueChange, 10018 defaultValue, 10019 autoFocus = false, 10020 style, 10021 ...elementProps 10022 } = componentProps; 10023 const { 10024 state: fieldState, 10025 name: fieldName, 10026 disabled: fieldDisabled, 10027 setTouched, 10028 setDirty, 10029 validityData, 10030 setFilled, 10031 validationMode, 10032 validation 10033 } = useFieldRootContext(); 10034 const { 10035 clearErrors, 10036 elementRef: formElementRef, 10037 submitCountRef 10038 } = useFormContext(); 10039 const disabled2 = fieldDisabled || disabledProp; 10040 const name16 = fieldName ?? nameProp; 10041 const state = { 10042 ...fieldState, 10043 disabled: disabled2 10044 }; 10045 const { 10046 labelId 10047 } = useLabelableContext(); 10048 const id = useLabelableId({ 10049 id: idProp 10050 }); 10051 const isControlled = value !== void 0; 10052 const serializedValue = value == null ? void 0 : String(value); 10053 const getValueFromInput = useStableCallback(() => validation.inputRef.current?.value); 10054 useRegisterFieldControl(validation.inputRef, id, serializedValue, getValueFromInput, !disabled2, nameProp); 10055 useIsoLayoutEffect(() => { 10056 const currentValue = serializedValue ?? validation.inputRef.current?.value; 10057 if (currentValue !== void 0) { 10058 setFilled(currentValue !== ""); 10059 } 10060 }, [serializedValue, defaultValue, validation.inputRef, setFilled]); 10061 useValueChanged(serializedValue, () => { 10062 if (serializedValue === void 0) { 10063 return; 10064 } 10065 clearErrors(name16); 10066 setDirty(serializedValue !== (validityData.initialValue ?? "")); 10067 validation.change(serializedValue); 10068 }); 10069 const inputRef = React63.useRef(null); 10070 const setFocused = useSetFieldFocused(disabled2, inputRef); 10071 const enterValidationTimeout = useTimeout(); 10072 const element = useRenderElement("input", componentProps, { 10073 ref: [forwardedRef, inputRef], 10074 state, 10075 props: [{ 10076 id, 10077 disabled: disabled2, 10078 name: name16, 10079 ref: validation.inputRef, 10080 "aria-labelledby": labelId, 10081 autoFocus, 10082 ...isControlled ? { 10083 value 10084 } : { 10085 defaultValue 10086 }, 10087 onChange(event) { 10088 const inputValue = event.currentTarget.value; 10089 const details = createChangeEventDetails(reason_parts_exports.none, event.nativeEvent); 10090 onValueChange?.(inputValue, details); 10091 if (isControlled) { 10092 return; 10093 } 10094 setDirty(inputValue !== (validityData.initialValue ?? "")); 10095 setFilled(inputValue !== ""); 10096 if (!event.nativeEvent.defaultPrevented && !details.isCanceled) { 10097 clearErrors(name16); 10098 validation.change(inputValue); 10099 } 10100 }, 10101 onFocus() { 10102 setFocused(true); 10103 }, 10104 onBlur(event) { 10105 setTouched(true); 10106 setFocused(false); 10107 if (validationMode === "onBlur") { 10108 const inputValue = event.currentTarget.value; 10109 validation.commit(inputValue); 10110 if (isControlled) { 10111 queueMicrotask(() => { 10112 const nextValue = validation.inputRef.current?.value; 10113 if (nextValue !== void 0 && nextValue !== inputValue && nextValue !== (validityData.initialValue ?? "")) { 10114 validation.commit(nextValue); 10115 } 10116 }); 10117 } 10118 } 10119 }, 10120 onKeyDown(event) { 10121 if (event.currentTarget.tagName === "INPUT" && event.key === "Enter") { 10122 setTouched(true); 10123 const value2 = event.currentTarget.value; 10124 const form = event.currentTarget.form; 10125 if (form && form === formElementRef.current && !event.defaultPrevented) { 10126 const input = event.currentTarget; 10127 const submitCount = submitCountRef.current; 10128 enterValidationTimeout.start(0, () => { 10129 if (submitCountRef.current === submitCount) { 10130 validation.commit(input.value); 10131 } 10132 }); 10133 } else { 10134 validation.commit(value2); 10135 } 10136 } 10137 } 10138 }, elementProps, (props) => validation.getValidationProps(disabled2, props)], 10139 stateAttributesMapping: fieldValidityMapping 10140 }); 10141 return element; 10142 }); 10143 if (true) FieldControl.displayName = "FieldControl"; 10144 10145 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/validity/FieldValidity.mjs 10146 var React64 = __toESM(require_react(), 1); 10147 var import_jsx_runtime33 = __toESM(require_jsx_runtime(), 1); 10148 var FieldValidity = function FieldValidity2(props) { 10149 const { 10150 children 10151 } = props; 10152 const { 10153 validityData, 10154 invalid: invalid2 10155 } = useFieldRootContext(false); 10156 const combinedFieldValidityData = React64.useMemo(() => getCombinedFieldValidityData(validityData, invalid2), [validityData, invalid2]); 10157 const isInvalid = combinedFieldValidityData.state.valid === false; 10158 const { 10159 transitionStatus 10160 } = useTransitionStatus(isInvalid); 10161 const fieldValidityState = React64.useMemo(() => { 10162 return { 10163 ...combinedFieldValidityData, 10164 validity: combinedFieldValidityData.state, 10165 transitionStatus 10166 }; 10167 }, [combinedFieldValidityData, transitionStatus]); 10168 return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(React64.Fragment, { 10169 children: children(fieldValidityState) 10170 }); 10171 }; 10172 if (true) FieldValidity.displayName = "FieldValidity"; 10173 10174 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/field/item/FieldItem.mjs 10175 var React65 = __toESM(require_react(), 1); 10176 var import_jsx_runtime34 = __toESM(require_jsx_runtime(), 1); 10177 var FieldItem = /* @__PURE__ */ React65.forwardRef(function FieldItem2(componentProps, forwardedRef) { 10178 const { 10179 render, 10180 className, 10181 style, 10182 disabled: disabledProp = false, 10183 ...elementProps 10184 } = componentProps; 10185 const { 10186 state: fieldState, 10187 disabled: rootDisabled 10188 } = useFieldRootContext(false); 10189 const disabled2 = rootDisabled || disabledProp; 10190 const state = { 10191 ...fieldState, 10192 disabled: disabled2 10193 }; 10194 const fieldItemContext = React65.useMemo(() => ({ 10195 disabled: disabled2 10196 }), [disabled2]); 10197 const element = useRenderElement("div", componentProps, { 10198 ref: forwardedRef, 10199 state, 10200 props: elementProps, 10201 stateAttributesMapping: fieldValidityMapping 10202 }); 10203 return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(LabelableProvider, { 10204 children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(FieldItemContext.Provider, { 10205 value: fieldItemContext, 10206 children: element 10207 }) 10208 }); 10209 }); 10210 if (true) FieldItem.displayName = "FieldItem"; 10211 10212 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/input/Input.mjs 10213 var React66 = __toESM(require_react(), 1); 10214 var import_jsx_runtime35 = __toESM(require_jsx_runtime(), 1); 10215 var Input = /* @__PURE__ */ React66.forwardRef(function Input2(props, forwardedRef) { 10216 return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(index_parts_exports.Control, { 10217 ref: forwardedRef, 10218 ...props 10219 }); 10220 }); 10221 if (true) Input.displayName = "Input"; 10222 10223 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/root/CompositeRoot.mjs 10224 var React68 = __toESM(require_react(), 1); 10225 10226 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/root/useCompositeRoot.mjs 10227 var React67 = __toESM(require_react(), 1); 10228 10229 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/constants.mjs 10230 var ACTIVE_COMPOSITE_ITEM = "data-composite-item-active"; 10231 10232 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/root/useCompositeRoot.mjs 10233 function useCompositeRoot(params) { 10234 const { 10235 loopFocus = true, 10236 orientation = "both", 10237 grid, 10238 onLoop, 10239 direction, 10240 highlightedIndex: externalHighlightedIndex, 10241 onHighlightedIndexChange: externalSetHighlightedIndex, 10242 rootRef: externalRef, 10243 enableHomeAndEndKeys = false, 10244 stopEventPropagation, 10245 disabledIndices, 10246 modifierKeys = EMPTY_ARRAY 10247 } = params; 10248 const [internalHighlightedIndex, internalSetHighlightedIndex] = React67.useState(0); 10249 const isGrid = grid != null; 10250 const rootRef = React67.useRef(null); 10251 const mergedRef = useMergedRefs(rootRef, externalRef); 10252 const elementsRef = React67.useRef([]); 10253 const hasSetDefaultIndexRef = React67.useRef(false); 10254 const highlightedElementRef = React67.useRef(null); 10255 const highlightedIndex = externalHighlightedIndex ?? internalHighlightedIndex; 10256 const onHighlightedIndexChange = useStableCallback((index3, shouldScrollIntoView = false) => { 10257 highlightedElementRef.current = elementsRef.current[index3] ?? null; 10258 (externalSetHighlightedIndex ?? internalSetHighlightedIndex)(index3); 10259 if (shouldScrollIntoView) { 10260 const newActiveItem = elementsRef.current[index3]; 10261 scrollIntoViewIfNeeded(rootRef.current, newActiveItem, direction, orientation); 10262 } 10263 }); 10264 const onMapChange = useStableCallback((map) => { 10265 if (map.size === 0) { 10266 return; 10267 } 10268 if (hasSetDefaultIndexRef.current) { 10269 const elements = elementsRef.current; 10270 const nextIndex = elements.indexOf(highlightedElementRef.current); 10271 if (nextIndex === -1) { 10272 const replacement = elements[highlightedIndex]; 10273 if (!replacement || isListIndexDisabled(elements, highlightedIndex, disabledIndices)) { 10274 onHighlightedIndexChange(getFallbackIndex(elements, disabledIndices)); 10275 } else { 10276 highlightedElementRef.current = replacement; 10277 } 10278 } else if (nextIndex !== highlightedIndex) { 10279 onHighlightedIndexChange(nextIndex); 10280 } 10281 return; 10282 } 10283 hasSetDefaultIndexRef.current = true; 10284 const sortedElements = Array.from(map.keys()); 10285 const activeItem = sortedElements.find((compositeElement) => compositeElement?.hasAttribute(ACTIVE_COMPOSITE_ITEM)) ?? null; 10286 const activeIndex = activeItem ? map.get(activeItem)?.index ?? -1 : -1; 10287 if (activeIndex !== -1) { 10288 onHighlightedIndexChange(activeIndex); 10289 } else if (isListIndexDisabled(sortedElements, highlightedIndex, disabledIndices)) { 10290 const firstEnabledIndex = findNonDisabledListIndex(sortedElements, { 10291 disabledIndices 10292 }); 10293 if (!isIndexOutOfListBounds(sortedElements, firstEnabledIndex)) { 10294 onHighlightedIndexChange(firstEnabledIndex); 10295 } 10296 } 10297 scrollIntoViewIfNeeded(rootRef.current, activeItem, direction, orientation); 10298 }); 10299 useIsoLayoutEffect(() => { 10300 if (disabledIndices == null || externalHighlightedIndex != null || !hasSetDefaultIndexRef.current) { 10301 return; 10302 } 10303 const elements = elementsRef.current; 10304 if (isListIndexDisabled(elements, highlightedIndex, disabledIndices)) { 10305 const firstEnabledIndex = findNonDisabledListIndex(elements, { 10306 disabledIndices 10307 }); 10308 if (!isIndexOutOfListBounds(elements, firstEnabledIndex)) { 10309 onHighlightedIndexChange(firstEnabledIndex); 10310 } 10311 } 10312 }, [disabledIndices, externalHighlightedIndex, highlightedIndex, elementsRef, onHighlightedIndexChange]); 10313 const wrappedOnLoop = useStableCallback((event, prevIndex, nextIndex) => { 10314 if (!onLoop) { 10315 return nextIndex; 10316 } 10317 return onLoop(event, prevIndex, nextIndex, elementsRef); 10318 }); 10319 const onKeyDown = useStableCallback((event) => { 10320 const isHomeOrEnd = event.key === HOME || event.key === END; 10321 if (!COMPOSITE_KEYS.has(event.key) || !enableHomeAndEndKeys && isHomeOrEnd) { 10322 return; 10323 } 10324 if (isModifierKeySet(event, modifierKeys)) { 10325 return; 10326 } 10327 const element = rootRef.current; 10328 if (!element) { 10329 return; 10330 } 10331 const isRtl = direction === "rtl"; 10332 const horizontalForwardKey = isRtl ? ARROW_LEFT2 : ARROW_RIGHT2; 10333 const horizontalBackwardKey = isRtl ? ARROW_RIGHT2 : ARROW_LEFT2; 10334 const forwardKey = orientation === "vertical" ? ARROW_DOWN2 : horizontalForwardKey; 10335 const backwardKey = orientation === "vertical" ? ARROW_UP2 : horizontalBackwardKey; 10336 const target = getTarget(event.nativeEvent); 10337 if (target != null && isNativeInput(target) && !isElementDisabled(target)) { 10338 const selectionStart = target.selectionStart; 10339 const selectionEnd = target.selectionEnd; 10340 const textContent = target.value; 10341 if (selectionStart == null || event.shiftKey || selectionStart !== selectionEnd) { 10342 return; 10343 } 10344 if (event.key !== backwardKey && selectionStart < textContent.length) { 10345 return; 10346 } 10347 if (event.key !== forwardKey && selectionStart > 0) { 10348 return; 10349 } 10350 } 10351 let nextIndex = highlightedIndex; 10352 const minIndex = getMinListIndex(elementsRef, disabledIndices); 10353 const maxIndex = getMaxListIndex(elementsRef, disabledIndices); 10354 if (grid != null) { 10355 nextIndex = grid({ 10356 disabledIndices, 10357 elementsRef, 10358 event, 10359 highlightedIndex, 10360 loopFocus, 10361 maxIndex, 10362 minIndex, 10363 onLoop: wrappedOnLoop, 10364 orientation, 10365 rtl: isRtl 10366 }); 10367 } 10368 const isForwardKey = orientation !== "vertical" && event.key === horizontalForwardKey || orientation !== "horizontal" && event.key === ARROW_DOWN2; 10369 const isBackwardKey = orientation !== "vertical" && event.key === horizontalBackwardKey || orientation !== "horizontal" && event.key === ARROW_UP2; 10370 if (enableHomeAndEndKeys) { 10371 if (event.key === HOME) { 10372 nextIndex = minIndex; 10373 } else if (event.key === END) { 10374 nextIndex = maxIndex; 10375 } 10376 } 10377 if (nextIndex === highlightedIndex && (isForwardKey || isBackwardKey)) { 10378 if (loopFocus && nextIndex === maxIndex && isForwardKey) { 10379 nextIndex = minIndex; 10380 if (onLoop) { 10381 nextIndex = onLoop(event, highlightedIndex, nextIndex, elementsRef); 10382 } 10383 } else if (loopFocus && nextIndex === minIndex && isBackwardKey) { 10384 nextIndex = maxIndex; 10385 if (onLoop) { 10386 nextIndex = onLoop(event, highlightedIndex, nextIndex, elementsRef); 10387 } 10388 } else { 10389 nextIndex = findNonDisabledListIndex(elementsRef.current, { 10390 startingIndex: nextIndex, 10391 decrement: isBackwardKey, 10392 disabledIndices 10393 }); 10394 } 10395 } 10396 if (nextIndex !== highlightedIndex && !isIndexOutOfListBounds(elementsRef.current, nextIndex)) { 10397 if (stopEventPropagation) { 10398 event.stopPropagation(); 10399 } 10400 if (isGrid || isHomeOrEnd || isForwardKey || isBackwardKey) { 10401 event.preventDefault(); 10402 } 10403 onHighlightedIndexChange(nextIndex, true); 10404 queueMicrotask(() => { 10405 elementsRef.current[nextIndex]?.focus(); 10406 }); 10407 } 10408 }); 10409 const props = { 10410 ref: mergedRef, 10411 onFocus(event) { 10412 const element = rootRef.current; 10413 const target = getTarget(event.nativeEvent); 10414 if (!element || target == null || !isNativeInput(target)) { 10415 return; 10416 } 10417 target.setSelectionRange(0, target.value.length); 10418 }, 10419 onKeyDown 10420 }; 10421 return { 10422 props, 10423 highlightedIndex, 10424 onHighlightedIndexChange, 10425 elementsRef, 10426 onMapChange, 10427 relayKeyboardEvent: onKeyDown 10428 }; 10429 } 10430 function getFallbackIndex(elements, disabledIndices) { 10431 let fallbackIndex = -1; 10432 for (let index3 = 0; index3 < elements.length; index3 += 1) { 10433 const element = elements[index3]; 10434 if (!element || isListIndexDisabled(elements, index3, disabledIndices)) { 10435 continue; 10436 } 10437 if (element.hasAttribute(ACTIVE_COMPOSITE_ITEM)) { 10438 return index3; 10439 } 10440 if (fallbackIndex === -1) { 10441 fallbackIndex = index3; 10442 } 10443 } 10444 return Math.max(fallbackIndex, 0); 10445 } 10446 function isModifierKeySet(event, ignoredModifierKeys) { 10447 for (const key of MODIFIER_KEYS) { 10448 if (ignoredModifierKeys.includes(key)) { 10449 continue; 10450 } 10451 if (event.getModifierState(key)) { 10452 return true; 10453 } 10454 } 10455 return false; 10456 } 10457 10458 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/composite/root/CompositeRoot.mjs 10459 var import_jsx_runtime36 = __toESM(require_jsx_runtime(), 1); 10460 function CompositeRoot(componentProps) { 10461 const { 10462 render, 10463 className, 10464 style, 10465 refs = EMPTY_ARRAY, 10466 props = EMPTY_ARRAY, 10467 state = EMPTY_OBJECT, 10468 stateAttributesMapping: stateAttributesMapping8, 10469 highlightedIndex: highlightedIndexProp, 10470 onHighlightedIndexChange: onHighlightedIndexChangeProp, 10471 orientation, 10472 grid, 10473 loopFocus, 10474 onLoop, 10475 enableHomeAndEndKeys, 10476 onMapChange: onMapChangeProp, 10477 stopEventPropagation = true, 10478 rootRef, 10479 disabledIndices, 10480 modifierKeys, 10481 highlightItemOnHover = false, 10482 tag = "div", 10483 ...elementProps 10484 } = componentProps; 10485 const direction = useDirection(); 10486 const { 10487 props: defaultProps, 10488 highlightedIndex, 10489 onHighlightedIndexChange, 10490 elementsRef, 10491 onMapChange: onMapChangeUnwrapped, 10492 relayKeyboardEvent 10493 } = useCompositeRoot({ 10494 grid, 10495 loopFocus, 10496 onLoop, 10497 orientation, 10498 highlightedIndex: highlightedIndexProp, 10499 onHighlightedIndexChange: onHighlightedIndexChangeProp, 10500 rootRef, 10501 stopEventPropagation, 10502 enableHomeAndEndKeys, 10503 direction, 10504 disabledIndices, 10505 modifierKeys 10506 }); 10507 const element = useRenderElement(tag, componentProps, { 10508 state, 10509 ref: refs, 10510 props: [defaultProps, ...props, elementProps], 10511 stateAttributesMapping: stateAttributesMapping8 10512 }); 10513 const contextValue = React68.useMemo(() => ({ 10514 highlightedIndex, 10515 onHighlightedIndexChange, 10516 highlightItemOnHover, 10517 relayKeyboardEvent 10518 }), [highlightedIndex, onHighlightedIndexChange, highlightItemOnHover, relayKeyboardEvent]); 10519 return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(CompositeRootContext.Provider, { 10520 value: contextValue, 10521 children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(CompositeList, { 10522 elementsRef, 10523 onMapChange: (newMap) => { 10524 onMapChangeProp?.(newMap); 10525 onMapChangeUnwrapped(newMap); 10526 }, 10527 children: element 10528 }) 10529 }); 10530 } 10531 10532 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/styles.mjs 10533 var import_jsx_runtime37 = __toESM(require_jsx_runtime(), 1); 10534 var DISABLE_SCROLLBAR_CLASS_NAME = "base-ui-disable-scrollbar"; 10535 var styleDisableScrollbar = { 10536 className: DISABLE_SCROLLBAR_CLASS_NAME, 10537 getElement(nonce) { 10538 return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("style", { 10539 nonce, 10540 href: DISABLE_SCROLLBAR_CLASS_NAME, 10541 precedence: "base-ui:low", 10542 children: `.$DISABLE_SCROLLBAR_CLASS_NAME}{scrollbar-width:none}.$DISABLE_SCROLLBAR_CLASS_NAME}::-webkit-scrollbar{display:none}` 10543 }); 10544 } 10545 }; 10546 if (true) styleDisableScrollbar.getElement.displayName = "styleDisableScrollbar.getElement"; 10547 10548 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/utils/scrollEdges.mjs 10549 var SCROLL_EDGE_TOLERANCE_PX = 1; 10550 function getMaxScrollOffset(scrollSize, clientSize) { 10551 return Math.max(0, scrollSize - clientSize); 10552 } 10553 function normalizeScrollOffset(value, max2) { 10554 if (max2 <= 0) { 10555 return 0; 10556 } 10557 const clamped = clamp2(value, 0, max2); 10558 const startDistance = clamped; 10559 const endDistance = max2 - clamped; 10560 const withinStartTolerance = startDistance <= SCROLL_EDGE_TOLERANCE_PX; 10561 const withinEndTolerance = endDistance <= SCROLL_EDGE_TOLERANCE_PX; 10562 if (withinStartTolerance && withinEndTolerance) { 10563 return startDistance <= endDistance ? 0 : max2; 10564 } 10565 if (withinStartTolerance) { 10566 return 0; 10567 } 10568 if (withinEndTolerance) { 10569 return max2; 10570 } 10571 return clamped; 10572 } 10573 10574 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/index.parts.mjs 10575 var index_parts_exports2 = {}; 10576 __export(index_parts_exports2, { 10577 Arrow: () => SelectArrow, 10578 Backdrop: () => SelectBackdrop, 10579 Group: () => SelectGroup, 10580 GroupLabel: () => SelectGroupLabel, 10581 Icon: () => SelectIcon, 10582 Item: () => SelectItem, 10583 ItemIndicator: () => SelectItemIndicator, 10584 ItemText: () => SelectItemText, 10585 Label: () => SelectLabel, 10586 List: () => SelectList, 10587 Popup: () => SelectPopup, 10588 Portal: () => SelectPortal, 10589 Positioner: () => SelectPositioner, 10590 Root: () => SelectRoot, 10591 ScrollDownArrow: () => SelectScrollDownArrow, 10592 ScrollUpArrow: () => SelectScrollUpArrow, 10593 Separator: () => SelectSeparator, 10594 Trigger: () => SelectTrigger, 10595 Value: () => SelectValue 10596 }); 10597 10598 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/root/SelectRoot.mjs 10599 var React70 = __toESM(require_react(), 1); 10600 10601 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/root/SelectRootContext.mjs 10602 var React69 = __toESM(require_react(), 1); 10603 var SelectRootContext = /* @__PURE__ */ React69.createContext(void 0); 10604 if (true) SelectRootContext.displayName = "SelectRootContext"; 10605 var SelectFloatingContext = /* @__PURE__ */ React69.createContext(void 0); 10606 if (true) SelectFloatingContext.displayName = "SelectFloatingContext"; 10607 function useSelectRootContext() { 10608 const store = React69.useContext(SelectRootContext); 10609 if (store === void 0) { 10610 throw new Error(true ? "Base UI: SelectRootContext is missing. Select parts must be placed within <Select.Root>." : formatErrorMessage_default(60)); 10611 } 10612 return store; 10613 } 10614 function useSelectFloatingContext() { 10615 const context = React69.useContext(SelectFloatingContext); 10616 if (context === void 0) { 10617 throw new Error(true ? "Base UI: SelectFloatingContext is missing. Select parts must be placed within <Select.Root>." : formatErrorMessage_default(61)); 10618 } 10619 return context; 10620 } 10621 10622 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/store.mjs 10623 var selectors2 = { 10624 id: (state) => state.id, 10625 labelId: (state) => state.labelId, 10626 modal: (state) => state.modal, 10627 multiple: (state) => state.multiple, 10628 disabled: (state) => state.disabled, 10629 readOnly: (state) => state.readOnly, 10630 required: (state) => state.required, 10631 highlightItemOnHover: (state) => state.highlightItemOnHover, 10632 items: (state) => state.items, 10633 itemToStringLabel: (state) => state.itemToStringLabel, 10634 isItemEqualToValue: (state) => state.isItemEqualToValue, 10635 value: (state) => state.value, 10636 hasSelectedValue: (state) => { 10637 const { 10638 value, 10639 multiple, 10640 itemToStringValue 10641 } = state; 10642 if (value == null) { 10643 return false; 10644 } 10645 if (multiple && Array.isArray(value)) { 10646 return value.length > 0; 10647 } 10648 return stringifyAsValue(value, itemToStringValue) !== ""; 10649 }, 10650 hasNullItemLabel: (state, enabled) => { 10651 return enabled ? hasNullItemLabel(state.items) : false; 10652 }, 10653 open: (state) => state.open, 10654 mounted: (state) => state.mounted, 10655 forceMount: (state) => state.forceMount, 10656 transitionStatus: (state) => state.transitionStatus, 10657 openMethod: (state) => state.openMethod, 10658 activeIndex: (state) => state.activeIndex, 10659 selectedIndex: (state) => state.selectedIndex, 10660 isActive: (state, index3) => state.activeIndex === index3, 10661 isSelected: (state, itemValue) => { 10662 const comparer = state.isItemEqualToValue; 10663 const storeValue = state.value; 10664 if (state.multiple) { 10665 return Array.isArray(storeValue) && storeValue.some((selectedItem) => compareItemEquality(itemValue, selectedItem, comparer)); 10666 } 10667 return compareItemEquality(itemValue, storeValue, comparer); 10668 }, 10669 isSelectedByFocus: (state, index3) => { 10670 return state.selectedIndex === index3; 10671 }, 10672 popupProps: (state) => state.popupProps, 10673 triggerProps: (state) => state.triggerProps, 10674 itemRoot: (state) => state.itemRoot, 10675 triggerElement: (state) => state.triggerElement, 10676 positionerElement: (state) => state.positionerElement, 10677 listElement: (state) => state.listElement, 10678 popupSide: (state) => state.popupSide, 10679 scrollUpArrowVisible: (state) => state.scrollUpArrowVisible, 10680 scrollDownArrowVisible: (state) => state.scrollDownArrowVisible, 10681 hasScrollArrows: (state) => state.hasScrollArrows 10682 }; 10683 10684 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/root/SelectRoot.mjs 10685 var import_jsx_runtime38 = __toESM(require_jsx_runtime(), 1); 10686 function SelectRoot(props) { 10687 const { 10688 id, 10689 value: valueProp, 10690 defaultValue = null, 10691 onValueChange, 10692 open: openProp, 10693 defaultOpen = false, 10694 onOpenChange, 10695 name: nameProp, 10696 form, 10697 autoComplete, 10698 disabled: disabledProp = false, 10699 readOnly = false, 10700 required = false, 10701 modal = true, 10702 actionsRef, 10703 inputRef, 10704 onOpenChangeComplete, 10705 items, 10706 multiple = false, 10707 itemToStringLabel, 10708 itemToStringValue, 10709 isItemEqualToValue = defaultItemEquality, 10710 highlightItemOnHover = true, 10711 children 10712 } = props; 10713 const { 10714 clearErrors 10715 } = useFormContext(); 10716 const { 10717 setDirty, 10718 setTouched, 10719 setFocused, 10720 validityData, 10721 setFilled, 10722 name: fieldName, 10723 disabled: fieldDisabled, 10724 validation, 10725 validationMode 10726 } = useFieldRootContext(); 10727 const generatedId = useLabelableId({ 10728 id 10729 }); 10730 const disabled2 = fieldDisabled || disabledProp; 10731 const name16 = fieldName ?? nameProp; 10732 const [value, setValueUnwrapped] = useControlled({ 10733 controlled: valueProp, 10734 default: multiple ? defaultValue ?? EMPTY_ARRAY : defaultValue, 10735 name: "Select", 10736 state: "value" 10737 }); 10738 const [open2, setOpenUnwrapped] = useControlled({ 10739 controlled: openProp, 10740 default: defaultOpen, 10741 name: "Select", 10742 state: "open" 10743 }); 10744 const listRef = React70.useRef([]); 10745 const labelsRef = React70.useRef([]); 10746 const popupRef = React70.useRef(null); 10747 const scrollHandlerRef = React70.useRef(null); 10748 const scrollArrowsMountedCountRef = React70.useRef(0); 10749 const valueRef = React70.useRef(null); 10750 const valuesRef = React70.useRef([]); 10751 const typingRef = React70.useRef(false); 10752 const firstItemTextRef = React70.useRef(null); 10753 const selectedItemTextRef = React70.useRef(null); 10754 const selectionRef = React70.useRef({ 10755 allowSelectedMouseUp: false, 10756 allowUnselectedMouseUp: false, 10757 dragY: 0 10758 }); 10759 const alignItemWithTriggerActiveRef = React70.useRef(false); 10760 const initialValueRef = React70.useRef(value); 10761 const { 10762 openMethod, 10763 triggerProps: interactionTypeProps 10764 } = useOpenInteractionType(open2); 10765 const store = useRefWithInit(() => new ReactStore({ 10766 id: generatedId, 10767 labelId: void 0, 10768 modal, 10769 multiple, 10770 disabled: disabled2, 10771 readOnly, 10772 required, 10773 highlightItemOnHover, 10774 itemToStringLabel, 10775 itemToStringValue, 10776 isItemEqualToValue, 10777 value, 10778 open: open2, 10779 // Seeded with the initial values of `useUnmountAfterClose`, which is called after the 10780 // store because its unmount cleanup writes to it. `useSyncedValues` keeps them in sync. 10781 mounted: open2, 10782 transitionStatus: void 0, 10783 items, 10784 forceMount: false, 10785 openMethod: null, 10786 activeIndex: null, 10787 selectedIndex: null, 10788 popupProps: EMPTY_OBJECT, 10789 triggerProps: EMPTY_OBJECT, 10790 itemRoot: { 10791 props: EMPTY_OBJECT, 10792 multiple, 10793 disabled: disabled2, 10794 readOnly, 10795 isItemEqualToValue 10796 }, 10797 triggerElement: null, 10798 positionerElement: null, 10799 listElement: null, 10800 popupSide: null, 10801 scrollUpArrowVisible: false, 10802 scrollDownArrowVisible: false, 10803 hasScrollArrows: false 10804 }, { 10805 setValue: NOOP, 10806 setOpen: NOOP, 10807 handleScrollArrowVisibility: NOOP, 10808 onOpenChangeComplete: NOOP, 10809 listRef, 10810 popupRef, 10811 scrollHandlerRef, 10812 scrollArrowsMountedCountRef, 10813 valueRef, 10814 valuesRef, 10815 labelsRef, 10816 typingRef, 10817 selectionRef, 10818 firstItemTextRef, 10819 selectedItemTextRef, 10820 alignItemWithTriggerActiveRef, 10821 initialValueRef 10822 }, selectors2)).current; 10823 const [preventUnmountOnClose, setPreventUnmountOnClose] = React70.useState(false); 10824 const { 10825 mounted, 10826 transitionStatus, 10827 forceUnmount: handleUnmount 10828 } = useUnmountAfterClose({ 10829 open: open2, 10830 ref: popupRef, 10831 preventUnmountOnClose, 10832 setPreventUnmountOnClose, 10833 onUnmount() { 10834 store.update({ 10835 activeIndex: null, 10836 openMethod: null, 10837 scrollUpArrowVisible: false, 10838 scrollDownArrowVisible: false 10839 }); 10840 onOpenChangeComplete?.(false); 10841 } 10842 }); 10843 const activeIndex = store.useState("activeIndex"); 10844 const selectedIndex = store.useState("selectedIndex"); 10845 const triggerElement = store.useState("triggerElement"); 10846 const positionerElement = store.useState("positionerElement"); 10847 const previousOpenMethod = usePreviousValue(openMethod); 10848 const renderedOpenMethod = openMethod ?? previousOpenMethod; 10849 const serializedValue = React70.useMemo(() => { 10850 if (multiple) { 10851 return ""; 10852 } 10853 return stringifyAsValue(value, itemToStringValue); 10854 }, [multiple, value, itemToStringValue]); 10855 const fieldStringValue = React70.useMemo(() => { 10856 if (multiple && Array.isArray(value)) { 10857 return value.map((currentValue) => stringifyAsValue(currentValue, itemToStringValue)); 10858 } 10859 return stringifyAsValue(value, itemToStringValue); 10860 }, [multiple, value, itemToStringValue]); 10861 const controlRef = useValueAsRef(triggerElement); 10862 const getStringifiedValueForForm = useStableCallback(() => fieldStringValue); 10863 useRegisterFieldControl(controlRef, generatedId, value, getStringifiedValueForForm, !disabled2, nameProp); 10864 const hasSelectedValue = multiple ? Array.isArray(value) && value.length > 0 : value != null && serializedValue !== ""; 10865 useIsoLayoutEffect(() => { 10866 setFilled(hasSelectedValue); 10867 }, [hasSelectedValue, setFilled]); 10868 useIsoLayoutEffect(function syncSelectedIndex() { 10869 const nextIndex = findSelectionIndex(valuesRef.current, value, isItemEqualToValue, multiple); 10870 if (nextIndex === null) { 10871 selectedItemTextRef.current = null; 10872 } 10873 if (open2) { 10874 return; 10875 } 10876 store.set("selectedIndex", nextIndex); 10877 }, [multiple, open2, value, isItemEqualToValue, store]); 10878 useValueChanged(value, () => { 10879 clearErrors(name16); 10880 setDirty(isSelectedValueDirty(value, validityData.initialValue, isItemEqualToValue)); 10881 validation.change(value); 10882 }); 10883 const setOpen = useStableCallback((nextOpen, eventDetails) => { 10884 const openEventDetails = eventDetails; 10885 const shouldPreventUnmountOnClose = attachPreventUnmountOnClose(openEventDetails); 10886 onOpenChange?.(nextOpen, openEventDetails); 10887 if (eventDetails.isCanceled) { 10888 return; 10889 } 10890 if (!nextOpen) { 10891 setPreventUnmountOnClose(shouldPreventUnmountOnClose()); 10892 } 10893 setOpenUnwrapped(nextOpen); 10894 if (!nextOpen && (eventDetails.reason === reason_parts_exports.focusOut || eventDetails.reason === reason_parts_exports.outsidePress)) { 10895 setTouched(true); 10896 setFocused(false); 10897 if (validationMode === "onBlur") { 10898 validation.commit(value); 10899 } 10900 } 10901 }); 10902 React70.useImperativeHandle(actionsRef, () => ({ 10903 unmount: handleUnmount, 10904 close: () => { 10905 if (store.state.open) { 10906 setOpen(false, createChangeEventDetails(reason_parts_exports.imperativeAction)); 10907 } 10908 } 10909 }), [handleUnmount, setOpen, store]); 10910 const setValue = useStableCallback((nextValue, eventDetails) => { 10911 onValueChange?.(nextValue, eventDetails); 10912 if (eventDetails.isCanceled) { 10913 return; 10914 } 10915 setValueUnwrapped(nextValue); 10916 }); 10917 const handleScrollArrowVisibility = useStableCallback((scroller) => { 10918 const maxScrollTop = getMaxScrollOffset(scroller.scrollHeight, scroller.clientHeight); 10919 const scrollTop = normalizeScrollOffset(scroller.scrollTop, maxScrollTop); 10920 const shouldShowUp = scrollTop > 0; 10921 const shouldShowDown = scrollTop < maxScrollTop; 10922 store.set("scrollUpArrowVisible", shouldShowUp); 10923 store.set("scrollDownArrowVisible", shouldShowDown); 10924 }); 10925 const floatingContext = useFloatingRootContext({ 10926 open: open2, 10927 onOpenChange: setOpen, 10928 elements: { 10929 reference: triggerElement, 10930 floating: positionerElement 10931 } 10932 }); 10933 const click = useClick(floatingContext, { 10934 enabled: !disabled2, 10935 event: "mousedown" 10936 }); 10937 const dismiss = useDismiss(floatingContext); 10938 const listNavigation2 = useListNavigation(floatingContext, { 10939 enabled: !disabled2, 10940 listRef, 10941 activeIndex, 10942 selectedIndex, 10943 disabledIndices: EMPTY_ARRAY, 10944 onNavigate(nextActiveIndex) { 10945 if (nextActiveIndex === null && !open2) { 10946 return; 10947 } 10948 store.set("activeIndex", nextActiveIndex); 10949 }, 10950 focusItemOnHover: highlightItemOnHover 10951 }); 10952 const typeahead = useTypeahead(floatingContext, { 10953 // Typeahead on an open popup only moves the highlight, so it remains available while 10954 // `readOnly`. The closed-trigger variant commits a value instead, so it doesn't. 10955 enabled: !disabled2 && (open2 || !readOnly && !multiple), 10956 listRef: labelsRef, 10957 activeIndex, 10958 selectedIndex, 10959 // Skip disabled items while matching so typeahead advances to the next selectable item 10960 // (a click can never select a disabled item and native `<select>` skips them too). Resolve 10961 // the disabled state from the element via the attribute-only `isElementDisabled` so the 10962 // hidden, force-mounted items used for closed-trigger typeahead aren't dropped by the 10963 // `elementsRef`/visibility filter that `disabledIndices` deliberately sidesteps. 10964 disabledIndices: (index3) => isElementDisabled(listRef.current[index3]), 10965 onMatch(index3) { 10966 if (open2) { 10967 store.set("activeIndex", index3); 10968 } else { 10969 setValue(valuesRef.current[index3], createChangeEventDetails(reason_parts_exports.none)); 10970 } 10971 }, 10972 onTyping(typing) { 10973 typingRef.current = typing; 10974 } 10975 }); 10976 const mergedTriggerProps = React70.useMemo(() => mergeProps(typeahead.reference, listNavigation2.reference, dismiss.reference, click.reference, interactionTypeProps), [click.reference, typeahead.reference, listNavigation2.reference, dismiss.reference, interactionTypeProps]); 10977 const popupProps = React70.useMemo(() => mergeProps(FOCUSABLE_POPUP_PROPS, typeahead.floating, listNavigation2.floating, dismiss.floating), [typeahead.floating, listNavigation2.floating, dismiss.floating]); 10978 const itemProps = listNavigation2.item ?? EMPTY_OBJECT; 10979 const itemRoot = React70.useMemo(() => ({ 10980 props: itemProps, 10981 multiple, 10982 disabled: disabled2, 10983 readOnly, 10984 isItemEqualToValue 10985 }), [itemProps, multiple, disabled2, readOnly, isItemEqualToValue]); 10986 store.useContextCallback("setValue", setValue); 10987 store.useContextCallback("setOpen", setOpen); 10988 store.useContextCallback("handleScrollArrowVisibility", handleScrollArrowVisibility); 10989 store.useContextCallback("onOpenChangeComplete", onOpenChangeComplete); 10990 useOnFirstRender(() => { 10991 store.update({ 10992 popupProps, 10993 triggerProps: mergedTriggerProps, 10994 itemRoot 10995 }); 10996 }); 10997 store.useSyncedValues({ 10998 id: generatedId, 10999 modal, 11000 multiple, 11001 disabled: disabled2, 11002 readOnly, 11003 required, 11004 highlightItemOnHover, 11005 value, 11006 open: open2, 11007 mounted, 11008 transitionStatus, 11009 popupProps, 11010 triggerProps: mergedTriggerProps, 11011 itemRoot, 11012 items, 11013 itemToStringLabel, 11014 itemToStringValue, 11015 isItemEqualToValue, 11016 openMethod: renderedOpenMethod 11017 }); 11018 const ref = useMergedRefs(inputRef, validation.inputRef); 11019 const hiddenInputName = multiple ? void 0 : name16; 11020 const hiddenInputs = React70.useMemo(() => { 11021 if (!multiple || !Array.isArray(value) || !name16) { 11022 return null; 11023 } 11024 return value.map((v) => { 11025 const currentSerializedValue = stringifyAsValue(v, itemToStringValue); 11026 return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("input", { 11027 type: "hidden", 11028 form, 11029 name: name16, 11030 value: currentSerializedValue, 11031 disabled: disabled2 11032 }, currentSerializedValue); 11033 }); 11034 }, [multiple, value, form, name16, itemToStringValue, disabled2]); 11035 return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(SelectRootContext.Provider, { 11036 value: store, 11037 children: [/* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SelectFloatingContext.Provider, { 11038 value: floatingContext, 11039 children 11040 }), /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("input", { 11041 ...validation.getValidationProps(disabled2, { 11042 onFocus() { 11043 store.state.triggerElement?.focus({ 11044 // Supported in Chrome from 144 (January 2026) 11045 focusVisible: true 11046 }); 11047 }, 11048 // Handle browser autofill. 11049 onChange(event) { 11050 if (event.nativeEvent.defaultPrevented || disabled2 || readOnly) { 11051 return; 11052 } 11053 const nextValue = event.currentTarget.value; 11054 const details = createChangeEventDetails(reason_parts_exports.none, event.nativeEvent); 11055 function handleChange() { 11056 if (multiple) { 11057 return; 11058 } 11059 const nextValueLower = nextValue.toLowerCase(); 11060 let matchingIndex = valuesRef.current.findIndex((candidate) => stringifyAsValue(candidate, itemToStringValue).toLowerCase() === nextValueLower || stringifyAsLabel(candidate, itemToStringLabel).toLowerCase() === nextValueLower); 11061 if (matchingIndex === -1) { 11062 matchingIndex = valuesRef.current.findIndex((_, index3) => { 11063 const renderedLabel = labelsRef.current[index3]; 11064 return renderedLabel != null && renderedLabel.toLowerCase() === nextValueLower; 11065 }); 11066 } 11067 const matchingValue = valuesRef.current[matchingIndex]; 11068 if (matchingValue != null) { 11069 setValue(matchingValue, details); 11070 } 11071 } 11072 store.set("forceMount", true); 11073 queueMicrotask(handleChange); 11074 } 11075 }), 11076 id: generatedId && hiddenInputName == null ? `$generatedId}-hidden-input` : void 0, 11077 form, 11078 name: hiddenInputName, 11079 autoComplete, 11080 value: serializedValue, 11081 disabled: disabled2, 11082 required: required && !(multiple && hasSelectedValue), 11083 readOnly, 11084 ref, 11085 style: name16 ? visuallyHiddenInput : visuallyHidden, 11086 tabIndex: -1, 11087 "aria-hidden": true, 11088 suppressHydrationWarning: true 11089 }), hiddenInputs] 11090 }); 11091 } 11092 11093 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/label/SelectLabel.mjs 11094 var React71 = __toESM(require_react(), 1); 11095 var SelectLabel = /* @__PURE__ */ React71.forwardRef(function SelectLabel2(componentProps, forwardedRef) { 11096 const { 11097 render, 11098 className, 11099 style, 11100 ...elementProps 11101 } = componentProps; 11102 const elementPropsWithoutId = elementProps; 11103 delete elementPropsWithoutId.id; 11104 const fieldRootContext = useFieldRootContext(); 11105 const store = useSelectRootContext(); 11106 const triggerElement = store.useState("triggerElement"); 11107 const rootId = store.useState("id"); 11108 const defaultLabelId = getDefaultLabelId(rootId); 11109 const labelProps = useLabel({ 11110 id: defaultLabelId, 11111 fallbackControlId: triggerElement?.id ?? rootId, 11112 setLabelId(nextLabelId) { 11113 const resolvedLabelId = typeof nextLabelId === "function" ? nextLabelId(store.state.labelId) : nextLabelId; 11114 store.set("labelId", resolvedLabelId); 11115 } 11116 }); 11117 return useRenderElement("div", componentProps, { 11118 ref: forwardedRef, 11119 state: fieldRootContext.state, 11120 props: [labelProps, elementProps], 11121 stateAttributesMapping: fieldValidityMapping 11122 }); 11123 }); 11124 if (true) SelectLabel.displayName = "SelectLabel"; 11125 11126 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/trigger/SelectTrigger.mjs 11127 var React72 = __toESM(require_react(), 1); 11128 11129 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/trigger/SelectTriggerDataAttributes.mjs 11130 var popupOpen2 = CommonTriggerDataAttributes_exports.popupOpen; 11131 var pressed2 = CommonTriggerDataAttributes_exports.pressed; 11132 var popupSide = "data-popup-side"; 11133 11134 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/trigger/SelectTrigger.mjs 11135 var SELECTED_DELAY = 400; 11136 var stateAttributesMapping2 = { 11137 ...pressableTriggerOpenStateMapping, 11138 ...fieldValidityMapping, 11139 popupSide: (side) => side ? { 11140 [popupSide]: side 11141 } : null, 11142 value: () => null 11143 }; 11144 var SelectTrigger = /* @__PURE__ */ React72.forwardRef(function SelectTrigger2(componentProps, forwardedRef) { 11145 const { 11146 render, 11147 className, 11148 id: idProp, 11149 disabled: disabledProp = false, 11150 nativeButton = true, 11151 style, 11152 ...elementProps 11153 } = componentProps; 11154 const { 11155 setTouched, 11156 validationMode, 11157 validation, 11158 state: fieldState, 11159 disabled: fieldDisabled 11160 } = useFieldRootContext(); 11161 const { 11162 labelId: fieldLabelId 11163 } = useLabelableContext(); 11164 const store = useSelectRootContext(); 11165 const readOnly = store.useState("readOnly"); 11166 const required = store.useState("required"); 11167 const selectDisabled = store.useState("disabled"); 11168 const disabled2 = fieldDisabled || selectDisabled || disabledProp; 11169 const open2 = store.useState("open"); 11170 const mounted = store.useState("mounted"); 11171 const value = store.useState("value"); 11172 const triggerProps = store.useState("triggerProps"); 11173 const positionerElement = store.useState("positionerElement"); 11174 const listElement = store.useState("listElement"); 11175 const popupSideValue = store.useState("popupSide"); 11176 const rootId = store.useState("id"); 11177 const selectLabelId = store.useState("labelId"); 11178 const hasSelectedValue = store.useState("hasSelectedValue"); 11179 const popupSide2 = mounted && positionerElement ? popupSideValue : null; 11180 const id = idProp ?? rootId; 11181 const ariaLabelledBy = resolveAriaLabelledBy(fieldLabelId, selectLabelId); 11182 useLabelableId({ 11183 id: idProp 11184 }); 11185 const positionerRef = useValueAsRef(positionerElement); 11186 const triggerRef = React72.useRef(null); 11187 const setFocused = useSetFieldFocused(disabled2, triggerRef); 11188 const { 11189 getButtonProps, 11190 buttonRef 11191 } = useButton({ 11192 disabled: disabled2, 11193 native: nativeButton 11194 }); 11195 const setTriggerElement = store.useStateSetter("triggerElement"); 11196 const timeoutFocus = useTimeout(); 11197 const timeoutMouseDown = useTimeout(); 11198 const selectedDelayTimeout = useTimeout(); 11199 React72.useEffect(() => { 11200 if (open2) { 11201 selectedDelayTimeout.start(SELECTED_DELAY, () => { 11202 store.context.selectionRef.current.allowUnselectedMouseUp = true; 11203 store.context.selectionRef.current.allowSelectedMouseUp = true; 11204 }); 11205 return () => { 11206 selectedDelayTimeout.clear(); 11207 }; 11208 } 11209 store.context.selectionRef.current = { 11210 allowSelectedMouseUp: false, 11211 allowUnselectedMouseUp: false, 11212 dragY: 0 11213 }; 11214 timeoutMouseDown.clear(); 11215 return void 0; 11216 }, [open2, store, timeoutMouseDown, selectedDelayTimeout]); 11217 const mergedProps = mergeProps(triggerProps, { 11218 id, 11219 role: "combobox", 11220 "aria-expanded": open2, 11221 "aria-haspopup": "listbox", 11222 "aria-controls": open2 ? listElement?.id ?? getFloatingFocusElement(positionerElement)?.id : void 0, 11223 "aria-labelledby": ariaLabelledBy, 11224 "aria-readonly": readOnly || void 0, 11225 "aria-required": required || void 0, 11226 tabIndex: disabled2 ? -1 : 0, 11227 onFocus(event) { 11228 setFocused(true); 11229 if (open2 && store.context.alignItemWithTriggerActiveRef.current) { 11230 store.context.setOpen(false, createChangeEventDetails(reason_parts_exports.none, event.nativeEvent)); 11231 } 11232 timeoutFocus.start(0, () => { 11233 store.set("forceMount", true); 11234 }); 11235 }, 11236 onBlur(event) { 11237 if (contains(positionerElement, event.relatedTarget)) { 11238 return; 11239 } 11240 setTouched(true); 11241 setFocused(false); 11242 if (validationMode === "onBlur") { 11243 validation.commit(value); 11244 } 11245 }, 11246 onMouseDown(event) { 11247 if (open2) { 11248 return; 11249 } 11250 const doc = ownerDocument(event.currentTarget); 11251 function handleMouseUp(mouseEvent) { 11252 if (!triggerRef.current) { 11253 return; 11254 } 11255 const mouseUpTarget = mouseEvent.target; 11256 if (contains(triggerRef.current, mouseUpTarget) || contains(positionerRef.current, mouseUpTarget)) { 11257 return; 11258 } 11259 if (isMouseWithinBounds(mouseEvent, triggerRef.current)) { 11260 return; 11261 } 11262 store.context.setOpen(false, createChangeEventDetails(reason_parts_exports.cancelOpen, mouseEvent)); 11263 } 11264 timeoutMouseDown.start(0, () => { 11265 doc.addEventListener("mouseup", handleMouseUp, { 11266 once: true 11267 }); 11268 }); 11269 } 11270 }, elementProps, getButtonProps); 11271 const props = validation.getValidationProps(disabled2, mergedProps); 11272 props.role = "combobox"; 11273 const state = { 11274 ...fieldState, 11275 open: open2, 11276 disabled: disabled2, 11277 value, 11278 readOnly, 11279 popupSide: popupSide2, 11280 placeholder: !hasSelectedValue 11281 }; 11282 return useRenderElement("button", componentProps, { 11283 ref: [forwardedRef, triggerRef, buttonRef, setTriggerElement], 11284 state, 11285 stateAttributesMapping: stateAttributesMapping2, 11286 props 11287 }); 11288 }); 11289 if (true) SelectTrigger.displayName = "SelectTrigger"; 11290 11291 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/value/SelectValue.mjs 11292 var React73 = __toESM(require_react(), 1); 11293 var stateAttributesMapping3 = { 11294 value: () => null 11295 }; 11296 var SelectValue = /* @__PURE__ */ React73.forwardRef(function SelectValue2(componentProps, forwardedRef) { 11297 const { 11298 className, 11299 render, 11300 children: childrenProp, 11301 placeholder, 11302 style, 11303 ...elementProps 11304 } = componentProps; 11305 const store = useSelectRootContext(); 11306 const value = store.useState("value"); 11307 const items = store.useState("items"); 11308 const itemToStringLabel = store.useState("itemToStringLabel"); 11309 const hasSelectedValue = store.useState("hasSelectedValue"); 11310 const shouldCheckNullItemLabel = !hasSelectedValue && placeholder != null && childrenProp == null; 11311 const hasNullLabel = store.useState("hasNullItemLabel", shouldCheckNullItemLabel); 11312 const state = { 11313 value, 11314 placeholder: !hasSelectedValue 11315 }; 11316 let children = null; 11317 if (typeof childrenProp === "function") { 11318 children = childrenProp(value); 11319 } else if (childrenProp != null) { 11320 children = childrenProp; 11321 } else if (shouldCheckNullItemLabel && !hasNullLabel) { 11322 children = placeholder; 11323 } else if (Array.isArray(value)) { 11324 children = resolveMultipleLabels(value, items, itemToStringLabel); 11325 } else { 11326 children = resolveSelectedLabel(value, items, itemToStringLabel); 11327 } 11328 const element = useRenderElement("span", componentProps, { 11329 state, 11330 ref: [forwardedRef, store.context.valueRef], 11331 props: [{ 11332 children 11333 }, elementProps], 11334 stateAttributesMapping: stateAttributesMapping3 11335 }); 11336 return element; 11337 }); 11338 if (true) SelectValue.displayName = "SelectValue"; 11339 11340 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/icon/SelectIcon.mjs 11341 var React74 = __toESM(require_react(), 1); 11342 var SelectIcon = /* @__PURE__ */ React74.forwardRef(function SelectIcon2(componentProps, forwardedRef) { 11343 const { 11344 render, 11345 className, 11346 style, 11347 ...elementProps 11348 } = componentProps; 11349 const store = useSelectRootContext(); 11350 const open2 = store.useState("open"); 11351 const state = { 11352 open: open2 11353 }; 11354 const element = useRenderElement("span", componentProps, { 11355 state, 11356 ref: forwardedRef, 11357 props: [{ 11358 "aria-hidden": true, 11359 children: "\u25BC" 11360 }, elementProps], 11361 stateAttributesMapping: triggerOpenStateMapping 11362 }); 11363 return element; 11364 }); 11365 if (true) SelectIcon.displayName = "SelectIcon"; 11366 11367 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/portal/SelectPortal.mjs 11368 var React75 = __toESM(require_react(), 1); 11369 var import_jsx_runtime39 = __toESM(require_jsx_runtime(), 1); 11370 var SelectPortal = /* @__PURE__ */ React75.forwardRef(function SelectPortal2(portalProps, forwardedRef) { 11371 const store = useSelectRootContext(); 11372 const mounted = store.useState("mounted"); 11373 const forceMount = store.useState("forceMount"); 11374 const shouldRender = mounted || forceMount; 11375 if (!shouldRender) { 11376 return null; 11377 } 11378 return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(FloatingPortal, { 11379 ref: forwardedRef, 11380 ...portalProps 11381 }); 11382 }); 11383 if (true) SelectPortal.displayName = "SelectPortal"; 11384 11385 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/backdrop/SelectBackdrop.mjs 11386 var React76 = __toESM(require_react(), 1); 11387 var stateAttributesMapping4 = { 11388 ...popupStateMapping, 11389 ...transitionStatusMapping 11390 }; 11391 var SelectBackdrop = /* @__PURE__ */ React76.forwardRef(function SelectBackdrop2(componentProps, forwardedRef) { 11392 const { 11393 render, 11394 className, 11395 style, 11396 ...elementProps 11397 } = componentProps; 11398 const store = useSelectRootContext(); 11399 const open2 = store.useState("open"); 11400 const mounted = store.useState("mounted"); 11401 const transitionStatus = store.useState("transitionStatus"); 11402 const state = { 11403 open: open2, 11404 transitionStatus 11405 }; 11406 const element = useRenderElement("div", componentProps, { 11407 state, 11408 ref: forwardedRef, 11409 props: [{ 11410 role: "presentation", 11411 hidden: !mounted, 11412 style: { 11413 userSelect: "none", 11414 WebkitUserSelect: "none" 11415 } 11416 }, elementProps], 11417 stateAttributesMapping: stateAttributesMapping4 11418 }); 11419 return element; 11420 }); 11421 if (true) SelectBackdrop.displayName = "SelectBackdrop"; 11422 11423 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/positioner/SelectPositioner.mjs 11424 var React78 = __toESM(require_react(), 1); 11425 11426 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/positioner/SelectPositionerContext.mjs 11427 var React77 = __toESM(require_react(), 1); 11428 var SelectPositionerContext = /* @__PURE__ */ React77.createContext(void 0); 11429 if (true) SelectPositionerContext.displayName = "SelectPositionerContext"; 11430 function useSelectPositionerContext() { 11431 const context = React77.useContext(SelectPositionerContext); 11432 if (!context) { 11433 throw new Error(true ? "Base UI: SelectPositionerContext is missing. SelectPositioner parts must be placed within <Select.Positioner>." : formatErrorMessage_default(59)); 11434 } 11435 return context; 11436 } 11437 11438 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/popup/utils.mjs 11439 function clearStyles(element, originalStyles) { 11440 if (element) { 11441 Object.assign(element.style, originalStyles); 11442 } 11443 } 11444 var LIST_FUNCTIONAL_STYLES = { 11445 position: "relative", 11446 maxHeight: "100%", 11447 overflowX: "hidden", 11448 overflowY: "auto" 11449 }; 11450 11451 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/positioner/SelectPositioner.mjs 11452 var import_jsx_runtime40 = __toESM(require_jsx_runtime(), 1); 11453 var FIXED = { 11454 position: "fixed" 11455 }; 11456 var SelectPositioner = /* @__PURE__ */ React78.forwardRef(function SelectPositioner2(componentProps, forwardedRef) { 11457 const { 11458 anchor, 11459 className, 11460 render, 11461 // `useAnchorPositioning` applies the same defaults to the undefined values; the names 11462 // remain destructured to exclude the props from `elementProps`. 11463 positionMethod, 11464 side, 11465 align, 11466 sideOffset, 11467 alignOffset, 11468 collisionBoundary = "clipping-ancestors", 11469 collisionPadding, 11470 arrowPadding, 11471 sticky, 11472 disableAnchorTracking, 11473 alignItemWithTrigger = true, 11474 collisionAvoidance = DROPDOWN_COLLISION_AVOIDANCE, 11475 style, 11476 ...elementProps 11477 } = componentProps; 11478 const store = useSelectRootContext(); 11479 const floatingRootContext = useSelectFloatingContext(); 11480 const open2 = store.useState("open"); 11481 const mounted = store.useState("mounted"); 11482 const modal = store.useState("modal"); 11483 const value = store.useState("value"); 11484 const openMethod = store.useState("openMethod"); 11485 const positionerElement = store.useState("positionerElement"); 11486 const triggerElement = store.useState("triggerElement"); 11487 const isItemEqualToValue = store.useState("isItemEqualToValue"); 11488 const transitionStatus = store.useState("transitionStatus"); 11489 const scrollUpArrowRef = React78.useRef(null); 11490 const scrollDownArrowRef = React78.useRef(null); 11491 const [controlledAlignItemWithTrigger, setControlledAlignItemWithTrigger] = React78.useState(alignItemWithTrigger); 11492 const alignItemWithTriggerActive = mounted && controlledAlignItemWithTrigger && openMethod !== "touch"; 11493 if (!mounted && controlledAlignItemWithTrigger !== alignItemWithTrigger) { 11494 setControlledAlignItemWithTrigger(alignItemWithTrigger); 11495 } 11496 React78.useImperativeHandle(store.context.alignItemWithTriggerActiveRef, () => alignItemWithTriggerActive); 11497 useAnchoredPopupScrollLock((alignItemWithTriggerActive || modal) && open2, openMethod === "touch", positionerElement, triggerElement); 11498 const positioning = useAnchorPositioning({ 11499 anchor, 11500 floatingRootContext, 11501 positionMethod, 11502 mounted, 11503 side, 11504 sideOffset, 11505 align, 11506 alignOffset, 11507 arrowPadding, 11508 collisionBoundary, 11509 collisionPadding, 11510 sticky, 11511 disableAnchorTracking: disableAnchorTracking ?? alignItemWithTriggerActive, 11512 collisionAvoidance, 11513 keepMounted: true 11514 }); 11515 const renderedSide = alignItemWithTriggerActive ? "none" : positioning.side; 11516 const positionerStyles = alignItemWithTriggerActive ? FIXED : positioning.positionerStyles; 11517 const state = { 11518 open: open2, 11519 side: renderedSide, 11520 align: positioning.align, 11521 anchorHidden: positioning.anchorHidden 11522 }; 11523 useIsoLayoutEffect(() => { 11524 store.set("popupSide", positioning.side); 11525 }, [store, positioning.side]); 11526 const setPositionerElement = store.useStateSetter("positionerElement"); 11527 const element = usePositioner(componentProps, state, { 11528 styles: positionerStyles, 11529 transitionStatus, 11530 props: elementProps, 11531 refs: [forwardedRef, setPositionerElement], 11532 hidden: !mounted, 11533 inert: !open2 11534 }); 11535 const prevMapSizeRef = React78.useRef(0); 11536 const onMapChange = useStableCallback((map) => { 11537 if (store.context.valuesRef.current.length === 0) { 11538 return; 11539 } 11540 const prevSize = prevMapSizeRef.current; 11541 prevMapSizeRef.current = map.size; 11542 const eventDetails = createChangeEventDetails(reason_parts_exports.none); 11543 if (prevSize !== 0 && !store.state.multiple && value !== null) { 11544 const selectedValueIndex = findItemIndex(store.context.valuesRef.current, value, isItemEqualToValue); 11545 if (selectedValueIndex === -1) { 11546 const initialSelectedValue = store.context.initialValueRef.current; 11547 const hasInitial = initialSelectedValue != null && findItemIndex(store.context.valuesRef.current, initialSelectedValue, isItemEqualToValue) !== -1; 11548 const nextValue = hasInitial ? initialSelectedValue : null; 11549 store.context.setValue(nextValue, eventDetails); 11550 if (nextValue === null) { 11551 store.set("selectedIndex", null); 11552 store.context.selectedItemTextRef.current = null; 11553 } 11554 } 11555 } 11556 if (prevSize !== 0 && store.state.multiple && Array.isArray(value)) { 11557 const nextValue = value.filter((selectedItemValue) => findItemIndex(store.context.valuesRef.current, selectedItemValue, isItemEqualToValue) !== -1); 11558 if (nextValue.length !== value.length) { 11559 store.context.setValue(nextValue, eventDetails); 11560 if (nextValue.length === 0) { 11561 store.set("selectedIndex", null); 11562 store.context.selectedItemTextRef.current = null; 11563 } 11564 } 11565 } 11566 if (open2 && alignItemWithTriggerActive) { 11567 store.update({ 11568 scrollUpArrowVisible: false, 11569 scrollDownArrowVisible: false 11570 }); 11571 const stylesToClear = { 11572 height: "" 11573 }; 11574 clearStyles(positionerElement, stylesToClear); 11575 clearStyles(store.context.popupRef.current, stylesToClear); 11576 } 11577 }); 11578 const contextValue = React78.useMemo(() => ({ 11579 ...positioning, 11580 side: renderedSide, 11581 alignItemWithTriggerActive, 11582 setControlledAlignItemWithTrigger, 11583 scrollUpArrowRef, 11584 scrollDownArrowRef 11585 }), [positioning, renderedSide, alignItemWithTriggerActive, setControlledAlignItemWithTrigger]); 11586 return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(CompositeList, { 11587 elementsRef: store.context.listRef, 11588 labelsRef: store.context.labelsRef, 11589 onMapChange, 11590 children: /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(SelectPositionerContext.Provider, { 11591 value: contextValue, 11592 children: [mounted && modal && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(InternalBackdrop, { 11593 inert: inertValue(!open2), 11594 cutout: triggerElement 11595 }), element] 11596 }) 11597 }); 11598 }); 11599 if (true) SelectPositioner.displayName = "SelectPositioner"; 11600 11601 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/popup/SelectPopup.mjs 11602 var React79 = __toESM(require_react(), 1); 11603 11604 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/positioner/SelectPositionerCssVars.mjs 11605 var transformOrigin2 = "--transform-origin"; 11606 11607 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/popup/SelectPopup.mjs 11608 var import_jsx_runtime41 = __toESM(require_jsx_runtime(), 1); 11609 var stateAttributesMapping5 = { 11610 ...popupStateMapping, 11611 ...transitionStatusMapping 11612 }; 11613 var SelectPopup = /* @__PURE__ */ React79.forwardRef(function SelectPopup2(componentProps, forwardedRef) { 11614 const { 11615 render, 11616 className, 11617 style, 11618 finalFocus, 11619 ...elementProps 11620 } = componentProps; 11621 const store = useSelectRootContext(); 11622 const multiple = store.useState("multiple"); 11623 const readOnly = store.useState("readOnly"); 11624 const highlightItemOnHover = store.useState("highlightItemOnHover"); 11625 const floatingRootContext = useSelectFloatingContext(); 11626 const { 11627 side, 11628 align, 11629 alignItemWithTriggerActive, 11630 isPositioned, 11631 setControlledAlignItemWithTrigger 11632 } = useSelectPositionerContext(); 11633 const insideToolbar = useToolbarRootContext(true) != null; 11634 const direction = useDirection(); 11635 const { 11636 nonce, 11637 disableStyleElements 11638 } = useCSPContext(); 11639 const id = store.useState("id"); 11640 const open2 = store.useState("open"); 11641 const openMethod = store.useState("openMethod"); 11642 const mounted = store.useState("mounted"); 11643 const popupProps = store.useState("popupProps"); 11644 const transitionStatus = store.useState("transitionStatus"); 11645 const triggerElement = store.useState("triggerElement"); 11646 const positionerElement = store.useState("positionerElement"); 11647 const listElement = store.useState("listElement"); 11648 const reachedMaxHeightRef = React79.useRef(false); 11649 const initialPlacedRef = React79.useRef(false); 11650 const originalPositionerStylesRef = React79.useRef({}); 11651 const scrollArrowFrame = useAnimationFrame(); 11652 const handleScroll = useStableCallback((scroller) => { 11653 if (!positionerElement || !store.context.popupRef.current || !initialPlacedRef.current) { 11654 return; 11655 } 11656 const isTopPositioned = positionerElement.style.top === "0px"; 11657 const isBottomPositioned = positionerElement.style.bottom === "0px"; 11658 if (reachedMaxHeightRef.current || !alignItemWithTriggerActive || !isTopPositioned && !isBottomPositioned) { 11659 store.context.handleScrollArrowVisibility(scroller); 11660 return; 11661 } 11662 const scale = getScale2(positionerElement); 11663 const currentHeight = normalizeSize(positionerElement.getBoundingClientRect().height, "y", scale); 11664 const doc = ownerDocument(positionerElement); 11665 const win = getWindow(positionerElement); 11666 const positionerStyles = win.getComputedStyle(positionerElement); 11667 const marginTop = parseFloat(positionerStyles.marginTop); 11668 const marginBottom = parseFloat(positionerStyles.marginBottom); 11669 const maxPopupHeight = getMaxPopupHeight(win.getComputedStyle(store.context.popupRef.current)); 11670 const maxAvailableHeight = Math.min(doc.documentElement.clientHeight - marginTop - marginBottom, maxPopupHeight); 11671 const scrollTop = scroller.scrollTop; 11672 const maxScrollTop = getMaxScrollTop(scroller); 11673 let nextScrollTop = null; 11674 const setHeight = (height) => { 11675 positionerElement.style.height = `$height}px`; 11676 }; 11677 const diff = isTopPositioned ? maxScrollTop - scrollTop : scrollTop; 11678 const nextHeight = Math.min(currentHeight + diff, maxAvailableHeight); 11679 if (diff <= SCROLL_EDGE_TOLERANCE_PX) { 11680 const heightDelta = clamp2(diff, 0, maxAvailableHeight - currentHeight); 11681 if (heightDelta > 0) { 11682 setHeight(currentHeight + heightDelta); 11683 } 11684 scroller.scrollTop = isTopPositioned ? maxScrollTop : 0; 11685 if (maxAvailableHeight - (currentHeight + heightDelta) <= SCROLL_EDGE_TOLERANCE_PX) { 11686 reachedMaxHeightRef.current = true; 11687 } 11688 store.context.handleScrollArrowVisibility(scroller); 11689 return; 11690 } 11691 if (maxAvailableHeight - nextHeight > SCROLL_EDGE_TOLERANCE_PX) { 11692 nextScrollTop = isTopPositioned ? Infinity : 0; 11693 } else if (isBottomPositioned && scrollTop < maxScrollTop) { 11694 const overshoot = currentHeight + diff - maxAvailableHeight; 11695 nextScrollTop = scrollTop - (diff - overshoot); 11696 } 11697 const nextPositionerHeight = Math.ceil(nextHeight); 11698 if (nextPositionerHeight !== 0) { 11699 setHeight(nextPositionerHeight); 11700 } 11701 if (nextScrollTop != null) { 11702 const target = clamp2(nextScrollTop, 0, getMaxScrollTop(scroller)); 11703 if (Math.abs(scroller.scrollTop - target) > SCROLL_EDGE_TOLERANCE_PX) { 11704 scroller.scrollTop = target; 11705 } 11706 } 11707 if (nextPositionerHeight >= maxAvailableHeight - SCROLL_EDGE_TOLERANCE_PX) { 11708 reachedMaxHeightRef.current = true; 11709 } 11710 store.context.handleScrollArrowVisibility(scroller); 11711 }); 11712 React79.useImperativeHandle(store.context.scrollHandlerRef, () => handleScroll, [handleScroll]); 11713 useOpenChangeComplete({ 11714 open: open2, 11715 ref: store.context.popupRef, 11716 onComplete() { 11717 if (open2) { 11718 store.context.onOpenChangeComplete(true); 11719 } 11720 } 11721 }); 11722 const state = { 11723 open: open2, 11724 transitionStatus, 11725 side, 11726 align 11727 }; 11728 useIsoLayoutEffect(() => { 11729 if (!positionerElement || !store.context.popupRef.current || Object.keys(originalPositionerStylesRef.current).length) { 11730 return; 11731 } 11732 originalPositionerStylesRef.current = { 11733 top: positionerElement.style.top || "0", 11734 left: positionerElement.style.left || "0", 11735 right: positionerElement.style.right, 11736 height: positionerElement.style.height, 11737 bottom: positionerElement.style.bottom, 11738 minHeight: positionerElement.style.minHeight, 11739 maxHeight: positionerElement.style.maxHeight, 11740 marginTop: positionerElement.style.marginTop, 11741 marginBottom: positionerElement.style.marginBottom 11742 }; 11743 }, [store, positionerElement]); 11744 useIsoLayoutEffect(() => { 11745 if (open2 || alignItemWithTriggerActive) { 11746 return; 11747 } 11748 initialPlacedRef.current = false; 11749 reachedMaxHeightRef.current = false; 11750 clearStyles(positionerElement, originalPositionerStylesRef.current); 11751 }, [open2, alignItemWithTriggerActive, positionerElement]); 11752 useIsoLayoutEffect(() => { 11753 const popupElement = store.context.popupRef.current; 11754 if (!open2 || !triggerElement || !positionerElement || !popupElement || alignItemWithTriggerActive && !isPositioned || store.state.transitionStatus === "ending") { 11755 return; 11756 } 11757 initialPlacedRef.current = true; 11758 popupElement.style.removeProperty(transformOrigin2); 11759 if (!alignItemWithTriggerActive) { 11760 scrollArrowFrame.request(() => store.context.handleScrollArrowVisibility(listElement || popupElement)); 11761 return; 11762 } 11763 const restoreTransformStyles = unsetTransformStyles(popupElement); 11764 try { 11765 let textElement = store.context.selectedItemTextRef.current; 11766 if (!textElement?.isConnected) { 11767 const hasSelectedValue = store.select("hasSelectedValue"); 11768 textElement = !hasSelectedValue && store.context.firstItemTextRef.current?.isConnected ? store.context.firstItemTextRef.current : null; 11769 } 11770 const valueElement = store.context.valueRef.current; 11771 const win = getWindow(positionerElement); 11772 const positionerStyles = win.getComputedStyle(positionerElement); 11773 const popupStyles = win.getComputedStyle(popupElement); 11774 const doc = ownerDocument(triggerElement); 11775 const scale = getScale2(triggerElement); 11776 const triggerRect = normalizeRect(triggerElement.getBoundingClientRect(), scale); 11777 const positionerRect = normalizeRect(positionerElement.getBoundingClientRect(), scale); 11778 const triggerHeight = triggerRect.height; 11779 const scroller = listElement || popupElement; 11780 const scrollHeight = scroller.scrollHeight; 11781 const borderBottom = parseFloat(popupStyles.borderBottomWidth); 11782 const marginTop = parseFloat(positionerStyles.marginTop) || 10; 11783 const marginBottom = parseFloat(positionerStyles.marginBottom) || 10; 11784 const minHeight = parseFloat(positionerStyles.minHeight) || 100; 11785 const maxPopupHeight = getMaxPopupHeight(popupStyles); 11786 const paddingLeft = 5; 11787 const paddingRight = 5; 11788 const triggerCollisionThreshold = 20; 11789 const viewportHeight = doc.documentElement.clientHeight - marginTop - marginBottom; 11790 const viewportWidth = doc.documentElement.clientWidth; 11791 const availableSpaceBeneathTrigger = viewportHeight - triggerRect.bottom + triggerHeight; 11792 let textRect; 11793 let alignedLeft = direction === "rtl" ? triggerRect.right - positionerRect.width : triggerRect.left; 11794 let offsetY = 0; 11795 if (textElement && valueElement) { 11796 const valueRect = normalizeRect(valueElement.getBoundingClientRect(), scale); 11797 textRect = normalizeRect(textElement.getBoundingClientRect(), scale); 11798 alignedLeft = positionerRect.left + (direction === "rtl" ? valueRect.right - textRect.right : valueRect.left - textRect.left); 11799 const valueCenterFromTriggerTop = valueRect.top - triggerRect.top + valueRect.height / 2; 11800 const textCenterFromPositionerTop = textRect.top - positionerRect.top + textRect.height / 2; 11801 offsetY = textCenterFromPositionerTop - valueCenterFromTriggerTop; 11802 } 11803 const idealHeight = availableSpaceBeneathTrigger + offsetY + marginBottom + borderBottom; 11804 let height = Math.min(viewportHeight, idealHeight); 11805 const maxHeight = viewportHeight - marginTop - marginBottom; 11806 const scrollTop = idealHeight - height; 11807 const maxRight = viewportWidth - paddingRight; 11808 positionerElement.style.left = `$clamp2(alignedLeft, paddingLeft, maxRight - positionerRect.width)}px`; 11809 positionerElement.style.height = `$height}px`; 11810 positionerElement.style.maxHeight = "none"; 11811 positionerElement.style.marginTop = `$marginTop}px`; 11812 positionerElement.style.marginBottom = `$marginBottom}px`; 11813 popupElement.style.height = "100%"; 11814 const maxScrollTop = getMaxScrollTop(scroller); 11815 const isTopPositioned = scrollTop >= maxScrollTop - SCROLL_EDGE_TOLERANCE_PX; 11816 if (isTopPositioned) { 11817 height = Math.min(viewportHeight, positionerRect.height) - (scrollTop - maxScrollTop); 11818 } 11819 const fallbackToAlignPopupToTrigger = triggerRect.top < triggerCollisionThreshold || triggerRect.bottom > viewportHeight - triggerCollisionThreshold || Math.ceil(height) + SCROLL_EDGE_TOLERANCE_PX < Math.min(scrollHeight, minHeight); 11820 const isPinchZoomed = (win.visualViewport?.scale ?? 1) !== 1 && parts_exports.engine.webkit; 11821 if (fallbackToAlignPopupToTrigger || isPinchZoomed) { 11822 clearStyles(positionerElement, originalPositionerStylesRef.current); 11823 setControlledAlignItemWithTrigger(false); 11824 return; 11825 } 11826 const initialHeight = Math.max(minHeight, height); 11827 if (isTopPositioned) { 11828 const topOffset = Math.max(0, viewportHeight - idealHeight); 11829 positionerElement.style.top = positionerRect.height >= maxHeight ? "0" : `$topOffset}px`; 11830 positionerElement.style.height = `$height}px`; 11831 scroller.scrollTop = getMaxScrollTop(scroller); 11832 } else { 11833 positionerElement.style.bottom = "0"; 11834 scroller.scrollTop = scrollTop; 11835 } 11836 if (textRect) { 11837 const popupTop = positionerRect.top; 11838 const popupHeight = positionerRect.height; 11839 const textCenterY = textRect.top + textRect.height / 2; 11840 const clampedY = clamp2(popupHeight > 0 ? (textCenterY - popupTop) / popupHeight * 100 : 50, 0, 100); 11841 popupElement.style.setProperty(transformOrigin2, `50% $clampedY}%`); 11842 } 11843 if (initialHeight === viewportHeight || height >= maxPopupHeight) { 11844 reachedMaxHeightRef.current = true; 11845 } 11846 store.context.handleScrollArrowVisibility(scroller); 11847 if (highlightItemOnHover && store.state.selectedIndex === null && store.state.activeIndex === null && store.context.listRef.current[0] != null) { 11848 store.set("activeIndex", 0); 11849 } 11850 } finally { 11851 restoreTransformStyles(); 11852 } 11853 }, [store, open2, positionerElement, triggerElement, alignItemWithTriggerActive, setControlledAlignItemWithTrigger, scrollArrowFrame, listElement, highlightItemOnHover, direction, isPositioned]); 11854 React79.useEffect(() => { 11855 if (!alignItemWithTriggerActive || !positionerElement || !open2) { 11856 return void 0; 11857 } 11858 const win = getWindow(positionerElement); 11859 function handleResize(event) { 11860 store.context.setOpen(false, createChangeEventDetails(reason_parts_exports.windowResize, event)); 11861 } 11862 return addEventListener(win, "resize", handleResize); 11863 }, [store, alignItemWithTriggerActive, positionerElement, open2]); 11864 const defaultProps = { 11865 ...listElement ? { 11866 role: "presentation" 11867 } : { 11868 role: "listbox", 11869 "aria-multiselectable": multiple || void 0, 11870 "aria-readonly": readOnly || void 0, 11871 id: `$id}-list` 11872 }, 11873 onKeyDown(event) { 11874 if (insideToolbar && COMPOSITE_KEYS.has(event.key)) { 11875 event.stopPropagation(); 11876 } 11877 }, 11878 onScroll(event) { 11879 if (listElement) { 11880 return; 11881 } 11882 handleScroll(event.currentTarget); 11883 }, 11884 ...alignItemWithTriggerActive && { 11885 style: listElement ? { 11886 height: "100%" 11887 } : LIST_FUNCTIONAL_STYLES 11888 }, 11889 className: !listElement && alignItemWithTriggerActive ? styleDisableScrollbar.className : void 0 11890 }; 11891 const element = useRenderElement("div", componentProps, { 11892 ref: [forwardedRef, store.context.popupRef], 11893 state, 11894 stateAttributesMapping: stateAttributesMapping5, 11895 props: [popupProps, defaultProps, getDisabledMountTransitionStyles(transitionStatus), elementProps] 11896 }); 11897 return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(React79.Fragment, { 11898 children: [!disableStyleElements && styleDisableScrollbar.getElement(nonce), /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(FloatingFocusManager, { 11899 context: floatingRootContext, 11900 modal: false, 11901 disabled: !mounted, 11902 openInteractionType: openMethod, 11903 returnFocus: finalFocus, 11904 restoreFocus: true, 11905 children: element 11906 })] 11907 }); 11908 }); 11909 if (true) SelectPopup.displayName = "SelectPopup"; 11910 function getMaxPopupHeight(popupStyles) { 11911 const maxHeightStyle = popupStyles.maxHeight; 11912 return maxHeightStyle.endsWith("px") ? parseFloat(maxHeightStyle) || Infinity : Infinity; 11913 } 11914 function getMaxScrollTop(scroller) { 11915 return getMaxScrollOffset(scroller.scrollHeight, scroller.clientHeight); 11916 } 11917 function getScale2(element) { 11918 return platform2.getScale(element); 11919 } 11920 function normalizeSize(size4, axis, scale) { 11921 return size4 / scale[axis]; 11922 } 11923 function normalizeRect(rect, scale) { 11924 return rectToClientRect({ 11925 x: normalizeSize(rect.x, "x", scale), 11926 y: normalizeSize(rect.y, "y", scale), 11927 width: normalizeSize(rect.width, "x", scale), 11928 height: normalizeSize(rect.height, "y", scale) 11929 }); 11930 } 11931 var TRANSFORM_STYLE_RESETS = [["transform", "none"], ["scale", "1"], ["translate", "0 0"]]; 11932 function unsetTransformStyles(popupElement) { 11933 const { 11934 style 11935 } = popupElement; 11936 const originalStyles = {}; 11937 for (const [property, value] of TRANSFORM_STYLE_RESETS) { 11938 originalStyles[property] = style.getPropertyValue(property); 11939 style.setProperty(property, value, "important"); 11940 } 11941 return () => { 11942 for (const [property] of TRANSFORM_STYLE_RESETS) { 11943 const originalValue = originalStyles[property]; 11944 if (originalValue) { 11945 style.setProperty(property, originalValue); 11946 } else { 11947 style.removeProperty(property); 11948 } 11949 } 11950 }; 11951 } 11952 11953 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/list/SelectList.mjs 11954 var React80 = __toESM(require_react(), 1); 11955 var SelectList = /* @__PURE__ */ React80.forwardRef(function SelectList2(componentProps, forwardedRef) { 11956 const { 11957 render, 11958 className, 11959 style, 11960 ...elementProps 11961 } = componentProps; 11962 const store = useSelectRootContext(); 11963 const multiple = store.useState("multiple"); 11964 const readOnly = store.useState("readOnly"); 11965 const { 11966 alignItemWithTriggerActive 11967 } = useSelectPositionerContext(); 11968 const hasScrollArrows = store.useState("hasScrollArrows"); 11969 const openMethod = store.useState("openMethod"); 11970 const id = store.useState("id"); 11971 const defaultProps = { 11972 id: `$id}-list`, 11973 role: "listbox", 11974 "aria-multiselectable": multiple || void 0, 11975 "aria-readonly": readOnly || void 0, 11976 onScroll(event) { 11977 store.context.scrollHandlerRef.current?.(event.currentTarget); 11978 }, 11979 ...alignItemWithTriggerActive && { 11980 style: LIST_FUNCTIONAL_STYLES 11981 }, 11982 className: hasScrollArrows && openMethod !== "touch" ? styleDisableScrollbar.className : void 0 11983 }; 11984 const setListElement = store.useStateSetter("listElement"); 11985 return useRenderElement("div", componentProps, { 11986 ref: [forwardedRef, setListElement], 11987 props: [defaultProps, elementProps] 11988 }); 11989 }); 11990 if (true) SelectList.displayName = "SelectList"; 11991 11992 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/item/SelectItem.mjs 11993 var React82 = __toESM(require_react(), 1); 11994 11995 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/item/SelectItemContext.mjs 11996 var React81 = __toESM(require_react(), 1); 11997 var SelectItemContext = /* @__PURE__ */ React81.createContext(void 0); 11998 if (true) SelectItemContext.displayName = "SelectItemContext"; 11999 function useSelectItemContext() { 12000 const context = React81.useContext(SelectItemContext); 12001 if (!context) { 12002 throw new Error(true ? "Base UI: SelectItemContext is missing. SelectItem parts must be placed within <Select.Item>." : formatErrorMessage_default(57)); 12003 } 12004 return context; 12005 } 12006 12007 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/item/SelectItem.mjs 12008 var import_jsx_runtime42 = __toESM(require_jsx_runtime(), 1); 12009 var SelectItem = /* @__PURE__ */ React82.memo(/* @__PURE__ */ React82.forwardRef(function SelectItem2(componentProps, forwardedRef) { 12010 const { 12011 render, 12012 className, 12013 style, 12014 value: itemValue = null, 12015 label, 12016 disabled: disabledProp = false, 12017 nativeButton = false, 12018 ...elementProps 12019 } = componentProps; 12020 const textRef = React82.useRef(null); 12021 const listItem = useCompositeListItem({ 12022 guess: true, 12023 label, 12024 textRef 12025 }); 12026 const store = useSelectRootContext(); 12027 const { 12028 props: itemProps, 12029 multiple, 12030 disabled: selectDisabled, 12031 readOnly, 12032 isItemEqualToValue 12033 } = store.useState("itemRoot"); 12034 const disabled2 = selectDisabled || disabledProp; 12035 const highlighted = store.useState("isActive", listItem.index); 12036 const open2 = store.useState("open"); 12037 const selected = store.useState("isSelected", itemValue); 12038 const selectedByFocus = store.useState("isSelectedByFocus", listItem.index); 12039 const index3 = listItem.index; 12040 const itemRef = React82.useRef(null); 12041 useIsoLayoutEffect(() => { 12042 const values = store.context.valuesRef.current; 12043 values[index3] = itemValue; 12044 return () => { 12045 delete values[index3]; 12046 }; 12047 }, [index3, itemValue, store]); 12048 useIsoLayoutEffect(() => { 12049 const selectedValue = store.state.value; 12050 const currentIndex = store.state.selectedIndex; 12051 let nextIndex = currentIndex; 12052 let claims; 12053 if (multiple && Array.isArray(selectedValue)) { 12054 nextIndex = resolveSelectedIndex(index3, itemValue, store.context.valuesRef.current, selectedValue, isItemEqualToValue, currentIndex); 12055 claims = nextIndex === index3; 12056 if (index3 === currentIndex && !claims) { 12057 store.context.selectedItemTextRef.current = null; 12058 } 12059 } else { 12060 claims = selectedValue !== void 0 && compareItemEquality(itemValue, selectedValue, isItemEqualToValue); 12061 if (claims) { 12062 nextIndex = index3; 12063 } 12064 } 12065 store.set("selectedIndex", nextIndex); 12066 if (claims && textRef.current) { 12067 store.context.selectedItemTextRef.current = textRef.current; 12068 } 12069 }, [index3, multiple, isItemEqualToValue, store, itemValue]); 12070 const pointerTypeRef = React82.useRef("mouse"); 12071 const allowMouseSelectionRef = React82.useRef(false); 12072 const { 12073 getButtonProps, 12074 buttonRef 12075 } = useButton({ 12076 disabled: disabled2, 12077 focusableWhenDisabled: true, 12078 native: nativeButton, 12079 composite: true 12080 }); 12081 const state = { 12082 disabled: disabled2, 12083 selected, 12084 highlighted 12085 }; 12086 function commitSelection(event) { 12087 if (selectDisabled || readOnly) { 12088 return; 12089 } 12090 const selectedValue = store.state.value; 12091 if (multiple) { 12092 const currentValue = Array.isArray(selectedValue) ? selectedValue : []; 12093 const nextValue = selected ? removeItem(currentValue, itemValue, isItemEqualToValue) : [...currentValue, itemValue]; 12094 store.context.setValue(nextValue, createChangeEventDetails(reason_parts_exports.itemPress, event)); 12095 } else { 12096 store.context.setValue(itemValue, createChangeEventDetails(reason_parts_exports.itemPress, event)); 12097 store.context.setOpen(false, createChangeEventDetails(reason_parts_exports.itemPress, event)); 12098 } 12099 } 12100 function resetDragMovement() { 12101 store.context.selectionRef.current.dragY = 0; 12102 } 12103 const defaultProps = { 12104 role: "option", 12105 "aria-selected": selected, 12106 tabIndex: open2 && highlighted ? 0 : -1, 12107 onKeyDown(event) { 12108 store.set("activeIndex", index3); 12109 if (event.key === " " && store.context.typingRef.current) { 12110 event.preventDefault(); 12111 } 12112 }, 12113 onClick(event) { 12114 const isMouseClick = pointerTypeRef.current !== "touch"; 12115 const clickPointerType = event.nativeEvent.pointerType; 12116 const isVirtualMouseClick = isMouseClick && isVirtualClick(event.nativeEvent) && // Generic no-pointer `detail === 0` clicks stay tied to highlight state. Virtual 12117 // clicks that carry browser pointer data, including an empty string from assistive 12118 // technology, can activate unhighlighted items. 12119 (clickPointerType !== void 0 || highlighted); 12120 const isInvalidMouseClick = isMouseClick && !isVirtualMouseClick && !allowMouseSelectionRef.current; 12121 allowMouseSelectionRef.current = false; 12122 if (disabled2 || isInvalidMouseClick) { 12123 return; 12124 } 12125 commitSelection(event.nativeEvent); 12126 }, 12127 onPointerEnter(event) { 12128 pointerTypeRef.current = event.pointerType; 12129 }, 12130 onPointerMove(event) { 12131 if (event.pointerType === "mouse" && event.buttons === 1) { 12132 const selection = store.context.selectionRef.current; 12133 selection.dragY += event.movementY; 12134 if (selection.dragY ** 2 >= 64) { 12135 selection.allowUnselectedMouseUp = true; 12136 } 12137 } 12138 }, 12139 onPointerDown(event) { 12140 pointerTypeRef.current = event.pointerType; 12141 allowMouseSelectionRef.current = true; 12142 resetDragMovement(); 12143 }, 12144 onMouseUp() { 12145 resetDragMovement(); 12146 if (disabled2 || pointerTypeRef.current === "touch") { 12147 return; 12148 } 12149 if (allowMouseSelectionRef.current) { 12150 return; 12151 } 12152 const disallowSelectedMouseUp = !store.context.selectionRef.current.allowSelectedMouseUp && selected; 12153 const disallowUnselectedMouseUp = !store.context.selectionRef.current.allowUnselectedMouseUp && !selected; 12154 if (disallowSelectedMouseUp || disallowUnselectedMouseUp) { 12155 return; 12156 } 12157 allowMouseSelectionRef.current = true; 12158 itemRef.current?.click(); 12159 allowMouseSelectionRef.current = false; 12160 } 12161 }; 12162 const element = useRenderElement("div", componentProps, { 12163 ref: [buttonRef, forwardedRef, listItem.ref, itemRef], 12164 state, 12165 props: [itemProps, defaultProps, elementProps, getButtonProps] 12166 }); 12167 const contextValue = React82.useMemo(() => ({ 12168 selected, 12169 index: index3, 12170 textRef, 12171 selectedByFocus 12172 }), [selected, index3, textRef, selectedByFocus]); 12173 return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(SelectItemContext.Provider, { 12174 value: contextValue, 12175 children: element 12176 }); 12177 })); 12178 if (true) SelectItem.displayName = "SelectItem"; 12179 12180 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/item-indicator/SelectItemIndicator.mjs 12181 var React83 = __toESM(require_react(), 1); 12182 var import_jsx_runtime43 = __toESM(require_jsx_runtime(), 1); 12183 var SelectItemIndicator = /* @__PURE__ */ React83.forwardRef(function SelectItemIndicator2(componentProps, forwardedRef) { 12184 const { 12185 selected 12186 } = useSelectItemContext(); 12187 const shouldRender = componentProps.keepMounted || selected; 12188 if (!shouldRender) { 12189 return null; 12190 } 12191 return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(ItemIndicator, { 12192 ...componentProps, 12193 selected, 12194 ref: forwardedRef 12195 }); 12196 }); 12197 if (true) SelectItemIndicator.displayName = "SelectItemIndicator"; 12198 12199 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/item-text/SelectItemText.mjs 12200 var React84 = __toESM(require_react(), 1); 12201 var SelectItemText = /* @__PURE__ */ React84.memo(/* @__PURE__ */ React84.forwardRef(function SelectItemText2(componentProps, forwardedRef) { 12202 const { 12203 index: index3, 12204 textRef, 12205 selectedByFocus 12206 } = useSelectItemContext(); 12207 const store = useSelectRootContext(); 12208 const { 12209 render, 12210 className, 12211 style, 12212 ...elementProps 12213 } = componentProps; 12214 const localRef = React84.useCallback((node) => { 12215 if (!node) { 12216 return; 12217 } 12218 if (index3 === 0) { 12219 store.context.firstItemTextRef.current = node; 12220 } 12221 if (selectedByFocus) { 12222 store.context.selectedItemTextRef.current = node; 12223 } 12224 }, [store, index3, selectedByFocus]); 12225 const element = useRenderElement("div", componentProps, { 12226 ref: [localRef, forwardedRef, textRef], 12227 props: elementProps 12228 }); 12229 return element; 12230 })); 12231 if (true) SelectItemText.displayName = "SelectItemText"; 12232 12233 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/arrow/SelectArrow.mjs 12234 var React85 = __toESM(require_react(), 1); 12235 var SelectArrow = /* @__PURE__ */ React85.forwardRef(function SelectArrow2(componentProps, forwardedRef) { 12236 const { 12237 render, 12238 className, 12239 style, 12240 ...elementProps 12241 } = componentProps; 12242 const store = useSelectRootContext(); 12243 const { 12244 side, 12245 align, 12246 arrowRef, 12247 arrowStyles, 12248 arrowUncentered, 12249 alignItemWithTriggerActive 12250 } = useSelectPositionerContext(); 12251 const open2 = store.useState("open"); 12252 const state = { 12253 open: open2, 12254 side, 12255 align, 12256 uncentered: arrowUncentered 12257 }; 12258 const element = useRenderElement("div", componentProps, { 12259 state, 12260 ref: [arrowRef, forwardedRef], 12261 props: [{ 12262 style: arrowStyles, 12263 "aria-hidden": true 12264 }, elementProps], 12265 stateAttributesMapping: popupTransitionStateMapping 12266 }); 12267 if (alignItemWithTriggerActive) { 12268 return null; 12269 } 12270 return element; 12271 }); 12272 if (true) SelectArrow.displayName = "SelectArrow"; 12273 12274 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/scroll-down-arrow/SelectScrollDownArrow.mjs 12275 var React87 = __toESM(require_react(), 1); 12276 12277 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/scroll-arrow/SelectScrollArrow.mjs 12278 var React86 = __toESM(require_react(), 1); 12279 var SelectScrollArrow = /* @__PURE__ */ React86.forwardRef(function SelectScrollArrow2(componentProps, forwardedRef) { 12280 const { 12281 render, 12282 className, 12283 style, 12284 direction, 12285 keepMounted, 12286 ...elementProps 12287 } = componentProps; 12288 const isUp = direction === "up"; 12289 const store = useSelectRootContext(); 12290 const { 12291 side, 12292 scrollDownArrowRef, 12293 scrollUpArrowRef 12294 } = useSelectPositionerContext(); 12295 const visibleSelector = isUp ? "scrollUpArrowVisible" : "scrollDownArrowVisible"; 12296 const stateVisible = store.useState(visibleSelector); 12297 const openMethod = store.useState("openMethod"); 12298 const visible = stateVisible && openMethod !== "touch"; 12299 const timeout = useTimeout(); 12300 const scrollArrowRef = isUp ? scrollUpArrowRef : scrollDownArrowRef; 12301 const { 12302 mounted, 12303 transitionStatus, 12304 setMounted 12305 } = useTransitionStatus(visible); 12306 useIsoLayoutEffect(() => { 12307 store.context.scrollArrowsMountedCountRef.current += 1; 12308 store.set("hasScrollArrows", true); 12309 return () => { 12310 store.context.scrollArrowsMountedCountRef.current = Math.max(0, store.context.scrollArrowsMountedCountRef.current - 1); 12311 if (store.context.scrollArrowsMountedCountRef.current === 0) { 12312 store.set("hasScrollArrows", false); 12313 } 12314 }; 12315 }, [store]); 12316 useOpenChangeComplete({ 12317 open: visible, 12318 ref: scrollArrowRef, 12319 onComplete() { 12320 if (!visible) { 12321 setMounted(false); 12322 } 12323 } 12324 }); 12325 const state = { 12326 direction, 12327 visible, 12328 side, 12329 transitionStatus 12330 }; 12331 const defaultProps = { 12332 "aria-hidden": true, 12333 children: isUp ? "\u25B2" : "\u25BC", 12334 style: { 12335 position: "absolute" 12336 }, 12337 onMouseMove(event) { 12338 if (event.movementX === 0 && event.movementY === 0 || timeout.isStarted()) { 12339 return; 12340 } 12341 store.set("activeIndex", null); 12342 function scrollNextItem() { 12343 const scroller = store.state.listElement ?? store.context.popupRef.current; 12344 if (!scroller) { 12345 return; 12346 } 12347 store.set("activeIndex", null); 12348 store.context.handleScrollArrowVisibility(scroller); 12349 const maxScrollTop = getMaxScrollOffset(scroller.scrollHeight, scroller.clientHeight); 12350 const scrollTop = normalizeScrollOffset(scroller.scrollTop, maxScrollTop); 12351 const isScrolledToEdge = scrollTop === (isUp ? 0 : maxScrollTop); 12352 const items = store.context.listRef.current; 12353 if (scrollTop !== scroller.scrollTop) { 12354 scroller.scrollTop = scrollTop; 12355 } 12356 if (isScrolledToEdge) { 12357 timeout.clear(); 12358 return; 12359 } 12360 if (items.length > 0) { 12361 const scrollArrowHeight = scrollArrowRef.current?.offsetHeight || 0; 12362 scroller.scrollTop = getTargetScrollTop(items, isUp, scrollTop, scroller.clientHeight, scrollArrowHeight, maxScrollTop); 12363 } 12364 timeout.start(40, scrollNextItem); 12365 } 12366 timeout.start(40, scrollNextItem); 12367 }, 12368 onMouseLeave() { 12369 timeout.clear(); 12370 } 12371 }; 12372 const element = useRenderElement("div", componentProps, { 12373 ref: [forwardedRef, scrollArrowRef], 12374 state, 12375 props: [defaultProps, elementProps], 12376 stateAttributesMapping: transitionStatusMapping 12377 }); 12378 const shouldRender = mounted || keepMounted; 12379 if (!shouldRender) { 12380 return null; 12381 } 12382 return element; 12383 }); 12384 if (true) SelectScrollArrow.displayName = "SelectScrollArrow"; 12385 function getTargetScrollTop(items, isUp, scrollTop, clientHeight, scrollArrowHeight, maxScrollTop) { 12386 if (isUp) { 12387 let firstVisibleIndex = 0; 12388 const visibleTop = scrollTop + scrollArrowHeight - SCROLL_EDGE_TOLERANCE_PX; 12389 for (let i = 0; i < items.length; i += 1) { 12390 const item = items[i]; 12391 if (item && item.offsetTop >= visibleTop) { 12392 firstVisibleIndex = i; 12393 break; 12394 } 12395 } 12396 const targetIndex2 = Math.max(0, firstVisibleIndex - 1); 12397 const targetItem2 = items[targetIndex2]; 12398 return targetIndex2 < firstVisibleIndex && targetItem2 ? normalizeScrollOffset(targetItem2.offsetTop - scrollArrowHeight, maxScrollTop) : 0; 12399 } 12400 let lastVisibleIndex = items.length - 1; 12401 const visibleBottom = scrollTop + clientHeight - scrollArrowHeight + SCROLL_EDGE_TOLERANCE_PX; 12402 for (let i = 0; i < items.length; i += 1) { 12403 const item = items[i]; 12404 if (item && item.offsetTop + item.offsetHeight > visibleBottom) { 12405 lastVisibleIndex = Math.max(0, i - 1); 12406 break; 12407 } 12408 } 12409 const targetIndex = Math.min(items.length - 1, lastVisibleIndex + 1); 12410 const targetItem = items[targetIndex]; 12411 return targetIndex > lastVisibleIndex && targetItem ? normalizeScrollOffset(targetItem.offsetTop + targetItem.offsetHeight - clientHeight + scrollArrowHeight, maxScrollTop) : maxScrollTop; 12412 } 12413 12414 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/scroll-down-arrow/SelectScrollDownArrow.mjs 12415 var import_jsx_runtime44 = __toESM(require_jsx_runtime(), 1); 12416 var SelectScrollDownArrow = /* @__PURE__ */ React87.forwardRef(function SelectScrollDownArrow2(props, forwardedRef) { 12417 return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(SelectScrollArrow, { 12418 ...props, 12419 ref: forwardedRef, 12420 direction: "down" 12421 }); 12422 }); 12423 if (true) SelectScrollDownArrow.displayName = "SelectScrollDownArrow"; 12424 12425 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/scroll-up-arrow/SelectScrollUpArrow.mjs 12426 var React88 = __toESM(require_react(), 1); 12427 var import_jsx_runtime45 = __toESM(require_jsx_runtime(), 1); 12428 var SelectScrollUpArrow = /* @__PURE__ */ React88.forwardRef(function SelectScrollUpArrow2(props, forwardedRef) { 12429 return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(SelectScrollArrow, { 12430 ...props, 12431 ref: forwardedRef, 12432 direction: "up" 12433 }); 12434 }); 12435 if (true) SelectScrollUpArrow.displayName = "SelectScrollUpArrow"; 12436 12437 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/group/SelectGroup.mjs 12438 var React90 = __toESM(require_react(), 1); 12439 12440 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/group/SelectGroupContext.mjs 12441 var React89 = __toESM(require_react(), 1); 12442 var SelectGroupContext = /* @__PURE__ */ React89.createContext(void 0); 12443 if (true) SelectGroupContext.displayName = "SelectGroupContext"; 12444 function useSelectGroupContext() { 12445 const context = React89.useContext(SelectGroupContext); 12446 if (context === void 0) { 12447 throw new Error(true ? "Base UI: SelectGroupContext is missing. SelectGroup parts must be placed within <Select.Group>." : formatErrorMessage_default(56)); 12448 } 12449 return context; 12450 } 12451 12452 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/group/SelectGroup.mjs 12453 var import_jsx_runtime46 = __toESM(require_jsx_runtime(), 1); 12454 var SelectGroup = /* @__PURE__ */ React90.forwardRef(function SelectGroup2(componentProps, forwardedRef) { 12455 const { 12456 render, 12457 className, 12458 style, 12459 ...elementProps 12460 } = componentProps; 12461 const [labelId, setLabelId] = React90.useState(); 12462 const contextValue = React90.useMemo(() => ({ 12463 labelId, 12464 setLabelId 12465 }), [labelId, setLabelId]); 12466 const element = useRenderElement("div", componentProps, { 12467 ref: forwardedRef, 12468 props: [{ 12469 role: "group", 12470 "aria-labelledby": labelId 12471 }, elementProps] 12472 }); 12473 return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(SelectGroupContext.Provider, { 12474 value: contextValue, 12475 children: element 12476 }); 12477 }); 12478 if (true) SelectGroup.displayName = "SelectGroup"; 12479 12480 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/group-label/SelectGroupLabel.mjs 12481 var React91 = __toESM(require_react(), 1); 12482 var SelectGroupLabel = /* @__PURE__ */ React91.forwardRef(function SelectGroupLabel2(componentProps, forwardedRef) { 12483 const { 12484 render, 12485 className, 12486 style, 12487 id: idProp, 12488 ...elementProps 12489 } = componentProps; 12490 const { 12491 setLabelId 12492 } = useSelectGroupContext(); 12493 const id = useBaseUiId(idProp); 12494 useIsoLayoutEffect(() => { 12495 setLabelId(id); 12496 return () => { 12497 setLabelId((currentId) => currentId === id ? void 0 : currentId); 12498 }; 12499 }, [id, setLabelId]); 12500 const element = useRenderElement("div", componentProps, { 12501 ref: forwardedRef, 12502 props: [{ 12503 id, 12504 "aria-hidden": true 12505 }, elementProps] 12506 }); 12507 return element; 12508 }); 12509 if (true) SelectGroupLabel.displayName = "SelectGroupLabel"; 12510 12511 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/select/separator/SelectSeparator.mjs 12512 var SelectSeparator = ListboxSeparator; 12513 12514 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/prehydrationScript.stub.mjs 12515 var script = ""; 12516 12517 // node_modules/.store/@base-ui/utils@0.5.0--7My7Lubseca8je9LSEweA/node_modules/@base-ui/utils/hydration.mjs 12518 var React92 = __toESM(require_react(), 1); 12519 var import_shim2 = __toESM(require_shim(), 1); 12520 var emptySubscribe = () => () => { 12521 }; 12522 var getTrue = () => true; 12523 var getFalse = () => false; 12524 function useIsHydratedModern() { 12525 return (0, import_shim2.useSyncExternalStore)(emptySubscribe, getTrue, getFalse); 12526 } 12527 function useIsHydratedLegacy() { 12528 const [hydrated, setHydrated] = React92.useState(false); 12529 React92.useEffect(() => { 12530 setHydrated(true); 12531 }, []); 12532 return hydrated; 12533 } 12534 var useIsHydrated = isReactVersionAtLeast(18) ? useIsHydratedModern : useIsHydratedLegacy; 12535 function useIsHydrating() { 12536 return !useIsHydrated(); 12537 } 12538 12539 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/internals/PrehydrationScript.mjs 12540 var React93 = __toESM(require_react(), 1); 12541 var import_jsx_runtime47 = __toESM(require_jsx_runtime(), 1); 12542 function PrehydrationScript(props) { 12543 const { 12544 script: script2 12545 } = props; 12546 const { 12547 nonce 12548 } = useCSPContext(); 12549 const isHydrating = useIsHydrating(); 12550 if (!isHydrating) { 12551 return null; 12552 } 12553 return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("script", { 12554 nonce, 12555 dangerouslySetInnerHTML: { 12556 __html: script2 12557 }, 12558 suppressHydrationWarning: true 12559 }); 12560 } 12561 12562 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tabs/index.parts.mjs 12563 var index_parts_exports3 = {}; 12564 __export(index_parts_exports3, { 12565 Indicator: () => TabsIndicator, 12566 List: () => TabsList, 12567 Panel: () => TabsPanel, 12568 Root: () => TabsRoot, 12569 Tab: () => TabsTab 12570 }); 12571 12572 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tabs/root/TabsRoot.mjs 12573 var React95 = __toESM(require_react(), 1); 12574 12575 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tabs/root/TabsRootContext.mjs 12576 var React94 = __toESM(require_react(), 1); 12577 var TabsRootContext = /* @__PURE__ */ React94.createContext(void 0); 12578 if (true) TabsRootContext.displayName = "TabsRootContext"; 12579 function useTabsRootContext() { 12580 const context = React94.useContext(TabsRootContext); 12581 if (context === void 0) { 12582 throw new Error(true ? "Base UI: TabsRootContext is missing. Tabs parts must be placed within <Tabs.Root>." : formatErrorMessage_default(64)); 12583 } 12584 return context; 12585 } 12586 12587 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tabs/root/TabsRootDataAttributes.mjs 12588 var activationDirection = "data-activation-direction"; 12589 12590 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tabs/root/stateAttributesMapping.mjs 12591 var tabsStateAttributesMapping = { 12592 tabActivationDirection: (dir) => ({ 12593 [activationDirection]: dir 12594 }) 12595 }; 12596 12597 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tabs/root/TabsRoot.mjs 12598 var import_jsx_runtime48 = __toESM(require_jsx_runtime(), 1); 12599 var TabsRoot = /* @__PURE__ */ React95.forwardRef(function TabsRoot2(componentProps, forwardedRef) { 12600 const { 12601 className, 12602 defaultValue: defaultValueProp = 0, 12603 onValueChange: onValueChangeProp, 12604 orientation = "horizontal", 12605 render, 12606 value: valueProp, 12607 style, 12608 ...elementProps 12609 } = componentProps; 12610 const hasExplicitDefaultValueProp = componentProps.defaultValue !== void 0; 12611 const tabPanelRefs = React95.useRef([]); 12612 const [mountedTabPanels, setMountedTabPanels] = React95.useState(() => /* @__PURE__ */ new Map()); 12613 const [value, setValue] = useControlled({ 12614 controlled: valueProp, 12615 default: defaultValueProp, 12616 name: "Tabs", 12617 state: "value" 12618 }); 12619 const isControlled = valueProp !== void 0; 12620 const [tabMap, setTabMap] = React95.useState(() => /* @__PURE__ */ new Map()); 12621 const lastKnownTabElementRef = React95.useRef(void 0); 12622 const getTabElementBySelectedValue = React95.useCallback((selectedValue) => findTabElement(tabMap, selectedValue), [tabMap]); 12623 const [activationDirectionState, setActivationDirectionState] = React95.useState(() => ({ 12624 previousValue: value, 12625 tabActivationDirection: "none" 12626 })); 12627 const { 12628 previousValue, 12629 tabActivationDirection: committedTabActivationDirection 12630 } = activationDirectionState; 12631 let tabActivationDirection = committedTabActivationDirection; 12632 let directionComputationIncomplete = false; 12633 if (previousValue !== value) { 12634 tabActivationDirection = computeActivationDirection(previousValue, value, orientation, tabMap); 12635 directionComputationIncomplete = previousValue != null && value != null && getTabElementBySelectedValue(value) == null; 12636 } 12637 const nextPreviousValue = directionComputationIncomplete ? previousValue : value; 12638 const shouldSyncActivationDirectionState = previousValue !== nextPreviousValue || committedTabActivationDirection !== tabActivationDirection; 12639 useIsoLayoutEffect(() => { 12640 if (!shouldSyncActivationDirectionState) { 12641 return; 12642 } 12643 setActivationDirectionState({ 12644 previousValue: nextPreviousValue, 12645 tabActivationDirection 12646 }); 12647 }, [nextPreviousValue, shouldSyncActivationDirectionState, tabActivationDirection]); 12648 const onValueChange = useStableCallback((newValue, eventDetails) => { 12649 const activationDirection2 = computeActivationDirection(value, newValue, orientation, tabMap); 12650 eventDetails.activationDirection = activationDirection2; 12651 onValueChangeProp?.(newValue, eventDetails); 12652 if (eventDetails.isCanceled) { 12653 return; 12654 } 12655 setValue(() => newValue); 12656 }); 12657 const notifyAutomaticValueChange = useStableCallback((nextValue, reason) => { 12658 onValueChangeProp?.(nextValue, createChangeEventDetails(reason, void 0, void 0, { 12659 activationDirection: "none" 12660 })); 12661 }); 12662 const registerMountedTabPanel = useStableCallback((panelValue, panelId) => { 12663 setMountedTabPanels((prev) => { 12664 const next = new Map(prev); 12665 next.set(panelValue, panelId); 12666 return next; 12667 }); 12668 return () => { 12669 setMountedTabPanels((prev) => { 12670 if (prev.get(panelValue) !== panelId) { 12671 return prev; 12672 } 12673 const next = new Map(prev); 12674 next.delete(panelValue); 12675 return next; 12676 }); 12677 }; 12678 }); 12679 const getTabPanelIdByValue = React95.useCallback((tabValue) => { 12680 return mountedTabPanels.get(tabValue); 12681 }, [mountedTabPanels]); 12682 const getTabIdByPanelValue = React95.useCallback((tabPanelValue) => { 12683 for (const tabMetadata of tabMap.values()) { 12684 if (tabPanelValue === tabMetadata.value) { 12685 return tabMetadata.id; 12686 } 12687 } 12688 return void 0; 12689 }, [tabMap]); 12690 const tabsContextValue = React95.useMemo(() => ({ 12691 getTabElementBySelectedValue, 12692 getTabIdByPanelValue, 12693 getTabPanelIdByValue, 12694 onValueChange, 12695 orientation, 12696 registerMountedTabPanel, 12697 setTabMap, 12698 tabActivationDirection, 12699 value 12700 }), [getTabElementBySelectedValue, getTabIdByPanelValue, getTabPanelIdByValue, onValueChange, orientation, registerMountedTabPanel, setTabMap, tabActivationDirection, value]); 12701 const selectedTabMetadata = React95.useMemo(() => { 12702 for (const tabMetadata of tabMap.values()) { 12703 if (tabMetadata.value === value) { 12704 return tabMetadata; 12705 } 12706 } 12707 return void 0; 12708 }, [tabMap, value]); 12709 const firstEnabledTabValue = React95.useMemo(() => { 12710 for (const tabMetadata of tabMap.values()) { 12711 if (!tabMetadata.disabled) { 12712 return tabMetadata.value; 12713 } 12714 } 12715 return void 0; 12716 }, [tabMap]); 12717 const shouldNotifyInitialValueChangeRef = React95.useRef(!hasExplicitDefaultValueProp); 12718 const initialDefaultValueRef = React95.useRef(defaultValueProp); 12719 const shouldHonorDisabledDefaultValueRef = React95.useRef(hasExplicitDefaultValueProp); 12720 const didRegisterTabsRef = React95.useRef(false); 12721 useIsoLayoutEffect(() => { 12722 if (isControlled) { 12723 return; 12724 } 12725 function commitAutomaticValueChange(fallbackValue, fallbackReason) { 12726 setValue(() => fallbackValue); 12727 setActivationDirectionState({ 12728 previousValue: fallbackValue, 12729 tabActivationDirection: "none" 12730 }); 12731 notifyAutomaticValueChange(fallbackValue, fallbackReason); 12732 shouldNotifyInitialValueChangeRef.current = false; 12733 } 12734 if (tabMap.size === 0) { 12735 if (didRegisterTabsRef.current && value !== null && !lastKnownTabElementRef.current?.isConnected) { 12736 commitAutomaticValueChange(null, reason_parts_exports.missing); 12737 } 12738 return; 12739 } 12740 didRegisterTabsRef.current = true; 12741 lastKnownTabElementRef.current = tabMap.keys().next().value; 12742 const selectionIsDisabled = selectedTabMetadata?.disabled; 12743 const selectionIsMissing = selectedTabMetadata == null && value !== null; 12744 if (!selectionIsDisabled && value === initialDefaultValueRef.current) { 12745 shouldHonorDisabledDefaultValueRef.current = false; 12746 } 12747 if (shouldHonorDisabledDefaultValueRef.current && selectionIsDisabled && value === initialDefaultValueRef.current) { 12748 return; 12749 } 12750 const shouldNotifyInitialValueChange = shouldNotifyInitialValueChangeRef.current; 12751 if (selectionIsDisabled || selectionIsMissing) { 12752 const fallbackValue = firstEnabledTabValue ?? null; 12753 if (value === fallbackValue) { 12754 shouldNotifyInitialValueChangeRef.current = false; 12755 return; 12756 } 12757 let fallbackReason = reason_parts_exports.missing; 12758 if (shouldNotifyInitialValueChange) { 12759 fallbackReason = reason_parts_exports.initial; 12760 } else if (selectionIsDisabled) { 12761 fallbackReason = reason_parts_exports.disabled; 12762 } 12763 commitAutomaticValueChange(fallbackValue, fallbackReason); 12764 return; 12765 } 12766 if (shouldNotifyInitialValueChange && selectedTabMetadata != null) { 12767 notifyAutomaticValueChange(value, reason_parts_exports.initial); 12768 shouldNotifyInitialValueChangeRef.current = false; 12769 } 12770 }, [firstEnabledTabValue, isControlled, notifyAutomaticValueChange, selectedTabMetadata, setValue, tabMap, value]); 12771 const state = { 12772 orientation, 12773 tabActivationDirection 12774 }; 12775 const element = useRenderElement("div", componentProps, { 12776 state, 12777 ref: forwardedRef, 12778 props: elementProps, 12779 stateAttributesMapping: tabsStateAttributesMapping 12780 }); 12781 return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(TabsRootContext.Provider, { 12782 value: tabsContextValue, 12783 children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(CompositeList, { 12784 elementsRef: tabPanelRefs, 12785 children: element 12786 }) 12787 }); 12788 }); 12789 if (true) TabsRoot.displayName = "TabsRoot"; 12790 function findTabElement(tabMap, value) { 12791 for (const [tabElement, tabMetadata] of tabMap.entries()) { 12792 if (value === tabMetadata.value) { 12793 return tabElement; 12794 } 12795 } 12796 return null; 12797 } 12798 function computeActivationDirection(oldValue, newValue, orientation, tabMap) { 12799 if (oldValue == null || newValue == null) { 12800 return "none"; 12801 } 12802 const [positionProp, backward, forward] = orientation === "horizontal" ? ["left", "left", "right"] : ["top", "up", "down"]; 12803 const oldTab = findTabElement(tabMap, oldValue); 12804 const newTab = findTabElement(tabMap, newValue); 12805 if (oldTab == null || newTab == null) { 12806 if (oldTab !== newTab && (typeof oldValue === "number" || typeof oldValue === "string") && typeof oldValue === typeof newValue) { 12807 return newValue > oldValue ? forward : backward; 12808 } 12809 return "none"; 12810 } 12811 const oldPosition = oldTab.getBoundingClientRect()[positionProp]; 12812 const newPosition = newTab.getBoundingClientRect()[positionProp]; 12813 if (newPosition < oldPosition) { 12814 return backward; 12815 } 12816 if (newPosition > oldPosition) { 12817 return forward; 12818 } 12819 return "none"; 12820 } 12821 12822 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tabs/tab/TabsTab.mjs 12823 var React97 = __toESM(require_react(), 1); 12824 12825 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tabs/list/TabsListContext.mjs 12826 var React96 = __toESM(require_react(), 1); 12827 var TabsListContext = /* @__PURE__ */ React96.createContext(void 0); 12828 if (true) TabsListContext.displayName = "TabsListContext"; 12829 function useTabsListContext() { 12830 const context = React96.useContext(TabsListContext); 12831 if (context === void 0) { 12832 throw new Error(true ? "Base UI: TabsListContext is missing. TabsList parts must be placed within <Tabs.List>." : formatErrorMessage_default(65)); 12833 } 12834 return context; 12835 } 12836 12837 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tabs/tab/TabsTab.mjs 12838 var TabsTab = /* @__PURE__ */ React97.forwardRef(function TabsTab2(componentProps, forwardedRef) { 12839 const { 12840 className, 12841 disabled: disabled2 = false, 12842 render, 12843 value, 12844 id: idProp, 12845 nativeButton = true, 12846 style, 12847 ...elementProps 12848 } = componentProps; 12849 const { 12850 value: activeTabValue, 12851 getTabPanelIdByValue, 12852 onValueChange, 12853 orientation, 12854 tabActivationDirection 12855 } = useTabsRootContext(); 12856 const { 12857 activateOnFocus, 12858 registerTabResizeObserverElement, 12859 tabsListElement 12860 } = useTabsListContext(); 12861 const { 12862 highlightedIndex, 12863 onHighlightedIndexChange 12864 } = useCompositeRootContext(); 12865 const id = useBaseUiId(idProp); 12866 const tabMetadata = React97.useMemo(() => ({ 12867 disabled: disabled2, 12868 id, 12869 value 12870 }), [disabled2, id, value]); 12871 const { 12872 compositeProps, 12873 compositeRef, 12874 index: index3 12875 // hook is used instead of the CompositeItem component 12876 // because the index is needed for Tab internals 12877 } = useCompositeItem({ 12878 metadata: tabMetadata 12879 }); 12880 const active = value === activeTabValue; 12881 const isNavigatingRef = React97.useRef(false); 12882 const unobserveTabElementRef = React97.useRef(null); 12883 const observeTabElement = useStableCallback((element2) => { 12884 unobserveTabElementRef.current?.(); 12885 unobserveTabElementRef.current = element2 ? registerTabResizeObserverElement(element2) : null; 12886 }); 12887 useIsoLayoutEffect(() => { 12888 if (isNavigatingRef.current) { 12889 isNavigatingRef.current = false; 12890 return; 12891 } 12892 if (!(active && index3 > -1 && highlightedIndex !== index3)) { 12893 return; 12894 } 12895 const listElement = tabsListElement; 12896 if (listElement != null) { 12897 const activeEl = activeElement(ownerDocument(listElement)); 12898 if (activeEl && contains(listElement, activeEl)) { 12899 return; 12900 } 12901 } 12902 if (!disabled2) { 12903 onHighlightedIndexChange(index3); 12904 } 12905 }, [active, index3, highlightedIndex, onHighlightedIndexChange, disabled2, tabsListElement]); 12906 const { 12907 getButtonProps, 12908 buttonRef 12909 } = useButton({ 12910 disabled: disabled2, 12911 native: nativeButton, 12912 focusableWhenDisabled: true 12913 }); 12914 const tabPanelId = getTabPanelIdByValue(value); 12915 const isPressingRef = React97.useRef(false); 12916 const isMainButtonRef = React97.useRef(false); 12917 function activate(event) { 12918 onValueChange(value, createChangeEventDetails(reason_parts_exports.none, event.nativeEvent, void 0, { 12919 activationDirection: "none" 12920 })); 12921 } 12922 function onClick(event) { 12923 if (active || disabled2) { 12924 return; 12925 } 12926 activate(event); 12927 } 12928 function onFocus(event) { 12929 if (active || disabled2) { 12930 return; 12931 } 12932 if (activateOnFocus && (!isPressingRef.current || // keyboard or touch focus 12933 isMainButtonRef.current)) { 12934 activate(event); 12935 } 12936 } 12937 function onPointerDown(event) { 12938 if (active || disabled2) { 12939 return; 12940 } 12941 isPressingRef.current = true; 12942 isMainButtonRef.current = event.button === 0; 12943 const doc = ownerDocument(event.currentTarget); 12944 function handlePointerEnd() { 12945 isPressingRef.current = false; 12946 isMainButtonRef.current = false; 12947 doc.removeEventListener("pointerup", handlePointerEnd); 12948 doc.removeEventListener("pointercancel", handlePointerEnd); 12949 } 12950 doc.addEventListener("pointerup", handlePointerEnd); 12951 doc.addEventListener("pointercancel", handlePointerEnd); 12952 } 12953 const state = { 12954 disabled: disabled2, 12955 active, 12956 orientation, 12957 tabActivationDirection 12958 }; 12959 const element = useRenderElement("button", componentProps, { 12960 state, 12961 ref: [forwardedRef, buttonRef, compositeRef, observeTabElement], 12962 props: [compositeProps, { 12963 role: "tab", 12964 "aria-controls": tabPanelId, 12965 "aria-selected": active, 12966 id, 12967 onClick, 12968 onFocus, 12969 onPointerDown, 12970 [ACTIVE_COMPOSITE_ITEM]: active ? "" : void 0, 12971 onKeyDownCapture() { 12972 isNavigatingRef.current = true; 12973 } 12974 }, elementProps, getButtonProps], 12975 stateAttributesMapping: tabsStateAttributesMapping 12976 }); 12977 return element; 12978 }); 12979 if (true) TabsTab.displayName = "TabsTab"; 12980 12981 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tabs/indicator/TabsIndicator.mjs 12982 var React98 = __toESM(require_react(), 1); 12983 12984 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tabs/indicator/TabsIndicatorCssVars.mjs 12985 var activeTabLeft = "--active-tab-left"; 12986 var activeTabRight = "--active-tab-right"; 12987 var activeTabTop = "--active-tab-top"; 12988 var activeTabBottom = "--active-tab-bottom"; 12989 var activeTabWidth = "--active-tab-width"; 12990 var activeTabHeight = "--active-tab-height"; 12991 12992 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tabs/indicator/TabsIndicator.mjs 12993 var import_jsx_runtime49 = __toESM(require_jsx_runtime(), 1); 12994 var _PrehydrationScript; 12995 var stateAttributesMapping6 = { 12996 ...tabsStateAttributesMapping, 12997 activeTabPosition: () => null, 12998 activeTabSize: () => null 12999 }; 13000 var MAX_LAYOUT_ROUNDING_ERROR = 2; 13001 var TabsIndicator = /* @__PURE__ */ React98.forwardRef(function TabsIndicator2(componentProps, forwardedRef) { 13002 const { 13003 className, 13004 render, 13005 renderBeforeHydration = false, 13006 style: styleProp, 13007 ...elementProps 13008 } = componentProps; 13009 const { 13010 getTabElementBySelectedValue, 13011 orientation, 13012 tabActivationDirection, 13013 value 13014 } = useTabsRootContext(); 13015 const { 13016 tabsListElement, 13017 registerIndicatorUpdateListener 13018 } = useTabsListContext(); 13019 const rerender = useForcedRerendering(); 13020 React98.useEffect(() => { 13021 return registerIndicatorUpdateListener(rerender); 13022 }, [registerIndicatorUpdateListener, rerender]); 13023 let left = 0; 13024 let right = 0; 13025 let top = 0; 13026 let bottom = 0; 13027 let width = 0; 13028 let height = 0; 13029 let isTabSelected = false; 13030 if (value != null && tabsListElement != null) { 13031 const activeTab = getTabElementBySelectedValue(value); 13032 if (activeTab != null) { 13033 isTabSelected = true; 13034 const { 13035 width: computedWidth, 13036 height: computedHeight 13037 } = getCssDimensions2(activeTab); 13038 const { 13039 width: tabListWidth, 13040 height: tabListHeight 13041 } = getCssDimensions2(tabsListElement); 13042 const tabRect = activeTab.getBoundingClientRect(); 13043 const tabsListRect = tabsListElement.getBoundingClientRect(); 13044 const scaleX = tabListWidth > 0 ? tabsListRect.width / tabListWidth : 1; 13045 const scaleY = tabListHeight > 0 ? tabsListRect.height / tabListHeight : 1; 13046 const layoutOffset = getLayoutOffset(activeTab, tabsListElement); 13047 left = layoutOffset.left; 13048 top = layoutOffset.top; 13049 const rectLeft = (tabRect.left - tabsListRect.left) / scaleX + tabsListElement.scrollLeft - tabsListElement.clientLeft; 13050 const rectTop = (tabRect.top - tabsListRect.top) / scaleY + tabsListElement.scrollTop - tabsListElement.clientTop; 13051 const tabTranslation = getActiveTabTranslation(activeTab); 13052 if (Math.abs(rectLeft - tabTranslation.x - left) <= MAX_LAYOUT_ROUNDING_ERROR && Math.abs(rectTop - tabTranslation.y - top) <= MAX_LAYOUT_ROUNDING_ERROR) { 13053 left = rectLeft; 13054 top = rectTop; 13055 } 13056 width = computedWidth; 13057 height = computedHeight; 13058 right = tabsListElement.scrollWidth - left - width; 13059 bottom = tabsListElement.scrollHeight - top - height; 13060 } 13061 } 13062 const activeTabPosition = isTabSelected ? { 13063 left, 13064 right, 13065 top, 13066 bottom 13067 } : null; 13068 const activeTabSize = isTabSelected ? { 13069 width, 13070 height 13071 } : null; 13072 const style = isTabSelected ? { 13073 [activeTabLeft]: `$left}px`, 13074 [activeTabRight]: `$right}px`, 13075 [activeTabTop]: `$top}px`, 13076 [activeTabBottom]: `$bottom}px`, 13077 [activeTabWidth]: `$width}px`, 13078 [activeTabHeight]: `$height}px` 13079 } : void 0; 13080 const displayIndicator = isTabSelected && width > 0 && height > 0; 13081 const state = { 13082 orientation, 13083 activeTabPosition, 13084 activeTabSize, 13085 tabActivationDirection 13086 }; 13087 const element = useRenderElement("span", componentProps, { 13088 state, 13089 ref: forwardedRef, 13090 props: [{ 13091 role: "presentation", 13092 style, 13093 hidden: !displayIndicator 13094 // do not display the indicator before the layout is settled 13095 }, elementProps, { 13096 suppressHydrationWarning: true 13097 }], 13098 stateAttributesMapping: stateAttributesMapping6 13099 }); 13100 if (value == null) { 13101 return null; 13102 } 13103 return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(React98.Fragment, { 13104 children: [element, renderBeforeHydration && (_PrehydrationScript || (_PrehydrationScript = /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(PrehydrationScript, { 13105 script 13106 })))] 13107 }); 13108 }); 13109 if (true) TabsIndicator.displayName = "TabsIndicator"; 13110 function getLayoutOffset(element, ancestor) { 13111 const elementOffset = getCumulativeOffset(element); 13112 const ancestorOffset = getCumulativeOffset(ancestor); 13113 let left = elementOffset.left - ancestorOffset.left - ancestor.clientLeft; 13114 let top = elementOffset.top - ancestorOffset.top - ancestor.clientTop; 13115 let node = getParentNode(element); 13116 while (isHTMLElement(node) && node !== ancestor && !isLastTraversableNode(node)) { 13117 left -= node.scrollLeft; 13118 top -= node.scrollTop; 13119 node = getParentNode(node); 13120 } 13121 return { 13122 left, 13123 top 13124 }; 13125 } 13126 function getCumulativeOffset(element) { 13127 let left = 0; 13128 let top = 0; 13129 let currentElement = element; 13130 while (currentElement != null) { 13131 left += currentElement.offsetLeft; 13132 top += currentElement.offsetTop; 13133 const offsetParent = currentElement.offsetParent; 13134 if (offsetParent != null) { 13135 left += offsetParent.clientLeft; 13136 top += offsetParent.clientTop; 13137 } 13138 currentElement = offsetParent; 13139 } 13140 return { 13141 left, 13142 top 13143 }; 13144 } 13145 function getActiveTabTranslation(element) { 13146 const computedStyle = getWindow(element).getComputedStyle(element); 13147 const { 13148 x, 13149 y 13150 } = getElementTransform(element, computedStyle); 13151 let translateX = x; 13152 let translateY = y; 13153 const { 13154 translate 13155 } = computedStyle; 13156 if (translate && translate !== "none") { 13157 const parts = translate.split(" "); 13158 translateX += resolveTranslateLength(parts[0], element.offsetWidth); 13159 translateY += resolveTranslateLength(parts[1], element.offsetHeight); 13160 } 13161 return { 13162 x: translateX, 13163 y: translateY 13164 }; 13165 } 13166 function resolveTranslateLength(value, referenceSize) { 13167 if (!value) { 13168 return 0; 13169 } 13170 const numeric = parseFloat(value); 13171 if (!Number.isFinite(numeric)) { 13172 return 0; 13173 } 13174 return value.endsWith("%") ? numeric / 100 * referenceSize : numeric; 13175 } 13176 13177 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tabs/panel/TabsPanel.mjs 13178 var React99 = __toESM(require_react(), 1); 13179 13180 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tabs/panel/TabsPanelDataAttributes.mjs 13181 var index2 = "data-index"; 13182 var startingStyle2 = TransitionStatusDataAttributes_exports.startingStyle; 13183 var endingStyle2 = TransitionStatusDataAttributes_exports.endingStyle; 13184 13185 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tabs/panel/TabsPanel.mjs 13186 var stateAttributesMapping7 = { 13187 ...tabsStateAttributesMapping, 13188 ...transitionStatusMapping 13189 }; 13190 var TabsPanel = /* @__PURE__ */ React99.forwardRef(function TabsPanel2(componentProps, forwardedRef) { 13191 const { 13192 className, 13193 value, 13194 render, 13195 keepMounted = false, 13196 style, 13197 ...elementProps 13198 } = componentProps; 13199 const { 13200 value: selectedValue, 13201 getTabIdByPanelValue, 13202 orientation, 13203 tabActivationDirection, 13204 registerMountedTabPanel 13205 } = useTabsRootContext(); 13206 const id = useBaseUiId(); 13207 const { 13208 ref: listItemRef, 13209 index: index3 13210 } = useCompositeListItem(); 13211 const open2 = value === selectedValue; 13212 const { 13213 mounted, 13214 transitionStatus, 13215 setMounted 13216 } = useTransitionStatus(open2); 13217 const hidden = !mounted; 13218 const correspondingTabId = getTabIdByPanelValue(value); 13219 const state = { 13220 hidden, 13221 orientation, 13222 tabActivationDirection, 13223 transitionStatus 13224 }; 13225 const panelRef = React99.useRef(null); 13226 const element = useRenderElement("div", componentProps, { 13227 state, 13228 ref: [forwardedRef, listItemRef, panelRef], 13229 props: [{ 13230 "aria-labelledby": correspondingTabId, 13231 hidden, 13232 id, 13233 role: "tabpanel", 13234 tabIndex: open2 ? 0 : -1, 13235 inert: inertValue(!open2), 13236 // Computed key: a plain literal key fails the DOM-props excess property check. 13237 [index2]: index3 13238 }, elementProps], 13239 stateAttributesMapping: stateAttributesMapping7 13240 }); 13241 useOpenChangeComplete({ 13242 open: open2, 13243 ref: panelRef, 13244 onComplete() { 13245 if (!open2) { 13246 setMounted(false); 13247 } 13248 } 13249 }); 13250 useIsoLayoutEffect(() => { 13251 if (id == null || hidden && !keepMounted) { 13252 return void 0; 13253 } 13254 return registerMountedTabPanel(value, id); 13255 }, [hidden, keepMounted, value, id, registerMountedTabPanel]); 13256 const shouldRender = keepMounted || mounted; 13257 if (!shouldRender) { 13258 return null; 13259 } 13260 return element; 13261 }); 13262 if (true) TabsPanel.displayName = "TabsPanel"; 13263 13264 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/tabs/list/TabsList.mjs 13265 var React100 = __toESM(require_react(), 1); 13266 var import_jsx_runtime50 = __toESM(require_jsx_runtime(), 1); 13267 var TabsList = /* @__PURE__ */ React100.forwardRef(function TabsList2(componentProps, forwardedRef) { 13268 const { 13269 activateOnFocus = false, 13270 className, 13271 loopFocus = true, 13272 render, 13273 style, 13274 ...elementProps 13275 } = componentProps; 13276 const { 13277 orientation, 13278 setTabMap, 13279 tabActivationDirection 13280 } = useTabsRootContext(); 13281 const [highlightedTabIndex, setHighlightedTabIndex] = React100.useState(0); 13282 const [tabsListElement, setTabsListElement] = React100.useState(null); 13283 const indicatorUpdateListenersRef = React100.useRef(/* @__PURE__ */ new Set()); 13284 const tabResizeObserverElementsRef = React100.useRef(/* @__PURE__ */ new Set()); 13285 const resizeObserverRef = React100.useRef(null); 13286 useIsoLayoutEffect(() => { 13287 if (typeof ResizeObserver === "undefined") { 13288 return void 0; 13289 } 13290 const resizeObserver = new ResizeObserver(() => { 13291 indicatorUpdateListenersRef.current.forEach((listener) => { 13292 listener(); 13293 }); 13294 }); 13295 resizeObserverRef.current = resizeObserver; 13296 if (tabsListElement) { 13297 resizeObserver.observe(tabsListElement); 13298 } 13299 tabResizeObserverElementsRef.current.forEach((element) => { 13300 resizeObserver.observe(element); 13301 }); 13302 return () => { 13303 resizeObserver.disconnect(); 13304 resizeObserverRef.current = null; 13305 }; 13306 }, [tabsListElement]); 13307 const registerIndicatorUpdateListener = useStableCallback((listener) => { 13308 indicatorUpdateListenersRef.current.add(listener); 13309 return () => { 13310 indicatorUpdateListenersRef.current.delete(listener); 13311 }; 13312 }); 13313 const registerTabResizeObserverElement = useStableCallback((element) => { 13314 tabResizeObserverElementsRef.current.add(element); 13315 resizeObserverRef.current?.observe(element); 13316 return () => { 13317 tabResizeObserverElementsRef.current.delete(element); 13318 resizeObserverRef.current?.unobserve(element); 13319 }; 13320 }); 13321 const state = { 13322 orientation, 13323 tabActivationDirection 13324 }; 13325 const defaultProps = { 13326 "aria-orientation": orientation === "vertical" ? "vertical" : void 0, 13327 role: "tablist" 13328 }; 13329 const tabsListContextValue = React100.useMemo(() => ({ 13330 activateOnFocus, 13331 registerIndicatorUpdateListener, 13332 registerTabResizeObserverElement, 13333 tabsListElement 13334 }), [activateOnFocus, registerIndicatorUpdateListener, registerTabResizeObserverElement, tabsListElement]); 13335 return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(TabsListContext.Provider, { 13336 value: tabsListContextValue, 13337 children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(CompositeRoot, { 13338 render, 13339 className, 13340 style, 13341 state, 13342 refs: [forwardedRef, setTabsListElement], 13343 props: [defaultProps, elementProps], 13344 stateAttributesMapping: tabsStateAttributesMapping, 13345 highlightedIndex: highlightedTabIndex, 13346 enableHomeAndEndKeys: true, 13347 loopFocus, 13348 orientation, 13349 onHighlightedIndexChange: setHighlightedTabIndex, 13350 onMapChange: setTabMap, 13351 disabledIndices: EMPTY_ARRAY 13352 }) 13353 }); 13354 }); 13355 if (true) TabsList.displayName = "TabsList"; 13356 13357 // node_modules/.store/@base-ui/react@1.9.0-uHNeM94OdjIeOtpyYGvL0A/node_modules/@base-ui/react/use-render/useRender.mjs 13358 function useRender(params) { 13359 return useRenderElement(params.defaultTagName ?? "div", params, params); 13360 } 13361 13362 // packages/ui/build-module/text/text.mjs 13363 var import_element9 = __toESM(require_element(), 1); 13364 var STYLE_HASH_ATTRIBUTE = "data-wp-hash"; 13365 function getRuntime() { 13366 const globalScope = globalThis; 13367 if (globalScope.__wpStyleRuntime) { 13368 return globalScope.__wpStyleRuntime; 13369 } 13370 globalScope.__wpStyleRuntime = { 13371 documents: /* @__PURE__ */ new Map(), 13372 styles: /* @__PURE__ */ new Map(), 13373 injectedStyles: /* @__PURE__ */ new WeakMap() 13374 }; 13375 if (typeof document !== "undefined") { 13376 registerDocument(document); 13377 } 13378 return globalScope.__wpStyleRuntime; 13379 } 13380 function documentContainsStyleHash(targetDocument, hash) { 13381 if (!targetDocument.head) { 13382 return false; 13383 } 13384 for (const style of targetDocument.head.querySelectorAll( 13385 `style[$STYLE_HASH_ATTRIBUTE}]` 13386 )) { 13387 if (style.getAttribute(STYLE_HASH_ATTRIBUTE) === hash) { 13388 return true; 13389 } 13390 } 13391 return false; 13392 } 13393 function injectStyle(targetDocument, hash, css) { 13394 if (!targetDocument.head) { 13395 return; 13396 } 13397 const runtime = getRuntime(); 13398 let injectedStyles = runtime.injectedStyles.get(targetDocument); 13399 if (!injectedStyles) { 13400 injectedStyles = /* @__PURE__ */ new Set(); 13401 runtime.injectedStyles.set(targetDocument, injectedStyles); 13402 } 13403 if (injectedStyles.has(hash)) { 13404 return; 13405 } 13406 if (documentContainsStyleHash(targetDocument, hash)) { 13407 injectedStyles.add(hash); 13408 return; 13409 } 13410 const style = targetDocument.createElement("style"); 13411 style.setAttribute(STYLE_HASH_ATTRIBUTE, hash); 13412 style.appendChild(targetDocument.createTextNode(css)); 13413 targetDocument.head.appendChild(style); 13414 injectedStyles.add(hash); 13415 } 13416 function registerDocument(targetDocument) { 13417 const runtime = getRuntime(); 13418 runtime.documents.set( 13419 targetDocument, 13420 (runtime.documents.get(targetDocument) ?? 0) + 1 13421 ); 13422 for (const [hash, css] of runtime.styles) { 13423 injectStyle(targetDocument, hash, css); 13424 } 13425 return () => { 13426 const count = runtime.documents.get(targetDocument); 13427 if (count === void 0) { 13428 return; 13429 } 13430 if (count <= 1) { 13431 runtime.documents.delete(targetDocument); 13432 return; 13433 } 13434 runtime.documents.set(targetDocument, count - 1); 13435 }; 13436 } 13437 function registerStyle(hash, css) { 13438 const runtime = getRuntime(); 13439 runtime.styles.set(hash, css); 13440 for (const targetDocument of runtime.documents.keys()) { 13441 injectStyle(targetDocument, hash, css); 13442 } 13443 } 13444 if (typeof process === "undefined" || true) { 13445 registerStyle("3167e7d116", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._83ed8a8da5dd50ea__text{text-wrap:pretty;margin:0}._14437cfb77831647__heading-2xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-emphasis,600);--_gcd-p-font-size:var(--wpds-typography-font-size-2xl,32px);--_gcd-p-line-height:var(--wpds-typography-line-height-2xl,40px);font-size:var(--wpds-typography-font-size-2xl,32px);line-height:var(--wpds-typography-line-height-2xl,40px)}._14437cfb77831647__heading-2xl,._3c78b7fa9b4072dd__heading-xl{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-emphasis,600)}._3c78b7fa9b4072dd__heading-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-emphasis,600);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-md,24px)}.aa58f227716bcde2__heading-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-emphasis,600);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-lg,15px)}.aa58f227716bcde2__heading-lg,.fc4da56d8dfe52c4__heading-md{font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-emphasis,600);line-height:var(--wpds-typography-line-height-sm,20px)}.fc4da56d8dfe52c4__heading-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-emphasis,600);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px)}.a9b78c7c82e8dff7__heading-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-emphasis,600);--_gcd-p-font-size:var(--wpds-typography-font-size-xs,11px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-family:var(--wpds-typography-font-family-heading,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);line-height:var(--wpds-typography-line-height-xs,16px);text-transform:uppercase}._305ff559e52180d5__body-xl{--_gcd-heading-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-default,400);--_gcd-p-font-size:var(--wpds-typography-font-size-xl,20px);--_gcd-p-line-height:var(--wpds-typography-line-height-xl,32px);font-size:var(--wpds-typography-font-size-xl,20px);line-height:var(--wpds-typography-line-height-xl,32px)}._305ff559e52180d5__body-xl,.ca1aa3fc2029e958__body-lg{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-default,400)}.ca1aa3fc2029e958__body-lg{--_gcd-heading-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-default,400);--_gcd-p-font-size:var(--wpds-typography-font-size-lg,15px);--_gcd-p-line-height:var(--wpds-typography-line-height-md,24px);font-size:var(--wpds-typography-font-size-lg,15px);line-height:var(--wpds-typography-line-height-md,24px)}._131101940be12424__body-md{--_gcd-heading-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-default,400);--_gcd-p-font-size:var(--wpds-typography-font-size-md,13px);--_gcd-p-line-height:var(--wpds-typography-line-height-sm,20px);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px)}._0e8d87a42c1f75fa__body-sm,._131101940be12424__body-md{font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-weight:var(--wpds-typography-font-weight-default,400)}._0e8d87a42c1f75fa__body-sm{--_gcd-heading-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-heading-font-weight:var(--wpds-typography-font-weight-default,400);--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}}'); 13446 } 13447 var style_default = { "text": "_83ed8a8da5dd50ea__text", "heading-2xl": "_14437cfb77831647__heading-2xl", "heading-xl": "_3c78b7fa9b4072dd__heading-xl", "heading-lg": "aa58f227716bcde2__heading-lg", "heading-md": "fc4da56d8dfe52c4__heading-md", "heading-sm": "a9b78c7c82e8dff7__heading-sm", "body-xl": "_305ff559e52180d5__body-xl", "body-lg": "ca1aa3fc2029e958__body-lg", "body-md": "_131101940be12424__body-md", "body-sm": "_0e8d87a42c1f75fa__body-sm" }; 13448 if (typeof process === "undefined" || true) { 13449 registerStyle("abb19c3171", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}[role=treeitem] span._400bf7ee0c6061a9__span[aria-hidden]{display:var(--_gcd-span-display,inline);font-family:var(--_gcd-span-font-family,inherit);font-size:var(--_gcd-span-font-size,inherit);line-height:var(--_gcd-span-line-height,1);pointer-events:var(--_gcd-span-pointer-events,auto);position:var(--_gcd-span-position,static)}"); 13450 } 13451 var global_css_defense_default = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li", "span": "_400bf7ee0c6061a9__span" }; 13452 var Text = (0, import_element9.forwardRef)( 13453 function UnforwardedText({ variant = "body-md", render, className, ...props }, ref) { 13454 const element = useRender({ 13455 render, 13456 defaultTagName: "span", 13457 ref, 13458 props: mergeProps(props, { 13459 className: clsx_default( 13460 style_default.text, 13461 global_css_defense_default.heading, 13462 global_css_defense_default.p, 13463 style_default[variant], 13464 className 13465 ) 13466 }) 13467 }); 13468 return element; 13469 } 13470 ); 13471 13472 // packages/ui/build-module/spinner/spinner.mjs 13473 var import_element10 = __toESM(require_element(), 1); 13474 var import_jsx_runtime51 = __toESM(require_jsx_runtime(), 1); 13475 var STYLE_HASH_ATTRIBUTE2 = "data-wp-hash"; 13476 function getRuntime2() { 13477 const globalScope = globalThis; 13478 if (globalScope.__wpStyleRuntime) { 13479 return globalScope.__wpStyleRuntime; 13480 } 13481 globalScope.__wpStyleRuntime = { 13482 documents: /* @__PURE__ */ new Map(), 13483 styles: /* @__PURE__ */ new Map(), 13484 injectedStyles: /* @__PURE__ */ new WeakMap() 13485 }; 13486 if (typeof document !== "undefined") { 13487 registerDocument2(document); 13488 } 13489 return globalScope.__wpStyleRuntime; 13490 } 13491 function documentContainsStyleHash2(targetDocument, hash) { 13492 if (!targetDocument.head) { 13493 return false; 13494 } 13495 for (const style of targetDocument.head.querySelectorAll( 13496 `style[$STYLE_HASH_ATTRIBUTE2}]` 13497 )) { 13498 if (style.getAttribute(STYLE_HASH_ATTRIBUTE2) === hash) { 13499 return true; 13500 } 13501 } 13502 return false; 13503 } 13504 function injectStyle2(targetDocument, hash, css) { 13505 if (!targetDocument.head) { 13506 return; 13507 } 13508 const runtime = getRuntime2(); 13509 let injectedStyles = runtime.injectedStyles.get(targetDocument); 13510 if (!injectedStyles) { 13511 injectedStyles = /* @__PURE__ */ new Set(); 13512 runtime.injectedStyles.set(targetDocument, injectedStyles); 13513 } 13514 if (injectedStyles.has(hash)) { 13515 return; 13516 } 13517 if (documentContainsStyleHash2(targetDocument, hash)) { 13518 injectedStyles.add(hash); 13519 return; 13520 } 13521 const style = targetDocument.createElement("style"); 13522 style.setAttribute(STYLE_HASH_ATTRIBUTE2, hash); 13523 style.appendChild(targetDocument.createTextNode(css)); 13524 targetDocument.head.appendChild(style); 13525 injectedStyles.add(hash); 13526 } 13527 function registerDocument2(targetDocument) { 13528 const runtime = getRuntime2(); 13529 runtime.documents.set( 13530 targetDocument, 13531 (runtime.documents.get(targetDocument) ?? 0) + 1 13532 ); 13533 for (const [hash, css] of runtime.styles) { 13534 injectStyle2(targetDocument, hash, css); 13535 } 13536 return () => { 13537 const count = runtime.documents.get(targetDocument); 13538 if (count === void 0) { 13539 return; 13540 } 13541 if (count <= 1) { 13542 runtime.documents.delete(targetDocument); 13543 return; 13544 } 13545 runtime.documents.set(targetDocument, count - 1); 13546 }; 13547 } 13548 function registerStyle2(hash, css) { 13549 const runtime = getRuntime2(); 13550 runtime.styles.set(hash, css); 13551 for (const targetDocument of runtime.documents.keys()) { 13552 injectStyle2(targetDocument, hash, css); 13553 } 13554 } 13555 if (typeof process === "undefined" || true) { 13556 registerStyle2("bc09fb824f", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.ab4d64c07c0ba587__spinner{background-color:transparent;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:inline-block;height:var(--wpds-dimension-size-2xs,16px);opacity:1;overflow:visible;position:relative;width:var(--wpds-dimension-size-2xs,16px)}.a7654e10245bb7d2__indicator{fill:transparent;stroke:currentColor;stroke-width:var(--wpds-border-width-sm,2px);stroke-linecap:round;transform-origin:50% 50%;@media (forced-colors:active){stroke:CanvasText}animation:_02322d973909703c__spinner-spin 1.4s linear infinite both}@keyframes _02322d973909703c__spinner-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}}}"); 13557 } 13558 var style_default2 = { "spinner": "ab4d64c07c0ba587__spinner", "indicator": "a7654e10245bb7d2__indicator", "spinner-spin": "_02322d973909703c__spinner-spin" }; 13559 var Spinner = (0, import_element10.forwardRef)( 13560 function UnforwardedSpinner({ className, color, style, ...props }, ref) { 13561 return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( 13562 "svg", 13563 { 13564 className: clsx_default(style_default2.spinner, className), 13565 style: color === void 0 ? style : { ...style, color }, 13566 viewBox: "0 0 100 100", 13567 xmlns: "http://www.w3.org/2000/svg", 13568 role: "presentation", 13569 focusable: "false", 13570 ...props, 13571 ref, 13572 children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( 13573 "path", 13574 { 13575 className: style_default2.indicator, 13576 d: "m 50 0 a 50 50 0 0 1 0 100", 13577 vectorEffect: "non-scaling-stroke" 13578 } 13579 ) 13580 } 13581 ); 13582 } 13583 ); 13584 13585 // packages/ui/build-module/visually-hidden/visually-hidden.mjs 13586 var import_element11 = __toESM(require_element(), 1); 13587 var STYLE_HASH_ATTRIBUTE3 = "data-wp-hash"; 13588 function getRuntime3() { 13589 const globalScope = globalThis; 13590 if (globalScope.__wpStyleRuntime) { 13591 return globalScope.__wpStyleRuntime; 13592 } 13593 globalScope.__wpStyleRuntime = { 13594 documents: /* @__PURE__ */ new Map(), 13595 styles: /* @__PURE__ */ new Map(), 13596 injectedStyles: /* @__PURE__ */ new WeakMap() 13597 }; 13598 if (typeof document !== "undefined") { 13599 registerDocument3(document); 13600 } 13601 return globalScope.__wpStyleRuntime; 13602 } 13603 function documentContainsStyleHash3(targetDocument, hash) { 13604 if (!targetDocument.head) { 13605 return false; 13606 } 13607 for (const style of targetDocument.head.querySelectorAll( 13608 `style[$STYLE_HASH_ATTRIBUTE3}]` 13609 )) { 13610 if (style.getAttribute(STYLE_HASH_ATTRIBUTE3) === hash) { 13611 return true; 13612 } 13613 } 13614 return false; 13615 } 13616 function injectStyle3(targetDocument, hash, css) { 13617 if (!targetDocument.head) { 13618 return; 13619 } 13620 const runtime = getRuntime3(); 13621 let injectedStyles = runtime.injectedStyles.get(targetDocument); 13622 if (!injectedStyles) { 13623 injectedStyles = /* @__PURE__ */ new Set(); 13624 runtime.injectedStyles.set(targetDocument, injectedStyles); 13625 } 13626 if (injectedStyles.has(hash)) { 13627 return; 13628 } 13629 if (documentContainsStyleHash3(targetDocument, hash)) { 13630 injectedStyles.add(hash); 13631 return; 13632 } 13633 const style = targetDocument.createElement("style"); 13634 style.setAttribute(STYLE_HASH_ATTRIBUTE3, hash); 13635 style.appendChild(targetDocument.createTextNode(css)); 13636 targetDocument.head.appendChild(style); 13637 injectedStyles.add(hash); 13638 } 13639 function registerDocument3(targetDocument) { 13640 const runtime = getRuntime3(); 13641 runtime.documents.set( 13642 targetDocument, 13643 (runtime.documents.get(targetDocument) ?? 0) + 1 13644 ); 13645 for (const [hash, css] of runtime.styles) { 13646 injectStyle3(targetDocument, hash, css); 13647 } 13648 return () => { 13649 const count = runtime.documents.get(targetDocument); 13650 if (count === void 0) { 13651 return; 13652 } 13653 if (count <= 1) { 13654 runtime.documents.delete(targetDocument); 13655 return; 13656 } 13657 runtime.documents.set(targetDocument, count - 1); 13658 }; 13659 } 13660 function registerStyle3(hash, css) { 13661 const runtime = getRuntime3(); 13662 runtime.styles.set(hash, css); 13663 for (const targetDocument of runtime.documents.keys()) { 13664 injectStyle3(targetDocument, hash, css); 13665 } 13666 } 13667 if (typeof process === "undefined" || true) { 13668 registerStyle3("15abcab4d0", ".f37b9e2e191ebd66__visually-hidden{border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;overflow-wrap:normal;padding:0;position:absolute;width:1px;word-break:normal}"); 13669 } 13670 var style_default3 = { "visually-hidden": "f37b9e2e191ebd66__visually-hidden" }; 13671 var VisuallyHidden = (0, import_element11.forwardRef)( 13672 function UnforwardedVisuallyHidden({ render, ...restProps }, ref) { 13673 const element = useRender({ 13674 render, 13675 ref, 13676 props: mergeProps( 13677 { className: style_default3["visually-hidden"] }, 13678 restProps, 13679 { 13680 // @ts-expect-error Arbitrary data-* attributes aren't indexable on the typed div props. Kept hardcoded so consumers can't change or remove it. 13681 "data-visually-hidden": "" 13682 } 13683 ) 13684 }); 13685 return element; 13686 } 13687 ); 13688 13689 // packages/ui/build-module/utils/item-popup/item-content.mjs 13690 var import_element12 = __toESM(require_element(), 1); 13691 var VALIDATION_ENABLED = true; 13692 function parseItemContent(children, { Label: Label2, Description: Description2, validationMessage }) { 13693 const childArray = import_element12.Children.toArray(children); 13694 const [label, ...descriptions] = childArray; 13695 const hasLabel = (0, import_element12.isValidElement)(label) && label.type === Label2; 13696 const descriptionElements = descriptions.filter( 13697 (description) => (0, import_element12.isValidElement)(description) && description.type === Description2 13698 ); 13699 if (VALIDATION_ENABLED && (!hasLabel || descriptionElements.length !== descriptions.length)) { 13700 throw new Error(validationMessage); 13701 } 13702 return { 13703 descriptionIds: descriptionElements.map( 13704 (description) => description.props.id 13705 ), 13706 hasLabel, 13707 labelId: hasLabel ? label.props.id : void 0 13708 }; 13709 } 13710 function useItemContent(children, components, { 13711 "aria-describedby": ariaDescribedBy, 13712 "aria-label": ariaLabel, 13713 "aria-labelledby": ariaLabelledBy 13714 } = {}) { 13715 const generatedLabelId = (0, import_element12.useId)(); 13716 const generatedDescriptionId = (0, import_element12.useId)(); 13717 const { descriptionIds, hasLabel, labelId } = parseItemContent( 13718 children, 13719 components 13720 ); 13721 const resolvedLabelId = hasLabel ? labelId ?? generatedLabelId : void 0; 13722 const resolvedDescriptionIds = descriptionIds.map( 13723 (descriptionId, index3) => descriptionId ?? `$generatedDescriptionId}-$index3}` 13724 ); 13725 const itemDescribedBy = Array.from( 13726 /* @__PURE__ */ new Set([ 13727 ...ariaDescribedBy?.split(/\s+/).filter(Boolean) ?? [], 13728 ...resolvedDescriptionIds 13729 ]) 13730 ).join(" "); 13731 let descriptionIndex = 0; 13732 const { Label: Label2, Description: Description2, descriptionValidationToken } = components; 13733 const contentChildren = import_element12.Children.map(children, (child) => { 13734 if (!(0, import_element12.isValidElement)(child)) { 13735 return child; 13736 } 13737 if (child.type === Label2) { 13738 return child.props.id === resolvedLabelId ? child : (0, import_element12.cloneElement)(child, { id: resolvedLabelId }); 13739 } 13740 if (child.type !== Description2) { 13741 return child; 13742 } 13743 const descriptionId = resolvedDescriptionIds[descriptionIndex++]; 13744 if (!descriptionValidationToken && child.props.id === descriptionId) { 13745 return child; 13746 } 13747 return (0, import_element12.cloneElement)(child, { 13748 id: descriptionId, 13749 ...descriptionValidationToken && { 13750 validationToken: descriptionValidationToken 13751 } 13752 }); 13753 }); 13754 const labelledBy = ariaLabelledBy ?? (ariaLabel ? void 0 : resolvedLabelId); 13755 return { 13756 contentChildren, 13757 resolvedLabelId, 13758 itemAriaProps: { 13759 "aria-describedby": itemDescribedBy || void 0, 13760 "aria-label": ariaLabel, 13761 "aria-labelledby": labelledBy 13762 } 13763 }; 13764 } 13765 13766 // packages/ui/build-module/utils/render-slot-with-children.mjs 13767 var import_element13 = __toESM(require_element(), 1); 13768 function renderSlotWithChildren(slot, defaultSlot, children) { 13769 return (0, import_element13.cloneElement)( 13770 slot ?? defaultSlot, 13771 { children } 13772 ); 13773 } 13774 13775 // packages/ui/build-module/utils/wp-compat-overlay-slot.mjs 13776 var STYLE_HASH_ATTRIBUTE4 = "data-wp-hash"; 13777 function getRuntime4() { 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 registerDocument4(document); 13789 } 13790 return globalScope.__wpStyleRuntime; 13791 } 13792 function documentContainsStyleHash4(targetDocument, hash) { 13793 if (!targetDocument.head) { 13794 return false; 13795 } 13796 for (const style of targetDocument.head.querySelectorAll( 13797 `style[$STYLE_HASH_ATTRIBUTE4}]` 13798 )) { 13799 if (style.getAttribute(STYLE_HASH_ATTRIBUTE4) === hash) { 13800 return true; 13801 } 13802 } 13803 return false; 13804 } 13805 function injectStyle4(targetDocument, hash, css) { 13806 if (!targetDocument.head) { 13807 return; 13808 } 13809 const runtime = getRuntime4(); 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 (documentContainsStyleHash4(targetDocument, hash)) { 13819 injectedStyles.add(hash); 13820 return; 13821 } 13822 const style = targetDocument.createElement("style"); 13823 style.setAttribute(STYLE_HASH_ATTRIBUTE4, hash); 13824 style.appendChild(targetDocument.createTextNode(css)); 13825 targetDocument.head.appendChild(style); 13826 injectedStyles.add(hash); 13827 } 13828 function registerDocument4(targetDocument) { 13829 const runtime = getRuntime4(); 13830 runtime.documents.set( 13831 targetDocument, 13832 (runtime.documents.get(targetDocument) ?? 0) + 1 13833 ); 13834 for (const [hash, css] of runtime.styles) { 13835 injectStyle4(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 registerStyle4(hash, css) { 13850 const runtime = getRuntime4(); 13851 runtime.styles.set(hash, css); 13852 for (const targetDocument of runtime.documents.keys()) { 13853 injectStyle4(targetDocument, hash, css); 13854 } 13855 } 13856 if (typeof process === "undefined" || true) { 13857 registerStyle4("be37f31c1e", "._11fc52b637ff8a7e__slot{inset:0;isolation:isolate;pointer-events:none;position:fixed;z-index:1000000003}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._11fc52b637ff8a7e__slot>*{pointer-events:auto}}}"); 13858 } 13859 var wp_compat_overlay_slot_default = { "slot": "_11fc52b637ff8a7e__slot" }; 13860 var WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE = "data-wp-compat-overlay-slot"; 13861 function resolveOwnerDocument() { 13862 return typeof document === "undefined" ? null : document; 13863 } 13864 function isInWordPressEnvironment() { 13865 let topWp; 13866 try { 13867 topWp = window.top?.wp; 13868 } catch { 13869 } 13870 const wp = topWp ?? window.wp; 13871 return typeof wp?.components === "object" && wp.components !== null; 13872 } 13873 var cachedSlot = null; 13874 function ensureSlotIsAccessible(element) { 13875 element.setAttribute("aria-hidden", "false"); 13876 return element; 13877 } 13878 function createSlot(ownerDocument2) { 13879 const element = ownerDocument2.createElement("div"); 13880 element.setAttribute(WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE, ""); 13881 if (wp_compat_overlay_slot_default.slot) { 13882 element.classList.add(wp_compat_overlay_slot_default.slot); 13883 } 13884 ownerDocument2.body.appendChild(element); 13885 return element; 13886 } 13887 function getWpCompatOverlaySlot() { 13888 if (typeof window === "undefined") { 13889 return void 0; 13890 } 13891 if (!isInWordPressEnvironment() && window.__wpUiCompatOverlaySlotEnabled !== true) { 13892 return void 0; 13893 } 13894 const ownerDocument2 = resolveOwnerDocument(); 13895 if (!ownerDocument2 || !ownerDocument2.body) { 13896 return void 0; 13897 } 13898 if (cachedSlot && cachedSlot.ownerDocument === ownerDocument2 && cachedSlot.isConnected) { 13899 return ensureSlotIsAccessible(cachedSlot); 13900 } 13901 const existing = ownerDocument2.querySelector( 13902 `[$WP_COMPAT_OVERLAY_SLOT_ATTRIBUTE}]` 13903 ); 13904 if (existing instanceof HTMLDivElement) { 13905 cachedSlot = ensureSlotIsAccessible(existing); 13906 return cachedSlot; 13907 } 13908 if (cachedSlot?.isConnected) { 13909 cachedSlot.remove(); 13910 } 13911 cachedSlot = ensureSlotIsAccessible(createSlot(ownerDocument2)); 13912 return cachedSlot; 13913 } 13914 13915 // packages/ui/build-module/form/primitives/constants.mjs 13916 var ITEM_POPUP_POSITIONER_PROPS = { 13917 align: "start", 13918 sideOffset: 8, 13919 collisionPadding: 12 13920 }; 13921 13922 // packages/ui/build-module/utils/direction-provider.mjs 13923 var import_i18n3 = __toESM(require_i18n(), 1); 13924 var import_jsx_runtime52 = __toESM(require_jsx_runtime(), 1); 13925 function DirectionProvider3({ children }) { 13926 return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(DirectionProvider, { direction: (0, import_i18n3.isRTL)() ? "rtl" : "ltr", children }); 13927 } 13928 13929 // packages/ui/build-module/link/link.mjs 13930 var import_element14 = __toESM(require_element(), 1); 13931 var import_i18n4 = __toESM(require_i18n(), 1); 13932 var import_jsx_runtime53 = __toESM(require_jsx_runtime(), 1); 13933 var STYLE_HASH_ATTRIBUTE5 = "data-wp-hash"; 13934 function getRuntime5() { 13935 const globalScope = globalThis; 13936 if (globalScope.__wpStyleRuntime) { 13937 return globalScope.__wpStyleRuntime; 13938 } 13939 globalScope.__wpStyleRuntime = { 13940 documents: /* @__PURE__ */ new Map(), 13941 styles: /* @__PURE__ */ new Map(), 13942 injectedStyles: /* @__PURE__ */ new WeakMap() 13943 }; 13944 if (typeof document !== "undefined") { 13945 registerDocument5(document); 13946 } 13947 return globalScope.__wpStyleRuntime; 13948 } 13949 function documentContainsStyleHash5(targetDocument, hash) { 13950 if (!targetDocument.head) { 13951 return false; 13952 } 13953 for (const style of targetDocument.head.querySelectorAll( 13954 `style[$STYLE_HASH_ATTRIBUTE5}]` 13955 )) { 13956 if (style.getAttribute(STYLE_HASH_ATTRIBUTE5) === hash) { 13957 return true; 13958 } 13959 } 13960 return false; 13961 } 13962 function injectStyle5(targetDocument, hash, css) { 13963 if (!targetDocument.head) { 13964 return; 13965 } 13966 const runtime = getRuntime5(); 13967 let injectedStyles = runtime.injectedStyles.get(targetDocument); 13968 if (!injectedStyles) { 13969 injectedStyles = /* @__PURE__ */ new Set(); 13970 runtime.injectedStyles.set(targetDocument, injectedStyles); 13971 } 13972 if (injectedStyles.has(hash)) { 13973 return; 13974 } 13975 if (documentContainsStyleHash5(targetDocument, hash)) { 13976 injectedStyles.add(hash); 13977 return; 13978 } 13979 const style = targetDocument.createElement("style"); 13980 style.setAttribute(STYLE_HASH_ATTRIBUTE5, hash); 13981 style.appendChild(targetDocument.createTextNode(css)); 13982 targetDocument.head.appendChild(style); 13983 injectedStyles.add(hash); 13984 } 13985 function registerDocument5(targetDocument) { 13986 const runtime = getRuntime5(); 13987 runtime.documents.set( 13988 targetDocument, 13989 (runtime.documents.get(targetDocument) ?? 0) + 1 13990 ); 13991 for (const [hash, css] of runtime.styles) { 13992 injectStyle5(targetDocument, hash, css); 13993 } 13994 return () => { 13995 const count = runtime.documents.get(targetDocument); 13996 if (count === void 0) { 13997 return; 13998 } 13999 if (count <= 1) { 14000 runtime.documents.delete(targetDocument); 14001 return; 14002 } 14003 runtime.documents.set(targetDocument, count - 1); 14004 }; 14005 } 14006 function registerStyle5(hash, css) { 14007 const runtime = getRuntime5(); 14008 runtime.styles.set(hash, css); 14009 for (const targetDocument of runtime.documents.keys()) { 14010 injectStyle5(targetDocument, hash, css); 14011 } 14012 } 14013 if (typeof process === "undefined" || true) { 14014 registerStyle5("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 14015 } 14016 var resets_default = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; 14017 if (typeof process === "undefined" || true) { 14018 registerStyle5("7c3267f794", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{.af79fb116edb0dd7__outset-ring--focus:focus,.dfcfdc28396e5d98__outset-ring--focus-visible:focus-visible,.e5cd9ee879f6403a__outset-ring--focus-within:focus-within{--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}._3c9f5ee9fc9c136d__outset-ring--focus-within-except-active:focus-within,.abc777e9713fa711__outset-ring--focus-except-active:focus{outline:none}._3c9f5ee9fc9c136d__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.abc777e9713fa711__outset-ring--focus-except-active:focus:not(:active){--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}}}"); 14019 } 14020 var focus_module_default = { "outset-ring--focus": "af79fb116edb0dd7__outset-ring--focus", "outset-ring--focus-visible": "dfcfdc28396e5d98__outset-ring--focus-visible", "outset-ring--focus-within": "e5cd9ee879f6403a__outset-ring--focus-within", "outset-ring--focus-except-active": "abc777e9713fa711__outset-ring--focus-except-active", "outset-ring--focus-within-except-active": "_3c9f5ee9fc9c136d__outset-ring--focus-within-except-active" }; 14021 if (typeof process === "undefined" || true) { 14022 registerStyle5("888e86d20a", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.d4250949359b05ce__link{--_gcd-a-border-radius:var(--wpds-border-radius-sm,2px);border-radius:var(--wpds-border-radius-sm,2px);text-decoration-thickness:from-font;text-underline-offset:.2em}.f037c632480d4e11__link-with-icon{text-decoration-line:none}._8dc7567f9ff415bf__link-contents{text-decoration:inherit;text-decoration-line:underline}.c6055659b8e2cd2c__is-brand,.c6055659b8e2cd2c__is-brand:visited{--_gcd-a-color:var(--wpds-color-foreground-interactive-brand,var(--wp-admin-theme-color,#3858e9));color:var(--wpds-color-foreground-interactive-brand,var(--wp-admin-theme-color,#3858e9))}.c6055659b8e2cd2c__is-brand:active,.c6055659b8e2cd2c__is-brand:hover{--_gcd-a-color:var(--wpds-color-foreground-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 52%,#000));color:var(--wpds-color-foreground-interactive-brand-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 52%,#000))}._92e0dfcaeee15b88__is-neutral,._92e0dfcaeee15b88__is-neutral:visited{--_gcd-a-color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);text-decoration-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d)}._92e0dfcaeee15b88__is-neutral:active,._92e0dfcaeee15b88__is-neutral:hover{--_gcd-a-color:var(--wpds-color-foreground-interactive-neutral-active,#1e1e1e);color:var(--wpds-color-foreground-interactive-neutral-active,#1e1e1e)}.cf122a9bf1035d42__is-unstyled{--_gcd-a-border-radius:0;--_gcd-a-color:inherit;color:inherit;text-decoration:none}._0cb411afac4c86c7__link-icon{font-weight:var(--wpds-typography-font-weight-default,400);line-height:1;margin-inline-start:var(--wpds-dimension-padding-xs,4px);text-decoration:none}._0cb411afac4c86c7__link-icon:after{content:"\\2060\\2197"}._0cb411afac4c86c7__link-icon:dir(rtl):after{content:"\\2060\\2196"}}}'); 14023 } 14024 var style_default4 = { "link": "d4250949359b05ce__link", "link-with-icon": "f037c632480d4e11__link-with-icon", "link-contents": "_8dc7567f9ff415bf__link-contents", "is-brand": "c6055659b8e2cd2c__is-brand", "is-neutral": "_92e0dfcaeee15b88__is-neutral", "is-unstyled": "cf122a9bf1035d42__is-unstyled", "link-icon": "_0cb411afac4c86c7__link-icon" }; 14025 if (typeof process === "undefined" || true) { 14026 registerStyle5("abb19c3171", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}[role=treeitem] span._400bf7ee0c6061a9__span[aria-hidden]{display:var(--_gcd-span-display,inline);font-family:var(--_gcd-span-font-family,inherit);font-size:var(--_gcd-span-font-size,inherit);line-height:var(--_gcd-span-line-height,1);pointer-events:var(--_gcd-span-pointer-events,auto);position:var(--_gcd-span-position,static)}"); 14027 } 14028 var global_css_defense_default2 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li", "span": "_400bf7ee0c6061a9__span" }; 14029 var Link = (0, import_element14.forwardRef)( 14030 function UnforwardedLink({ 14031 children, 14032 variant = "default", 14033 tone = "brand", 14034 openInNewTab = false, 14035 target, 14036 render, 14037 className, 14038 ...props 14039 }, ref) { 14040 const shouldShowNewTabIndicator = openInNewTab || /^_blank$/i.test(target ?? ""); 14041 const element = useRender({ 14042 render, 14043 defaultTagName: "a", 14044 ref, 14045 props: mergeProps(props, { 14046 className: clsx_default( 14047 global_css_defense_default2.a, 14048 resets_default["box-sizing"], 14049 focus_module_default["outset-ring--focus-except-active"], 14050 variant !== "unstyled" && style_default4.link, 14051 variant !== "unstyled" && shouldShowNewTabIndicator && style_default4["link-with-icon"], 14052 variant !== "unstyled" && style_default4[`is-$tone}`], 14053 variant === "unstyled" && style_default4["is-unstyled"], 14054 className 14055 ), 14056 target: target ?? (openInNewTab ? "_blank" : void 0), 14057 children: /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(import_jsx_runtime53.Fragment, { children: [ 14058 shouldShowNewTabIndicator && variant !== "unstyled" ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("span", { className: style_default4["link-contents"], children }) : children, 14059 shouldShowNewTabIndicator && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)( 14060 "span", 14061 { 14062 className: style_default4["link-icon"], 14063 role: "img", 14064 "aria-label": ( 14065 /* translators: accessibility text appended to link text */ 14066 (0, import_i18n4.__)("(opens in a new tab)") 14067 ) 14068 } 14069 ) 14070 ] }) 14071 }) 14072 }); 14073 return element; 14074 } 14075 ); 14076 14077 // packages/ui/build-module/stack/stack.mjs 14078 var import_element15 = __toESM(require_element(), 1); 14079 var STYLE_HASH_ATTRIBUTE6 = "data-wp-hash"; 14080 function getRuntime6() { 14081 const globalScope = globalThis; 14082 if (globalScope.__wpStyleRuntime) { 14083 return globalScope.__wpStyleRuntime; 14084 } 14085 globalScope.__wpStyleRuntime = { 14086 documents: /* @__PURE__ */ new Map(), 14087 styles: /* @__PURE__ */ new Map(), 14088 injectedStyles: /* @__PURE__ */ new WeakMap() 14089 }; 14090 if (typeof document !== "undefined") { 14091 registerDocument6(document); 14092 } 14093 return globalScope.__wpStyleRuntime; 14094 } 14095 function documentContainsStyleHash6(targetDocument, hash) { 14096 if (!targetDocument.head) { 14097 return false; 14098 } 14099 for (const style of targetDocument.head.querySelectorAll( 14100 `style[$STYLE_HASH_ATTRIBUTE6}]` 14101 )) { 14102 if (style.getAttribute(STYLE_HASH_ATTRIBUTE6) === hash) { 14103 return true; 14104 } 14105 } 14106 return false; 14107 } 14108 function injectStyle6(targetDocument, hash, css) { 14109 if (!targetDocument.head) { 14110 return; 14111 } 14112 const runtime = getRuntime6(); 14113 let injectedStyles = runtime.injectedStyles.get(targetDocument); 14114 if (!injectedStyles) { 14115 injectedStyles = /* @__PURE__ */ new Set(); 14116 runtime.injectedStyles.set(targetDocument, injectedStyles); 14117 } 14118 if (injectedStyles.has(hash)) { 14119 return; 14120 } 14121 if (documentContainsStyleHash6(targetDocument, hash)) { 14122 injectedStyles.add(hash); 14123 return; 14124 } 14125 const style = targetDocument.createElement("style"); 14126 style.setAttribute(STYLE_HASH_ATTRIBUTE6, hash); 14127 style.appendChild(targetDocument.createTextNode(css)); 14128 targetDocument.head.appendChild(style); 14129 injectedStyles.add(hash); 14130 } 14131 function registerDocument6(targetDocument) { 14132 const runtime = getRuntime6(); 14133 runtime.documents.set( 14134 targetDocument, 14135 (runtime.documents.get(targetDocument) ?? 0) + 1 14136 ); 14137 for (const [hash, css] of runtime.styles) { 14138 injectStyle6(targetDocument, hash, css); 14139 } 14140 return () => { 14141 const count = runtime.documents.get(targetDocument); 14142 if (count === void 0) { 14143 return; 14144 } 14145 if (count <= 1) { 14146 runtime.documents.delete(targetDocument); 14147 return; 14148 } 14149 runtime.documents.set(targetDocument, count - 1); 14150 }; 14151 } 14152 function registerStyle6(hash, css) { 14153 const runtime = getRuntime6(); 14154 runtime.styles.set(hash, css); 14155 for (const targetDocument of runtime.documents.keys()) { 14156 injectStyle6(targetDocument, hash, css); 14157 } 14158 } 14159 if (typeof process === "undefined" || true) { 14160 registerStyle6("32aba35fe1", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._19ce0419607e1896__stack{display:flex}}}"); 14161 } 14162 var style_default5 = { "stack": "_19ce0419607e1896__stack" }; 14163 var gapTokens = { 14164 xs: "var(--wpds-dimension-gap-xs, 4px)", 14165 sm: "var(--wpds-dimension-gap-sm, 8px)", 14166 md: "var(--wpds-dimension-gap-md, 12px)", 14167 lg: "var(--wpds-dimension-gap-lg, 16px)", 14168 xl: "var(--wpds-dimension-gap-xl, 24px)", 14169 "2xl": "var(--wpds-dimension-gap-2xl, 32px)", 14170 "3xl": "var(--wpds-dimension-gap-3xl, 40px)" 14171 }; 14172 var Stack = (0, import_element15.forwardRef)( 14173 function UnforwardedStack({ direction, gap, align, justify, wrap, render, ...props }, ref) { 14174 const style = { 14175 gap: gap && gapTokens[gap], 14176 alignItems: align, 14177 justifyContent: justify, 14178 flexDirection: direction, 14179 flexWrap: wrap 14180 }; 14181 const element = useRender({ 14182 render, 14183 ref, 14184 props: mergeProps(props, { 14185 style, 14186 className: style_default5.stack 14187 }) 14188 }); 14189 return element; 14190 } 14191 ); 14192 14193 // packages/ui/build-module/utils/use-schedule-validation.mjs 14194 var import_compose = __toESM(require_compose(), 1); 14195 var import_element16 = __toESM(require_element(), 1); 14196 function useScheduleValidation(validate) { 14197 const validateEvent = (0, import_compose.useEvent)(validate); 14198 const timerRef = (0, import_element16.useRef)(null); 14199 const unmountedRef = (0, import_element16.useRef)(false); 14200 const scheduleValidation = (0, import_element16.useCallback)(() => { 14201 if (unmountedRef.current) { 14202 return; 14203 } 14204 if (timerRef.current) { 14205 clearTimeout(timerRef.current); 14206 } 14207 timerRef.current = setTimeout(() => { 14208 validateEvent(); 14209 timerRef.current = null; 14210 }, 0); 14211 }, [validateEvent]); 14212 (0, import_element16.useEffect)(() => { 14213 unmountedRef.current = false; 14214 return () => { 14215 unmountedRef.current = true; 14216 if (timerRef.current) { 14217 clearTimeout(timerRef.current); 14218 } 14219 }; 14220 }, []); 14221 return scheduleValidation; 14222 } 14223 14224 // packages/ui/build-module/form/primitives/input/input.mjs 14225 var import_element19 = __toESM(require_element(), 1); 14226 14227 // packages/ui/build-module/form/primitives/input-layout/input-layout.mjs 14228 var import_element17 = __toESM(require_element(), 1); 14229 var import_jsx_runtime54 = __toESM(require_jsx_runtime(), 1); 14230 var STYLE_HASH_ATTRIBUTE7 = "data-wp-hash"; 14231 function getRuntime7() { 14232 const globalScope = globalThis; 14233 if (globalScope.__wpStyleRuntime) { 14234 return globalScope.__wpStyleRuntime; 14235 } 14236 globalScope.__wpStyleRuntime = { 14237 documents: /* @__PURE__ */ new Map(), 14238 styles: /* @__PURE__ */ new Map(), 14239 injectedStyles: /* @__PURE__ */ new WeakMap() 14240 }; 14241 if (typeof document !== "undefined") { 14242 registerDocument7(document); 14243 } 14244 return globalScope.__wpStyleRuntime; 14245 } 14246 function documentContainsStyleHash7(targetDocument, hash) { 14247 if (!targetDocument.head) { 14248 return false; 14249 } 14250 for (const style of targetDocument.head.querySelectorAll( 14251 `style[$STYLE_HASH_ATTRIBUTE7}]` 14252 )) { 14253 if (style.getAttribute(STYLE_HASH_ATTRIBUTE7) === hash) { 14254 return true; 14255 } 14256 } 14257 return false; 14258 } 14259 function injectStyle7(targetDocument, hash, css) { 14260 if (!targetDocument.head) { 14261 return; 14262 } 14263 const runtime = getRuntime7(); 14264 let injectedStyles = runtime.injectedStyles.get(targetDocument); 14265 if (!injectedStyles) { 14266 injectedStyles = /* @__PURE__ */ new Set(); 14267 runtime.injectedStyles.set(targetDocument, injectedStyles); 14268 } 14269 if (injectedStyles.has(hash)) { 14270 return; 14271 } 14272 if (documentContainsStyleHash7(targetDocument, hash)) { 14273 injectedStyles.add(hash); 14274 return; 14275 } 14276 const style = targetDocument.createElement("style"); 14277 style.setAttribute(STYLE_HASH_ATTRIBUTE7, hash); 14278 style.appendChild(targetDocument.createTextNode(css)); 14279 targetDocument.head.appendChild(style); 14280 injectedStyles.add(hash); 14281 } 14282 function registerDocument7(targetDocument) { 14283 const runtime = getRuntime7(); 14284 runtime.documents.set( 14285 targetDocument, 14286 (runtime.documents.get(targetDocument) ?? 0) + 1 14287 ); 14288 for (const [hash, css] of runtime.styles) { 14289 injectStyle7(targetDocument, hash, css); 14290 } 14291 return () => { 14292 const count = runtime.documents.get(targetDocument); 14293 if (count === void 0) { 14294 return; 14295 } 14296 if (count <= 1) { 14297 runtime.documents.delete(targetDocument); 14298 return; 14299 } 14300 runtime.documents.set(targetDocument, count - 1); 14301 }; 14302 } 14303 function registerStyle7(hash, css) { 14304 const runtime = getRuntime7(); 14305 runtime.styles.set(hash, css); 14306 for (const targetDocument of runtime.documents.keys()) { 14307 injectStyle7(targetDocument, hash, css); 14308 } 14309 } 14310 if (typeof process === "undefined" || true) { 14311 registerStyle7("abb19c3171", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}[role=treeitem] span._400bf7ee0c6061a9__span[aria-hidden]{display:var(--_gcd-span-display,inline);font-family:var(--_gcd-span-font-family,inherit);font-size:var(--_gcd-span-font-size,inherit);line-height:var(--_gcd-span-line-height,1);pointer-events:var(--_gcd-span-pointer-events,auto);position:var(--_gcd-span-position,static)}"); 14312 } 14313 var global_css_defense_default3 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li", "span": "_400bf7ee0c6061a9__span" }; 14314 if (typeof process === "undefined" || true) { 14315 registerStyle7("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 14316 } 14317 var resets_default2 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; 14318 if (typeof process === "undefined" || true) { 14319 registerStyle7("fae9ae14d3", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.cb2baafdc08746bb__input-layout{--wp-ui-input-layout-padding-inline:var(--wpds-dimension-padding-md,12px);background-color:var(--wpds-color-background-interactive-neutral,var(--wpds-color-background-surface-neutral-strong,#fff));border-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d);border-radius:var(--wpds-border-radius-sm,2px);border-style:solid;border-width:var(--wpds-border-width-xs,1px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);height:var(--wpds-dimension-size-lg,40px);line-height:1;&._0c807a84cbb94e0c__is-size-compact{height:var(--wpds-dimension-size-md,32px)}&._0c807a84cbb94e0c__is-size-compact,&.ed67cda122dc1e7b__is-size-small{--wp-ui-input-layout-padding-inline:var(--wpds-dimension-padding-sm,8px)}&.ed67cda122dc1e7b__is-size-small{height:var(--wpds-dimension-size-sm,24px)}&._6fb7104732387680__is-disabled,&:has([data-can-disable-input-layout][data-disabled]){color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}&:not(._8097270636ca6100__is-borderless){background-color:var(--wpds-color-background-interactive-neutral-disabled,var(--wpds-color-background-surface-neutral-strong,#fff));border-color:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb);@media (forced-colors:active){border-bottom-color:GrayText;border-left-color:GrayText;border-right-color:GrayText;border-top-color:GrayText}}}&._8097270636ca6100__is-borderless{background-color:var(--wpds-color-background-interactive-neutral-weak,#0000);border-color:transparent}&:has(._0d7afad74a057888__input-layout-slot:focus-within){--_gcd-div-outline:none;outline:none}&:hover:not(._6fb7104732387680__is-disabled,:has([data-can-disable-input-layout][data-disabled]),._8097270636ca6100__is-borderless){background-color:var(--wpds-color-background-interactive-neutral-active,var(--wpds-color-background-surface-neutral-strong,#fff));border-color:var(--wpds-color-stroke-interactive-neutral-active,#6e6e6e)}&:has(:invalid[data-validity-visible]){--focus-color:var(--wpds-color-stroke-interactive-error,#cc1818);border-color:var(--wpds-color-stroke-interactive-error,#cc1818);&:hover{border-color:var(--wpds-color-stroke-interactive-error-active,#9d0000)}}}.c192b41a12b4387b__slot-wrapper{display:contents}._0d7afad74a057888__input-layout-slot{align-items:center;display:flex;&._0c952682762ca288__is-padding-minimal{--wp-ui-input-layout-prefix-padding-start:calc(var(--wp-ui-input-layout-padding-inline) - var(--wpds-dimension-padding-xs, 4px));--wp-ui-input-layout-suffix-padding-end:calc(var(--wp-ui-input-layout-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}[data-slot-type=prefix] &{padding-inline-start:var(--wp-ui-input-layout-prefix-padding-start,var(--wp-ui-input-layout-padding-inline))}[data-slot-type=suffix] &{padding-inline-end:var(--wp-ui-input-layout-suffix-padding-end,var(--wp-ui-input-layout-padding-inline))}}}}'); 14320 } 14321 var style_default6 = { "input-layout": "cb2baafdc08746bb__input-layout", "is-size-compact": "_0c807a84cbb94e0c__is-size-compact", "is-size-small": "ed67cda122dc1e7b__is-size-small", "is-disabled": "_6fb7104732387680__is-disabled", "is-borderless": "_8097270636ca6100__is-borderless", "input-layout-slot": "_0d7afad74a057888__input-layout-slot", "slot-wrapper": "c192b41a12b4387b__slot-wrapper", "is-padding-minimal": "_0c952682762ca288__is-padding-minimal" }; 14322 var InputLayout = (0, import_element17.forwardRef)( 14323 function UnforwardedInputLayout({ 14324 className, 14325 children, 14326 visuallyDisabled, 14327 size: size4 = "default", 14328 isBorderless, 14329 prefix, 14330 suffix, 14331 ...restProps 14332 }, ref) { 14333 return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)( 14334 "div", 14335 { 14336 ref, 14337 className: clsx_default( 14338 global_css_defense_default3.div, 14339 resets_default2["box-sizing"], 14340 style_default6["input-layout"], 14341 style_default6[`is-size-$size4}`], 14342 visuallyDisabled && style_default6["is-disabled"], 14343 isBorderless && style_default6["is-borderless"], 14344 className 14345 ), 14346 ...restProps, 14347 children: [ 14348 import_element17.Children.count(prefix) > 0 && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( 14349 "div", 14350 { 14351 className: style_default6["slot-wrapper"], 14352 "data-slot-type": "prefix", 14353 children: prefix 14354 } 14355 ), 14356 children, 14357 import_element17.Children.count(suffix) > 0 && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( 14358 "div", 14359 { 14360 className: style_default6["slot-wrapper"], 14361 "data-slot-type": "suffix", 14362 children: suffix 14363 } 14364 ) 14365 ] 14366 } 14367 ); 14368 } 14369 ); 14370 14371 // packages/ui/build-module/form/primitives/input-layout/slot.mjs 14372 var import_element18 = __toESM(require_element(), 1); 14373 var import_jsx_runtime55 = __toESM(require_jsx_runtime(), 1); 14374 var STYLE_HASH_ATTRIBUTE8 = "data-wp-hash"; 14375 function getRuntime8() { 14376 const globalScope = globalThis; 14377 if (globalScope.__wpStyleRuntime) { 14378 return globalScope.__wpStyleRuntime; 14379 } 14380 globalScope.__wpStyleRuntime = { 14381 documents: /* @__PURE__ */ new Map(), 14382 styles: /* @__PURE__ */ new Map(), 14383 injectedStyles: /* @__PURE__ */ new WeakMap() 14384 }; 14385 if (typeof document !== "undefined") { 14386 registerDocument8(document); 14387 } 14388 return globalScope.__wpStyleRuntime; 14389 } 14390 function documentContainsStyleHash8(targetDocument, hash) { 14391 if (!targetDocument.head) { 14392 return false; 14393 } 14394 for (const style of targetDocument.head.querySelectorAll( 14395 `style[$STYLE_HASH_ATTRIBUTE8}]` 14396 )) { 14397 if (style.getAttribute(STYLE_HASH_ATTRIBUTE8) === hash) { 14398 return true; 14399 } 14400 } 14401 return false; 14402 } 14403 function injectStyle8(targetDocument, hash, css) { 14404 if (!targetDocument.head) { 14405 return; 14406 } 14407 const runtime = getRuntime8(); 14408 let injectedStyles = runtime.injectedStyles.get(targetDocument); 14409 if (!injectedStyles) { 14410 injectedStyles = /* @__PURE__ */ new Set(); 14411 runtime.injectedStyles.set(targetDocument, injectedStyles); 14412 } 14413 if (injectedStyles.has(hash)) { 14414 return; 14415 } 14416 if (documentContainsStyleHash8(targetDocument, hash)) { 14417 injectedStyles.add(hash); 14418 return; 14419 } 14420 const style = targetDocument.createElement("style"); 14421 style.setAttribute(STYLE_HASH_ATTRIBUTE8, hash); 14422 style.appendChild(targetDocument.createTextNode(css)); 14423 targetDocument.head.appendChild(style); 14424 injectedStyles.add(hash); 14425 } 14426 function registerDocument8(targetDocument) { 14427 const runtime = getRuntime8(); 14428 runtime.documents.set( 14429 targetDocument, 14430 (runtime.documents.get(targetDocument) ?? 0) + 1 14431 ); 14432 for (const [hash, css] of runtime.styles) { 14433 injectStyle8(targetDocument, hash, css); 14434 } 14435 return () => { 14436 const count = runtime.documents.get(targetDocument); 14437 if (count === void 0) { 14438 return; 14439 } 14440 if (count <= 1) { 14441 runtime.documents.delete(targetDocument); 14442 return; 14443 } 14444 runtime.documents.set(targetDocument, count - 1); 14445 }; 14446 } 14447 function registerStyle8(hash, css) { 14448 const runtime = getRuntime8(); 14449 runtime.styles.set(hash, css); 14450 for (const targetDocument of runtime.documents.keys()) { 14451 injectStyle8(targetDocument, hash, css); 14452 } 14453 } 14454 if (typeof process === "undefined" || true) { 14455 registerStyle8("fae9ae14d3", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{.cb2baafdc08746bb__input-layout{--wp-ui-input-layout-padding-inline:var(--wpds-dimension-padding-md,12px);background-color:var(--wpds-color-background-interactive-neutral,var(--wpds-color-background-surface-neutral-strong,#fff));border-color:var(--wpds-color-stroke-interactive-neutral,#8d8d8d);border-radius:var(--wpds-border-radius-sm,2px);border-style:solid;border-width:var(--wpds-border-width-xs,1px);color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);height:var(--wpds-dimension-size-lg,40px);line-height:1;&._0c807a84cbb94e0c__is-size-compact{height:var(--wpds-dimension-size-md,32px)}&._0c807a84cbb94e0c__is-size-compact,&.ed67cda122dc1e7b__is-size-small{--wp-ui-input-layout-padding-inline:var(--wpds-dimension-padding-sm,8px)}&.ed67cda122dc1e7b__is-size-small{height:var(--wpds-dimension-size-sm,24px)}&._6fb7104732387680__is-disabled,&:has([data-can-disable-input-layout][data-disabled]){color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}&:not(._8097270636ca6100__is-borderless){background-color:var(--wpds-color-background-interactive-neutral-disabled,var(--wpds-color-background-surface-neutral-strong,#fff));border-color:var(--wpds-color-stroke-interactive-neutral-disabled,#dbdbdb);@media (forced-colors:active){border-bottom-color:GrayText;border-left-color:GrayText;border-right-color:GrayText;border-top-color:GrayText}}}&._8097270636ca6100__is-borderless{background-color:var(--wpds-color-background-interactive-neutral-weak,#0000);border-color:transparent}&:has(._0d7afad74a057888__input-layout-slot:focus-within){--_gcd-div-outline:none;outline:none}&:hover:not(._6fb7104732387680__is-disabled,:has([data-can-disable-input-layout][data-disabled]),._8097270636ca6100__is-borderless){background-color:var(--wpds-color-background-interactive-neutral-active,var(--wpds-color-background-surface-neutral-strong,#fff));border-color:var(--wpds-color-stroke-interactive-neutral-active,#6e6e6e)}&:has(:invalid[data-validity-visible]){--focus-color:var(--wpds-color-stroke-interactive-error,#cc1818);border-color:var(--wpds-color-stroke-interactive-error,#cc1818);&:hover{border-color:var(--wpds-color-stroke-interactive-error-active,#9d0000)}}}.c192b41a12b4387b__slot-wrapper{display:contents}._0d7afad74a057888__input-layout-slot{align-items:center;display:flex;&._0c952682762ca288__is-padding-minimal{--wp-ui-input-layout-prefix-padding-start:calc(var(--wp-ui-input-layout-padding-inline) - var(--wpds-dimension-padding-xs, 4px));--wp-ui-input-layout-suffix-padding-end:calc(var(--wp-ui-input-layout-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}[data-slot-type=prefix] &{padding-inline-start:var(--wp-ui-input-layout-prefix-padding-start,var(--wp-ui-input-layout-padding-inline))}[data-slot-type=suffix] &{padding-inline-end:var(--wp-ui-input-layout-suffix-padding-end,var(--wp-ui-input-layout-padding-inline))}}}}'); 14456 } 14457 var style_default7 = { "input-layout": "cb2baafdc08746bb__input-layout", "is-size-compact": "_0c807a84cbb94e0c__is-size-compact", "is-size-small": "ed67cda122dc1e7b__is-size-small", "is-disabled": "_6fb7104732387680__is-disabled", "is-borderless": "_8097270636ca6100__is-borderless", "input-layout-slot": "_0d7afad74a057888__input-layout-slot", "slot-wrapper": "c192b41a12b4387b__slot-wrapper", "is-padding-minimal": "_0c952682762ca288__is-padding-minimal" }; 14458 var InputLayoutSlot = (0, import_element18.forwardRef)(function UnforwardedInputLayoutSlot({ padding = "default", className, ...restProps }, ref) { 14459 return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)( 14460 "div", 14461 { 14462 ref, 14463 className: clsx_default( 14464 style_default7["input-layout-slot"], 14465 style_default7[`is-padding-$padding}`], 14466 className 14467 ), 14468 ...restProps 14469 } 14470 ); 14471 }); 14472 InputLayoutSlot.displayName = "InputLayout.Slot"; 14473 14474 // packages/ui/build-module/form/primitives/input-layout/index.mjs 14475 var InputLayout2 = Object.assign(InputLayout, { 14476 Slot: InputLayoutSlot 14477 }); 14478 14479 // packages/ui/build-module/form/primitives/input/input.mjs 14480 var import_jsx_runtime56 = __toESM(require_jsx_runtime(), 1); 14481 var STYLE_HASH_ATTRIBUTE9 = "data-wp-hash"; 14482 function getRuntime9() { 14483 const globalScope = globalThis; 14484 if (globalScope.__wpStyleRuntime) { 14485 return globalScope.__wpStyleRuntime; 14486 } 14487 globalScope.__wpStyleRuntime = { 14488 documents: /* @__PURE__ */ new Map(), 14489 styles: /* @__PURE__ */ new Map(), 14490 injectedStyles: /* @__PURE__ */ new WeakMap() 14491 }; 14492 if (typeof document !== "undefined") { 14493 registerDocument9(document); 14494 } 14495 return globalScope.__wpStyleRuntime; 14496 } 14497 function documentContainsStyleHash9(targetDocument, hash) { 14498 if (!targetDocument.head) { 14499 return false; 14500 } 14501 for (const style of targetDocument.head.querySelectorAll( 14502 `style[$STYLE_HASH_ATTRIBUTE9}]` 14503 )) { 14504 if (style.getAttribute(STYLE_HASH_ATTRIBUTE9) === hash) { 14505 return true; 14506 } 14507 } 14508 return false; 14509 } 14510 function injectStyle9(targetDocument, hash, css) { 14511 if (!targetDocument.head) { 14512 return; 14513 } 14514 const runtime = getRuntime9(); 14515 let injectedStyles = runtime.injectedStyles.get(targetDocument); 14516 if (!injectedStyles) { 14517 injectedStyles = /* @__PURE__ */ new Set(); 14518 runtime.injectedStyles.set(targetDocument, injectedStyles); 14519 } 14520 if (injectedStyles.has(hash)) { 14521 return; 14522 } 14523 if (documentContainsStyleHash9(targetDocument, hash)) { 14524 injectedStyles.add(hash); 14525 return; 14526 } 14527 const style = targetDocument.createElement("style"); 14528 style.setAttribute(STYLE_HASH_ATTRIBUTE9, hash); 14529 style.appendChild(targetDocument.createTextNode(css)); 14530 targetDocument.head.appendChild(style); 14531 injectedStyles.add(hash); 14532 } 14533 function registerDocument9(targetDocument) { 14534 const runtime = getRuntime9(); 14535 runtime.documents.set( 14536 targetDocument, 14537 (runtime.documents.get(targetDocument) ?? 0) + 1 14538 ); 14539 for (const [hash, css] of runtime.styles) { 14540 injectStyle9(targetDocument, hash, css); 14541 } 14542 return () => { 14543 const count = runtime.documents.get(targetDocument); 14544 if (count === void 0) { 14545 return; 14546 } 14547 if (count <= 1) { 14548 runtime.documents.delete(targetDocument); 14549 return; 14550 } 14551 runtime.documents.set(targetDocument, count - 1); 14552 }; 14553 } 14554 function registerStyle9(hash, css) { 14555 const runtime = getRuntime9(); 14556 runtime.styles.set(hash, css); 14557 for (const targetDocument of runtime.documents.keys()) { 14558 injectStyle9(targetDocument, hash, css); 14559 } 14560 } 14561 if (typeof process === "undefined" || true) { 14562 registerStyle9("abb19c3171", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}[role=treeitem] span._400bf7ee0c6061a9__span[aria-hidden]{display:var(--_gcd-span-display,inline);font-family:var(--_gcd-span-font-family,inherit);font-size:var(--_gcd-span-font-size,inherit);line-height:var(--_gcd-span-line-height,1);pointer-events:var(--_gcd-span-pointer-events,auto);position:var(--_gcd-span-position,static)}"); 14563 } 14564 var global_css_defense_default4 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li", "span": "_400bf7ee0c6061a9__span" }; 14565 if (typeof process === "undefined" || true) { 14566 registerStyle9("7c3267f794", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{.af79fb116edb0dd7__outset-ring--focus:focus,.dfcfdc28396e5d98__outset-ring--focus-visible:focus-visible,.e5cd9ee879f6403a__outset-ring--focus-within:focus-within{--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}._3c9f5ee9fc9c136d__outset-ring--focus-within-except-active:focus-within,.abc777e9713fa711__outset-ring--focus-except-active:focus{outline:none}._3c9f5ee9fc9c136d__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.abc777e9713fa711__outset-ring--focus-except-active:focus:not(:active){--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}}}"); 14567 } 14568 var focus_module_default2 = { "outset-ring--focus": "af79fb116edb0dd7__outset-ring--focus", "outset-ring--focus-visible": "dfcfdc28396e5d98__outset-ring--focus-visible", "outset-ring--focus-within": "e5cd9ee879f6403a__outset-ring--focus-within", "outset-ring--focus-except-active": "abc777e9713fa711__outset-ring--focus-except-active", "outset-ring--focus-within-except-active": "_3c9f5ee9fc9c136d__outset-ring--focus-within-except-active" }; 14569 if (typeof process === "undefined" || true) { 14570 registerStyle9("afb8caf1cd", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._2ae7be2fc1bb17a3__input{--_gcd-input-padding:var(--wp-ui-input-padding-block,0px) var(--wp-ui-input-layout-padding-inline,0px);--_gcd-input-font-size:max(var(--wpds-typography-font-size-md,13px),16px);background:transparent;border:none;color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:inherit;font-size:inherit;line-height:inherit;outline:none;padding-block:var(--wp-ui-input-padding-block,0);padding-inline:var(--wp-ui-input-layout-padding-inline,0);width:100%;@media (min-width:600px){--_gcd-input-font-size:inherit}&::placeholder{color:var(--wpds-color-foreground-interactive-neutral-weak,#707070)}&:disabled,&[aria-disabled=true]{--_gcd-input-placeholder-color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);&::placeholder{color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d)}@media (forced-colors:active){color:GrayText}}&[type=email],&[type=url]{direction:ltr}&[type=number]{appearance:textfield;&::-webkit-inner-spin-button,&::-webkit-outer-spin-button{appearance:none;margin:0}}}}@layer compositions{.beecada4b38856ab__layout{font-size:max(var(--wpds-typography-font-size-md,13px),16px);@media (min-width:600px){font-size:var(--wpds-typography-font-size-md,13px)}}}}"); 14571 } 14572 var style_default8 = { "input": "_2ae7be2fc1bb17a3__input", "layout": "beecada4b38856ab__layout" }; 14573 var Input3 = (0, import_element19.forwardRef)( 14574 function UnforwardedInput({ className, size: size4 = "default", prefix, suffix, style, ...restProps }, ref) { 14575 return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)( 14576 InputLayout2, 14577 { 14578 className: clsx_default( 14579 style_default8.layout, 14580 focus_module_default2["outset-ring--focus-within"], 14581 className 14582 ), 14583 style, 14584 size: size4, 14585 visuallyDisabled: restProps.disabled, 14586 prefix, 14587 suffix, 14588 children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)( 14589 Input, 14590 { 14591 ref, 14592 className: clsx_default(global_css_defense_default4.input, style_default8.input), 14593 ...restProps 14594 } 14595 ) 14596 } 14597 ); 14598 } 14599 ); 14600 14601 // packages/ui/build-module/utils/css/item-popup.mjs 14602 var STYLE_HASH_ATTRIBUTE10 = "data-wp-hash"; 14603 function getRuntime10() { 14604 const globalScope = globalThis; 14605 if (globalScope.__wpStyleRuntime) { 14606 return globalScope.__wpStyleRuntime; 14607 } 14608 globalScope.__wpStyleRuntime = { 14609 documents: /* @__PURE__ */ new Map(), 14610 styles: /* @__PURE__ */ new Map(), 14611 injectedStyles: /* @__PURE__ */ new WeakMap() 14612 }; 14613 if (typeof document !== "undefined") { 14614 registerDocument10(document); 14615 } 14616 return globalScope.__wpStyleRuntime; 14617 } 14618 function documentContainsStyleHash10(targetDocument, hash) { 14619 if (!targetDocument.head) { 14620 return false; 14621 } 14622 for (const style of targetDocument.head.querySelectorAll( 14623 `style[$STYLE_HASH_ATTRIBUTE10}]` 14624 )) { 14625 if (style.getAttribute(STYLE_HASH_ATTRIBUTE10) === hash) { 14626 return true; 14627 } 14628 } 14629 return false; 14630 } 14631 function injectStyle10(targetDocument, hash, css) { 14632 if (!targetDocument.head) { 14633 return; 14634 } 14635 const runtime = getRuntime10(); 14636 let injectedStyles = runtime.injectedStyles.get(targetDocument); 14637 if (!injectedStyles) { 14638 injectedStyles = /* @__PURE__ */ new Set(); 14639 runtime.injectedStyles.set(targetDocument, injectedStyles); 14640 } 14641 if (injectedStyles.has(hash)) { 14642 return; 14643 } 14644 if (documentContainsStyleHash10(targetDocument, hash)) { 14645 injectedStyles.add(hash); 14646 return; 14647 } 14648 const style = targetDocument.createElement("style"); 14649 style.setAttribute(STYLE_HASH_ATTRIBUTE10, hash); 14650 style.appendChild(targetDocument.createTextNode(css)); 14651 targetDocument.head.appendChild(style); 14652 injectedStyles.add(hash); 14653 } 14654 function registerDocument10(targetDocument) { 14655 const runtime = getRuntime10(); 14656 runtime.documents.set( 14657 targetDocument, 14658 (runtime.documents.get(targetDocument) ?? 0) + 1 14659 ); 14660 for (const [hash, css] of runtime.styles) { 14661 injectStyle10(targetDocument, hash, css); 14662 } 14663 return () => { 14664 const count = runtime.documents.get(targetDocument); 14665 if (count === void 0) { 14666 return; 14667 } 14668 if (count <= 1) { 14669 runtime.documents.delete(targetDocument); 14670 return; 14671 } 14672 runtime.documents.set(targetDocument, count - 1); 14673 }; 14674 } 14675 function registerStyle10(hash, css) { 14676 const runtime = getRuntime10(); 14677 runtime.styles.set(hash, css); 14678 for (const targetDocument of runtime.documents.keys()) { 14679 injectStyle10(targetDocument, hash, css); 14680 } 14681 } 14682 if (typeof process === "undefined" || true) { 14683 registerStyle10("e25d67a230", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger[data-side=none] ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{--_wp-ui-popup-selection-offset:0px;color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px);&:has(.a3adcfd0b73ffd40__item-icon){--_wp-ui-popup-selection-offset:calc(var(--wpds-dimension-size-2xs, 16px) + var(--wpds-dimension-gap-xs, 4px) - var(--wpds-dimension-padding-xs, 4px))}}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-sm,24px);padding-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));padding-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset))}.be89a1df0fe77bd2__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));margin-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset));@media (forced-colors:active){background-color:CanvasText}}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline:var(--wp-ui-popup-item-padding-inline);user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&:has(>.a3adcfd0b73ffd40__item-icon){align-content:center;align-items:start;display:grid;grid-template-columns:auto minmax(0,1fr);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);pointer-events:none}._92fbe4765dfad5ee__item-indicator-icon{translate:0 1px}._74465fc7e8ecea1a__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._41f0dd875c005a48__item-text{display:flex;flex-direction:column;min-width:0}._12335b76ada0b1f5__item-label{min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[aria-disabled=true] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([aria-disabled=true]) ._160635254c702623__item-description{color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}'); 14684 } 14685 var item_popup_default = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "item-icon": "a3adcfd0b73ffd40__item-icon", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "separator": "be89a1df0fe77bd2__separator", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-content": "_74465fc7e8ecea1a__item-content", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" }; 14686 function getItemPopupWidthClassName(width = "anchor") { 14687 switch (width) { 14688 case "available": 14689 return item_popup_default["is-width-available"]; 14690 case "content": 14691 return item_popup_default["is-width-content"]; 14692 case "lg": 14693 return item_popup_default["is-width-lg"]; 14694 case "md": 14695 return item_popup_default["is-width-md"]; 14696 case "sm": 14697 return item_popup_default["is-width-sm"]; 14698 case "anchor": 14699 return item_popup_default["is-width-anchor"]; 14700 default: 14701 return false; 14702 } 14703 } 14704 14705 // packages/ui/build-module/form/primitives/control-with-error/control-with-error.mjs 14706 var import_i18n5 = __toESM(require_i18n(), 1); 14707 var import_element20 = __toESM(require_element(), 1); 14708 14709 // packages/ui/build-module/form/primitives/validity-indicator/validity-indicator.mjs 14710 var import_jsx_runtime57 = __toESM(require_jsx_runtime(), 1); 14711 var STYLE_HASH_ATTRIBUTE11 = "data-wp-hash"; 14712 function getRuntime11() { 14713 const globalScope = globalThis; 14714 if (globalScope.__wpStyleRuntime) { 14715 return globalScope.__wpStyleRuntime; 14716 } 14717 globalScope.__wpStyleRuntime = { 14718 documents: /* @__PURE__ */ new Map(), 14719 styles: /* @__PURE__ */ new Map(), 14720 injectedStyles: /* @__PURE__ */ new WeakMap() 14721 }; 14722 if (typeof document !== "undefined") { 14723 registerDocument11(document); 14724 } 14725 return globalScope.__wpStyleRuntime; 14726 } 14727 function documentContainsStyleHash11(targetDocument, hash) { 14728 if (!targetDocument.head) { 14729 return false; 14730 } 14731 for (const style of targetDocument.head.querySelectorAll( 14732 `style[$STYLE_HASH_ATTRIBUTE11}]` 14733 )) { 14734 if (style.getAttribute(STYLE_HASH_ATTRIBUTE11) === hash) { 14735 return true; 14736 } 14737 } 14738 return false; 14739 } 14740 function injectStyle11(targetDocument, hash, css) { 14741 if (!targetDocument.head) { 14742 return; 14743 } 14744 const runtime = getRuntime11(); 14745 let injectedStyles = runtime.injectedStyles.get(targetDocument); 14746 if (!injectedStyles) { 14747 injectedStyles = /* @__PURE__ */ new Set(); 14748 runtime.injectedStyles.set(targetDocument, injectedStyles); 14749 } 14750 if (injectedStyles.has(hash)) { 14751 return; 14752 } 14753 if (documentContainsStyleHash11(targetDocument, hash)) { 14754 injectedStyles.add(hash); 14755 return; 14756 } 14757 const style = targetDocument.createElement("style"); 14758 style.setAttribute(STYLE_HASH_ATTRIBUTE11, hash); 14759 style.appendChild(targetDocument.createTextNode(css)); 14760 targetDocument.head.appendChild(style); 14761 injectedStyles.add(hash); 14762 } 14763 function registerDocument11(targetDocument) { 14764 const runtime = getRuntime11(); 14765 runtime.documents.set( 14766 targetDocument, 14767 (runtime.documents.get(targetDocument) ?? 0) + 1 14768 ); 14769 for (const [hash, css] of runtime.styles) { 14770 injectStyle11(targetDocument, hash, css); 14771 } 14772 return () => { 14773 const count = runtime.documents.get(targetDocument); 14774 if (count === void 0) { 14775 return; 14776 } 14777 if (count <= 1) { 14778 runtime.documents.delete(targetDocument); 14779 return; 14780 } 14781 runtime.documents.set(targetDocument, count - 1); 14782 }; 14783 } 14784 function registerStyle11(hash, css) { 14785 const runtime = getRuntime11(); 14786 runtime.styles.set(hash, css); 14787 for (const targetDocument of runtime.documents.keys()) { 14788 injectStyle11(targetDocument, hash, css); 14789 } 14790 } 14791 if (typeof process === "undefined" || true) { 14792 registerStyle11("abb19c3171", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}[role=treeitem] span._400bf7ee0c6061a9__span[aria-hidden]{display:var(--_gcd-span-display,inline);font-family:var(--_gcd-span-font-family,inherit);font-size:var(--_gcd-span-font-size,inherit);line-height:var(--_gcd-span-line-height,1);pointer-events:var(--_gcd-span-pointer-events,auto);position:var(--_gcd-span-position,static)}"); 14793 } 14794 var global_css_defense_default5 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li", "span": "_400bf7ee0c6061a9__span" }; 14795 if (typeof process === "undefined" || true) { 14796 registerStyle11("d11816833c", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._7a7ac88e306348e7__indicator{--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);align-items:flex-start;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-sm,12px);gap:var(--wpds-dimension-gap-xs,4px);line-height:var(--wpds-typography-line-height-xs,16px);@media not (prefers-reduced-motion){animation:_48722cc5dd090ce4__indicator-jump var(--wpds-motion-duration-md,.2s) cubic-bezier(.68,-.55,.27,1.55)}}._57a3bbbfbe38a5c6__is-invalid{color:var(--wpds-color-foreground-content-error-weak,#cc1818)}._9e944dc198aac10b__is-valid{color:var(--wpds-color-foreground-content-success-weak,#008030)}.e482806667437c6a__indicator-icon{flex-shrink:0}._6e46434cc23019d2__indicator-spinner{height:var(--wpds-dimension-size-3xs,12px);margin:2px;width:var(--wpds-dimension-size-3xs,12px)}@keyframes _48722cc5dd090ce4__indicator-jump{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}}}'); 14797 } 14798 var style_default9 = { "indicator": "_7a7ac88e306348e7__indicator", "indicator-jump": "_48722cc5dd090ce4__indicator-jump", "is-invalid": "_57a3bbbfbe38a5c6__is-invalid", "is-valid": "_9e944dc198aac10b__is-valid", "indicator-icon": "e482806667437c6a__indicator-icon", "indicator-spinner": "_6e46434cc23019d2__indicator-spinner" }; 14799 var ICON = { 14800 valid: published_default, 14801 invalid: error_default 14802 }; 14803 function ValidityIndicator({ 14804 id, 14805 type, 14806 message 14807 }) { 14808 return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)( 14809 "p", 14810 { 14811 id, 14812 className: clsx_default( 14813 global_css_defense_default5.p, 14814 style_default9.indicator, 14815 style_default9[`is-$type}`] 14816 ), 14817 children: [ 14818 type === "validating" ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(Spinner, { className: style_default9["indicator-spinner"] }) : /* @__PURE__ */ (0, import_jsx_runtime57.jsx)( 14819 Icon, 14820 { 14821 className: style_default9["indicator-icon"], 14822 icon: ICON[type], 14823 size: 16, 14824 fill: "currentColor" 14825 } 14826 ), 14827 message 14828 ] 14829 } 14830 ); 14831 } 14832 14833 // packages/ui/build-module/form/primitives/control-with-error/control-with-error.mjs 14834 var import_jsx_runtime58 = __toESM(require_jsx_runtime(), 1); 14835 var DEFAULT_RENDER = (props) => /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Stack, { ...props, direction: "column", gap: "sm" }); 14836 function appendRequiredIndicator(label, required, markWhenOptional) { 14837 let suffix; 14838 if (required && !markWhenOptional) { 14839 suffix = `(${(0, import_i18n5.__)("Required")})`; 14840 } else if (!required && markWhenOptional) { 14841 suffix = `(${(0, import_i18n5.__)("Optional")})`; 14842 } 14843 if (!suffix) { 14844 return label; 14845 } 14846 if (typeof label === "string") { 14847 return `$label} $suffix}`; 14848 } 14849 return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(import_jsx_runtime58.Fragment, { children: [ 14850 label, 14851 " ", 14852 suffix 14853 ] }); 14854 } 14855 var VALIDITY_VISIBLE_ATTRIBUTE = "data-validity-visible"; 14856 var ControlWithError = (0, import_element20.forwardRef)(function UnforwardedControlWithError({ 14857 required, 14858 markWhenOptional, 14859 customValidity, 14860 getValidityTarget, 14861 children, 14862 render = DEFAULT_RENDER, 14863 ...restProps 14864 }, forwardedRef) { 14865 const [errorMessage, setErrorMessage] = (0, import_element20.useState)(); 14866 const [statusMessage, setStatusMessage] = (0, import_element20.useState)(); 14867 const [showMessage, setShowMessage] = (0, import_element20.useState)(false); 14868 const [isTouched, setIsTouched] = (0, import_element20.useState)(false); 14869 const wrapperRef = (0, import_element20.useRef)(null); 14870 (0, import_element20.useEffect)(() => { 14871 const validityTarget = getValidityTarget(); 14872 const handler = () => { 14873 if (customValidity?.type !== "validating") { 14874 setErrorMessage(validityTarget?.validationMessage); 14875 } 14876 setShowMessage(true); 14877 validityTarget?.setAttribute(VALIDITY_VISIBLE_ATTRIBUTE, ""); 14878 }; 14879 validityTarget?.addEventListener("invalid", handler); 14880 return () => validityTarget?.removeEventListener("invalid", handler); 14881 }, [customValidity?.type, getValidityTarget]); 14882 (0, import_element20.useEffect)(() => { 14883 const validityTarget = getValidityTarget(); 14884 const suppressNativePopover = (event) => { 14885 event.preventDefault(); 14886 if (!event.isTrusted) { 14887 return; 14888 } 14889 const target = event.target; 14890 const firstErrorInForm = Array.from( 14891 target.form?.elements ?? [] 14892 ).find((el) => !el.validity.valid); 14893 if (!target.form || firstErrorInForm === target) { 14894 target.focus(); 14895 } 14896 }; 14897 const radioSiblings = validityTarget?.type === "radio" && validityTarget?.name ? Array.from( 14898 wrapperRef.current?.querySelectorAll( 14899 `input[type="radio"][name="$validityTarget?.name}"]` 14900 ) ?? [] 14901 ).filter((sibling) => sibling !== validityTarget) : []; 14902 validityTarget?.addEventListener("invalid", suppressNativePopover); 14903 radioSiblings.forEach( 14904 (sibling) => sibling.addEventListener("invalid", suppressNativePopover) 14905 ); 14906 return () => { 14907 validityTarget?.removeEventListener( 14908 "invalid", 14909 suppressNativePopover 14910 ); 14911 radioSiblings.forEach( 14912 (sibling) => sibling.removeEventListener("invalid", suppressNativePopover) 14913 ); 14914 }; 14915 }, [getValidityTarget]); 14916 (0, import_element20.useEffect)(() => { 14917 const validityTarget = getValidityTarget(); 14918 if (!customValidity?.type) { 14919 validityTarget?.setCustomValidity(""); 14920 setErrorMessage(validityTarget?.validationMessage); 14921 setStatusMessage(void 0); 14922 return; 14923 } 14924 switch (customValidity.type) { 14925 case "validating": { 14926 validityTarget?.setCustomValidity(""); 14927 setErrorMessage(void 0); 14928 setStatusMessage({ 14929 type: "validating", 14930 message: customValidity.message 14931 }); 14932 break; 14933 } 14934 case "valid": { 14935 validityTarget?.setCustomValidity(""); 14936 setErrorMessage(validityTarget?.validationMessage); 14937 setStatusMessage({ 14938 type: "valid", 14939 message: customValidity.message 14940 }); 14941 break; 14942 } 14943 case "invalid": { 14944 validityTarget?.setCustomValidity( 14945 customValidity.message ?? "" 14946 ); 14947 setErrorMessage(validityTarget?.validationMessage); 14948 setStatusMessage(void 0); 14949 break; 14950 } 14951 } 14952 }, [customValidity, getValidityTarget]); 14953 (0, import_element20.useEffect)(() => { 14954 if (!isTouched || showMessage) { 14955 return; 14956 } 14957 if (customValidity?.type === "validating") { 14958 const timer = setTimeout(() => { 14959 setShowMessage(true); 14960 }, 1e3); 14961 return () => clearTimeout(timer); 14962 } 14963 setShowMessage(true); 14964 }, [isTouched, customValidity?.type, showMessage]); 14965 const onBlur = (event) => { 14966 if (event.relatedTarget && event.currentTarget.contains(event.relatedTarget)) { 14967 return; 14968 } 14969 if (!isTouched) { 14970 setIsTouched(true); 14971 getValidityTarget()?.setAttribute(VALIDITY_VISIBLE_ATTRIBUTE, ""); 14972 } 14973 const validityTarget = getValidityTarget(); 14974 const isValidating = customValidity?.type === "validating"; 14975 window.queueMicrotask(() => { 14976 if (!isValidating) { 14977 setErrorMessage(validityTarget?.validationMessage); 14978 } 14979 }); 14980 }; 14981 const messageId = (0, import_element20.useId)(); 14982 const message = (() => { 14983 if (errorMessage) { 14984 return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( 14985 ValidityIndicator, 14986 { 14987 id: messageId, 14988 type: "invalid", 14989 message: errorMessage 14990 } 14991 ); 14992 } 14993 if (statusMessage?.type) { 14994 return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)( 14995 ValidityIndicator, 14996 { 14997 id: messageId, 14998 type: statusMessage.type, 14999 message: statusMessage.message 15000 } 15001 ); 15002 } 15003 return null; 15004 })(); 15005 const visibleMessage = showMessage ? message : null; 15006 (0, import_element20.useEffect)(() => { 15007 const target = getValidityTarget(); 15008 if (!target) { 15009 return; 15010 } 15011 function setDescribedBy(el, shouldAdd) { 15012 const ids = (el.getAttribute("aria-describedby") ?? "").split(" ").filter((id) => id && id !== messageId); 15013 if (shouldAdd) { 15014 ids.push(messageId); 15015 } 15016 if (ids.length) { 15017 el.setAttribute("aria-describedby", ids.join(" ")); 15018 } else { 15019 el.removeAttribute("aria-describedby"); 15020 } 15021 } 15022 setDescribedBy(target, !!visibleMessage); 15023 return () => setDescribedBy(target, false); 15024 }, [visibleMessage, messageId, getValidityTarget]); 15025 return useRender({ 15026 render, 15027 ref: [forwardedRef, wrapperRef], 15028 props: mergeProps(restProps, { 15029 onBlur, 15030 children: /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(import_jsx_runtime58.Fragment, { children: [ 15031 (0, import_element20.cloneElement)(children, { 15032 label: appendRequiredIndicator( 15033 children.props.label, 15034 required, 15035 markWhenOptional 15036 ), 15037 required 15038 }), 15039 visibleMessage 15040 ] }) 15041 }) 15042 }); 15043 }); 15044 15045 // packages/ui/build-module/form/primitives/field/index.mjs 15046 var field_exports = {}; 15047 __export(field_exports, { 15048 Control: () => Control, 15049 Description: () => Description, 15050 Details: () => Details, 15051 Item: () => Item, 15052 Label: () => Label, 15053 Root: () => Root, 15054 VisualLabel: () => VisualLabel 15055 }); 15056 15057 // packages/ui/build-module/form/primitives/field/root.mjs 15058 var import_element21 = __toESM(require_element(), 1); 15059 var import_jsx_runtime59 = __toESM(require_jsx_runtime(), 1); 15060 var STYLE_HASH_ATTRIBUTE12 = "data-wp-hash"; 15061 function getRuntime12() { 15062 const globalScope = globalThis; 15063 if (globalScope.__wpStyleRuntime) { 15064 return globalScope.__wpStyleRuntime; 15065 } 15066 globalScope.__wpStyleRuntime = { 15067 documents: /* @__PURE__ */ new Map(), 15068 styles: /* @__PURE__ */ new Map(), 15069 injectedStyles: /* @__PURE__ */ new WeakMap() 15070 }; 15071 if (typeof document !== "undefined") { 15072 registerDocument12(document); 15073 } 15074 return globalScope.__wpStyleRuntime; 15075 } 15076 function documentContainsStyleHash12(targetDocument, hash) { 15077 if (!targetDocument.head) { 15078 return false; 15079 } 15080 for (const style of targetDocument.head.querySelectorAll( 15081 `style[$STYLE_HASH_ATTRIBUTE12}]` 15082 )) { 15083 if (style.getAttribute(STYLE_HASH_ATTRIBUTE12) === hash) { 15084 return true; 15085 } 15086 } 15087 return false; 15088 } 15089 function injectStyle12(targetDocument, hash, css) { 15090 if (!targetDocument.head) { 15091 return; 15092 } 15093 const runtime = getRuntime12(); 15094 let injectedStyles = runtime.injectedStyles.get(targetDocument); 15095 if (!injectedStyles) { 15096 injectedStyles = /* @__PURE__ */ new Set(); 15097 runtime.injectedStyles.set(targetDocument, injectedStyles); 15098 } 15099 if (injectedStyles.has(hash)) { 15100 return; 15101 } 15102 if (documentContainsStyleHash12(targetDocument, hash)) { 15103 injectedStyles.add(hash); 15104 return; 15105 } 15106 const style = targetDocument.createElement("style"); 15107 style.setAttribute(STYLE_HASH_ATTRIBUTE12, hash); 15108 style.appendChild(targetDocument.createTextNode(css)); 15109 targetDocument.head.appendChild(style); 15110 injectedStyles.add(hash); 15111 } 15112 function registerDocument12(targetDocument) { 15113 const runtime = getRuntime12(); 15114 runtime.documents.set( 15115 targetDocument, 15116 (runtime.documents.get(targetDocument) ?? 0) + 1 15117 ); 15118 for (const [hash, css] of runtime.styles) { 15119 injectStyle12(targetDocument, hash, css); 15120 } 15121 return () => { 15122 const count = runtime.documents.get(targetDocument); 15123 if (count === void 0) { 15124 return; 15125 } 15126 if (count <= 1) { 15127 runtime.documents.delete(targetDocument); 15128 return; 15129 } 15130 runtime.documents.set(targetDocument, count - 1); 15131 }; 15132 } 15133 function registerStyle12(hash, css) { 15134 const runtime = getRuntime12(); 15135 runtime.styles.set(hash, css); 15136 for (const targetDocument of runtime.documents.keys()) { 15137 injectStyle12(targetDocument, hash, css); 15138 } 15139 } 15140 if (typeof process === "undefined" || true) { 15141 registerStyle12("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 15142 } 15143 var resets_default3 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; 15144 var DEFAULT_RENDER2 = (props) => /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Stack, { ...props, direction: "column", gap: "sm" }); 15145 var Root = (0, import_element21.forwardRef)( 15146 function UnforwardedRoot({ className, render = DEFAULT_RENDER2, ...restProps }, ref) { 15147 return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)( 15148 index_parts_exports.Root, 15149 { 15150 ref, 15151 className: clsx_default(resets_default3["box-sizing"], className), 15152 render, 15153 ...restProps 15154 } 15155 ); 15156 } 15157 ); 15158 15159 // packages/ui/build-module/form/primitives/field/item.mjs 15160 var import_element22 = __toESM(require_element(), 1); 15161 var import_jsx_runtime60 = __toESM(require_jsx_runtime(), 1); 15162 var Item = (0, import_element22.forwardRef)(function UnforwardedItem(props, ref) { 15163 return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(index_parts_exports.Item, { ref, ...props }); 15164 }); 15165 15166 // packages/ui/build-module/form/primitives/field/label.mjs 15167 var import_element23 = __toESM(require_element(), 1); 15168 var import_jsx_runtime61 = __toESM(require_jsx_runtime(), 1); 15169 var STYLE_HASH_ATTRIBUTE13 = "data-wp-hash"; 15170 function getRuntime13() { 15171 const globalScope = globalThis; 15172 if (globalScope.__wpStyleRuntime) { 15173 return globalScope.__wpStyleRuntime; 15174 } 15175 globalScope.__wpStyleRuntime = { 15176 documents: /* @__PURE__ */ new Map(), 15177 styles: /* @__PURE__ */ new Map(), 15178 injectedStyles: /* @__PURE__ */ new WeakMap() 15179 }; 15180 if (typeof document !== "undefined") { 15181 registerDocument13(document); 15182 } 15183 return globalScope.__wpStyleRuntime; 15184 } 15185 function documentContainsStyleHash13(targetDocument, hash) { 15186 if (!targetDocument.head) { 15187 return false; 15188 } 15189 for (const style of targetDocument.head.querySelectorAll( 15190 `style[$STYLE_HASH_ATTRIBUTE13}]` 15191 )) { 15192 if (style.getAttribute(STYLE_HASH_ATTRIBUTE13) === hash) { 15193 return true; 15194 } 15195 } 15196 return false; 15197 } 15198 function injectStyle13(targetDocument, hash, css) { 15199 if (!targetDocument.head) { 15200 return; 15201 } 15202 const runtime = getRuntime13(); 15203 let injectedStyles = runtime.injectedStyles.get(targetDocument); 15204 if (!injectedStyles) { 15205 injectedStyles = /* @__PURE__ */ new Set(); 15206 runtime.injectedStyles.set(targetDocument, injectedStyles); 15207 } 15208 if (injectedStyles.has(hash)) { 15209 return; 15210 } 15211 if (documentContainsStyleHash13(targetDocument, hash)) { 15212 injectedStyles.add(hash); 15213 return; 15214 } 15215 const style = targetDocument.createElement("style"); 15216 style.setAttribute(STYLE_HASH_ATTRIBUTE13, hash); 15217 style.appendChild(targetDocument.createTextNode(css)); 15218 targetDocument.head.appendChild(style); 15219 injectedStyles.add(hash); 15220 } 15221 function registerDocument13(targetDocument) { 15222 const runtime = getRuntime13(); 15223 runtime.documents.set( 15224 targetDocument, 15225 (runtime.documents.get(targetDocument) ?? 0) + 1 15226 ); 15227 for (const [hash, css] of runtime.styles) { 15228 injectStyle13(targetDocument, hash, css); 15229 } 15230 return () => { 15231 const count = runtime.documents.get(targetDocument); 15232 if (count === void 0) { 15233 return; 15234 } 15235 if (count <= 1) { 15236 runtime.documents.delete(targetDocument); 15237 return; 15238 } 15239 runtime.documents.set(targetDocument, count - 1); 15240 }; 15241 } 15242 function registerStyle13(hash, css) { 15243 const runtime = getRuntime13(); 15244 runtime.styles.set(hash, css); 15245 for (const targetDocument of runtime.documents.keys()) { 15246 injectStyle13(targetDocument, hash, css); 15247 } 15248 } 15249 if (typeof process === "undefined" || true) { 15250 registerStyle13("df33c48b2d", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._2d5ad850b2f90964__label{--wp-ui-field-label-line-height:var(--wpds-typography-line-height-xs,16px);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);line-height:var(--wp-ui-field-label-line-height);text-transform:uppercase;&._17c4214649230bea__is-plain{font-size:var(--wpds-typography-font-size-md,13px);font-weight:var(--wpds-typography-font-weight-default,400);text-transform:none}}._08a3750500e0233f__description{--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);--_gcd-p-margin:0;text-wrap:pretty;color:var(--wpds-color-foreground-content-neutral-weak,#707070);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}}'); 15251 } 15252 var field_default = { "label": "_2d5ad850b2f90964__label", "is-plain": "_17c4214649230bea__is-plain", "description": "_08a3750500e0233f__description" }; 15253 var Label = (0, import_element23.forwardRef)( 15254 function UnforwardedLabel({ className, hideFromVision, variant, ...restProps }, ref) { 15255 const label = /* @__PURE__ */ (0, import_jsx_runtime61.jsx)( 15256 index_parts_exports.Label, 15257 { 15258 ref, 15259 className: clsx_default( 15260 field_default.label, 15261 variant && field_default[`is-$variant}`], 15262 className 15263 ), 15264 ...restProps 15265 } 15266 ); 15267 if (hideFromVision) { 15268 return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(VisuallyHidden, { render: label }); 15269 } 15270 return label; 15271 } 15272 ); 15273 15274 // packages/ui/build-module/form/primitives/field/description.mjs 15275 var import_element24 = __toESM(require_element(), 1); 15276 var import_jsx_runtime62 = __toESM(require_jsx_runtime(), 1); 15277 var STYLE_HASH_ATTRIBUTE14 = "data-wp-hash"; 15278 function getRuntime14() { 15279 const globalScope = globalThis; 15280 if (globalScope.__wpStyleRuntime) { 15281 return globalScope.__wpStyleRuntime; 15282 } 15283 globalScope.__wpStyleRuntime = { 15284 documents: /* @__PURE__ */ new Map(), 15285 styles: /* @__PURE__ */ new Map(), 15286 injectedStyles: /* @__PURE__ */ new WeakMap() 15287 }; 15288 if (typeof document !== "undefined") { 15289 registerDocument14(document); 15290 } 15291 return globalScope.__wpStyleRuntime; 15292 } 15293 function documentContainsStyleHash14(targetDocument, hash) { 15294 if (!targetDocument.head) { 15295 return false; 15296 } 15297 for (const style of targetDocument.head.querySelectorAll( 15298 `style[$STYLE_HASH_ATTRIBUTE14}]` 15299 )) { 15300 if (style.getAttribute(STYLE_HASH_ATTRIBUTE14) === hash) { 15301 return true; 15302 } 15303 } 15304 return false; 15305 } 15306 function injectStyle14(targetDocument, hash, css) { 15307 if (!targetDocument.head) { 15308 return; 15309 } 15310 const runtime = getRuntime14(); 15311 let injectedStyles = runtime.injectedStyles.get(targetDocument); 15312 if (!injectedStyles) { 15313 injectedStyles = /* @__PURE__ */ new Set(); 15314 runtime.injectedStyles.set(targetDocument, injectedStyles); 15315 } 15316 if (injectedStyles.has(hash)) { 15317 return; 15318 } 15319 if (documentContainsStyleHash14(targetDocument, hash)) { 15320 injectedStyles.add(hash); 15321 return; 15322 } 15323 const style = targetDocument.createElement("style"); 15324 style.setAttribute(STYLE_HASH_ATTRIBUTE14, hash); 15325 style.appendChild(targetDocument.createTextNode(css)); 15326 targetDocument.head.appendChild(style); 15327 injectedStyles.add(hash); 15328 } 15329 function registerDocument14(targetDocument) { 15330 const runtime = getRuntime14(); 15331 runtime.documents.set( 15332 targetDocument, 15333 (runtime.documents.get(targetDocument) ?? 0) + 1 15334 ); 15335 for (const [hash, css] of runtime.styles) { 15336 injectStyle14(targetDocument, hash, css); 15337 } 15338 return () => { 15339 const count = runtime.documents.get(targetDocument); 15340 if (count === void 0) { 15341 return; 15342 } 15343 if (count <= 1) { 15344 runtime.documents.delete(targetDocument); 15345 return; 15346 } 15347 runtime.documents.set(targetDocument, count - 1); 15348 }; 15349 } 15350 function registerStyle14(hash, css) { 15351 const runtime = getRuntime14(); 15352 runtime.styles.set(hash, css); 15353 for (const targetDocument of runtime.documents.keys()) { 15354 injectStyle14(targetDocument, hash, css); 15355 } 15356 } 15357 if (typeof process === "undefined" || true) { 15358 registerStyle14("abb19c3171", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}[role=treeitem] span._400bf7ee0c6061a9__span[aria-hidden]{display:var(--_gcd-span-display,inline);font-family:var(--_gcd-span-font-family,inherit);font-size:var(--_gcd-span-font-size,inherit);line-height:var(--_gcd-span-line-height,1);pointer-events:var(--_gcd-span-pointer-events,auto);position:var(--_gcd-span-position,static)}"); 15359 } 15360 var global_css_defense_default6 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li", "span": "_400bf7ee0c6061a9__span" }; 15361 if (typeof process === "undefined" || true) { 15362 registerStyle14("df33c48b2d", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._2d5ad850b2f90964__label{--wp-ui-field-label-line-height:var(--wpds-typography-line-height-xs,16px);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);line-height:var(--wp-ui-field-label-line-height);text-transform:uppercase;&._17c4214649230bea__is-plain{font-size:var(--wpds-typography-font-size-md,13px);font-weight:var(--wpds-typography-font-weight-default,400);text-transform:none}}._08a3750500e0233f__description{--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);--_gcd-p-margin:0;text-wrap:pretty;color:var(--wpds-color-foreground-content-neutral-weak,#707070);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}}'); 15363 } 15364 var field_default2 = { "label": "_2d5ad850b2f90964__label", "is-plain": "_17c4214649230bea__is-plain", "description": "_08a3750500e0233f__description" }; 15365 var Description = (0, import_element24.forwardRef)(function UnforwardedDescription({ className, ...restProps }, ref) { 15366 return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)( 15367 index_parts_exports.Description, 15368 { 15369 ref, 15370 className: clsx_default( 15371 global_css_defense_default6.p, 15372 field_default2.description, 15373 className 15374 ), 15375 ...restProps 15376 } 15377 ); 15378 }); 15379 15380 // packages/ui/build-module/form/primitives/field/details.mjs 15381 var import_element25 = __toESM(require_element(), 1); 15382 var import_i18n6 = __toESM(require_i18n(), 1); 15383 var import_jsx_runtime63 = __toESM(require_jsx_runtime(), 1); 15384 var STYLE_HASH_ATTRIBUTE15 = "data-wp-hash"; 15385 function getRuntime15() { 15386 const globalScope = globalThis; 15387 if (globalScope.__wpStyleRuntime) { 15388 return globalScope.__wpStyleRuntime; 15389 } 15390 globalScope.__wpStyleRuntime = { 15391 documents: /* @__PURE__ */ new Map(), 15392 styles: /* @__PURE__ */ new Map(), 15393 injectedStyles: /* @__PURE__ */ new WeakMap() 15394 }; 15395 if (typeof document !== "undefined") { 15396 registerDocument15(document); 15397 } 15398 return globalScope.__wpStyleRuntime; 15399 } 15400 function documentContainsStyleHash15(targetDocument, hash) { 15401 if (!targetDocument.head) { 15402 return false; 15403 } 15404 for (const style of targetDocument.head.querySelectorAll( 15405 `style[$STYLE_HASH_ATTRIBUTE15}]` 15406 )) { 15407 if (style.getAttribute(STYLE_HASH_ATTRIBUTE15) === hash) { 15408 return true; 15409 } 15410 } 15411 return false; 15412 } 15413 function injectStyle15(targetDocument, hash, css) { 15414 if (!targetDocument.head) { 15415 return; 15416 } 15417 const runtime = getRuntime15(); 15418 let injectedStyles = runtime.injectedStyles.get(targetDocument); 15419 if (!injectedStyles) { 15420 injectedStyles = /* @__PURE__ */ new Set(); 15421 runtime.injectedStyles.set(targetDocument, injectedStyles); 15422 } 15423 if (injectedStyles.has(hash)) { 15424 return; 15425 } 15426 if (documentContainsStyleHash15(targetDocument, hash)) { 15427 injectedStyles.add(hash); 15428 return; 15429 } 15430 const style = targetDocument.createElement("style"); 15431 style.setAttribute(STYLE_HASH_ATTRIBUTE15, hash); 15432 style.appendChild(targetDocument.createTextNode(css)); 15433 targetDocument.head.appendChild(style); 15434 injectedStyles.add(hash); 15435 } 15436 function registerDocument15(targetDocument) { 15437 const runtime = getRuntime15(); 15438 runtime.documents.set( 15439 targetDocument, 15440 (runtime.documents.get(targetDocument) ?? 0) + 1 15441 ); 15442 for (const [hash, css] of runtime.styles) { 15443 injectStyle15(targetDocument, hash, css); 15444 } 15445 return () => { 15446 const count = runtime.documents.get(targetDocument); 15447 if (count === void 0) { 15448 return; 15449 } 15450 if (count <= 1) { 15451 runtime.documents.delete(targetDocument); 15452 return; 15453 } 15454 runtime.documents.set(targetDocument, count - 1); 15455 }; 15456 } 15457 function registerStyle15(hash, css) { 15458 const runtime = getRuntime15(); 15459 runtime.styles.set(hash, css); 15460 for (const targetDocument of runtime.documents.keys()) { 15461 injectStyle15(targetDocument, hash, css); 15462 } 15463 } 15464 if (typeof process === "undefined" || true) { 15465 registerStyle15("df33c48b2d", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._2d5ad850b2f90964__label{--wp-ui-field-label-line-height:var(--wpds-typography-line-height-xs,16px);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);line-height:var(--wp-ui-field-label-line-height);text-transform:uppercase;&._17c4214649230bea__is-plain{font-size:var(--wpds-typography-font-size-md,13px);font-weight:var(--wpds-typography-font-weight-default,400);text-transform:none}}._08a3750500e0233f__description{--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);--_gcd-p-margin:0;text-wrap:pretty;color:var(--wpds-color-foreground-content-neutral-weak,#707070);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}}'); 15466 } 15467 var field_default3 = { "label": "_2d5ad850b2f90964__label", "is-plain": "_17c4214649230bea__is-plain", "description": "_08a3750500e0233f__description" }; 15468 var Details = (0, import_element25.forwardRef)( 15469 function UnforwardedDetails({ className, ...restProps }, ref) { 15470 return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_jsx_runtime63.Fragment, { children: [ 15471 /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(VisuallyHidden, { render: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(index_parts_exports.Description, {}), children: (0, import_i18n6.__)("More details follow the field.") }), 15472 /* @__PURE__ */ (0, import_jsx_runtime63.jsx)( 15473 "div", 15474 { 15475 ref, 15476 className: clsx_default(field_default3.description, className), 15477 ...restProps 15478 } 15479 ) 15480 ] }); 15481 } 15482 ); 15483 15484 // packages/ui/build-module/form/primitives/field/control.mjs 15485 var import_element26 = __toESM(require_element(), 1); 15486 var import_jsx_runtime64 = __toESM(require_jsx_runtime(), 1); 15487 var Control = (0, import_element26.forwardRef)( 15488 function UnforwardedControl(props, ref) { 15489 return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(index_parts_exports.Control, { ref, ...props }); 15490 } 15491 ); 15492 15493 // packages/ui/build-module/form/primitives/field/visual-label.mjs 15494 var import_element27 = __toESM(require_element(), 1); 15495 var STYLE_HASH_ATTRIBUTE16 = "data-wp-hash"; 15496 function getRuntime16() { 15497 const globalScope = globalThis; 15498 if (globalScope.__wpStyleRuntime) { 15499 return globalScope.__wpStyleRuntime; 15500 } 15501 globalScope.__wpStyleRuntime = { 15502 documents: /* @__PURE__ */ new Map(), 15503 styles: /* @__PURE__ */ new Map(), 15504 injectedStyles: /* @__PURE__ */ new WeakMap() 15505 }; 15506 if (typeof document !== "undefined") { 15507 registerDocument16(document); 15508 } 15509 return globalScope.__wpStyleRuntime; 15510 } 15511 function documentContainsStyleHash16(targetDocument, hash) { 15512 if (!targetDocument.head) { 15513 return false; 15514 } 15515 for (const style of targetDocument.head.querySelectorAll( 15516 `style[$STYLE_HASH_ATTRIBUTE16}]` 15517 )) { 15518 if (style.getAttribute(STYLE_HASH_ATTRIBUTE16) === hash) { 15519 return true; 15520 } 15521 } 15522 return false; 15523 } 15524 function injectStyle16(targetDocument, hash, css) { 15525 if (!targetDocument.head) { 15526 return; 15527 } 15528 const runtime = getRuntime16(); 15529 let injectedStyles = runtime.injectedStyles.get(targetDocument); 15530 if (!injectedStyles) { 15531 injectedStyles = /* @__PURE__ */ new Set(); 15532 runtime.injectedStyles.set(targetDocument, injectedStyles); 15533 } 15534 if (injectedStyles.has(hash)) { 15535 return; 15536 } 15537 if (documentContainsStyleHash16(targetDocument, hash)) { 15538 injectedStyles.add(hash); 15539 return; 15540 } 15541 const style = targetDocument.createElement("style"); 15542 style.setAttribute(STYLE_HASH_ATTRIBUTE16, hash); 15543 style.appendChild(targetDocument.createTextNode(css)); 15544 targetDocument.head.appendChild(style); 15545 injectedStyles.add(hash); 15546 } 15547 function registerDocument16(targetDocument) { 15548 const runtime = getRuntime16(); 15549 runtime.documents.set( 15550 targetDocument, 15551 (runtime.documents.get(targetDocument) ?? 0) + 1 15552 ); 15553 for (const [hash, css] of runtime.styles) { 15554 injectStyle16(targetDocument, hash, css); 15555 } 15556 return () => { 15557 const count = runtime.documents.get(targetDocument); 15558 if (count === void 0) { 15559 return; 15560 } 15561 if (count <= 1) { 15562 runtime.documents.delete(targetDocument); 15563 return; 15564 } 15565 runtime.documents.set(targetDocument, count - 1); 15566 }; 15567 } 15568 function registerStyle16(hash, css) { 15569 const runtime = getRuntime16(); 15570 runtime.styles.set(hash, css); 15571 for (const targetDocument of runtime.documents.keys()) { 15572 injectStyle16(targetDocument, hash, css); 15573 } 15574 } 15575 if (typeof process === "undefined" || true) { 15576 registerStyle16("df33c48b2d", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._2d5ad850b2f90964__label{--wp-ui-field-label-line-height:var(--wpds-typography-line-height-xs,16px);color:var(--wpds-color-foreground-content-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-xs,11px);font-weight:var(--wpds-typography-font-weight-emphasis,600);line-height:var(--wp-ui-field-label-line-height);text-transform:uppercase;&._17c4214649230bea__is-plain{font-size:var(--wpds-typography-font-size-md,13px);font-weight:var(--wpds-typography-font-weight-default,400);text-transform:none}}._08a3750500e0233f__description{--_gcd-p-font-size:var(--wpds-typography-font-size-sm,12px);--_gcd-p-line-height:var(--wpds-typography-line-height-xs,16px);--_gcd-p-margin:0;text-wrap:pretty;color:var(--wpds-color-foreground-content-neutral-weak,#707070);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-sm,12px);line-height:var(--wpds-typography-line-height-xs,16px)}}}'); 15577 } 15578 var field_default4 = { "label": "_2d5ad850b2f90964__label", "is-plain": "_17c4214649230bea__is-plain", "description": "_08a3750500e0233f__description" }; 15579 var VisualLabel = (0, import_element27.forwardRef)( 15580 function UnforwardedVisualLabel({ className, render, variant, ...restProps }, ref) { 15581 return useRender({ 15582 defaultTagName: "span", 15583 render, 15584 ref, 15585 props: mergeProps(restProps, { 15586 className: clsx_default( 15587 field_default4.label, 15588 variant && field_default4[`is-$variant}`], 15589 className 15590 ) 15591 }) 15592 }); 15593 } 15594 ); 15595 VisualLabel.displayName = "Field.VisualLabel"; 15596 15597 // packages/ui/build-module/form/primitives/select/index.mjs 15598 var select_exports = {}; 15599 __export(select_exports, { 15600 Group: () => Group, 15601 GroupLabel: () => GroupLabel, 15602 Item: () => Item2, 15603 ItemDescription: () => ItemDescription, 15604 ItemLabel: () => ItemLabel, 15605 Popup: () => Popup, 15606 Portal: () => Portal, 15607 Positioner: () => Positioner, 15608 Root: () => Root2, 15609 Separator: () => Separator, 15610 Trigger: () => Trigger 15611 }); 15612 15613 // packages/ui/build-module/form/primitives/select/group.mjs 15614 var import_element28 = __toESM(require_element(), 1); 15615 var import_jsx_runtime65 = __toESM(require_jsx_runtime(), 1); 15616 var STYLE_HASH_ATTRIBUTE17 = "data-wp-hash"; 15617 function getRuntime17() { 15618 const globalScope = globalThis; 15619 if (globalScope.__wpStyleRuntime) { 15620 return globalScope.__wpStyleRuntime; 15621 } 15622 globalScope.__wpStyleRuntime = { 15623 documents: /* @__PURE__ */ new Map(), 15624 styles: /* @__PURE__ */ new Map(), 15625 injectedStyles: /* @__PURE__ */ new WeakMap() 15626 }; 15627 if (typeof document !== "undefined") { 15628 registerDocument17(document); 15629 } 15630 return globalScope.__wpStyleRuntime; 15631 } 15632 function documentContainsStyleHash17(targetDocument, hash) { 15633 if (!targetDocument.head) { 15634 return false; 15635 } 15636 for (const style of targetDocument.head.querySelectorAll( 15637 `style[$STYLE_HASH_ATTRIBUTE17}]` 15638 )) { 15639 if (style.getAttribute(STYLE_HASH_ATTRIBUTE17) === hash) { 15640 return true; 15641 } 15642 } 15643 return false; 15644 } 15645 function injectStyle17(targetDocument, hash, css) { 15646 if (!targetDocument.head) { 15647 return; 15648 } 15649 const runtime = getRuntime17(); 15650 let injectedStyles = runtime.injectedStyles.get(targetDocument); 15651 if (!injectedStyles) { 15652 injectedStyles = /* @__PURE__ */ new Set(); 15653 runtime.injectedStyles.set(targetDocument, injectedStyles); 15654 } 15655 if (injectedStyles.has(hash)) { 15656 return; 15657 } 15658 if (documentContainsStyleHash17(targetDocument, hash)) { 15659 injectedStyles.add(hash); 15660 return; 15661 } 15662 const style = targetDocument.createElement("style"); 15663 style.setAttribute(STYLE_HASH_ATTRIBUTE17, hash); 15664 style.appendChild(targetDocument.createTextNode(css)); 15665 targetDocument.head.appendChild(style); 15666 injectedStyles.add(hash); 15667 } 15668 function registerDocument17(targetDocument) { 15669 const runtime = getRuntime17(); 15670 runtime.documents.set( 15671 targetDocument, 15672 (runtime.documents.get(targetDocument) ?? 0) + 1 15673 ); 15674 for (const [hash, css] of runtime.styles) { 15675 injectStyle17(targetDocument, hash, css); 15676 } 15677 return () => { 15678 const count = runtime.documents.get(targetDocument); 15679 if (count === void 0) { 15680 return; 15681 } 15682 if (count <= 1) { 15683 runtime.documents.delete(targetDocument); 15684 return; 15685 } 15686 runtime.documents.set(targetDocument, count - 1); 15687 }; 15688 } 15689 function registerStyle17(hash, css) { 15690 const runtime = getRuntime17(); 15691 runtime.styles.set(hash, css); 15692 for (const targetDocument of runtime.documents.keys()) { 15693 injectStyle17(targetDocument, hash, css); 15694 } 15695 } 15696 if (typeof process === "undefined" || true) { 15697 registerStyle17("e25d67a230", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger[data-side=none] ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{--_wp-ui-popup-selection-offset:0px;color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px);&:has(.a3adcfd0b73ffd40__item-icon){--_wp-ui-popup-selection-offset:calc(var(--wpds-dimension-size-2xs, 16px) + var(--wpds-dimension-gap-xs, 4px) - var(--wpds-dimension-padding-xs, 4px))}}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-sm,24px);padding-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));padding-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset))}.be89a1df0fe77bd2__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));margin-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset));@media (forced-colors:active){background-color:CanvasText}}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline:var(--wp-ui-popup-item-padding-inline);user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&:has(>.a3adcfd0b73ffd40__item-icon){align-content:center;align-items:start;display:grid;grid-template-columns:auto minmax(0,1fr);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);pointer-events:none}._92fbe4765dfad5ee__item-indicator-icon{translate:0 1px}._74465fc7e8ecea1a__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._41f0dd875c005a48__item-text{display:flex;flex-direction:column;min-width:0}._12335b76ada0b1f5__item-label{min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[aria-disabled=true] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([aria-disabled=true]) ._160635254c702623__item-description{color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}'); 15698 } 15699 var item_popup_default2 = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "item-icon": "a3adcfd0b73ffd40__item-icon", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "separator": "be89a1df0fe77bd2__separator", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-content": "_74465fc7e8ecea1a__item-content", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" }; 15700 var Group = (0, import_element28.forwardRef)( 15701 function UnforwardedGroup({ className, children, ...restProps }, ref) { 15702 return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)( 15703 index_parts_exports2.Group, 15704 { 15705 className: clsx_default(item_popup_default2.group, className), 15706 ref, 15707 ...restProps, 15708 children 15709 } 15710 ); 15711 } 15712 ); 15713 15714 // packages/ui/build-module/form/primitives/select/group-label.mjs 15715 var import_element29 = __toESM(require_element(), 1); 15716 var import_jsx_runtime66 = __toESM(require_jsx_runtime(), 1); 15717 var STYLE_HASH_ATTRIBUTE18 = "data-wp-hash"; 15718 function getRuntime18() { 15719 const globalScope = globalThis; 15720 if (globalScope.__wpStyleRuntime) { 15721 return globalScope.__wpStyleRuntime; 15722 } 15723 globalScope.__wpStyleRuntime = { 15724 documents: /* @__PURE__ */ new Map(), 15725 styles: /* @__PURE__ */ new Map(), 15726 injectedStyles: /* @__PURE__ */ new WeakMap() 15727 }; 15728 if (typeof document !== "undefined") { 15729 registerDocument18(document); 15730 } 15731 return globalScope.__wpStyleRuntime; 15732 } 15733 function documentContainsStyleHash18(targetDocument, hash) { 15734 if (!targetDocument.head) { 15735 return false; 15736 } 15737 for (const style of targetDocument.head.querySelectorAll( 15738 `style[$STYLE_HASH_ATTRIBUTE18}]` 15739 )) { 15740 if (style.getAttribute(STYLE_HASH_ATTRIBUTE18) === hash) { 15741 return true; 15742 } 15743 } 15744 return false; 15745 } 15746 function injectStyle18(targetDocument, hash, css) { 15747 if (!targetDocument.head) { 15748 return; 15749 } 15750 const runtime = getRuntime18(); 15751 let injectedStyles = runtime.injectedStyles.get(targetDocument); 15752 if (!injectedStyles) { 15753 injectedStyles = /* @__PURE__ */ new Set(); 15754 runtime.injectedStyles.set(targetDocument, injectedStyles); 15755 } 15756 if (injectedStyles.has(hash)) { 15757 return; 15758 } 15759 if (documentContainsStyleHash18(targetDocument, hash)) { 15760 injectedStyles.add(hash); 15761 return; 15762 } 15763 const style = targetDocument.createElement("style"); 15764 style.setAttribute(STYLE_HASH_ATTRIBUTE18, hash); 15765 style.appendChild(targetDocument.createTextNode(css)); 15766 targetDocument.head.appendChild(style); 15767 injectedStyles.add(hash); 15768 } 15769 function registerDocument18(targetDocument) { 15770 const runtime = getRuntime18(); 15771 runtime.documents.set( 15772 targetDocument, 15773 (runtime.documents.get(targetDocument) ?? 0) + 1 15774 ); 15775 for (const [hash, css] of runtime.styles) { 15776 injectStyle18(targetDocument, hash, css); 15777 } 15778 return () => { 15779 const count = runtime.documents.get(targetDocument); 15780 if (count === void 0) { 15781 return; 15782 } 15783 if (count <= 1) { 15784 runtime.documents.delete(targetDocument); 15785 return; 15786 } 15787 runtime.documents.set(targetDocument, count - 1); 15788 }; 15789 } 15790 function registerStyle18(hash, css) { 15791 const runtime = getRuntime18(); 15792 runtime.styles.set(hash, css); 15793 for (const targetDocument of runtime.documents.keys()) { 15794 injectStyle18(targetDocument, hash, css); 15795 } 15796 } 15797 if (typeof process === "undefined" || true) { 15798 registerStyle18("e25d67a230", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger[data-side=none] ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{--_wp-ui-popup-selection-offset:0px;color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px);&:has(.a3adcfd0b73ffd40__item-icon){--_wp-ui-popup-selection-offset:calc(var(--wpds-dimension-size-2xs, 16px) + var(--wpds-dimension-gap-xs, 4px) - var(--wpds-dimension-padding-xs, 4px))}}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-sm,24px);padding-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));padding-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset))}.be89a1df0fe77bd2__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));margin-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset));@media (forced-colors:active){background-color:CanvasText}}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline:var(--wp-ui-popup-item-padding-inline);user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&:has(>.a3adcfd0b73ffd40__item-icon){align-content:center;align-items:start;display:grid;grid-template-columns:auto minmax(0,1fr);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);pointer-events:none}._92fbe4765dfad5ee__item-indicator-icon{translate:0 1px}._74465fc7e8ecea1a__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._41f0dd875c005a48__item-text{display:flex;flex-direction:column;min-width:0}._12335b76ada0b1f5__item-label{min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[aria-disabled=true] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([aria-disabled=true]) ._160635254c702623__item-description{color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}'); 15799 } 15800 var item_popup_default3 = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "item-icon": "a3adcfd0b73ffd40__item-icon", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "separator": "be89a1df0fe77bd2__separator", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-content": "_74465fc7e8ecea1a__item-content", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" }; 15801 var GroupLabel = (0, import_element29.forwardRef)( 15802 function UnforwardedGroupLabel({ className, children, ...restProps }, ref) { 15803 return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)( 15804 Text, 15805 { 15806 variant: "heading-sm", 15807 className: clsx_default( 15808 item_popup_default3["group-label"], 15809 className 15810 ), 15811 render: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(index_parts_exports2.GroupLabel, { ref, ...restProps }), 15812 children 15813 } 15814 ); 15815 } 15816 ); 15817 15818 // packages/ui/build-module/form/primitives/select/item.mjs 15819 var import_element32 = __toESM(require_element(), 1); 15820 15821 // packages/ui/build-module/form/primitives/select/item-description.mjs 15822 var import_element30 = __toESM(require_element(), 1); 15823 var import_jsx_runtime67 = __toESM(require_jsx_runtime(), 1); 15824 var STYLE_HASH_ATTRIBUTE19 = "data-wp-hash"; 15825 function getRuntime19() { 15826 const globalScope = globalThis; 15827 if (globalScope.__wpStyleRuntime) { 15828 return globalScope.__wpStyleRuntime; 15829 } 15830 globalScope.__wpStyleRuntime = { 15831 documents: /* @__PURE__ */ new Map(), 15832 styles: /* @__PURE__ */ new Map(), 15833 injectedStyles: /* @__PURE__ */ new WeakMap() 15834 }; 15835 if (typeof document !== "undefined") { 15836 registerDocument19(document); 15837 } 15838 return globalScope.__wpStyleRuntime; 15839 } 15840 function documentContainsStyleHash19(targetDocument, hash) { 15841 if (!targetDocument.head) { 15842 return false; 15843 } 15844 for (const style of targetDocument.head.querySelectorAll( 15845 `style[$STYLE_HASH_ATTRIBUTE19}]` 15846 )) { 15847 if (style.getAttribute(STYLE_HASH_ATTRIBUTE19) === hash) { 15848 return true; 15849 } 15850 } 15851 return false; 15852 } 15853 function injectStyle19(targetDocument, hash, css) { 15854 if (!targetDocument.head) { 15855 return; 15856 } 15857 const runtime = getRuntime19(); 15858 let injectedStyles = runtime.injectedStyles.get(targetDocument); 15859 if (!injectedStyles) { 15860 injectedStyles = /* @__PURE__ */ new Set(); 15861 runtime.injectedStyles.set(targetDocument, injectedStyles); 15862 } 15863 if (injectedStyles.has(hash)) { 15864 return; 15865 } 15866 if (documentContainsStyleHash19(targetDocument, hash)) { 15867 injectedStyles.add(hash); 15868 return; 15869 } 15870 const style = targetDocument.createElement("style"); 15871 style.setAttribute(STYLE_HASH_ATTRIBUTE19, hash); 15872 style.appendChild(targetDocument.createTextNode(css)); 15873 targetDocument.head.appendChild(style); 15874 injectedStyles.add(hash); 15875 } 15876 function registerDocument19(targetDocument) { 15877 const runtime = getRuntime19(); 15878 runtime.documents.set( 15879 targetDocument, 15880 (runtime.documents.get(targetDocument) ?? 0) + 1 15881 ); 15882 for (const [hash, css] of runtime.styles) { 15883 injectStyle19(targetDocument, hash, css); 15884 } 15885 return () => { 15886 const count = runtime.documents.get(targetDocument); 15887 if (count === void 0) { 15888 return; 15889 } 15890 if (count <= 1) { 15891 runtime.documents.delete(targetDocument); 15892 return; 15893 } 15894 runtime.documents.set(targetDocument, count - 1); 15895 }; 15896 } 15897 function registerStyle19(hash, css) { 15898 const runtime = getRuntime19(); 15899 runtime.styles.set(hash, css); 15900 for (const targetDocument of runtime.documents.keys()) { 15901 injectStyle19(targetDocument, hash, css); 15902 } 15903 } 15904 if (typeof process === "undefined" || true) { 15905 registerStyle19("e25d67a230", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger[data-side=none] ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{--_wp-ui-popup-selection-offset:0px;color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px);&:has(.a3adcfd0b73ffd40__item-icon){--_wp-ui-popup-selection-offset:calc(var(--wpds-dimension-size-2xs, 16px) + var(--wpds-dimension-gap-xs, 4px) - var(--wpds-dimension-padding-xs, 4px))}}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-sm,24px);padding-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));padding-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset))}.be89a1df0fe77bd2__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));margin-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset));@media (forced-colors:active){background-color:CanvasText}}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline:var(--wp-ui-popup-item-padding-inline);user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&:has(>.a3adcfd0b73ffd40__item-icon){align-content:center;align-items:start;display:grid;grid-template-columns:auto minmax(0,1fr);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);pointer-events:none}._92fbe4765dfad5ee__item-indicator-icon{translate:0 1px}._74465fc7e8ecea1a__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._41f0dd875c005a48__item-text{display:flex;flex-direction:column;min-width:0}._12335b76ada0b1f5__item-label{min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[aria-disabled=true] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([aria-disabled=true]) ._160635254c702623__item-description{color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}'); 15906 } 15907 var item_popup_default4 = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "item-icon": "a3adcfd0b73ffd40__item-icon", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "separator": "be89a1df0fe77bd2__separator", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-content": "_74465fc7e8ecea1a__item-content", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" }; 15908 var ITEM_DESCRIPTION_DIRECT_CHILD = /* @__PURE__ */ Symbol(); 15909 var ItemDescription = (0, import_element30.forwardRef)(function UnforwardedItemDescription(props, ref) { 15910 const { className, validationToken, ...restProps } = props; 15911 if (validationToken !== ITEM_DESCRIPTION_DIRECT_CHILD) { 15912 throw new Error( 15913 "Select.ItemDescription: Missing direct select item parent. Render <Select.ItemDescription> as a direct child of <Select.Item>." 15914 ); 15915 } 15916 return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( 15917 Text, 15918 { 15919 ref, 15920 variant: "body-sm", 15921 className: clsx_default( 15922 item_popup_default4["item-description"], 15923 className 15924 ), 15925 ...restProps 15926 } 15927 ); 15928 }); 15929 15930 // packages/ui/build-module/form/primitives/select/item-label.mjs 15931 var import_element31 = __toESM(require_element(), 1); 15932 var import_jsx_runtime68 = __toESM(require_jsx_runtime(), 1); 15933 var STYLE_HASH_ATTRIBUTE20 = "data-wp-hash"; 15934 function getRuntime20() { 15935 const globalScope = globalThis; 15936 if (globalScope.__wpStyleRuntime) { 15937 return globalScope.__wpStyleRuntime; 15938 } 15939 globalScope.__wpStyleRuntime = { 15940 documents: /* @__PURE__ */ new Map(), 15941 styles: /* @__PURE__ */ new Map(), 15942 injectedStyles: /* @__PURE__ */ new WeakMap() 15943 }; 15944 if (typeof document !== "undefined") { 15945 registerDocument20(document); 15946 } 15947 return globalScope.__wpStyleRuntime; 15948 } 15949 function documentContainsStyleHash20(targetDocument, hash) { 15950 if (!targetDocument.head) { 15951 return false; 15952 } 15953 for (const style of targetDocument.head.querySelectorAll( 15954 `style[$STYLE_HASH_ATTRIBUTE20}]` 15955 )) { 15956 if (style.getAttribute(STYLE_HASH_ATTRIBUTE20) === hash) { 15957 return true; 15958 } 15959 } 15960 return false; 15961 } 15962 function injectStyle20(targetDocument, hash, css) { 15963 if (!targetDocument.head) { 15964 return; 15965 } 15966 const runtime = getRuntime20(); 15967 let injectedStyles = runtime.injectedStyles.get(targetDocument); 15968 if (!injectedStyles) { 15969 injectedStyles = /* @__PURE__ */ new Set(); 15970 runtime.injectedStyles.set(targetDocument, injectedStyles); 15971 } 15972 if (injectedStyles.has(hash)) { 15973 return; 15974 } 15975 if (documentContainsStyleHash20(targetDocument, hash)) { 15976 injectedStyles.add(hash); 15977 return; 15978 } 15979 const style = targetDocument.createElement("style"); 15980 style.setAttribute(STYLE_HASH_ATTRIBUTE20, hash); 15981 style.appendChild(targetDocument.createTextNode(css)); 15982 targetDocument.head.appendChild(style); 15983 injectedStyles.add(hash); 15984 } 15985 function registerDocument20(targetDocument) { 15986 const runtime = getRuntime20(); 15987 runtime.documents.set( 15988 targetDocument, 15989 (runtime.documents.get(targetDocument) ?? 0) + 1 15990 ); 15991 for (const [hash, css] of runtime.styles) { 15992 injectStyle20(targetDocument, hash, css); 15993 } 15994 return () => { 15995 const count = runtime.documents.get(targetDocument); 15996 if (count === void 0) { 15997 return; 15998 } 15999 if (count <= 1) { 16000 runtime.documents.delete(targetDocument); 16001 return; 16002 } 16003 runtime.documents.set(targetDocument, count - 1); 16004 }; 16005 } 16006 function registerStyle20(hash, css) { 16007 const runtime = getRuntime20(); 16008 runtime.styles.set(hash, css); 16009 for (const targetDocument of runtime.documents.keys()) { 16010 injectStyle20(targetDocument, hash, css); 16011 } 16012 } 16013 if (typeof process === "undefined" || true) { 16014 registerStyle20("e25d67a230", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger[data-side=none] ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{--_wp-ui-popup-selection-offset:0px;color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px);&:has(.a3adcfd0b73ffd40__item-icon){--_wp-ui-popup-selection-offset:calc(var(--wpds-dimension-size-2xs, 16px) + var(--wpds-dimension-gap-xs, 4px) - var(--wpds-dimension-padding-xs, 4px))}}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-sm,24px);padding-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));padding-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset))}.be89a1df0fe77bd2__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));margin-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset));@media (forced-colors:active){background-color:CanvasText}}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline:var(--wp-ui-popup-item-padding-inline);user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&:has(>.a3adcfd0b73ffd40__item-icon){align-content:center;align-items:start;display:grid;grid-template-columns:auto minmax(0,1fr);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);pointer-events:none}._92fbe4765dfad5ee__item-indicator-icon{translate:0 1px}._74465fc7e8ecea1a__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._41f0dd875c005a48__item-text{display:flex;flex-direction:column;min-width:0}._12335b76ada0b1f5__item-label{min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[aria-disabled=true] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([aria-disabled=true]) ._160635254c702623__item-description{color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}'); 16015 } 16016 var item_popup_default5 = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "item-icon": "a3adcfd0b73ffd40__item-icon", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "separator": "be89a1df0fe77bd2__separator", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-content": "_74465fc7e8ecea1a__item-content", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" }; 16017 var ItemLabel = (0, import_element31.forwardRef)( 16018 function UnforwardedItemLabel({ children, className, render, ...restProps }, ref) { 16019 return /* @__PURE__ */ (0, import_jsx_runtime68.jsx)( 16020 Text, 16021 { 16022 ref, 16023 variant: "body-md", 16024 render: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(index_parts_exports2.ItemText, { render }), 16025 className: clsx_default(item_popup_default5["item-label"], className), 16026 ...restProps, 16027 children 16028 } 16029 ); 16030 } 16031 ); 16032 16033 // packages/ui/build-module/form/primitives/select/item.mjs 16034 var import_jsx_runtime69 = __toESM(require_jsx_runtime(), 1); 16035 var STYLE_HASH_ATTRIBUTE21 = "data-wp-hash"; 16036 function getRuntime21() { 16037 const globalScope = globalThis; 16038 if (globalScope.__wpStyleRuntime) { 16039 return globalScope.__wpStyleRuntime; 16040 } 16041 globalScope.__wpStyleRuntime = { 16042 documents: /* @__PURE__ */ new Map(), 16043 styles: /* @__PURE__ */ new Map(), 16044 injectedStyles: /* @__PURE__ */ new WeakMap() 16045 }; 16046 if (typeof document !== "undefined") { 16047 registerDocument21(document); 16048 } 16049 return globalScope.__wpStyleRuntime; 16050 } 16051 function documentContainsStyleHash21(targetDocument, hash) { 16052 if (!targetDocument.head) { 16053 return false; 16054 } 16055 for (const style of targetDocument.head.querySelectorAll( 16056 `style[$STYLE_HASH_ATTRIBUTE21}]` 16057 )) { 16058 if (style.getAttribute(STYLE_HASH_ATTRIBUTE21) === hash) { 16059 return true; 16060 } 16061 } 16062 return false; 16063 } 16064 function injectStyle21(targetDocument, hash, css) { 16065 if (!targetDocument.head) { 16066 return; 16067 } 16068 const runtime = getRuntime21(); 16069 let injectedStyles = runtime.injectedStyles.get(targetDocument); 16070 if (!injectedStyles) { 16071 injectedStyles = /* @__PURE__ */ new Set(); 16072 runtime.injectedStyles.set(targetDocument, injectedStyles); 16073 } 16074 if (injectedStyles.has(hash)) { 16075 return; 16076 } 16077 if (documentContainsStyleHash21(targetDocument, hash)) { 16078 injectedStyles.add(hash); 16079 return; 16080 } 16081 const style = targetDocument.createElement("style"); 16082 style.setAttribute(STYLE_HASH_ATTRIBUTE21, hash); 16083 style.appendChild(targetDocument.createTextNode(css)); 16084 targetDocument.head.appendChild(style); 16085 injectedStyles.add(hash); 16086 } 16087 function registerDocument21(targetDocument) { 16088 const runtime = getRuntime21(); 16089 runtime.documents.set( 16090 targetDocument, 16091 (runtime.documents.get(targetDocument) ?? 0) + 1 16092 ); 16093 for (const [hash, css] of runtime.styles) { 16094 injectStyle21(targetDocument, hash, css); 16095 } 16096 return () => { 16097 const count = runtime.documents.get(targetDocument); 16098 if (count === void 0) { 16099 return; 16100 } 16101 if (count <= 1) { 16102 runtime.documents.delete(targetDocument); 16103 return; 16104 } 16105 runtime.documents.set(targetDocument, count - 1); 16106 }; 16107 } 16108 function registerStyle21(hash, css) { 16109 const runtime = getRuntime21(); 16110 runtime.styles.set(hash, css); 16111 for (const targetDocument of runtime.documents.keys()) { 16112 injectStyle21(targetDocument, hash, css); 16113 } 16114 } 16115 if (typeof process === "undefined" || true) { 16116 registerStyle21("abb19c3171", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}[role=treeitem] span._400bf7ee0c6061a9__span[aria-hidden]{display:var(--_gcd-span-display,inline);font-family:var(--_gcd-span-font-family,inherit);font-size:var(--_gcd-span-font-size,inherit);line-height:var(--_gcd-span-line-height,1);pointer-events:var(--_gcd-span-pointer-events,auto);position:var(--_gcd-span-position,static)}"); 16117 } 16118 var global_css_defense_default7 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li", "span": "_400bf7ee0c6061a9__span" }; 16119 if (typeof process === "undefined" || true) { 16120 registerStyle21("e25d67a230", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger[data-side=none] ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{--_wp-ui-popup-selection-offset:0px;color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px);&:has(.a3adcfd0b73ffd40__item-icon){--_wp-ui-popup-selection-offset:calc(var(--wpds-dimension-size-2xs, 16px) + var(--wpds-dimension-gap-xs, 4px) - var(--wpds-dimension-padding-xs, 4px))}}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-sm,24px);padding-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));padding-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset))}.be89a1df0fe77bd2__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));margin-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset));@media (forced-colors:active){background-color:CanvasText}}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline:var(--wp-ui-popup-item-padding-inline);user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&:has(>.a3adcfd0b73ffd40__item-icon){align-content:center;align-items:start;display:grid;grid-template-columns:auto minmax(0,1fr);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);pointer-events:none}._92fbe4765dfad5ee__item-indicator-icon{translate:0 1px}._74465fc7e8ecea1a__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._41f0dd875c005a48__item-text{display:flex;flex-direction:column;min-width:0}._12335b76ada0b1f5__item-label{min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[aria-disabled=true] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([aria-disabled=true]) ._160635254c702623__item-description{color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}'); 16121 } 16122 var item_popup_default6 = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "item-icon": "a3adcfd0b73ffd40__item-icon", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "separator": "be89a1df0fe77bd2__separator", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-content": "_74465fc7e8ecea1a__item-content", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" }; 16123 if (typeof process === "undefined" || true) { 16124 registerStyle21("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 16125 } 16126 var resets_default4 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; 16127 var ITEM_CONTENT_COMPONENTS = { 16128 Label: ItemLabel, 16129 Description: ItemDescription, 16130 descriptionValidationToken: ITEM_DESCRIPTION_DIRECT_CHILD, 16131 validationMessage: "Select.ItemLabel must be the first direct child of every select item, followed only by Select.ItemDescription components." 16132 }; 16133 var Item2 = (0, import_element32.forwardRef)( 16134 function UnforwardedItem2({ 16135 className, 16136 value, 16137 size: size4 = "default", 16138 children, 16139 "aria-describedby": ariaDescribedBy, 16140 "aria-label": ariaLabel, 16141 "aria-labelledby": ariaLabelledBy, 16142 ...restProps 16143 }, ref) { 16144 const { contentChildren, itemAriaProps } = useItemContent( 16145 children, 16146 ITEM_CONTENT_COMPONENTS, 16147 { 16148 "aria-describedby": ariaDescribedBy, 16149 "aria-label": ariaLabel, 16150 "aria-labelledby": ariaLabelledBy 16151 } 16152 ); 16153 return /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)( 16154 index_parts_exports2.Item, 16155 { 16156 className: clsx_default( 16157 global_css_defense_default7.div, 16158 resets_default4["box-sizing"], 16159 item_popup_default6.item, 16160 size4 === "small" && item_popup_default6["is-size-small"], 16161 className 16162 ), 16163 value, 16164 ref, 16165 ...itemAriaProps, 16166 ...restProps, 16167 children: [ 16168 /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { className: item_popup_default6["item-icon"], children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)( 16169 Icon, 16170 { 16171 icon: check_default, 16172 className: item_popup_default6["item-indicator-icon"], 16173 size: 16 16174 } 16175 ) }), 16176 /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className: item_popup_default6["item-text"], children: contentChildren }) 16177 ] 16178 } 16179 ); 16180 } 16181 ); 16182 16183 // packages/ui/build-module/form/primitives/select/popup.mjs 16184 var import_element35 = __toESM(require_element(), 1); 16185 16186 // packages/ui/build-module/form/primitives/select/portal.mjs 16187 var import_element33 = __toESM(require_element(), 1); 16188 var import_jsx_runtime70 = __toESM(require_jsx_runtime(), 1); 16189 var Portal = (0, import_element33.forwardRef)(function SelectPortal3({ container, ...restProps }, ref) { 16190 return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)( 16191 index_parts_exports2.Portal, 16192 { 16193 container: container === void 0 ? getWpCompatOverlaySlot() : container, 16194 ...restProps, 16195 ref 16196 } 16197 ); 16198 }); 16199 16200 // packages/ui/build-module/form/primitives/select/positioner.mjs 16201 var import_element34 = __toESM(require_element(), 1); 16202 var import_jsx_runtime71 = __toESM(require_jsx_runtime(), 1); 16203 var STYLE_HASH_ATTRIBUTE22 = "data-wp-hash"; 16204 function getRuntime22() { 16205 const globalScope = globalThis; 16206 if (globalScope.__wpStyleRuntime) { 16207 return globalScope.__wpStyleRuntime; 16208 } 16209 globalScope.__wpStyleRuntime = { 16210 documents: /* @__PURE__ */ new Map(), 16211 styles: /* @__PURE__ */ new Map(), 16212 injectedStyles: /* @__PURE__ */ new WeakMap() 16213 }; 16214 if (typeof document !== "undefined") { 16215 registerDocument22(document); 16216 } 16217 return globalScope.__wpStyleRuntime; 16218 } 16219 function documentContainsStyleHash22(targetDocument, hash) { 16220 if (!targetDocument.head) { 16221 return false; 16222 } 16223 for (const style of targetDocument.head.querySelectorAll( 16224 `style[$STYLE_HASH_ATTRIBUTE22}]` 16225 )) { 16226 if (style.getAttribute(STYLE_HASH_ATTRIBUTE22) === hash) { 16227 return true; 16228 } 16229 } 16230 return false; 16231 } 16232 function injectStyle22(targetDocument, hash, css) { 16233 if (!targetDocument.head) { 16234 return; 16235 } 16236 const runtime = getRuntime22(); 16237 let injectedStyles = runtime.injectedStyles.get(targetDocument); 16238 if (!injectedStyles) { 16239 injectedStyles = /* @__PURE__ */ new Set(); 16240 runtime.injectedStyles.set(targetDocument, injectedStyles); 16241 } 16242 if (injectedStyles.has(hash)) { 16243 return; 16244 } 16245 if (documentContainsStyleHash22(targetDocument, hash)) { 16246 injectedStyles.add(hash); 16247 return; 16248 } 16249 const style = targetDocument.createElement("style"); 16250 style.setAttribute(STYLE_HASH_ATTRIBUTE22, hash); 16251 style.appendChild(targetDocument.createTextNode(css)); 16252 targetDocument.head.appendChild(style); 16253 injectedStyles.add(hash); 16254 } 16255 function registerDocument22(targetDocument) { 16256 const runtime = getRuntime22(); 16257 runtime.documents.set( 16258 targetDocument, 16259 (runtime.documents.get(targetDocument) ?? 0) + 1 16260 ); 16261 for (const [hash, css] of runtime.styles) { 16262 injectStyle22(targetDocument, hash, css); 16263 } 16264 return () => { 16265 const count = runtime.documents.get(targetDocument); 16266 if (count === void 0) { 16267 return; 16268 } 16269 if (count <= 1) { 16270 runtime.documents.delete(targetDocument); 16271 return; 16272 } 16273 runtime.documents.set(targetDocument, count - 1); 16274 }; 16275 } 16276 function registerStyle22(hash, css) { 16277 const runtime = getRuntime22(); 16278 runtime.styles.set(hash, css); 16279 for (const targetDocument of runtime.documents.keys()) { 16280 injectStyle22(targetDocument, hash, css); 16281 } 16282 } 16283 if (typeof process === "undefined" || true) { 16284 registerStyle22("10f3806643", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._336cd3e4e743482f__box-sizing{box-sizing:border-box;*,:after,:before{box-sizing:inherit}}}}"); 16285 } 16286 var resets_default5 = { "box-sizing": "_336cd3e4e743482f__box-sizing" }; 16287 if (typeof process === "undefined" || true) { 16288 registerStyle22("e25d67a230", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger[data-side=none] ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{--_wp-ui-popup-selection-offset:0px;color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px);&:has(.a3adcfd0b73ffd40__item-icon){--_wp-ui-popup-selection-offset:calc(var(--wpds-dimension-size-2xs, 16px) + var(--wpds-dimension-gap-xs, 4px) - var(--wpds-dimension-padding-xs, 4px))}}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-sm,24px);padding-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));padding-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset))}.be89a1df0fe77bd2__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));margin-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset));@media (forced-colors:active){background-color:CanvasText}}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline:var(--wp-ui-popup-item-padding-inline);user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&:has(>.a3adcfd0b73ffd40__item-icon){align-content:center;align-items:start;display:grid;grid-template-columns:auto minmax(0,1fr);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);pointer-events:none}._92fbe4765dfad5ee__item-indicator-icon{translate:0 1px}._74465fc7e8ecea1a__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._41f0dd875c005a48__item-text{display:flex;flex-direction:column;min-width:0}._12335b76ada0b1f5__item-label{min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[aria-disabled=true] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([aria-disabled=true]) ._160635254c702623__item-description{color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}'); 16289 } 16290 var item_popup_default7 = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "item-icon": "a3adcfd0b73ffd40__item-icon", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "separator": "be89a1df0fe77bd2__separator", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-content": "_74465fc7e8ecea1a__item-content", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" }; 16291 if (typeof process === "undefined" || true) { 16292 registerStyle22("aaac8c315e", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._0ab863136fb95530__positioner{z-index:var(--wp-ui-select-z-index,initial)}.a9ab07efb9ef413f__list{display:block;min-block-size:0;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}}}"); 16293 } 16294 var style_default10 = { "positioner": "_0ab863136fb95530__positioner", "list": "a9ab07efb9ef413f__list" }; 16295 var Positioner = (0, import_element34.forwardRef)( 16296 function SelectPositioner3({ className, alignItemWithTrigger = true, ...props }, ref) { 16297 return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( 16298 index_parts_exports2.Positioner, 16299 { 16300 ...ITEM_POPUP_POSITIONER_PROPS, 16301 ...props, 16302 alignItemWithTrigger, 16303 ref, 16304 className: clsx_default( 16305 resets_default5["box-sizing"], 16306 style_default10.positioner, 16307 alignItemWithTrigger && item_popup_default7["is-align-item-with-trigger"], 16308 className 16309 ) 16310 } 16311 ); 16312 } 16313 ); 16314 16315 // packages/ui/build-module/form/primitives/select/popup.mjs 16316 var import_jsx_runtime72 = __toESM(require_jsx_runtime(), 1); 16317 var STYLE_HASH_ATTRIBUTE23 = "data-wp-hash"; 16318 function getRuntime23() { 16319 const globalScope = globalThis; 16320 if (globalScope.__wpStyleRuntime) { 16321 return globalScope.__wpStyleRuntime; 16322 } 16323 globalScope.__wpStyleRuntime = { 16324 documents: /* @__PURE__ */ new Map(), 16325 styles: /* @__PURE__ */ new Map(), 16326 injectedStyles: /* @__PURE__ */ new WeakMap() 16327 }; 16328 if (typeof document !== "undefined") { 16329 registerDocument23(document); 16330 } 16331 return globalScope.__wpStyleRuntime; 16332 } 16333 function documentContainsStyleHash23(targetDocument, hash) { 16334 if (!targetDocument.head) { 16335 return false; 16336 } 16337 for (const style of targetDocument.head.querySelectorAll( 16338 `style[$STYLE_HASH_ATTRIBUTE23}]` 16339 )) { 16340 if (style.getAttribute(STYLE_HASH_ATTRIBUTE23) === hash) { 16341 return true; 16342 } 16343 } 16344 return false; 16345 } 16346 function injectStyle23(targetDocument, hash, css) { 16347 if (!targetDocument.head) { 16348 return; 16349 } 16350 const runtime = getRuntime23(); 16351 let injectedStyles = runtime.injectedStyles.get(targetDocument); 16352 if (!injectedStyles) { 16353 injectedStyles = /* @__PURE__ */ new Set(); 16354 runtime.injectedStyles.set(targetDocument, injectedStyles); 16355 } 16356 if (injectedStyles.has(hash)) { 16357 return; 16358 } 16359 if (documentContainsStyleHash23(targetDocument, hash)) { 16360 injectedStyles.add(hash); 16361 return; 16362 } 16363 const style = targetDocument.createElement("style"); 16364 style.setAttribute(STYLE_HASH_ATTRIBUTE23, hash); 16365 style.appendChild(targetDocument.createTextNode(css)); 16366 targetDocument.head.appendChild(style); 16367 injectedStyles.add(hash); 16368 } 16369 function registerDocument23(targetDocument) { 16370 const runtime = getRuntime23(); 16371 runtime.documents.set( 16372 targetDocument, 16373 (runtime.documents.get(targetDocument) ?? 0) + 1 16374 ); 16375 for (const [hash, css] of runtime.styles) { 16376 injectStyle23(targetDocument, hash, css); 16377 } 16378 return () => { 16379 const count = runtime.documents.get(targetDocument); 16380 if (count === void 0) { 16381 return; 16382 } 16383 if (count <= 1) { 16384 runtime.documents.delete(targetDocument); 16385 return; 16386 } 16387 runtime.documents.set(targetDocument, count - 1); 16388 }; 16389 } 16390 function registerStyle23(hash, css) { 16391 const runtime = getRuntime23(); 16392 runtime.styles.set(hash, css); 16393 for (const targetDocument of runtime.documents.keys()) { 16394 injectStyle23(targetDocument, hash, css); 16395 } 16396 } 16397 if (typeof process === "undefined" || true) { 16398 registerStyle23("e25d67a230", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger[data-side=none] ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{--_wp-ui-popup-selection-offset:0px;color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px);&:has(.a3adcfd0b73ffd40__item-icon){--_wp-ui-popup-selection-offset:calc(var(--wpds-dimension-size-2xs, 16px) + var(--wpds-dimension-gap-xs, 4px) - var(--wpds-dimension-padding-xs, 4px))}}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-sm,24px);padding-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));padding-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset))}.be89a1df0fe77bd2__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));margin-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset));@media (forced-colors:active){background-color:CanvasText}}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline:var(--wp-ui-popup-item-padding-inline);user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&:has(>.a3adcfd0b73ffd40__item-icon){align-content:center;align-items:start;display:grid;grid-template-columns:auto minmax(0,1fr);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);pointer-events:none}._92fbe4765dfad5ee__item-indicator-icon{translate:0 1px}._74465fc7e8ecea1a__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._41f0dd875c005a48__item-text{display:flex;flex-direction:column;min-width:0}._12335b76ada0b1f5__item-label{min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[aria-disabled=true] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([aria-disabled=true]) ._160635254c702623__item-description{color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}'); 16399 } 16400 var item_popup_default8 = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "item-icon": "a3adcfd0b73ffd40__item-icon", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "separator": "be89a1df0fe77bd2__separator", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-content": "_74465fc7e8ecea1a__item-content", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" }; 16401 if (typeof process === "undefined" || true) { 16402 registerStyle23("aaac8c315e", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._0ab863136fb95530__positioner{z-index:var(--wp-ui-select-z-index,initial)}.a9ab07efb9ef413f__list{display:block;min-block-size:0;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}}}"); 16403 } 16404 var style_default11 = { "positioner": "_0ab863136fb95530__positioner", "list": "a9ab07efb9ef413f__list" }; 16405 var Popup = (0, import_element35.forwardRef)( 16406 function UnforwardedPopup({ className, portal, positioner, width, children, ...restProps }, ref) { 16407 const popupContent = /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( 16408 index_parts_exports2.Popup, 16409 { 16410 ref, 16411 className: clsx_default( 16412 item_popup_default8.popup, 16413 getItemPopupWidthClassName(width), 16414 className 16415 ), 16416 ...restProps, 16417 children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( 16418 index_parts_exports2.List, 16419 { 16420 className: clsx_default( 16421 item_popup_default8["list-chrome"], 16422 style_default11.list 16423 ), 16424 children 16425 } 16426 ) 16427 } 16428 ); 16429 const positionedPopup = renderSlotWithChildren( 16430 positioner, 16431 /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(Positioner, {}), 16432 popupContent 16433 ); 16434 return renderSlotWithChildren(portal, /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(Portal, {}), positionedPopup); 16435 } 16436 ); 16437 16438 // packages/ui/build-module/form/primitives/select/root.mjs 16439 var import_jsx_runtime73 = __toESM(require_jsx_runtime(), 1); 16440 function Root2(props) { 16441 return /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(DirectionProvider3, { children: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(index_parts_exports2.Root, { ...props }) }); 16442 } 16443 16444 // packages/ui/build-module/form/primitives/select/separator.mjs 16445 var import_element36 = __toESM(require_element(), 1); 16446 var import_jsx_runtime74 = __toESM(require_jsx_runtime(), 1); 16447 var STYLE_HASH_ATTRIBUTE24 = "data-wp-hash"; 16448 function getRuntime24() { 16449 const globalScope = globalThis; 16450 if (globalScope.__wpStyleRuntime) { 16451 return globalScope.__wpStyleRuntime; 16452 } 16453 globalScope.__wpStyleRuntime = { 16454 documents: /* @__PURE__ */ new Map(), 16455 styles: /* @__PURE__ */ new Map(), 16456 injectedStyles: /* @__PURE__ */ new WeakMap() 16457 }; 16458 if (typeof document !== "undefined") { 16459 registerDocument24(document); 16460 } 16461 return globalScope.__wpStyleRuntime; 16462 } 16463 function documentContainsStyleHash24(targetDocument, hash) { 16464 if (!targetDocument.head) { 16465 return false; 16466 } 16467 for (const style of targetDocument.head.querySelectorAll( 16468 `style[$STYLE_HASH_ATTRIBUTE24}]` 16469 )) { 16470 if (style.getAttribute(STYLE_HASH_ATTRIBUTE24) === hash) { 16471 return true; 16472 } 16473 } 16474 return false; 16475 } 16476 function injectStyle24(targetDocument, hash, css) { 16477 if (!targetDocument.head) { 16478 return; 16479 } 16480 const runtime = getRuntime24(); 16481 let injectedStyles = runtime.injectedStyles.get(targetDocument); 16482 if (!injectedStyles) { 16483 injectedStyles = /* @__PURE__ */ new Set(); 16484 runtime.injectedStyles.set(targetDocument, injectedStyles); 16485 } 16486 if (injectedStyles.has(hash)) { 16487 return; 16488 } 16489 if (documentContainsStyleHash24(targetDocument, hash)) { 16490 injectedStyles.add(hash); 16491 return; 16492 } 16493 const style = targetDocument.createElement("style"); 16494 style.setAttribute(STYLE_HASH_ATTRIBUTE24, hash); 16495 style.appendChild(targetDocument.createTextNode(css)); 16496 targetDocument.head.appendChild(style); 16497 injectedStyles.add(hash); 16498 } 16499 function registerDocument24(targetDocument) { 16500 const runtime = getRuntime24(); 16501 runtime.documents.set( 16502 targetDocument, 16503 (runtime.documents.get(targetDocument) ?? 0) + 1 16504 ); 16505 for (const [hash, css] of runtime.styles) { 16506 injectStyle24(targetDocument, hash, css); 16507 } 16508 return () => { 16509 const count = runtime.documents.get(targetDocument); 16510 if (count === void 0) { 16511 return; 16512 } 16513 if (count <= 1) { 16514 runtime.documents.delete(targetDocument); 16515 return; 16516 } 16517 runtime.documents.set(targetDocument, count - 1); 16518 }; 16519 } 16520 function registerStyle24(hash, css) { 16521 const runtime = getRuntime24(); 16522 runtime.styles.set(hash, css); 16523 for (const targetDocument of runtime.documents.keys()) { 16524 injectStyle24(targetDocument, hash, css); 16525 } 16526 } 16527 if (typeof process === "undefined" || true) { 16528 registerStyle24("e25d67a230", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._380b81b8f79fb10f__dropdown-motion,._7f344b94e270e039__dropdown-motion--fade-only{--wp-ui-dropdown-slide-distance:4px;--wp-ui-dropdown-slide-duration:var(--wpds-motion-duration-md,200ms);--wp-ui-dropdown-slide-easing:var(--wpds-motion-easing-expressive,cubic-bezier(0.25,0,0,1));--wp-ui-dropdown-fade-duration:var(--wpds-motion-duration-sm,100ms);--wp-ui-dropdown-fade-easing:linear;@media not (prefers-reduced-motion){transition-duration:var(--wp-ui-dropdown-slide-duration),var(--wp-ui-dropdown-fade-duration);transition-property:transform,opacity;transition-timing-function:var(--wp-ui-dropdown-slide-easing),var(--wp-ui-dropdown-fade-easing);will-change:transform,opacity}opacity:1;&[data-instant]{transition:none}&[data-ending-style],&[data-starting-style]{opacity:0}}._380b81b8f79fb10f__dropdown-motion{transform:translate(0);&[data-side=bottom][data-ending-style],&[data-side=bottom][data-starting-style]{transform:translateY(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=top][data-ending-style],&[data-side=top][data-starting-style]{transform:translateY(var(--wp-ui-dropdown-slide-distance))}&[data-side=left][data-ending-style],&[data-side=left][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=right][data-ending-style],&[data-side=right][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&[data-side=inline-start][data-ending-style],&[data-side=inline-start][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}&[data-side=inline-end][data-ending-style],&[data-side=inline-end][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-start][data-ending-style],&:dir(rtl)[data-side=inline-start][data-starting-style]{transform:translateX(calc(var(--wp-ui-dropdown-slide-distance)*-1))}&:dir(rtl)[data-side=inline-end][data-ending-style],&:dir(rtl)[data-side=inline-end][data-starting-style]{transform:translateX(var(--wp-ui-dropdown-slide-distance))}}}}@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._234b520016b4e56f__popup{--wp-ui-popup-padding:var(--wpds-dimension-padding-xs,4px);--_wp-ui-elevation-md:0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);background-color:var(--wpds-color-background-surface-neutral-strong,#fff);border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);box-shadow:var(--_wp-ui-elevation-md);display:grid;grid-template-areas:"header" "status" "main";grid-template-rows:auto auto minmax(0,1fr);max-height:min(var(--available-height),480px,60dvh);max-width:var(--available-width);min-width:var(--anchor-width);&.b9a9946a395ccad8__is-width-anchor{width:var(--anchor-width)}&._7c9f1b268b013f02__is-width-content{width:auto}&._6f31db51d79ec899__is-width-sm{width:min(var(--available-width),var(--wpds-dimension-surface-width-sm,320px))}&.fa45cdb5f45e57fb__is-width-md{width:min(var(--available-width),var(--wpds-dimension-surface-width-md,400px))}&._46a909337f6be21c__is-width-lg{width:min(var(--available-width),var(--wpds-dimension-surface-width-lg,560px))}&._6083938dff06df34__is-width-available{width:var(--available-width)}}._101852fa256bb935__is-align-item-with-trigger[data-side=none] ._234b520016b4e56f__popup{max-height:none}._2fff4e9defe85de5__list-chrome{--_wp-ui-popup-selection-offset:0px;color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);grid-area:main;line-height:var(--wpds-typography-line-height-sm,20px);&:has(.a3adcfd0b73ffd40__item-icon){--_wp-ui-popup-selection-offset:calc(var(--wpds-dimension-size-2xs, 16px) + var(--wpds-dimension-gap-xs, 4px) - var(--wpds-dimension-padding-xs, 4px))}}.f43dc7c768d7b622__list{display:grid;grid-template-areas:"scrollable" "footer";grid-template-rows:minmax(0,1fr) auto}._233cd60cdb84a2ef__list-scrollable-container{grid-area:scrollable;overflow-block:auto;overscroll-behavior:contain;scroll-padding-block:var(--wp-ui-popup-padding);&:not(:empty){padding-block:var(--wp-ui-popup-padding)}}.ec4db6f0122263e7__list-footer{grid-area:footer;padding-block:var(--wp-ui-popup-padding);._233cd60cdb84a2ef__list-scrollable-container:not(:empty)+&{border-block-start:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb)}}.b3c0d7f103fb10a2__group:not(:first-child){margin-block-start:var(--wpds-dimension-gap-sm,8px)}._21b59380477c306c__group-label{align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;min-height:var(--wpds-dimension-size-sm,24px);padding-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));padding-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset))}.be89a1df0fe77bd2__separator{background-color:var(--wpds-color-stroke-surface-neutral-weak,#f0f0f0);height:var(--wpds-border-width-xs,1px);margin-block:var(--wpds-dimension-gap-xs,4px);margin-inline-end:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px));margin-inline-start:calc(var(--wp-ui-popup-padding) + var(--wpds-dimension-padding-sm, 8px) + var(--_wp-ui-popup-selection-offset));@media (forced-colors:active){background-color:CanvasText}}._684ccb7988365b4f__item{--wp-ui-popup-item-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:var(--wpds-dimension-padding-xs,4px);align-items:center;border-radius:var(--wpds-border-radius-sm,2px);display:flex;gap:var(--wpds-dimension-gap-xs,4px);justify-content:flex-start;margin-inline:var(--wp-ui-popup-padding);min-height:var(--wp-ui-popup-item-height);min-width:0;overflow-wrap:anywhere;padding-block:var(--wp-ui-popup-item-padding-block);padding-inline:var(--wp-ui-popup-item-padding-inline);user-select:none;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&:has(>.a3adcfd0b73ffd40__item-icon){align-content:center;align-items:start;display:grid;grid-template-columns:auto minmax(0,1fr);padding-inline-start:calc(var(--wp-ui-popup-item-padding-inline) - var(--wpds-dimension-padding-xs, 4px))}&._38f7faff93c61958__is-size-small{--wp-ui-popup-item-height:var(--wpds-dimension-size-sm,24px);--wp-ui-popup-item-padding-inline:var(--wpds-dimension-padding-sm,8px);--wp-ui-popup-item-padding-block:2px}&:not([data-selected]){._92fbe4765dfad5ee__item-indicator-icon{opacity:0}}&[data-highlighted]:not([aria-disabled=true]){background-color:var(--wpds-color-background-interactive-brand-weak-active,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 12%,#fff));color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:none;@media (forced-colors:active){--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid Highlight}}&[aria-disabled=true]{background-color:var(--wpds-color-background-interactive-brand-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}}.a3adcfd0b73ffd40__item-icon{align-items:center;display:flex;height:var(--wpds-typography-line-height-sm,20px);pointer-events:none}._92fbe4765dfad5ee__item-indicator-icon{translate:0 1px}._74465fc7e8ecea1a__item-content{align-items:center;display:flex;gap:var(--wpds-dimension-gap-xs,4px);min-width:0}._41f0dd875c005a48__item-text{display:flex;flex-direction:column;min-width:0}._12335b76ada0b1f5__item-label{min-width:0}._160635254c702623__item-description{color:var(--wpds-color-foreground-content-neutral-weak,#707070)}._684ccb7988365b4f__item[aria-disabled=true] ._160635254c702623__item-description,._684ccb7988365b4f__item[data-highlighted]:not([aria-disabled=true]) ._160635254c702623__item-description{color:inherit}._6eb78bc92f8d7795__status{grid-area:status}._06c7ff39d2f685b9__empty:not(:empty){grid-area:main}._06c7ff39d2f685b9__empty:not(:empty),._6eb78bc92f8d7795__status:not(:empty):not(:has([data-visually-hidden])){--wp-ui-popup-empty-min-height:var(--wpds-dimension-size-md,32px);--wp-ui-popup-empty-padding-inline:var(--wpds-dimension-padding-md,12px);align-items:center;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:flex;font-family:var(--wpds-typography-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-typography-font-size-md,13px);line-height:var(--wpds-typography-line-height-sm,20px);min-height:var(--wp-ui-popup-empty-min-height);padding-inline:var(--wp-ui-popup-empty-padding-inline)}}}'); 16529 } 16530 var item_popup_default9 = { "popup": "_234b520016b4e56f__popup _380b81b8f79fb10f__dropdown-motion", "is-width-anchor": "b9a9946a395ccad8__is-width-anchor", "is-width-content": "_7c9f1b268b013f02__is-width-content", "is-width-sm": "_6f31db51d79ec899__is-width-sm", "is-width-md": "fa45cdb5f45e57fb__is-width-md", "is-width-lg": "_46a909337f6be21c__is-width-lg", "is-width-available": "_6083938dff06df34__is-width-available", "is-align-item-with-trigger": "_101852fa256bb935__is-align-item-with-trigger", "list-chrome": "_2fff4e9defe85de5__list-chrome", "item-icon": "a3adcfd0b73ffd40__item-icon", "list": "f43dc7c768d7b622__list _2fff4e9defe85de5__list-chrome", "list-scrollable-container": "_233cd60cdb84a2ef__list-scrollable-container", "list-footer": "ec4db6f0122263e7__list-footer", "group": "b3c0d7f103fb10a2__group", "group-label": "_21b59380477c306c__group-label", "separator": "be89a1df0fe77bd2__separator", "item": "_684ccb7988365b4f__item", "is-size-small": "_38f7faff93c61958__is-size-small", "item-indicator-icon": "_92fbe4765dfad5ee__item-indicator-icon", "item-content": "_74465fc7e8ecea1a__item-content", "item-text": "_41f0dd875c005a48__item-text", "item-label": "_12335b76ada0b1f5__item-label", "item-description": "_160635254c702623__item-description", "status": "_6eb78bc92f8d7795__status", "empty": "_06c7ff39d2f685b9__empty" }; 16531 var Separator = (0, import_element36.forwardRef)( 16532 function SelectSeparator2({ 16533 className, 16534 orientation: _orientation, 16535 ...props 16536 }, ref) { 16537 return /* @__PURE__ */ (0, import_jsx_runtime74.jsx)( 16538 index_parts_exports2.Separator, 16539 { 16540 ref, 16541 className: clsx_default(item_popup_default9.separator, className), 16542 ...props 16543 } 16544 ); 16545 } 16546 ); 16547 16548 // packages/ui/build-module/form/primitives/select/trigger.mjs 16549 var import_element37 = __toESM(require_element(), 1); 16550 var import_i18n7 = __toESM(require_i18n(), 1); 16551 var import_jsx_runtime75 = __toESM(require_jsx_runtime(), 1); 16552 var STYLE_HASH_ATTRIBUTE25 = "data-wp-hash"; 16553 function getRuntime25() { 16554 const globalScope = globalThis; 16555 if (globalScope.__wpStyleRuntime) { 16556 return globalScope.__wpStyleRuntime; 16557 } 16558 globalScope.__wpStyleRuntime = { 16559 documents: /* @__PURE__ */ new Map(), 16560 styles: /* @__PURE__ */ new Map(), 16561 injectedStyles: /* @__PURE__ */ new WeakMap() 16562 }; 16563 if (typeof document !== "undefined") { 16564 registerDocument25(document); 16565 } 16566 return globalScope.__wpStyleRuntime; 16567 } 16568 function documentContainsStyleHash25(targetDocument, hash) { 16569 if (!targetDocument.head) { 16570 return false; 16571 } 16572 for (const style of targetDocument.head.querySelectorAll( 16573 `style[$STYLE_HASH_ATTRIBUTE25}]` 16574 )) { 16575 if (style.getAttribute(STYLE_HASH_ATTRIBUTE25) === hash) { 16576 return true; 16577 } 16578 } 16579 return false; 16580 } 16581 function injectStyle25(targetDocument, hash, css) { 16582 if (!targetDocument.head) { 16583 return; 16584 } 16585 const runtime = getRuntime25(); 16586 let injectedStyles = runtime.injectedStyles.get(targetDocument); 16587 if (!injectedStyles) { 16588 injectedStyles = /* @__PURE__ */ new Set(); 16589 runtime.injectedStyles.set(targetDocument, injectedStyles); 16590 } 16591 if (injectedStyles.has(hash)) { 16592 return; 16593 } 16594 if (documentContainsStyleHash25(targetDocument, hash)) { 16595 injectedStyles.add(hash); 16596 return; 16597 } 16598 const style = targetDocument.createElement("style"); 16599 style.setAttribute(STYLE_HASH_ATTRIBUTE25, hash); 16600 style.appendChild(targetDocument.createTextNode(css)); 16601 targetDocument.head.appendChild(style); 16602 injectedStyles.add(hash); 16603 } 16604 function registerDocument25(targetDocument) { 16605 const runtime = getRuntime25(); 16606 runtime.documents.set( 16607 targetDocument, 16608 (runtime.documents.get(targetDocument) ?? 0) + 1 16609 ); 16610 for (const [hash, css] of runtime.styles) { 16611 injectStyle25(targetDocument, hash, css); 16612 } 16613 return () => { 16614 const count = runtime.documents.get(targetDocument); 16615 if (count === void 0) { 16616 return; 16617 } 16618 if (count <= 1) { 16619 runtime.documents.delete(targetDocument); 16620 return; 16621 } 16622 runtime.documents.set(targetDocument, count - 1); 16623 }; 16624 } 16625 function registerStyle25(hash, css) { 16626 const runtime = getRuntime25(); 16627 runtime.styles.set(hash, css); 16628 for (const targetDocument of runtime.documents.keys()) { 16629 injectStyle25(targetDocument, hash, css); 16630 } 16631 } 16632 if (typeof process === "undefined" || true) { 16633 registerStyle25("7c3267f794", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{.af79fb116edb0dd7__outset-ring--focus:focus,.dfcfdc28396e5d98__outset-ring--focus-visible:focus-visible,.e5cd9ee879f6403a__outset-ring--focus-within:focus-within{--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}._3c9f5ee9fc9c136d__outset-ring--focus-within-except-active:focus-within,.abc777e9713fa711__outset-ring--focus-except-active:focus{outline:none}._3c9f5ee9fc9c136d__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.abc777e9713fa711__outset-ring--focus-except-active:focus:not(:active){--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}}}"); 16634 } 16635 var focus_module_default3 = { "outset-ring--focus": "af79fb116edb0dd7__outset-ring--focus", "outset-ring--focus-visible": "dfcfdc28396e5d98__outset-ring--focus-visible", "outset-ring--focus-within": "e5cd9ee879f6403a__outset-ring--focus-within", "outset-ring--focus-except-active": "abc777e9713fa711__outset-ring--focus-except-active", "outset-ring--focus-within-except-active": "_3c9f5ee9fc9c136d__outset-ring--focus-within-except-active" }; 16636 if (typeof process === "undefined" || true) { 16637 registerStyle25("8fc4b25e27", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{._6e4e0445ef20426b__trigger-wrapper{&.fa98c865fb77e675__is-minimal{width:fit-content}}._7893295e3f6d1af7__trigger{align-items:center;background-color:transparent;border:none;color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);display:flex;font-family:inherit;font-size:inherit;gap:var(--wpds-dimension-gap-xs,4px);justify-content:space-between;line-height:1.4;padding-block:4px;padding-inline-end:calc(var(--wp-ui-input-layout-padding-inline) - 4px);padding-inline-start:var(--wp-ui-input-layout-padding-inline);text-align:start;user-select:none;width:100%;&:not([data-disabled]){cursor:var(--wpds-cursor-control,pointer)}&.fa98c865fb77e675__is-minimal{width:auto}&:focus{outline:none}&[data-disabled]{background-color:var(--wpds-color-background-interactive-neutral-weak-disabled,#0000);color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d)}}.e760c9339965ce84__trigger-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;._7893295e3f6d1af7__trigger[data-placeholder]:not([data-disabled]) &{color:var(--wpds-color-foreground-interactive-neutral-weak,#707070)}}._308bc63e43681f99__trigger-caret{flex:0 0 auto}}}"); 16638 } 16639 var select_trigger_default = { "trigger-wrapper": "_6e4e0445ef20426b__trigger-wrapper", "is-minimal": "fa98c865fb77e675__is-minimal", "trigger": "_7893295e3f6d1af7__trigger", "trigger-value": "e760c9339965ce84__trigger-value", "trigger-caret": "_308bc63e43681f99__trigger-caret" }; 16640 var Trigger = (0, import_element37.forwardRef)( 16641 function UnforwardedTrigger({ 16642 className, 16643 size: size4, 16644 variant, 16645 children, 16646 placeholder = (0, import_i18n7.__)("Select"), 16647 ...restProps 16648 }, ref) { 16649 return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)( 16650 InputLayout2, 16651 { 16652 className: clsx_default( 16653 focus_module_default3["outset-ring--focus-within-except-active"], 16654 select_trigger_default["trigger-wrapper"], 16655 variant === "minimal" && select_trigger_default["is-minimal"], 16656 className 16657 ), 16658 size: size4, 16659 isBorderless: variant === "minimal", 16660 children: /* @__PURE__ */ (0, import_jsx_runtime75.jsxs)( 16661 index_parts_exports2.Trigger, 16662 { 16663 ...restProps, 16664 className: clsx_default( 16665 select_trigger_default.trigger, 16666 variant === "minimal" && select_trigger_default["is-minimal"] 16667 ), 16668 "data-can-disable-input-layout": true, 16669 ref, 16670 children: [ 16671 /* @__PURE__ */ (0, import_jsx_runtime75.jsx)( 16672 index_parts_exports2.Value, 16673 { 16674 placeholder, 16675 className: select_trigger_default["trigger-value"], 16676 children 16677 } 16678 ), 16679 /* @__PURE__ */ (0, import_jsx_runtime75.jsx)( 16680 Icon, 16681 { 16682 className: select_trigger_default["trigger-caret"], 16683 icon: chevron_down_default, 16684 size: 18 16685 } 16686 ) 16687 ] 16688 } 16689 ) 16690 } 16691 ); 16692 } 16693 ); 16694 16695 // packages/ui/build-module/form/input-control/input-control.mjs 16696 var import_element38 = __toESM(require_element(), 1); 16697 var import_jsx_runtime76 = __toESM(require_jsx_runtime(), 1); 16698 var STYLE_HASH_ATTRIBUTE26 = "data-wp-hash"; 16699 function getRuntime26() { 16700 const globalScope = globalThis; 16701 if (globalScope.__wpStyleRuntime) { 16702 return globalScope.__wpStyleRuntime; 16703 } 16704 globalScope.__wpStyleRuntime = { 16705 documents: /* @__PURE__ */ new Map(), 16706 styles: /* @__PURE__ */ new Map(), 16707 injectedStyles: /* @__PURE__ */ new WeakMap() 16708 }; 16709 if (typeof document !== "undefined") { 16710 registerDocument26(document); 16711 } 16712 return globalScope.__wpStyleRuntime; 16713 } 16714 function documentContainsStyleHash26(targetDocument, hash) { 16715 if (!targetDocument.head) { 16716 return false; 16717 } 16718 for (const style of targetDocument.head.querySelectorAll( 16719 `style[$STYLE_HASH_ATTRIBUTE26}]` 16720 )) { 16721 if (style.getAttribute(STYLE_HASH_ATTRIBUTE26) === hash) { 16722 return true; 16723 } 16724 } 16725 return false; 16726 } 16727 function injectStyle26(targetDocument, hash, css) { 16728 if (!targetDocument.head) { 16729 return; 16730 } 16731 const runtime = getRuntime26(); 16732 let injectedStyles = runtime.injectedStyles.get(targetDocument); 16733 if (!injectedStyles) { 16734 injectedStyles = /* @__PURE__ */ new Set(); 16735 runtime.injectedStyles.set(targetDocument, injectedStyles); 16736 } 16737 if (injectedStyles.has(hash)) { 16738 return; 16739 } 16740 if (documentContainsStyleHash26(targetDocument, hash)) { 16741 injectedStyles.add(hash); 16742 return; 16743 } 16744 const style = targetDocument.createElement("style"); 16745 style.setAttribute(STYLE_HASH_ATTRIBUTE26, hash); 16746 style.appendChild(targetDocument.createTextNode(css)); 16747 targetDocument.head.appendChild(style); 16748 injectedStyles.add(hash); 16749 } 16750 function registerDocument26(targetDocument) { 16751 const runtime = getRuntime26(); 16752 runtime.documents.set( 16753 targetDocument, 16754 (runtime.documents.get(targetDocument) ?? 0) + 1 16755 ); 16756 for (const [hash, css] of runtime.styles) { 16757 injectStyle26(targetDocument, hash, css); 16758 } 16759 return () => { 16760 const count = runtime.documents.get(targetDocument); 16761 if (count === void 0) { 16762 return; 16763 } 16764 if (count <= 1) { 16765 runtime.documents.delete(targetDocument); 16766 return; 16767 } 16768 runtime.documents.set(targetDocument, count - 1); 16769 }; 16770 } 16771 function registerStyle26(hash, css) { 16772 const runtime = getRuntime26(); 16773 runtime.styles.set(hash, css); 16774 for (const targetDocument of runtime.documents.keys()) { 16775 injectStyle26(targetDocument, hash, css); 16776 } 16777 } 16778 if (typeof process === "undefined" || true) { 16779 registerStyle26("0c752c3d08", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer compositions{@supports (-webkit-hyphens:none) and (not (-moz-appearance:none)){.a9211a7e6af24bed__root input[type=date]:not([data-filled]):not(:focus),.a9211a7e6af24bed__root input[type=datetime-local]:not([data-filled]):not(:focus),.a9211a7e6af24bed__root input[type=time]:not([data-filled]):not(:focus){--_gcd-input-color:transparent;--_gcd-input-color-disabled:transparent;color:transparent;&:disabled::-webkit-datetime-edit-text{color:transparent}}}}}"); 16780 } 16781 var style_default12 = { "root": "a9211a7e6af24bed__root" }; 16782 var InputControl = (0, import_element38.forwardRef)( 16783 function UnforwardedInputControl({ 16784 className, 16785 label, 16786 description, 16787 details, 16788 hideLabelFromVision, 16789 ...restProps 16790 }, ref) { 16791 return /* @__PURE__ */ (0, import_jsx_runtime76.jsxs)(field_exports.Root, { className: clsx_default(style_default12.root, className), children: [ 16792 /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(field_exports.Label, { hideFromVision: hideLabelFromVision, children: label }), 16793 /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(Input3, { ref, ...restProps }), 16794 description && /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(field_exports.Description, { children: description }), 16795 details && /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(field_exports.Details, { children: details }) 16796 ] }); 16797 } 16798 ); 16799 16800 // packages/ui/build-module/form/select-control/select-control.mjs 16801 var import_element41 = __toESM(require_element(), 1); 16802 16803 // packages/ui/build-module/form/select-control/item.mjs 16804 var import_element39 = __toESM(require_element(), 1); 16805 var import_jsx_runtime77 = __toESM(require_jsx_runtime(), 1); 16806 var Item3 = (0, import_element39.forwardRef)( 16807 function UnforwardedItem3(props, ref) { 16808 return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(select_exports.Item, { ref, ...props }); 16809 } 16810 ); 16811 16812 // packages/ui/build-module/form/select-control/trigger.mjs 16813 var import_element40 = __toESM(require_element(), 1); 16814 var import_jsx_runtime78 = __toESM(require_jsx_runtime(), 1); 16815 var Trigger2 = (0, import_element40.forwardRef)(function UnforwardedTrigger2(props, ref) { 16816 return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(select_exports.Trigger, { ref, ...props }); 16817 }); 16818 16819 // packages/ui/build-module/form/select-control/select-control.mjs 16820 var import_jsx_runtime79 = __toESM(require_jsx_runtime(), 1); 16821 var DEFAULT_TRIGGER = /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(Trigger2, {}); 16822 var SelectControl = (0, import_element41.forwardRef)(function UnforwardedSelectControl({ 16823 className, 16824 children, 16825 items, 16826 label, 16827 description, 16828 details, 16829 hideLabelFromVision, 16830 placeholder, 16831 popupWidth = "content", 16832 size: size4 = "default", 16833 trigger, 16834 ...restProps 16835 }, ref) { 16836 const triggerElement = useRender({ 16837 render: trigger ?? DEFAULT_TRIGGER, 16838 ref, 16839 props: { placeholder, size: size4 } 16840 }); 16841 return /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)(field_exports.Root, { className, children: [ 16842 /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(field_exports.Label, { hideFromVision: hideLabelFromVision, children: label }), 16843 /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)(select_exports.Root, { items, ...restProps, children: [ 16844 triggerElement, 16845 /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(select_exports.Popup, { width: popupWidth, children: children !== void 0 ? children : items?.map((item) => /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)( 16846 Item3, 16847 { 16848 value: item, 16849 label: item.label, 16850 disabled: item.disabled, 16851 children: [ 16852 /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(select_exports.ItemLabel, { children: item.label }), 16853 item.description ? /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(select_exports.ItemDescription, { children: item.description }) : null 16854 ] 16855 }, 16856 item.value ?? "null" 16857 )) }) 16858 ] }), 16859 description && /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(field_exports.Description, { children: description }), 16860 details && /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(field_exports.Details, { children: details }) 16861 ] }); 16862 }); 16863 16864 // packages/ui/build-module/form/select-control/index.mjs 16865 Trigger2.displayName = "SelectControl.Trigger"; 16866 Group.displayName = "SelectControl.Group"; 16867 GroupLabel.displayName = "SelectControl.GroupLabel"; 16868 Item3.displayName = "SelectControl.Item"; 16869 ItemLabel.displayName = "SelectControl.ItemLabel"; 16870 ItemDescription.displayName = "SelectControl.ItemDescription"; 16871 var SelectControl2 = Object.assign(SelectControl, { 16872 /** 16873 * The trigger button, passed through the `trigger` prop to customize 16874 * its props while retaining the control's label and selected content. 16875 */ 16876 Trigger: Trigger2, 16877 /** 16878 * Groups related items together with an associated label rendered by 16879 * `SelectControl.GroupLabel`. 16880 */ 16881 Group, 16882 /** 16883 * Renders a label for a `SelectControl.Group`. 16884 */ 16885 GroupLabel, 16886 /** 16887 * An item rendered inside a `SelectControl` popup. 16888 */ 16889 Item: Item3, 16890 /** 16891 * The primary label of a select item. 16892 */ 16893 ItemLabel, 16894 /** 16895 * Supplementary content that describes a select item via 16896 * `aria-describedby`. 16897 */ 16898 ItemDescription, 16899 /** 16900 * Renders a visual separator between items or groups. 16901 */ 16902 Separator 16903 }); 16904 16905 // packages/ui/build-module/form/with-validation/validated-input-control/validated-input-control.mjs 16906 var import_element42 = __toESM(require_element(), 1); 16907 var import_compose2 = __toESM(require_compose(), 1); 16908 var import_jsx_runtime80 = __toESM(require_jsx_runtime(), 1); 16909 var ValidatedInputControl = (0, import_element42.forwardRef)(function UnforwardedValidatedInputControl({ required, markWhenOptional, customValidity, ...restProps }, forwardedRef) { 16910 const validityTargetRef = (0, import_element42.useRef)(null); 16911 const mergedRefs = (0, import_compose2.useMergeRefs)([forwardedRef, validityTargetRef]); 16912 return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)( 16913 ControlWithError, 16914 { 16915 required, 16916 markWhenOptional, 16917 customValidity, 16918 getValidityTarget: () => validityTargetRef.current, 16919 children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(InputControl, { ref: mergedRefs, ...restProps }) 16920 } 16921 ); 16922 }); 16923 16924 // packages/ui/build-module/tabs/index.mjs 16925 var tabs_exports = {}; 16926 __export(tabs_exports, { 16927 List: () => List, 16928 Panel: () => Panel, 16929 Root: () => Root3, 16930 Tab: () => Tab 16931 }); 16932 16933 // packages/ui/build-module/tabs/list.mjs 16934 var import_element43 = __toESM(require_element(), 1); 16935 var import_compose3 = __toESM(require_compose(), 1); 16936 var import_jsx_runtime81 = __toESM(require_jsx_runtime(), 1); 16937 var STYLE_HASH_ATTRIBUTE27 = "data-wp-hash"; 16938 function getRuntime27() { 16939 const globalScope = globalThis; 16940 if (globalScope.__wpStyleRuntime) { 16941 return globalScope.__wpStyleRuntime; 16942 } 16943 globalScope.__wpStyleRuntime = { 16944 documents: /* @__PURE__ */ new Map(), 16945 styles: /* @__PURE__ */ new Map(), 16946 injectedStyles: /* @__PURE__ */ new WeakMap() 16947 }; 16948 if (typeof document !== "undefined") { 16949 registerDocument27(document); 16950 } 16951 return globalScope.__wpStyleRuntime; 16952 } 16953 function documentContainsStyleHash27(targetDocument, hash) { 16954 if (!targetDocument.head) { 16955 return false; 16956 } 16957 for (const style of targetDocument.head.querySelectorAll( 16958 `style[$STYLE_HASH_ATTRIBUTE27}]` 16959 )) { 16960 if (style.getAttribute(STYLE_HASH_ATTRIBUTE27) === hash) { 16961 return true; 16962 } 16963 } 16964 return false; 16965 } 16966 function injectStyle27(targetDocument, hash, css) { 16967 if (!targetDocument.head) { 16968 return; 16969 } 16970 const runtime = getRuntime27(); 16971 let injectedStyles = runtime.injectedStyles.get(targetDocument); 16972 if (!injectedStyles) { 16973 injectedStyles = /* @__PURE__ */ new Set(); 16974 runtime.injectedStyles.set(targetDocument, injectedStyles); 16975 } 16976 if (injectedStyles.has(hash)) { 16977 return; 16978 } 16979 if (documentContainsStyleHash27(targetDocument, hash)) { 16980 injectedStyles.add(hash); 16981 return; 16982 } 16983 const style = targetDocument.createElement("style"); 16984 style.setAttribute(STYLE_HASH_ATTRIBUTE27, hash); 16985 style.appendChild(targetDocument.createTextNode(css)); 16986 targetDocument.head.appendChild(style); 16987 injectedStyles.add(hash); 16988 } 16989 function registerDocument27(targetDocument) { 16990 const runtime = getRuntime27(); 16991 runtime.documents.set( 16992 targetDocument, 16993 (runtime.documents.get(targetDocument) ?? 0) + 1 16994 ); 16995 for (const [hash, css] of runtime.styles) { 16996 injectStyle27(targetDocument, hash, css); 16997 } 16998 return () => { 16999 const count = runtime.documents.get(targetDocument); 17000 if (count === void 0) { 17001 return; 17002 } 17003 if (count <= 1) { 17004 runtime.documents.delete(targetDocument); 17005 return; 17006 } 17007 runtime.documents.set(targetDocument, count - 1); 17008 }; 17009 } 17010 function registerStyle27(hash, css) { 17011 const runtime = getRuntime27(); 17012 runtime.styles.set(hash, css); 17013 for (const targetDocument of runtime.documents.keys()) { 17014 injectStyle27(targetDocument, hash, css); 17015 } 17016 } 17017 if (typeof process === "undefined" || true) { 17018 registerStyle27("f3c08da521", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._7313adbc8a112e90__tablist{--direction-start:left;--direction-end:right;align-items:stretch;display:flex;overflow-inline:auto;overscroll-behavior-inline:none;position:relative;&:dir(rtl){--direction-start:right;--direction-end:left}&[data-orientation=horizontal]{--fade-width:4rem;--fade-gradient-base:transparent 0%,#000 var(--fade-width);--fade-gradient-composed:var(--fade-gradient-base),#000 60%,transparent 50%;width:fit-content;&:not(.eb7aaeb14de04857__is-scrolling){overflow:visible}&._9f2ac729c68a735a__is-overflowing-first{mask-image:linear-gradient(to var(--direction-end),var(--fade-gradient-base))}&._81c799c1f3cdd261__is-overflowing-last{mask-image:linear-gradient(to var(--direction-start),var(--fade-gradient-base))}&._9f2ac729c68a735a__is-overflowing-first._81c799c1f3cdd261__is-overflowing-last{mask-image:linear-gradient(to right,var(--fade-gradient-composed)),linear-gradient(to left,var(--fade-gradient-composed))}&._59228b5227f38a99__is-minimal-variant{gap:1rem}}&[data-orientation=vertical]{flex-direction:column}}._1c37dcfaa1ad8cda__indicator{@media not (prefers-reduced-motion){transition-duration:.2s;transition-property:translate,width,height;transition-timing-function:ease-out}background-color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:2px solid transparent;outline-offset:-1px;pointer-events:none;position:absolute;z-index:1;._7313adbc8a112e90__tablist:has(>.a5fd8814f195aa5e__tab[aria-selected=true]:not([data-disabled]):focus-visible)\n &{background-color:var(--wpds-color-foreground-interactive-neutral-active,#1e1e1e)}&[data-orientation=horizontal]{bottom:0;height:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px));left:0;translate:var(--active-tab-left) 0;width:var(--active-tab-width)}&[data-orientation=vertical]{height:max(0px,calc(var(--active-tab-height) - var(--wpds-dimension-padding-md, 12px)*2));inset-inline-start:0;top:var(--wpds-dimension-padding-md,12px);translate:0 var(--active-tab-top);width:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}}.a5fd8814f195aa5e__tab{align-items:center;background:transparent;border:none;border-radius:0;box-shadow:none;color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);cursor:var(--wpds-cursor-control,pointer);display:flex;flex:1 0 auto;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);font-weight:400;line-height:1.2;outline:none;padding:0;position:relative;white-space:nowrap;z-index:1;&:is([aria-selected=true],[data-disabled]){cursor:default}&[data-disabled]{color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}&:not([data-disabled]):is(:not([aria-selected=true]):hover,:not([aria-selected=true]):active,:focus-visible){color:var(--wpds-color-foreground-interactive-neutral-active,#1e1e1e);&:after{background-color:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);opacity:1}}&:after,&:before{border-radius:var(--wpds-border-radius-sm,2px);opacity:0;outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid transparent;pointer-events:none;position:absolute;z-index:-1;@media not (prefers-reduced-motion){transition:opacity .1s linear}}&:focus-visible:after{opacity:1;outline-color:var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9))}[data-orientation=horizontal] &{height:48px;padding-inline:var(--wpds-dimension-padding-lg,16px);scroll-margin:24px;&:after{content:"";inset-block:calc(var(--wpds-dimension-padding-md, 12px) + var(--wpds-dimension-padding-xs, 4px));inset-inline:var(--wpds-dimension-padding-lg,16px);outline-offset:var(--wpds-dimension-padding-xs,4px)}&:not([data-disabled]):is(:not([aria-selected=true]):hover,:not([aria-selected=true]):active,:focus-visible):after{box-shadow:0 0 0 var(--wpds-dimension-padding-xs,4px) var(--wpds-color-background-interactive-neutral-weak-active,#ededed)}}._59228b5227f38a99__is-minimal-variant[data-orientation=horizontal] &{padding-inline:0;&:after{inset-inline:0}}._59228b5227f38a99__is-minimal-variant.eb7aaeb14de04857__is-scrolling[data-orientation=horizontal] &{&:before{content:"";inset-block:var(--wpds-dimension-padding-md,12px);inset-inline:round(up,var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)),1px);z-index:0}&:focus-visible{&:before{opacity:1;outline-color:var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9))}&:after{outline:none}}}[data-orientation=vertical] &{min-height:var(--wpds-dimension-size-lg,40px);padding:var(--wpds-dimension-padding-md,12px);&:after{content:"";inset:0;outline-offset:calc(var(--wpds-border-width-focus, var(--wp-admin-border-width-focus, 2px))*-1)}}}._5dfc77e6edd345d4__tab-children{align-items:center;display:flex;flex-grow:1;[data-orientation=horizontal] &{justify-content:center}[data-orientation=vertical] &{justify-content:start}}}}'); 17019 } 17020 var style_default13 = { "tablist": "_7313adbc8a112e90__tablist", "is-scrolling": "eb7aaeb14de04857__is-scrolling", "is-overflowing-first": "_9f2ac729c68a735a__is-overflowing-first", "is-overflowing-last": "_81c799c1f3cdd261__is-overflowing-last", "is-minimal-variant": "_59228b5227f38a99__is-minimal-variant", "indicator": "_1c37dcfaa1ad8cda__indicator", "tab": "a5fd8814f195aa5e__tab", "tab-children": "_5dfc77e6edd345d4__tab-children" }; 17021 var SCROLL_EPSILON = 1; 17022 var List = (0, import_element43.forwardRef)( 17023 function TabList({ 17024 children, 17025 variant = "default", 17026 className, 17027 activateOnFocus, 17028 ...otherProps 17029 }, forwardedRef) { 17030 const [listEl, setListEl] = (0, import_element43.useState)(null); 17031 const [overflow, setOverflow] = (0, import_element43.useState)({ 17032 first: false, 17033 last: false, 17034 isScrolling: false 17035 }); 17036 (0, import_element43.useEffect)(() => { 17037 if (!listEl) { 17038 return; 17039 } 17040 const measureOverflow = () => { 17041 const { scrollWidth, clientWidth, scrollLeft } = listEl; 17042 const maxScroll = Math.max(scrollWidth - clientWidth, 0); 17043 const direction = listEl.dir || (typeof window !== "undefined" ? window.getComputedStyle(listEl).direction : "ltr"); 17044 const scrollFromStart = direction === "rtl" && scrollLeft < 0 ? ( 17045 // In RTL layouts, scrollLeft is typically 0 at the visual "start" 17046 // (right edge) and becomes negative toward the "end" (left edge). 17047 // Normalize value for correct first/last detection logic. 17048 -scrollLeft 17049 ) : scrollLeft; 17050 const next = { 17051 first: scrollFromStart > SCROLL_EPSILON, 17052 last: scrollFromStart < maxScroll - SCROLL_EPSILON, 17053 isScrolling: scrollWidth > clientWidth 17054 }; 17055 setOverflow( 17056 (prev) => prev.first === next.first && prev.last === next.last && prev.isScrolling === next.isScrolling ? prev : next 17057 ); 17058 }; 17059 const resizeObserver = new ResizeObserver(measureOverflow); 17060 const observeTabs = () => { 17061 resizeObserver.disconnect(); 17062 resizeObserver.observe(listEl); 17063 listEl.querySelectorAll('[role="tab"]').forEach((tab) => resizeObserver.observe(tab)); 17064 }; 17065 const mutationObserver = new MutationObserver(observeTabs); 17066 mutationObserver.observe(listEl, { 17067 childList: true, 17068 subtree: true 17069 }); 17070 let scrollTick = false; 17071 const throttleMeasureOverflowOnScroll = () => { 17072 if (!scrollTick) { 17073 requestAnimationFrame(() => { 17074 measureOverflow(); 17075 scrollTick = false; 17076 }); 17077 scrollTick = true; 17078 } 17079 }; 17080 listEl.addEventListener( 17081 "scroll", 17082 throttleMeasureOverflowOnScroll, 17083 { passive: true } 17084 ); 17085 observeTabs(); 17086 measureOverflow(); 17087 return () => { 17088 listEl.removeEventListener( 17089 "scroll", 17090 throttleMeasureOverflowOnScroll 17091 ); 17092 resizeObserver.disconnect(); 17093 mutationObserver.disconnect(); 17094 }; 17095 }, [listEl]); 17096 const mergedListRef = (0, import_compose3.useMergeRefs)([ 17097 forwardedRef, 17098 (el) => setListEl(el) 17099 ]); 17100 return /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)( 17101 index_parts_exports3.List, 17102 { 17103 ref: mergedListRef, 17104 activateOnFocus, 17105 "data-select-on-move": activateOnFocus ? "true" : "false", 17106 className: clsx_default( 17107 style_default13.tablist, 17108 overflow.isScrolling && style_default13["is-scrolling"], 17109 overflow.first && style_default13["is-overflowing-first"], 17110 overflow.last && style_default13["is-overflowing-last"], 17111 style_default13[`is-$variant}-variant`], 17112 className 17113 ), 17114 ...otherProps, 17115 tabIndex: otherProps.tabIndex ?? (overflow.isScrolling ? -1 : void 0), 17116 children: [ 17117 children, 17118 /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(index_parts_exports3.Indicator, { className: style_default13.indicator }) 17119 ] 17120 } 17121 ); 17122 } 17123 ); 17124 17125 // packages/ui/build-module/tabs/panel.mjs 17126 var import_element45 = __toESM(require_element(), 1); 17127 17128 // packages/ui/build-module/tabs/context.mjs 17129 var import_element44 = __toESM(require_element(), 1); 17130 var import_jsx_runtime82 = __toESM(require_jsx_runtime(), 1); 17131 var VALIDATION_ENABLED2 = true; 17132 var TabsValidationContext = VALIDATION_ENABLED2 ? (0, import_element44.createContext)(null) : null; 17133 function useRegisterTabDev() { 17134 const context = (0, import_element44.useContext)(TabsValidationContext); 17135 (0, import_element44.useEffect)(() => { 17136 if (context) { 17137 return context.registerTab(); 17138 } 17139 return void 0; 17140 }, [context]); 17141 } 17142 function useRegisterTabProd() { 17143 } 17144 var useRegisterTab = VALIDATION_ENABLED2 ? useRegisterTabDev : useRegisterTabProd; 17145 function useRegisterPanelDev() { 17146 const context = (0, import_element44.useContext)(TabsValidationContext); 17147 (0, import_element44.useEffect)(() => { 17148 if (context) { 17149 return context.registerPanel(); 17150 } 17151 return void 0; 17152 }, [context]); 17153 } 17154 function useRegisterPanelProd() { 17155 } 17156 var useRegisterPanel = VALIDATION_ENABLED2 ? useRegisterPanelDev : useRegisterPanelProd; 17157 function TabsValidationProviderDev({ 17158 children 17159 }) { 17160 const tabCountRef = (0, import_element44.useRef)(0); 17161 const panelCountRef = (0, import_element44.useRef)(0); 17162 const scheduleValidation = useScheduleValidation(() => { 17163 const tabCount = tabCountRef.current; 17164 const panelCount = panelCountRef.current; 17165 if (tabCount !== panelCount) { 17166 throw new Error( 17167 `Tabs: Tab/Panel count mismatch ($tabCount} Tabs, $panelCount} Panels). Each Tab must be associated with exactly one Panel. Mismatched or missing associations can break screen reader navigation and violate WAI-ARIA Tabs pattern requirements.` 17168 ); 17169 } 17170 }); 17171 const registerTab = (0, import_element44.useCallback)(() => { 17172 tabCountRef.current += 1; 17173 scheduleValidation(); 17174 return () => { 17175 tabCountRef.current -= 1; 17176 scheduleValidation(); 17177 }; 17178 }, [scheduleValidation]); 17179 const registerPanel = (0, import_element44.useCallback)(() => { 17180 panelCountRef.current += 1; 17181 scheduleValidation(); 17182 return () => { 17183 panelCountRef.current -= 1; 17184 scheduleValidation(); 17185 }; 17186 }, [scheduleValidation]); 17187 const contextValue = (0, import_element44.useMemo)( 17188 () => ({ 17189 registerTab, 17190 registerPanel 17191 }), 17192 [registerTab, registerPanel] 17193 ); 17194 return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(TabsValidationContext.Provider, { value: contextValue, children }); 17195 } 17196 function TabsValidationProviderProd({ 17197 children 17198 }) { 17199 return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_jsx_runtime82.Fragment, { children }); 17200 } 17201 var TabsValidationProvider = VALIDATION_ENABLED2 ? TabsValidationProviderDev : TabsValidationProviderProd; 17202 17203 // packages/ui/build-module/tabs/panel.mjs 17204 var import_jsx_runtime83 = __toESM(require_jsx_runtime(), 1); 17205 var STYLE_HASH_ATTRIBUTE28 = "data-wp-hash"; 17206 function getRuntime28() { 17207 const globalScope = globalThis; 17208 if (globalScope.__wpStyleRuntime) { 17209 return globalScope.__wpStyleRuntime; 17210 } 17211 globalScope.__wpStyleRuntime = { 17212 documents: /* @__PURE__ */ new Map(), 17213 styles: /* @__PURE__ */ new Map(), 17214 injectedStyles: /* @__PURE__ */ new WeakMap() 17215 }; 17216 if (typeof document !== "undefined") { 17217 registerDocument28(document); 17218 } 17219 return globalScope.__wpStyleRuntime; 17220 } 17221 function documentContainsStyleHash28(targetDocument, hash) { 17222 if (!targetDocument.head) { 17223 return false; 17224 } 17225 for (const style of targetDocument.head.querySelectorAll( 17226 `style[$STYLE_HASH_ATTRIBUTE28}]` 17227 )) { 17228 if (style.getAttribute(STYLE_HASH_ATTRIBUTE28) === hash) { 17229 return true; 17230 } 17231 } 17232 return false; 17233 } 17234 function injectStyle28(targetDocument, hash, css) { 17235 if (!targetDocument.head) { 17236 return; 17237 } 17238 const runtime = getRuntime28(); 17239 let injectedStyles = runtime.injectedStyles.get(targetDocument); 17240 if (!injectedStyles) { 17241 injectedStyles = /* @__PURE__ */ new Set(); 17242 runtime.injectedStyles.set(targetDocument, injectedStyles); 17243 } 17244 if (injectedStyles.has(hash)) { 17245 return; 17246 } 17247 if (documentContainsStyleHash28(targetDocument, hash)) { 17248 injectedStyles.add(hash); 17249 return; 17250 } 17251 const style = targetDocument.createElement("style"); 17252 style.setAttribute(STYLE_HASH_ATTRIBUTE28, hash); 17253 style.appendChild(targetDocument.createTextNode(css)); 17254 targetDocument.head.appendChild(style); 17255 injectedStyles.add(hash); 17256 } 17257 function registerDocument28(targetDocument) { 17258 const runtime = getRuntime28(); 17259 runtime.documents.set( 17260 targetDocument, 17261 (runtime.documents.get(targetDocument) ?? 0) + 1 17262 ); 17263 for (const [hash, css] of runtime.styles) { 17264 injectStyle28(targetDocument, hash, css); 17265 } 17266 return () => { 17267 const count = runtime.documents.get(targetDocument); 17268 if (count === void 0) { 17269 return; 17270 } 17271 if (count <= 1) { 17272 runtime.documents.delete(targetDocument); 17273 return; 17274 } 17275 runtime.documents.set(targetDocument, count - 1); 17276 }; 17277 } 17278 function registerStyle28(hash, css) { 17279 const runtime = getRuntime28(); 17280 runtime.styles.set(hash, css); 17281 for (const targetDocument of runtime.documents.keys()) { 17282 injectStyle28(targetDocument, hash, css); 17283 } 17284 } 17285 if (typeof process === "undefined" || true) { 17286 registerStyle28("abb19c3171", "._6defc79820e382c6__button{box-sizing:var(--_gcd-button-box-sizing,border-box);font-family:var(--_gcd-button-font-family,inherit);font-size:var(--_gcd-button-font-size,inherit);font-weight:var(--_gcd-button-font-weight,inherit)}.d2cff2e5dea83bd1__input{box-sizing:var(--_gcd-input-box-sizing,border-box);font-family:var(--_gcd-input-font-family,inherit);font-size:var(--_gcd-input-font-size,inherit);font-weight:var(--_gcd-input-font-weight,inherit);margin:var(--_gcd-input-margin,0);&::placeholder{color:var(--_gcd-input-placeholder-color,var(--wpds-color-foreground-interactive-neutral-weak,#707070))}&:is(textarea,[type=text],[type=password],[type=color],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){background-color:var(--_gcd-input-background-color,transparent);border:var(--_gcd-input-border,none);border-radius:var(--_gcd-input-border-radius,0);box-shadow:var(--_gcd-input-box-shadow,0 0 0 transparent);color:var(--_gcd-input-color,var(--wpds-color-foreground-interactive-neutral,#1e1e1e));&:focus{border-color:var(--_gcd-input-border-color-focus,var(--wp-admin-theme-color));box-shadow:var(--_gcd-input-box-shadow-focus,none);outline:var(--_gcd-input-outline-focus,none)}&:disabled{background:var(--_gcd-input-background-disabled,transparent);border-color:var(--_gcd-input-border-color-disabled,transparent);box-shadow:var(--_gcd-input-box-shadow-disabled,none);color:var(--_gcd-input-color-disabled,var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d))}}&:is(textarea,[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=email],[type=month],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=week]){line-height:var(--_gcd-input-line-height,inherit);min-height:var(--_gcd-input-min-height,auto);padding:var(--_gcd-input-padding,0)}}._547d86373d02e108__textarea{box-sizing:var(--_gcd-textarea-box-sizing,border-box);overflow:var(--_gcd-textarea-overflow,auto);resize:var(--_gcd-textarea-resize,block)}._8c15fd0ed9f28ba4__div{outline:var(--_gcd-div-outline,0 solid transparent)}p._43cec3e1eec1066d__p{font-size:var(--_gcd-p-font-size,13px);line-height:var(--_gcd-p-line-height,1.5);margin:var(--_gcd-p-margin,0)}:is(h1,h2,h3,h4,h5,h6).e97669c6d9a38497__heading{color:var(--_gcd-heading-color,var(--wpds-color-foreground-content-neutral,#1e1e1e));font-size:var(--_gcd-heading-font-size,inherit);font-weight:var(--_gcd-heading-font-weight,var(--wpds-typography-font-weight-emphasis,600));margin:var(--_gcd-heading-margin,0)}._2c0831b0499dbd6e__a,._2c0831b0499dbd6e__a:is(:hover,:focus,:active){border-radius:var(--_gcd-a-border-radius,0);box-shadow:var(--_gcd-a-box-shadow,none);color:var(--_gcd-a-color,inherit);outline:var(--_gcd-a-outline,0 solid transparent);transition:var(--_gcd-a-transition,none)}.c59a0ebebd71fa4a__ol{list-style:var(--_gcd-ol-list-style,none);margin:var(--_gcd-ol-margin,0);padding-block:var(--_gcd-ol-padding-block,0);padding-inline:var(--_gcd-ol-padding-inline,0)}._46b5cb0c8e24e8c9__li{margin:var(--_gcd-li-margin,0)}[role=treeitem] span._400bf7ee0c6061a9__span[aria-hidden]{display:var(--_gcd-span-display,inline);font-family:var(--_gcd-span-font-family,inherit);font-size:var(--_gcd-span-font-size,inherit);line-height:var(--_gcd-span-line-height,1);pointer-events:var(--_gcd-span-pointer-events,auto);position:var(--_gcd-span-position,static)}"); 17287 } 17288 var global_css_defense_default8 = { "button": "_6defc79820e382c6__button", "input": "d2cff2e5dea83bd1__input", "textarea": "_547d86373d02e108__textarea", "div": "_8c15fd0ed9f28ba4__div", "p": "_43cec3e1eec1066d__p", "heading": "e97669c6d9a38497__heading", "a": "_2c0831b0499dbd6e__a", "ol": "c59a0ebebd71fa4a__ol", "li": "_46b5cb0c8e24e8c9__li", "span": "_400bf7ee0c6061a9__span" }; 17289 if (typeof process === "undefined" || true) { 17290 registerStyle28("7c3267f794", "@layer wp-ui{@layer utilities, components, compositions, overrides;@layer utilities{.af79fb116edb0dd7__outset-ring--focus:focus,.dfcfdc28396e5d98__outset-ring--focus-visible:focus-visible,.e5cd9ee879f6403a__outset-ring--focus-within:focus-within{--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}._3c9f5ee9fc9c136d__outset-ring--focus-within-except-active:focus-within,.abc777e9713fa711__outset-ring--focus-except-active:focus{outline:none}._3c9f5ee9fc9c136d__outset-ring--focus-within-except-active:focus-within:not(:has(:active)),.abc777e9713fa711__outset-ring--focus-except-active:focus:not(:active){--_gcd-a-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));--_gcd-div-outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid var(--focus-color,var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9)));outline-offset:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}}}"); 17291 } 17292 var focus_module_default4 = { "outset-ring--focus": "af79fb116edb0dd7__outset-ring--focus", "outset-ring--focus-visible": "dfcfdc28396e5d98__outset-ring--focus-visible", "outset-ring--focus-within": "e5cd9ee879f6403a__outset-ring--focus-within", "outset-ring--focus-except-active": "abc777e9713fa711__outset-ring--focus-except-active", "outset-ring--focus-within-except-active": "_3c9f5ee9fc9c136d__outset-ring--focus-within-except-active" }; 17293 var Panel = (0, import_element45.forwardRef)( 17294 function TabPanel({ className, ...otherProps }, forwardedRef) { 17295 useRegisterPanel(); 17296 return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)( 17297 index_parts_exports3.Panel, 17298 { 17299 ref: forwardedRef, 17300 className: clsx_default( 17301 global_css_defense_default8.div, 17302 focus_module_default4["outset-ring--focus-visible"], 17303 className 17304 ), 17305 ...otherProps 17306 } 17307 ); 17308 } 17309 ); 17310 17311 // packages/ui/build-module/tabs/root.mjs 17312 var import_element46 = __toESM(require_element(), 1); 17313 var import_jsx_runtime84 = __toESM(require_jsx_runtime(), 1); 17314 var Root3 = (0, import_element46.forwardRef)( 17315 function TabsRoot3({ ...otherProps }, forwardedRef) { 17316 return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(DirectionProvider3, { children: /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(TabsValidationProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(index_parts_exports3.Root, { ref: forwardedRef, ...otherProps }) }) }); 17317 } 17318 ); 17319 17320 // packages/ui/build-module/tabs/tab.mjs 17321 var import_element47 = __toESM(require_element(), 1); 17322 var import_jsx_runtime85 = __toESM(require_jsx_runtime(), 1); 17323 var STYLE_HASH_ATTRIBUTE29 = "data-wp-hash"; 17324 function getRuntime29() { 17325 const globalScope = globalThis; 17326 if (globalScope.__wpStyleRuntime) { 17327 return globalScope.__wpStyleRuntime; 17328 } 17329 globalScope.__wpStyleRuntime = { 17330 documents: /* @__PURE__ */ new Map(), 17331 styles: /* @__PURE__ */ new Map(), 17332 injectedStyles: /* @__PURE__ */ new WeakMap() 17333 }; 17334 if (typeof document !== "undefined") { 17335 registerDocument29(document); 17336 } 17337 return globalScope.__wpStyleRuntime; 17338 } 17339 function documentContainsStyleHash29(targetDocument, hash) { 17340 if (!targetDocument.head) { 17341 return false; 17342 } 17343 for (const style of targetDocument.head.querySelectorAll( 17344 `style[$STYLE_HASH_ATTRIBUTE29}]` 17345 )) { 17346 if (style.getAttribute(STYLE_HASH_ATTRIBUTE29) === hash) { 17347 return true; 17348 } 17349 } 17350 return false; 17351 } 17352 function injectStyle29(targetDocument, hash, css) { 17353 if (!targetDocument.head) { 17354 return; 17355 } 17356 const runtime = getRuntime29(); 17357 let injectedStyles = runtime.injectedStyles.get(targetDocument); 17358 if (!injectedStyles) { 17359 injectedStyles = /* @__PURE__ */ new Set(); 17360 runtime.injectedStyles.set(targetDocument, injectedStyles); 17361 } 17362 if (injectedStyles.has(hash)) { 17363 return; 17364 } 17365 if (documentContainsStyleHash29(targetDocument, hash)) { 17366 injectedStyles.add(hash); 17367 return; 17368 } 17369 const style = targetDocument.createElement("style"); 17370 style.setAttribute(STYLE_HASH_ATTRIBUTE29, hash); 17371 style.appendChild(targetDocument.createTextNode(css)); 17372 targetDocument.head.appendChild(style); 17373 injectedStyles.add(hash); 17374 } 17375 function registerDocument29(targetDocument) { 17376 const runtime = getRuntime29(); 17377 runtime.documents.set( 17378 targetDocument, 17379 (runtime.documents.get(targetDocument) ?? 0) + 1 17380 ); 17381 for (const [hash, css] of runtime.styles) { 17382 injectStyle29(targetDocument, hash, css); 17383 } 17384 return () => { 17385 const count = runtime.documents.get(targetDocument); 17386 if (count === void 0) { 17387 return; 17388 } 17389 if (count <= 1) { 17390 runtime.documents.delete(targetDocument); 17391 return; 17392 } 17393 runtime.documents.set(targetDocument, count - 1); 17394 }; 17395 } 17396 function registerStyle29(hash, css) { 17397 const runtime = getRuntime29(); 17398 runtime.styles.set(hash, css); 17399 for (const targetDocument of runtime.documents.keys()) { 17400 injectStyle29(targetDocument, hash, css); 17401 } 17402 } 17403 if (typeof process === "undefined" || true) { 17404 registerStyle29("f3c08da521", '@layer wp-ui{@layer utilities, components, compositions, overrides;@layer components{._7313adbc8a112e90__tablist{--direction-start:left;--direction-end:right;align-items:stretch;display:flex;overflow-inline:auto;overscroll-behavior-inline:none;position:relative;&:dir(rtl){--direction-start:right;--direction-end:left}&[data-orientation=horizontal]{--fade-width:4rem;--fade-gradient-base:transparent 0%,#000 var(--fade-width);--fade-gradient-composed:var(--fade-gradient-base),#000 60%,transparent 50%;width:fit-content;&:not(.eb7aaeb14de04857__is-scrolling){overflow:visible}&._9f2ac729c68a735a__is-overflowing-first{mask-image:linear-gradient(to var(--direction-end),var(--fade-gradient-base))}&._81c799c1f3cdd261__is-overflowing-last{mask-image:linear-gradient(to var(--direction-start),var(--fade-gradient-base))}&._9f2ac729c68a735a__is-overflowing-first._81c799c1f3cdd261__is-overflowing-last{mask-image:linear-gradient(to right,var(--fade-gradient-composed)),linear-gradient(to left,var(--fade-gradient-composed))}&._59228b5227f38a99__is-minimal-variant{gap:1rem}}&[data-orientation=vertical]{flex-direction:column}}._1c37dcfaa1ad8cda__indicator{@media not (prefers-reduced-motion){transition-duration:.2s;transition-property:translate,width,height;transition-timing-function:ease-out}background-color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);outline:2px solid transparent;outline-offset:-1px;pointer-events:none;position:absolute;z-index:1;._7313adbc8a112e90__tablist:has(>.a5fd8814f195aa5e__tab[aria-selected=true]:not([data-disabled]):focus-visible)\n &{background-color:var(--wpds-color-foreground-interactive-neutral-active,#1e1e1e)}&[data-orientation=horizontal]{bottom:0;height:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px));left:0;translate:var(--active-tab-left) 0;width:var(--active-tab-width)}&[data-orientation=vertical]{height:max(0px,calc(var(--active-tab-height) - var(--wpds-dimension-padding-md, 12px)*2));inset-inline-start:0;top:var(--wpds-dimension-padding-md,12px);translate:0 var(--active-tab-top);width:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px))}}.a5fd8814f195aa5e__tab{align-items:center;background:transparent;border:none;border-radius:0;box-shadow:none;color:var(--wpds-color-foreground-interactive-neutral,#1e1e1e);cursor:var(--wpds-cursor-control,pointer);display:flex;flex:1 0 auto;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);font-weight:400;line-height:1.2;outline:none;padding:0;position:relative;white-space:nowrap;z-index:1;&:is([aria-selected=true],[data-disabled]){cursor:default}&[data-disabled]{color:var(--wpds-color-foreground-interactive-neutral-disabled,#8d8d8d);@media (forced-colors:active){color:GrayText}}&:not([data-disabled]):is(:not([aria-selected=true]):hover,:not([aria-selected=true]):active,:focus-visible){color:var(--wpds-color-foreground-interactive-neutral-active,#1e1e1e);&:after{background-color:var(--wpds-color-background-interactive-neutral-weak-active,#ededed);opacity:1}}&:after,&:before{border-radius:var(--wpds-border-radius-sm,2px);opacity:0;outline:var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)) solid transparent;pointer-events:none;position:absolute;z-index:-1;@media not (prefers-reduced-motion){transition:opacity .1s linear}}&:focus-visible:after{opacity:1;outline-color:var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9))}[data-orientation=horizontal] &{height:48px;padding-inline:var(--wpds-dimension-padding-lg,16px);scroll-margin:24px;&:after{content:"";inset-block:calc(var(--wpds-dimension-padding-md, 12px) + var(--wpds-dimension-padding-xs, 4px));inset-inline:var(--wpds-dimension-padding-lg,16px);outline-offset:var(--wpds-dimension-padding-xs,4px)}&:not([data-disabled]):is(:not([aria-selected=true]):hover,:not([aria-selected=true]):active,:focus-visible):after{box-shadow:0 0 0 var(--wpds-dimension-padding-xs,4px) var(--wpds-color-background-interactive-neutral-weak-active,#ededed)}}._59228b5227f38a99__is-minimal-variant[data-orientation=horizontal] &{padding-inline:0;&:after{inset-inline:0}}._59228b5227f38a99__is-minimal-variant.eb7aaeb14de04857__is-scrolling[data-orientation=horizontal] &{&:before{content:"";inset-block:var(--wpds-dimension-padding-md,12px);inset-inline:round(up,var(--wpds-border-width-focus,var(--wp-admin-border-width-focus,2px)),1px);z-index:0}&:focus-visible{&:before{opacity:1;outline-color:var(--wpds-color-stroke-focus,var(--wp-admin-theme-color,#3858e9))}&:after{outline:none}}}[data-orientation=vertical] &{min-height:var(--wpds-dimension-size-lg,40px);padding:var(--wpds-dimension-padding-md,12px);&:after{content:"";inset:0;outline-offset:calc(var(--wpds-border-width-focus, var(--wp-admin-border-width-focus, 2px))*-1)}}}._5dfc77e6edd345d4__tab-children{align-items:center;display:flex;flex-grow:1;[data-orientation=horizontal] &{justify-content:center}[data-orientation=vertical] &{justify-content:start}}}}'); 17405 } 17406 var style_default14 = { "tablist": "_7313adbc8a112e90__tablist", "is-scrolling": "eb7aaeb14de04857__is-scrolling", "is-overflowing-first": "_9f2ac729c68a735a__is-overflowing-first", "is-overflowing-last": "_81c799c1f3cdd261__is-overflowing-last", "is-minimal-variant": "_59228b5227f38a99__is-minimal-variant", "indicator": "_1c37dcfaa1ad8cda__indicator", "tab": "a5fd8814f195aa5e__tab", "tab-children": "_5dfc77e6edd345d4__tab-children" }; 17407 var Tab = (0, import_element47.forwardRef)( 17408 function UnforwardedTab({ className, children, ...otherProps }, forwardedRef) { 17409 useRegisterTab(); 17410 return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)( 17411 index_parts_exports3.Tab, 17412 { 17413 ref: forwardedRef, 17414 className: clsx_default(style_default14.tab, className), 17415 ...otherProps, 17416 children: /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("span", { className: style_default14["tab-children"], children }) 17417 } 17418 ); 17419 } 17420 ); 17421 17422 // packages/format-library/build-module/image/index.mjs 17423 var import_i18n8 = __toESM(require_i18n(), 1); 17424 var import_element48 = __toESM(require_element(), 1); 17425 var import_rich_text3 = __toESM(require_rich_text(), 1); 17426 var import_block_editor3 = __toESM(require_block_editor(), 1); 17427 var import_jsx_runtime86 = __toESM(require_jsx_runtime(), 1); 17428 var ALLOWED_MEDIA_TYPES = ["image"]; 17429 var name3 = "core/image"; 17430 var title3 = (0, import_i18n8.__)("Inline image"); 17431 function getCurrentImageId(activeObjectAttributes) { 17432 if (!activeObjectAttributes.className) { 17433 return void 0; 17434 } 17435 const [, id] = activeObjectAttributes.className.match(/wp-image-(\d+)/) ?? []; 17436 return id ? parseInt(id, 10) : void 0; 17437 } 17438 var image = { 17439 name: name3, 17440 title: title3, 17441 keywords: [(0, import_i18n8.__)("photo"), (0, import_i18n8.__)("media")], 17442 object: true, 17443 tagName: "img", 17444 className: null, 17445 attributes: { 17446 className: "class", 17447 style: "style", 17448 url: "src", 17449 alt: "alt" 17450 }, 17451 edit: Edit 17452 }; 17453 function InlineUI({ 17454 value, 17455 onChange, 17456 activeObjectAttributes, 17457 contentRef 17458 }) { 17459 const style = activeObjectAttributes.style; 17460 const alt = activeObjectAttributes.alt; 17461 const width = style?.replace(/\D/g, ""); 17462 const [editedWidth, setEditedWidth] = (0, import_element48.useState)(width); 17463 const [editedAlt, setEditedAlt] = (0, import_element48.useState)(alt); 17464 const hasChanged = editedWidth !== width || editedAlt !== alt; 17465 const popoverAnchor = (0, import_rich_text3.useAnchor)({ 17466 // eslint-disable-next-line react-hooks/refs 17467 editableContentElement: contentRef.current, 17468 settings: image 17469 }); 17470 return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( 17471 import_components.Popover, 17472 { 17473 focusOnMount: false, 17474 anchor: popoverAnchor, 17475 className: "block-editor-format-toolbar__image-popover", 17476 children: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( 17477 "form", 17478 { 17479 className: "block-editor-format-toolbar__image-container-content", 17480 onSubmit: (event) => { 17481 event.preventDefault(); 17482 if (value.start === void 0) { 17483 return; 17484 } 17485 const newReplacements = value.replacements.slice(); 17486 newReplacements[value.start] = { 17487 type: name3, 17488 attributes: { 17489 ...activeObjectAttributes, 17490 style: editedWidth ? `width: $editedWidth}px;` : "", 17491 alt: editedAlt ?? "" 17492 } 17493 }; 17494 onChange({ 17495 ...value, 17496 replacements: newReplacements 17497 }); 17498 }, 17499 children: /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)(Stack, { direction: "column", gap: "lg", children: [ 17500 /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( 17501 import_components.__experimentalNumberControl, 17502 { 17503 label: (0, import_i18n8.__)("Width"), 17504 value: editedWidth, 17505 min: 1, 17506 onChange: (newWidth) => { 17507 setEditedWidth(newWidth); 17508 } 17509 } 17510 ), 17511 /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( 17512 import_components.TextareaControl, 17513 { 17514 label: (0, import_i18n8.__)("Alternative text"), 17515 value: editedAlt ?? "", 17516 onChange: (newAlt) => { 17517 setEditedAlt(newAlt); 17518 }, 17519 help: /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)(import_jsx_runtime86.Fragment, { children: [ 17520 /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( 17521 Link, 17522 { 17523 openInNewTab: true, 17524 href: ( 17525 // translators: Localized tutorial, if one exists. W3C Web Accessibility Initiative link has list of existing translations. 17526 (0, import_i18n8.__)( 17527 "https://www.w3.org/WAI/tutorials/images/decision-tree/" 17528 ) 17529 ), 17530 children: (0, import_i18n8.__)( 17531 "Describe the purpose of the image." 17532 ) 17533 } 17534 ), 17535 /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("br", {}), 17536 (0, import_i18n8.__)("Leave empty if decorative.") 17537 ] }) 17538 } 17539 ), 17540 /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(Stack, { justify: "right", children: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( 17541 import_components.Button, 17542 { 17543 disabled: !hasChanged, 17544 accessibleWhenDisabled: true, 17545 variant: "primary", 17546 type: "submit", 17547 size: "compact", 17548 children: (0, import_i18n8.__)("Apply") 17549 } 17550 ) }) 17551 ] }) 17552 } 17553 ) 17554 } 17555 ); 17556 } 17557 function Edit({ 17558 value, 17559 onChange, 17560 onFocus, 17561 isObjectActive, 17562 activeObjectAttributes, 17563 contentRef 17564 }) { 17565 return /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)(import_block_editor3.MediaUploadCheck, { children: [ 17566 /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( 17567 import_block_editor3.MediaUpload, 17568 { 17569 allowedTypes: ALLOWED_MEDIA_TYPES, 17570 value: getCurrentImageId(activeObjectAttributes), 17571 onSelect: ({ 17572 id, 17573 url, 17574 alt, 17575 width: imgWidth 17576 }) => { 17577 onChange( 17578 (0, import_rich_text3.insertObject)(value, { 17579 type: name3, 17580 attributes: { 17581 className: `wp-image-$id}`, 17582 style: `width: $Math.min( 17583 imgWidth, 17584 150 17585 )}px;`, 17586 url, 17587 alt 17588 } 17589 }) 17590 ); 17591 onFocus(); 17592 }, 17593 render: ({ open: open2 }) => /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( 17594 import_block_editor3.RichTextToolbarButton, 17595 { 17596 icon: inline_image_default, 17597 title: isObjectActive ? (0, import_i18n8.__)("Replace image") : title3, 17598 onClick: open2, 17599 isActive: isObjectActive 17600 } 17601 ) 17602 } 17603 ), 17604 isObjectActive && /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( 17605 InlineUI, 17606 { 17607 value, 17608 onChange, 17609 activeObjectAttributes, 17610 contentRef 17611 } 17612 ) 17613 ] }); 17614 } 17615 17616 // packages/format-library/build-module/italic/index.mjs 17617 var import_i18n9 = __toESM(require_i18n(), 1); 17618 var import_rich_text4 = __toESM(require_rich_text(), 1); 17619 var import_block_editor4 = __toESM(require_block_editor(), 1); 17620 var import_jsx_runtime87 = __toESM(require_jsx_runtime(), 1); 17621 var name4 = "core/italic"; 17622 var title4 = (0, import_i18n9.__)("Italic"); 17623 var italic = { 17624 name: name4, 17625 title: title4, 17626 tagName: "em", 17627 className: null, 17628 edit({ 17629 isActive, 17630 value, 17631 onChange, 17632 onFocus, 17633 isVisible = true 17634 }) { 17635 function onToggle() { 17636 onChange((0, import_rich_text4.toggleFormat)(value, { type: name4, title: title4 })); 17637 } 17638 function onClick() { 17639 onChange((0, import_rich_text4.toggleFormat)(value, { type: name4, title: title4 })); 17640 onFocus(); 17641 } 17642 return /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(import_jsx_runtime87.Fragment, { children: [ 17643 /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( 17644 import_block_editor4.RichTextShortcut, 17645 { 17646 type: "primary", 17647 character: "i", 17648 onUse: onToggle 17649 } 17650 ), 17651 isVisible && /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( 17652 import_block_editor4.RichTextToolbarButton, 17653 { 17654 name: "italic", 17655 icon: format_italic_default, 17656 title: title4, 17657 onClick, 17658 isActive, 17659 shortcutType: "primary", 17660 shortcutCharacter: "i" 17661 } 17662 ), 17663 /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( 17664 import_block_editor4.__unstableRichTextInputEvent, 17665 { 17666 inputType: "formatItalic", 17667 onInput: onToggle 17668 } 17669 ) 17670 ] }); 17671 } 17672 }; 17673 17674 // packages/format-library/build-module/link/index.mjs 17675 var import_i18n12 = __toESM(require_i18n(), 1); 17676 var import_element51 = __toESM(require_element(), 1); 17677 var import_rich_text6 = __toESM(require_rich_text(), 1); 17678 var import_url3 = __toESM(require_url(), 1); 17679 var import_block_editor6 = __toESM(require_block_editor(), 1); 17680 var import_html_entities = __toESM(require_html_entities(), 1); 17681 var import_a11y2 = __toESM(require_a11y(), 1); 17682 17683 // packages/format-library/build-module/link/inline.mjs 17684 var import_element50 = __toESM(require_element(), 1); 17685 var import_i18n11 = __toESM(require_i18n(), 1); 17686 var import_a11y = __toESM(require_a11y(), 1); 17687 var import_components3 = __toESM(require_components(), 1); 17688 var import_url2 = __toESM(require_url(), 1); 17689 var import_rich_text5 = __toESM(require_rich_text(), 1); 17690 var import_block_editor5 = __toESM(require_block_editor(), 1); 17691 var import_data = __toESM(require_data(), 1); 17692 17693 // packages/format-library/build-module/link/utils.mjs 17694 var import_url = __toESM(require_url(), 1); 17695 function isValidHref(href) { 17696 if (!href) { 17697 return false; 17698 } 17699 const trimmedHref = href.trim(); 17700 if (!trimmedHref) { 17701 return false; 17702 } 17703 if (/^\S+:/.test(trimmedHref)) { 17704 const protocol = (0, import_url.getProtocol)(trimmedHref); 17705 if (!protocol || !(0, import_url.isValidProtocol)(protocol)) { 17706 return false; 17707 } 17708 if (protocol.startsWith("http") && !/^https?:\/\/[^\/\s]/i.test(trimmedHref)) { 17709 return false; 17710 } 17711 const authority = (0, import_url.getAuthority)(trimmedHref); 17712 if (!authority || !(0, import_url.isValidAuthority)(authority)) { 17713 return false; 17714 } 17715 const path = (0, import_url.getPath)(trimmedHref); 17716 if (path && !(0, import_url.isValidPath)(path)) { 17717 return false; 17718 } 17719 const queryString = (0, import_url.getQueryString)(trimmedHref); 17720 if (queryString && !(0, import_url.isValidQueryString)(queryString)) { 17721 return false; 17722 } 17723 const fragment = (0, import_url.getFragment)(trimmedHref); 17724 if (fragment && !(0, import_url.isValidFragment)(fragment)) { 17725 return false; 17726 } 17727 } 17728 if (trimmedHref.startsWith("#") && !(0, import_url.isValidFragment)(trimmedHref)) { 17729 return false; 17730 } 17731 return true; 17732 } 17733 function createLinkFormat({ 17734 url, 17735 type, 17736 id, 17737 opensInNewWindow, 17738 nofollow, 17739 cssClasses 17740 }) { 17741 const format = { 17742 type: "core/link", 17743 attributes: { 17744 url 17745 } 17746 }; 17747 if (type) { 17748 format.attributes.type = type; 17749 } 17750 if (id) { 17751 format.attributes.id = id; 17752 } 17753 if (opensInNewWindow) { 17754 format.attributes.target = "_blank"; 17755 format.attributes.rel = format.attributes.rel ? format.attributes.rel + " noopener" : "noopener"; 17756 } 17757 if (nofollow) { 17758 format.attributes.rel = format.attributes.rel ? format.attributes.rel + " nofollow" : "nofollow"; 17759 } 17760 const trimmedCssClasses = cssClasses?.trim(); 17761 if (trimmedCssClasses?.length) { 17762 format.attributes.class = trimmedCssClasses; 17763 } 17764 return format; 17765 } 17766 function getFormatBoundary(value, format, startIndex = value.start, endIndex = value.end) { 17767 const EMPTY_BOUNDARIES = { 17768 start: void 0, 17769 end: void 0 17770 }; 17771 const { formats } = value; 17772 let targetFormat; 17773 let initialIndex; 17774 if (!formats?.length || startIndex === void 0 || endIndex === void 0) { 17775 return EMPTY_BOUNDARIES; 17776 } 17777 const newFormats = formats.slice(); 17778 const formatAtStart = newFormats[startIndex]?.find( 17779 ({ type }) => type === format.type 17780 ); 17781 const formatAtEnd = newFormats[endIndex]?.find( 17782 ({ type }) => type === format.type 17783 ); 17784 const formatAtEndMinusOne = newFormats[endIndex - 1]?.find( 17785 ({ type }) => type === format.type 17786 ); 17787 if (!!formatAtStart) { 17788 targetFormat = formatAtStart; 17789 initialIndex = startIndex; 17790 } else if (!!formatAtEnd) { 17791 targetFormat = formatAtEnd; 17792 initialIndex = endIndex; 17793 } else if (!!formatAtEndMinusOne) { 17794 targetFormat = formatAtEndMinusOne; 17795 initialIndex = endIndex - 1; 17796 } else { 17797 return EMPTY_BOUNDARIES; 17798 } 17799 const index3 = newFormats[initialIndex].indexOf(targetFormat); 17800 startIndex = walkToStart(newFormats, initialIndex, targetFormat, index3); 17801 endIndex = walkToEnd(newFormats, initialIndex, targetFormat, index3); 17802 startIndex = startIndex < 0 ? 0 : startIndex; 17803 return { 17804 start: startIndex, 17805 end: endIndex + 1 17806 }; 17807 } 17808 function walkToBoundary(formats, initialIndex, targetFormatRef, formatIndex, direction) { 17809 let index3 = initialIndex; 17810 const directions = { 17811 forwards: 1, 17812 backwards: -1 17813 }; 17814 const directionIncrement = directions[direction] || 1; 17815 const inverseDirectionIncrement = directionIncrement * -1; 17816 while (formats[index3] && formats[index3][formatIndex] === targetFormatRef) { 17817 index3 = index3 + directionIncrement; 17818 } 17819 index3 = index3 + inverseDirectionIncrement; 17820 return index3; 17821 } 17822 var walkToStart = (...args) => walkToBoundary(...args, "backwards"); 17823 var walkToEnd = (...args) => walkToBoundary(...args, "forwards"); 17824 17825 // packages/format-library/build-module/link/css-classes-setting.mjs 17826 var import_element49 = __toESM(require_element(), 1); 17827 var import_compose4 = __toESM(require_compose(), 1); 17828 var import_i18n10 = __toESM(require_i18n(), 1); 17829 var import_components2 = __toESM(require_components(), 1); 17830 var import_jsx_runtime88 = __toESM(require_jsx_runtime(), 1); 17831 var CSSClassesSettingComponent = ({ 17832 setting, 17833 value, 17834 onChange 17835 }) => { 17836 const hasValue = !!value?.cssClasses?.length; 17837 const [isSettingActive, setIsSettingActive] = (0, import_element49.useState)(hasValue); 17838 const instanceId = (0, import_compose4.useInstanceId)(CSSClassesSettingComponent); 17839 const controlledRegionId = `css-classes-setting-$instanceId}`; 17840 const handleSettingChange = (newValue) => { 17841 const sanitizedValue = typeof newValue === "string" ? newValue.replace(/,/g, " ").replace(/\s+/g, " ").trim() : newValue; 17842 onChange({ 17843 ...value, 17844 [setting.id]: sanitizedValue 17845 }); 17846 }; 17847 const handleCheckboxChange = () => { 17848 if (isSettingActive) { 17849 if (hasValue) { 17850 handleSettingChange(""); 17851 } 17852 setIsSettingActive(false); 17853 } else { 17854 setIsSettingActive(true); 17855 } 17856 }; 17857 return /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("fieldset", { children: [ 17858 /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(VisuallyHidden, { render: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("legend", {}), children: setting.title }), 17859 /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)(Stack, { direction: "column", gap: "md", children: [ 17860 /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( 17861 import_components2.CheckboxControl, 17862 { 17863 label: setting.title, 17864 onChange: handleCheckboxChange, 17865 checked: isSettingActive || hasValue, 17866 "aria-expanded": isSettingActive, 17867 "aria-controls": isSettingActive ? controlledRegionId : void 0 17868 } 17869 ), 17870 isSettingActive && /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("div", { id: controlledRegionId, children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( 17871 import_components2.__experimentalInputControl, 17872 { 17873 label: (0, import_i18n10.__)("CSS classes"), 17874 value: value?.cssClasses, 17875 onChange: handleSettingChange, 17876 help: (0, import_i18n10.__)( 17877 "Separate multiple classes with spaces." 17878 ), 17879 __unstableInputWidth: "100%" 17880 } 17881 ) }) 17882 ] }) 17883 ] }); 17884 }; 17885 var css_classes_setting_default = CSSClassesSettingComponent; 17886 17887 // packages/format-library/build-module/link/inline.mjs 17888 var import_jsx_runtime89 = __toESM(require_jsx_runtime(), 1); 17889 var LINK_SETTINGS = [ 17890 ...import_block_editor5.LinkControl.DEFAULT_LINK_SETTINGS, 17891 { 17892 id: "nofollow", 17893 title: (0, import_i18n11.__)("Mark as nofollow") 17894 }, 17895 { 17896 id: "cssClasses", 17897 title: (0, import_i18n11.__)("Additional CSS class(es)"), 17898 render: (setting, value, onChange) => /* @__PURE__ */ (0, import_jsx_runtime89.jsx)( 17899 css_classes_setting_default, 17900 { 17901 setting, 17902 value, 17903 onChange 17904 } 17905 ) 17906 } 17907 ]; 17908 function InlineLinkUI({ 17909 isActive, 17910 activeAttributes, 17911 value, 17912 onChange, 17913 onFocusOutside, 17914 stopAddingLink, 17915 contentRef, 17916 focusOnMount 17917 }) { 17918 const richLinkTextValue = getRichTextValueFromSelection(value, isActive); 17919 const richTextText = richLinkTextValue.text; 17920 const { selectionChange } = (0, import_data.useDispatch)(import_block_editor5.store); 17921 const { createPageEntity, userCanCreatePages, selectionStart } = (0, import_data.useSelect)( 17922 (select) => { 17923 const { getSettings, getSelectionStart } = select(import_block_editor5.store); 17924 const _settings = getSettings(); 17925 return { 17926 createPageEntity: _settings.__experimentalCreatePageEntity, 17927 userCanCreatePages: _settings.__experimentalUserCanCreatePages, 17928 selectionStart: getSelectionStart() 17929 }; 17930 }, 17931 [] 17932 ); 17933 const linkValue = (0, import_element50.useMemo)( 17934 () => ({ 17935 url: activeAttributes.url, 17936 type: activeAttributes.type, 17937 id: activeAttributes.id, 17938 opensInNewTab: activeAttributes.target === "_blank", 17939 nofollow: activeAttributes.rel?.includes("nofollow"), 17940 title: richTextText, 17941 cssClasses: activeAttributes.class 17942 }), 17943 [ 17944 activeAttributes.class, 17945 activeAttributes.id, 17946 activeAttributes.rel, 17947 activeAttributes.target, 17948 activeAttributes.type, 17949 activeAttributes.url, 17950 richTextText 17951 ] 17952 ); 17953 function removeLink() { 17954 const newValue = (0, import_rich_text5.removeFormat)(value, "core/link"); 17955 onChange(newValue); 17956 stopAddingLink(); 17957 (0, import_a11y.speak)((0, import_i18n11.__)("Link removed."), "assertive"); 17958 } 17959 function onChangeLink(nextValue) { 17960 const hasLink = linkValue?.url; 17961 const isNewLink = !hasLink; 17962 nextValue = { 17963 ...linkValue, 17964 ...nextValue 17965 }; 17966 const newUrl = (0, import_url2.prependHTTPS)(nextValue?.url ?? ""); 17967 const linkFormat = createLinkFormat({ 17968 url: newUrl, 17969 type: nextValue.type, 17970 id: nextValue.id !== void 0 && nextValue.id !== null ? String(nextValue.id) : void 0, 17971 opensInNewWindow: nextValue.opensInNewTab, 17972 nofollow: nextValue.nofollow, 17973 cssClasses: nextValue.cssClasses 17974 }); 17975 const newText = nextValue.title || newUrl; 17976 let newValue; 17977 if ((0, import_rich_text5.isCollapsed)(value) && value.start !== void 0 && !isActive) { 17978 const inserted = (0, import_rich_text5.insert)(value, newText); 17979 newValue = (0, import_rich_text5.applyFormat)( 17980 inserted, 17981 linkFormat, 17982 value.start, 17983 value.start + newText.length 17984 ); 17985 onChange(newValue); 17986 stopAddingLink(); 17987 selectionChange({ 17988 clientId: selectionStart.clientId, 17989 identifier: selectionStart.attributeKey, 17990 start: value.start + newText.length + 1 17991 }); 17992 return; 17993 } else if (newText === richTextText) { 17994 const boundary = getFormatBoundary(value, { 17995 type: "core/link" 17996 }); 17997 newValue = (0, import_rich_text5.applyFormat)( 17998 value, 17999 linkFormat, 18000 boundary.start, 18001 boundary.end 18002 ); 18003 } else { 18004 newValue = (0, import_rich_text5.create)({ text: newText }); 18005 newValue = (0, import_rich_text5.applyFormat)(newValue, linkFormat, 0, newText.length); 18006 const boundary = getFormatBoundary(value, { 18007 type: "core/link" 18008 }); 18009 const splitValue = (0, import_rich_text5.split)(value, boundary.start, boundary.start); 18010 if (!splitValue) { 18011 return; 18012 } 18013 const [valBefore, valAfter] = splitValue; 18014 const newValAfter = (0, import_rich_text5.replace)(valAfter, richTextText, newValue); 18015 newValue = (0, import_rich_text5.concat)(valBefore, newValAfter); 18016 } 18017 onChange(newValue); 18018 if (!isNewLink) { 18019 stopAddingLink(); 18020 } 18021 if (!isValidHref(newUrl)) { 18022 (0, import_a11y.speak)( 18023 (0, import_i18n11.__)( 18024 "Warning: the link has been inserted but may have errors. Please test it." 18025 ), 18026 "assertive" 18027 ); 18028 } else if (isActive) { 18029 (0, import_a11y.speak)((0, import_i18n11.__)("Link edited."), "assertive"); 18030 } else { 18031 (0, import_a11y.speak)((0, import_i18n11.__)("Link inserted."), "assertive"); 18032 } 18033 } 18034 const anchorSettings = { ...link, isActive }; 18035 const popoverAnchor = (0, import_rich_text5.useAnchor)({ 18036 // eslint-disable-next-line react-hooks/refs 18037 editableContentElement: contentRef.current, 18038 settings: anchorSettings 18039 }); 18040 async function handleCreate(pageTitle) { 18041 const page = await createPageEntity({ 18042 title: pageTitle, 18043 status: "draft" 18044 }); 18045 return { 18046 id: page.id, 18047 type: page.type, 18048 title: page.title.rendered, 18049 url: page.link, 18050 kind: "post-type" 18051 }; 18052 } 18053 function createButtonText(searchTerm) { 18054 return (0, import_element50.createInterpolateElement)( 18055 (0, import_i18n11.sprintf)( 18056 /* translators: %s: search term. */ 18057 (0, import_i18n11.__)("Create page: <mark>%s</mark>"), 18058 searchTerm 18059 ), 18060 { mark: /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("mark", {}) } 18061 ); 18062 } 18063 return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)( 18064 import_components3.Popover, 18065 { 18066 anchor: popoverAnchor, 18067 animate: false, 18068 onClose: stopAddingLink, 18069 onFocusOutside, 18070 placement: "bottom", 18071 offset: 8, 18072 shift: true, 18073 focusOnMount, 18074 constrainTabbing: true, 18075 children: /* @__PURE__ */ (0, import_jsx_runtime89.jsx)( 18076 import_block_editor5.LinkControl, 18077 { 18078 value: linkValue, 18079 onChange: onChangeLink, 18080 onRemove: removeLink, 18081 hasRichPreviews: true, 18082 createSuggestion: createPageEntity && handleCreate, 18083 withCreateSuggestion: userCanCreatePages, 18084 createSuggestionButtonText: createButtonText, 18085 hasTextControl: true, 18086 settings: LINK_SETTINGS, 18087 showInitialSuggestions: true, 18088 suggestionsQuery: { 18089 // always show Pages as initial suggestions 18090 initialSuggestionsSearchOptions: { 18091 type: "post", 18092 subtype: "page", 18093 perPage: 20 18094 } 18095 } 18096 } 18097 ) 18098 } 18099 ); 18100 } 18101 function getRichTextValueFromSelection(value, isActive) { 18102 let textStart = value.start; 18103 let textEnd = value.end; 18104 if (isActive) { 18105 const boundary = getFormatBoundary(value, { 18106 type: "core/link" 18107 }); 18108 textStart = boundary.start ?? value.start; 18109 textEnd = boundary.end ?? value.end; 18110 } 18111 return (0, import_rich_text5.slice)(value, textStart, textEnd); 18112 } 18113 var inline_default = InlineLinkUI; 18114 18115 // packages/format-library/build-module/link/index.mjs 18116 var import_jsx_runtime90 = __toESM(require_jsx_runtime(), 1); 18117 var name5 = "core/link"; 18118 var title5 = (0, import_i18n12.__)("Link"); 18119 function Edit2({ 18120 isActive, 18121 activeAttributes, 18122 value, 18123 onChange, 18124 onFocus, 18125 contentRef, 18126 isVisible = true 18127 }) { 18128 const [addingLink, setAddingLink] = (0, import_element51.useState)(false); 18129 const [openedBy, setOpenedBy] = (0, import_element51.useState)(null); 18130 (0, import_element51.useEffect)(() => { 18131 if (!isActive) { 18132 setAddingLink(false); 18133 } 18134 }, [isActive]); 18135 (0, import_element51.useLayoutEffect)(() => { 18136 const editableContentElement = contentRef.current; 18137 if (!editableContentElement) { 18138 return; 18139 } 18140 function handleClick(event) { 18141 const link2 = event.target.closest( 18142 "[contenteditable] a" 18143 ); 18144 if (!link2 || // other formats (e.g. bold) may be nested within the link. 18145 !isActive) { 18146 return; 18147 } 18148 setAddingLink(true); 18149 setOpenedBy({ 18150 el: link2, 18151 action: "click" 18152 }); 18153 } 18154 editableContentElement.addEventListener("click", handleClick); 18155 return () => { 18156 editableContentElement.removeEventListener("click", handleClick); 18157 }; 18158 }, [contentRef, isActive]); 18159 function addLink(target) { 18160 const text = (0, import_rich_text6.getTextContent)((0, import_rich_text6.slice)(value)); 18161 if (!isActive && text && (0, import_url3.isURL)(text) && isValidHref(text)) { 18162 onChange( 18163 (0, import_rich_text6.applyFormat)(value, { 18164 type: name5, 18165 attributes: { url: text } 18166 }) 18167 ); 18168 } else if (!isActive && text && (0, import_url3.isEmail)(text)) { 18169 onChange( 18170 (0, import_rich_text6.applyFormat)(value, { 18171 type: name5, 18172 attributes: { url: `mailto:$text}` } 18173 }) 18174 ); 18175 } else if (!isActive && text && (0, import_url3.isPhoneNumber)(text)) { 18176 onChange( 18177 (0, import_rich_text6.applyFormat)(value, { 18178 type: name5, 18179 attributes: { url: `tel:$text.replace(/\D/g, "")}` } 18180 }) 18181 ); 18182 } else { 18183 if (target) { 18184 setOpenedBy({ 18185 el: target, 18186 action: null 18187 // We don't need to distinguish between click or keyboard here 18188 }); 18189 } 18190 setAddingLink(true); 18191 } 18192 } 18193 function stopAddingLink() { 18194 setAddingLink(false); 18195 if (openedBy?.el?.tagName === "BUTTON") { 18196 openedBy.el.focus(); 18197 } else { 18198 onFocus(); 18199 } 18200 setOpenedBy(null); 18201 } 18202 function onFocusOutside() { 18203 setAddingLink(false); 18204 setOpenedBy(null); 18205 } 18206 function onRemoveFormat() { 18207 onChange((0, import_rich_text6.removeFormat)(value, name5)); 18208 (0, import_a11y2.speak)((0, import_i18n12.__)("Link removed."), "assertive"); 18209 } 18210 const shouldAutoFocus = !(openedBy?.el?.tagName === "A" && openedBy?.action === "click"); 18211 const hasSelection = !(0, import_rich_text6.isCollapsed)(value); 18212 return /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)(import_jsx_runtime90.Fragment, { children: [ 18213 hasSelection && /* @__PURE__ */ (0, import_jsx_runtime90.jsx)( 18214 import_block_editor6.RichTextShortcut, 18215 { 18216 type: "primary", 18217 character: "k", 18218 onUse: addLink 18219 } 18220 ), 18221 /* @__PURE__ */ (0, import_jsx_runtime90.jsx)( 18222 import_block_editor6.RichTextShortcut, 18223 { 18224 type: "primaryShift", 18225 character: "k", 18226 onUse: onRemoveFormat 18227 } 18228 ), 18229 isVisible && /* @__PURE__ */ (0, import_jsx_runtime90.jsx)( 18230 import_block_editor6.RichTextToolbarButton, 18231 { 18232 name: "link", 18233 icon: link_default, 18234 title: isActive ? (0, import_i18n12.__)("Link") : title5, 18235 onClick: (event) => { 18236 addLink(event.currentTarget); 18237 }, 18238 isActive: isActive || addingLink, 18239 shortcutType: "primary", 18240 shortcutCharacter: "k", 18241 "aria-haspopup": "true", 18242 "aria-expanded": addingLink 18243 } 18244 ), 18245 isVisible && addingLink && /* @__PURE__ */ (0, import_jsx_runtime90.jsx)( 18246 inline_default, 18247 { 18248 stopAddingLink, 18249 onFocusOutside, 18250 isActive, 18251 activeAttributes, 18252 value, 18253 onChange, 18254 contentRef, 18255 focusOnMount: shouldAutoFocus ? "firstElement" : false 18256 } 18257 ) 18258 ] }); 18259 } 18260 var link = { 18261 name: name5, 18262 title: title5, 18263 tagName: "a", 18264 className: null, 18265 attributes: { 18266 url: "href", 18267 type: "data-type", 18268 id: "data-id", 18269 _id: "id", 18270 target: "target", 18271 rel: "rel", 18272 class: "class" 18273 }, 18274 __unstablePasteRule(value, { html, plainText }) { 18275 const pastedText = (html || plainText).replace(/<[^>]+>/g, "").trim(); 18276 if (!(0, import_url3.isURL)(pastedText) || !/^https?:/.test(pastedText)) { 18277 return value; 18278 } 18279 window.console.log("Created link:\n\n", pastedText); 18280 const format = { 18281 type: name5, 18282 attributes: { 18283 url: (0, import_html_entities.decodeEntities)(pastedText) 18284 } 18285 }; 18286 if ((0, import_rich_text6.isCollapsed)(value)) { 18287 return (0, import_rich_text6.insert)( 18288 value, 18289 (0, import_rich_text6.applyFormat)( 18290 (0, import_rich_text6.create)({ text: plainText }), 18291 format, 18292 0, 18293 plainText.length 18294 ) 18295 ); 18296 } 18297 return (0, import_rich_text6.applyFormat)(value, format); 18298 }, 18299 edit: Edit2 18300 }; 18301 18302 // packages/format-library/build-module/strikethrough/index.mjs 18303 var import_i18n13 = __toESM(require_i18n(), 1); 18304 var import_rich_text7 = __toESM(require_rich_text(), 1); 18305 var import_block_editor7 = __toESM(require_block_editor(), 1); 18306 var import_jsx_runtime91 = __toESM(require_jsx_runtime(), 1); 18307 var name6 = "core/strikethrough"; 18308 var title6 = (0, import_i18n13.__)("Strikethrough"); 18309 var strikethrough = { 18310 name: name6, 18311 title: title6, 18312 tagName: "s", 18313 className: null, 18314 edit({ isActive, value, onChange, onFocus }) { 18315 function onClick() { 18316 onChange((0, import_rich_text7.toggleFormat)(value, { type: name6, title: title6 })); 18317 onFocus(); 18318 } 18319 return /* @__PURE__ */ (0, import_jsx_runtime91.jsxs)(import_jsx_runtime91.Fragment, { children: [ 18320 /* @__PURE__ */ (0, import_jsx_runtime91.jsx)( 18321 import_block_editor7.RichTextShortcut, 18322 { 18323 type: "access", 18324 character: "d", 18325 onUse: onClick 18326 } 18327 ), 18328 /* @__PURE__ */ (0, import_jsx_runtime91.jsx)( 18329 import_block_editor7.RichTextToolbarButton, 18330 { 18331 icon: format_strikethrough_default, 18332 title: title6, 18333 onClick, 18334 isActive, 18335 role: "menuitemcheckbox" 18336 } 18337 ) 18338 ] }); 18339 } 18340 }; 18341 18342 // packages/format-library/build-module/underline/index.mjs 18343 var import_i18n14 = __toESM(require_i18n(), 1); 18344 var import_rich_text8 = __toESM(require_rich_text(), 1); 18345 var import_block_editor8 = __toESM(require_block_editor(), 1); 18346 var import_jsx_runtime92 = __toESM(require_jsx_runtime(), 1); 18347 var name7 = "core/underline"; 18348 var title7 = (0, import_i18n14.__)("Underline"); 18349 var underline = { 18350 name: name7, 18351 title: title7, 18352 tagName: "span", 18353 className: null, 18354 attributes: { 18355 style: "style" 18356 }, 18357 edit({ value, onChange }) { 18358 const onToggle = () => { 18359 onChange( 18360 (0, import_rich_text8.toggleFormat)(value, { 18361 type: name7, 18362 attributes: { 18363 style: "text-decoration: underline;" 18364 }, 18365 title: title7 18366 }) 18367 ); 18368 }; 18369 return /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)(import_jsx_runtime92.Fragment, { children: [ 18370 /* @__PURE__ */ (0, import_jsx_runtime92.jsx)( 18371 import_block_editor8.RichTextShortcut, 18372 { 18373 type: "primary", 18374 character: "u", 18375 onUse: onToggle 18376 } 18377 ), 18378 /* @__PURE__ */ (0, import_jsx_runtime92.jsx)( 18379 import_block_editor8.__unstableRichTextInputEvent, 18380 { 18381 inputType: "formatUnderline", 18382 onInput: onToggle 18383 } 18384 ) 18385 ] }); 18386 } 18387 }; 18388 18389 // packages/format-library/build-module/text-color/index.mjs 18390 var import_i18n16 = __toESM(require_i18n(), 1); 18391 var import_element53 = __toESM(require_element(), 1); 18392 var import_block_editor10 = __toESM(require_block_editor(), 1); 18393 var import_rich_text10 = __toESM(require_rich_text(), 1); 18394 18395 // packages/format-library/build-module/text-color/inline.mjs 18396 var import_element52 = __toESM(require_element(), 1); 18397 var import_data2 = __toESM(require_data(), 1); 18398 var import_rich_text9 = __toESM(require_rich_text(), 1); 18399 var import_block_editor9 = __toESM(require_block_editor(), 1); 18400 var import_components4 = __toESM(require_components(), 1); 18401 var import_i18n15 = __toESM(require_i18n(), 1); 18402 var import_jsx_runtime93 = __toESM(require_jsx_runtime(), 1); 18403 var TABS = [ 18404 { name: "color", title: (0, import_i18n15.__)("Text") }, 18405 { name: "backgroundColor", title: (0, import_i18n15.__)("Background") } 18406 ]; 18407 function parseCSS(css = "") { 18408 return css.split(";").reduce( 18409 (accumulator, rule) => { 18410 if (rule) { 18411 const [property, value] = rule.split(":"); 18412 if (property === "color") { 18413 accumulator.color = value; 18414 } 18415 if (property === "background-color" && value !== transparentValue) { 18416 accumulator.backgroundColor = value; 18417 } 18418 } 18419 return accumulator; 18420 }, 18421 {} 18422 ); 18423 } 18424 function parseClassName(className = "", colorSettings) { 18425 return className.split(" ").reduce((accumulator, name16) => { 18426 if (name16.startsWith("has-") && name16.endsWith("-color")) { 18427 const colorSlug = name16.replace(/^has-/, "").replace(/-color$/, ""); 18428 const colorObject = (0, import_block_editor9.getColorObjectByAttributeValues)( 18429 colorSettings, 18430 colorSlug 18431 ); 18432 accumulator.color = colorObject.color; 18433 } 18434 return accumulator; 18435 }, {}); 18436 } 18437 function getActiveColors(value, name16, colorSettings) { 18438 const activeColorFormat = (0, import_rich_text9.getActiveFormat)(value, name16); 18439 if (!activeColorFormat) { 18440 return {}; 18441 } 18442 return { 18443 ...parseCSS(activeColorFormat.attributes?.style), 18444 ...parseClassName(activeColorFormat.attributes?.class, colorSettings) 18445 }; 18446 } 18447 function setColors(value, name16, colorSettings, colors) { 18448 const { color, backgroundColor } = { 18449 ...getActiveColors(value, name16, colorSettings), 18450 ...colors 18451 }; 18452 if (!color && !backgroundColor) { 18453 return (0, import_rich_text9.removeFormat)(value, name16); 18454 } 18455 const styles = []; 18456 const classNames = []; 18457 const attributes = {}; 18458 if (backgroundColor) { 18459 styles.push(["background-color", backgroundColor].join(":")); 18460 } else { 18461 styles.push(["background-color", transparentValue].join(":")); 18462 } 18463 if (color) { 18464 const colorObject = (0, import_block_editor9.getColorObjectByColorValue)(colorSettings, color); 18465 if (colorObject && colorObject.slug) { 18466 const colorClassName = (0, import_block_editor9.getColorClassName)( 18467 "color", 18468 colorObject.slug 18469 ); 18470 if (colorClassName) { 18471 classNames.push(colorClassName); 18472 } 18473 } else { 18474 styles.push(["color", color].join(":")); 18475 } 18476 } 18477 if (styles.length) { 18478 attributes.style = styles.join(";"); 18479 } 18480 if (classNames.length) { 18481 attributes.class = classNames.join(" "); 18482 } 18483 return (0, import_rich_text9.applyFormat)(value, { type: name16, attributes }); 18484 } 18485 function ColorPicker({ name: name16, property, value, onChange }) { 18486 const colors = (0, import_data2.useSelect)((select) => { 18487 const { getSettings } = select(import_block_editor9.store); 18488 return getSettings().colors ?? []; 18489 }, []); 18490 const activeColors = (0, import_element52.useMemo)( 18491 () => getActiveColors(value, name16, colors), 18492 [name16, value, colors] 18493 ); 18494 return /* @__PURE__ */ (0, import_jsx_runtime93.jsx)( 18495 import_block_editor9.ColorPalette, 18496 { 18497 value: activeColors[property], 18498 onChange: (color) => { 18499 onChange( 18500 setColors(value, name16, colors, { [property]: color }) 18501 ); 18502 }, 18503 enableAlpha: true, 18504 __experimentalIsRenderedInSidebar: true 18505 } 18506 ); 18507 } 18508 function InlineColorUI({ 18509 name: name16, 18510 value, 18511 onChange, 18512 onClose, 18513 contentRef, 18514 isActive 18515 }) { 18516 const anchorSettings = { ...textColor, isActive }; 18517 const popoverAnchor = (0, import_rich_text9.useAnchor)({ 18518 // eslint-disable-next-line react-hooks/refs 18519 editableContentElement: contentRef.current, 18520 settings: anchorSettings 18521 }); 18522 return /* @__PURE__ */ (0, import_jsx_runtime93.jsx)( 18523 import_components4.Popover, 18524 { 18525 onClose, 18526 className: "format-library__inline-color-popover", 18527 anchor: popoverAnchor, 18528 children: /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(tabs_exports.Root, { defaultValue: TABS[0].name, children: [ 18529 /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(tabs_exports.List, { children: TABS.map((tab) => /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(tabs_exports.Tab, { value: tab.name, children: tab.title }, tab.name)) }), 18530 TABS.map((tab) => /* @__PURE__ */ (0, import_jsx_runtime93.jsx)( 18531 tabs_exports.Panel, 18532 { 18533 value: tab.name, 18534 tabIndex: -1, 18535 children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)( 18536 ColorPicker, 18537 { 18538 name: name16, 18539 property: tab.name, 18540 value, 18541 onChange 18542 } 18543 ) 18544 }, 18545 tab.name 18546 )) 18547 ] }) 18548 } 18549 ); 18550 } 18551 18552 // packages/format-library/build-module/text-color/index.mjs 18553 var import_jsx_runtime94 = __toESM(require_jsx_runtime(), 1); 18554 var transparentValue = "rgba(0, 0, 0, 0)"; 18555 var name8 = "core/text-color"; 18556 var title8 = (0, import_i18n16.__)("Highlight"); 18557 var EMPTY_ARRAY2 = []; 18558 function getComputedStyleProperty(element, property) { 18559 const { ownerDocument: ownerDocument2 } = element; 18560 const { defaultView } = ownerDocument2; 18561 const style = defaultView?.getComputedStyle(element); 18562 const value = style?.getPropertyValue(property); 18563 if (property === "background-color" && value === transparentValue && element.parentElement) { 18564 return getComputedStyleProperty(element.parentElement, property); 18565 } 18566 return value; 18567 } 18568 function fillComputedColors(element, { color, backgroundColor }) { 18569 if (!element || !color && !backgroundColor) { 18570 return; 18571 } 18572 return { 18573 color: color || getComputedStyleProperty(element, "color"), 18574 backgroundColor: backgroundColor === transparentValue ? getComputedStyleProperty(element, "background-color") : backgroundColor 18575 }; 18576 } 18577 function TextColorEdit({ 18578 value, 18579 onChange, 18580 isActive, 18581 activeAttributes, 18582 contentRef 18583 }) { 18584 const [allowCustomControl, colors = EMPTY_ARRAY2] = (0, import_block_editor10.useSettings)( 18585 "color.custom", 18586 "color.palette" 18587 ); 18588 const [isAddingColor, setIsAddingColor] = (0, import_element53.useState)(false); 18589 const colorIndicatorStyle = (0, import_element53.useMemo)( 18590 () => fillComputedColors( 18591 contentRef.current, 18592 getActiveColors(value, name8, colors) 18593 ), 18594 [contentRef, value, colors] 18595 ); 18596 const hasColorsToChoose = !!colors.length || allowCustomControl; 18597 if (!hasColorsToChoose && !isActive) { 18598 return null; 18599 } 18600 return /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(import_jsx_runtime94.Fragment, { children: [ 18601 /* @__PURE__ */ (0, import_jsx_runtime94.jsx)( 18602 import_block_editor10.RichTextToolbarButton, 18603 { 18604 className: "format-library-text-color-button", 18605 isActive, 18606 icon: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)( 18607 icon_default, 18608 { 18609 icon: Object.keys(activeAttributes).length ? text_color_default : color_default, 18610 style: colorIndicatorStyle 18611 } 18612 ), 18613 title: title8, 18614 onClick: hasColorsToChoose ? () => setIsAddingColor(true) : () => onChange((0, import_rich_text10.removeFormat)(value, name8)), 18615 role: "menuitemcheckbox" 18616 } 18617 ), 18618 isAddingColor && /* @__PURE__ */ (0, import_jsx_runtime94.jsx)( 18619 InlineColorUI, 18620 { 18621 name: name8, 18622 onClose: () => setIsAddingColor(false), 18623 value, 18624 onChange, 18625 contentRef, 18626 isActive 18627 } 18628 ) 18629 ] }); 18630 } 18631 var textColor = { 18632 name: name8, 18633 title: title8, 18634 tagName: "mark", 18635 className: "has-inline-color", 18636 attributes: { 18637 style: "style", 18638 class: "class" 18639 }, 18640 edit: TextColorEdit 18641 }; 18642 18643 // packages/format-library/build-module/subscript/index.mjs 18644 var import_i18n17 = __toESM(require_i18n(), 1); 18645 var import_rich_text11 = __toESM(require_rich_text(), 1); 18646 var import_block_editor11 = __toESM(require_block_editor(), 1); 18647 var import_jsx_runtime95 = __toESM(require_jsx_runtime(), 1); 18648 var name9 = "core/subscript"; 18649 var title9 = (0, import_i18n17.__)("Subscript"); 18650 var subscript = { 18651 name: name9, 18652 title: title9, 18653 tagName: "sub", 18654 className: null, 18655 edit({ isActive, value, onChange, onFocus }) { 18656 function onToggle() { 18657 onChange((0, import_rich_text11.toggleFormat)(value, { type: name9, title: title9 })); 18658 } 18659 function onClick() { 18660 onToggle(); 18661 onFocus(); 18662 } 18663 return /* @__PURE__ */ (0, import_jsx_runtime95.jsx)( 18664 import_block_editor11.RichTextToolbarButton, 18665 { 18666 icon: subscript_default, 18667 title: title9, 18668 onClick, 18669 isActive, 18670 role: "menuitemcheckbox" 18671 } 18672 ); 18673 } 18674 }; 18675 18676 // packages/format-library/build-module/superscript/index.mjs 18677 var import_i18n18 = __toESM(require_i18n(), 1); 18678 var import_rich_text12 = __toESM(require_rich_text(), 1); 18679 var import_block_editor12 = __toESM(require_block_editor(), 1); 18680 var import_jsx_runtime96 = __toESM(require_jsx_runtime(), 1); 18681 var name10 = "core/superscript"; 18682 var title10 = (0, import_i18n18.__)("Superscript"); 18683 var superscript = { 18684 name: name10, 18685 title: title10, 18686 tagName: "sup", 18687 className: null, 18688 edit({ isActive, value, onChange, onFocus }) { 18689 function onToggle() { 18690 onChange((0, import_rich_text12.toggleFormat)(value, { type: name10, title: title10 })); 18691 } 18692 function onClick() { 18693 onToggle(); 18694 onFocus(); 18695 } 18696 return /* @__PURE__ */ (0, import_jsx_runtime96.jsx)( 18697 import_block_editor12.RichTextToolbarButton, 18698 { 18699 icon: superscript_default, 18700 title: title10, 18701 onClick, 18702 isActive, 18703 role: "menuitemcheckbox" 18704 } 18705 ); 18706 } 18707 }; 18708 18709 // packages/format-library/build-module/keyboard/index.mjs 18710 var import_i18n19 = __toESM(require_i18n(), 1); 18711 var import_rich_text13 = __toESM(require_rich_text(), 1); 18712 var import_block_editor13 = __toESM(require_block_editor(), 1); 18713 var import_jsx_runtime97 = __toESM(require_jsx_runtime(), 1); 18714 var name11 = "core/keyboard"; 18715 var title11 = (0, import_i18n19.__)("Keyboard input"); 18716 var keyboard2 = { 18717 name: name11, 18718 title: title11, 18719 tagName: "kbd", 18720 className: null, 18721 edit({ isActive, value, onChange, onFocus }) { 18722 function onToggle() { 18723 onChange((0, import_rich_text13.toggleFormat)(value, { type: name11, title: title11 })); 18724 } 18725 function onClick() { 18726 onToggle(); 18727 onFocus(); 18728 } 18729 return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)( 18730 import_block_editor13.RichTextToolbarButton, 18731 { 18732 icon: button_default, 18733 title: title11, 18734 onClick, 18735 isActive, 18736 role: "menuitemcheckbox" 18737 } 18738 ); 18739 } 18740 }; 18741 18742 // packages/format-library/build-module/unknown/index.mjs 18743 var import_i18n20 = __toESM(require_i18n(), 1); 18744 var import_rich_text14 = __toESM(require_rich_text(), 1); 18745 var import_block_editor14 = __toESM(require_block_editor(), 1); 18746 var import_jsx_runtime98 = __toESM(require_jsx_runtime(), 1); 18747 var name12 = "core/unknown"; 18748 var title12 = (0, import_i18n20.__)("Clear Unknown Formatting"); 18749 function selectionContainsUnknownFormats(value) { 18750 if ((0, import_rich_text14.isCollapsed)(value)) { 18751 return false; 18752 } 18753 const selectedValue = (0, import_rich_text14.slice)(value); 18754 return selectedValue.formats.some((formats) => { 18755 return formats.some((format) => format.type === name12); 18756 }); 18757 } 18758 var unknown = { 18759 name: name12, 18760 title: title12, 18761 tagName: "*", 18762 className: null, 18763 edit({ isActive, value, onChange, onFocus }) { 18764 if (!isActive && !selectionContainsUnknownFormats(value)) { 18765 return null; 18766 } 18767 function onClick() { 18768 onChange((0, import_rich_text14.removeFormat)(value, name12)); 18769 onFocus(); 18770 } 18771 return /* @__PURE__ */ (0, import_jsx_runtime98.jsx)( 18772 import_block_editor14.RichTextToolbarButton, 18773 { 18774 name: "unknown", 18775 icon: help_default, 18776 title: title12, 18777 onClick, 18778 isActive: true 18779 } 18780 ); 18781 } 18782 }; 18783 18784 // packages/format-library/build-module/language/index.mjs 18785 var import_i18n21 = __toESM(require_i18n(), 1); 18786 var import_block_editor15 = __toESM(require_block_editor(), 1); 18787 var import_components5 = __toESM(require_components(), 1); 18788 var import_element54 = __toESM(require_element(), 1); 18789 var import_rich_text15 = __toESM(require_rich_text(), 1); 18790 var import_jsx_runtime99 = __toESM(require_jsx_runtime(), 1); 18791 var name13 = "core/language"; 18792 var title13 = (0, import_i18n21.__)("Language"); 18793 var language = { 18794 name: name13, 18795 title: title13, 18796 tagName: "bdo", 18797 className: null, 18798 attributes: { 18799 lang: "lang", 18800 dir: "dir" 18801 }, 18802 edit: Edit3 18803 }; 18804 function Edit3({ isActive, value, onChange, contentRef }) { 18805 const [isPopoverVisible, setIsPopoverVisible] = (0, import_element54.useState)(false); 18806 const togglePopover = () => { 18807 setIsPopoverVisible((state) => !state); 18808 }; 18809 return /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_jsx_runtime99.Fragment, { children: [ 18810 /* @__PURE__ */ (0, import_jsx_runtime99.jsx)( 18811 import_block_editor15.RichTextToolbarButton, 18812 { 18813 icon: language_default, 18814 label: title13, 18815 title: title13, 18816 onClick: () => { 18817 if (isActive) { 18818 onChange((0, import_rich_text15.removeFormat)(value, name13)); 18819 } else { 18820 togglePopover(); 18821 } 18822 }, 18823 isActive, 18824 role: "menuitemcheckbox" 18825 } 18826 ), 18827 isPopoverVisible && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)( 18828 InlineLanguageUI, 18829 { 18830 value, 18831 onChange, 18832 onClose: togglePopover, 18833 contentRef 18834 } 18835 ) 18836 ] }); 18837 } 18838 function InlineLanguageUI({ 18839 value, 18840 contentRef, 18841 onChange, 18842 onClose 18843 }) { 18844 const popoverAnchor = (0, import_rich_text15.useAnchor)({ 18845 // eslint-disable-next-line react-hooks/refs 18846 editableContentElement: contentRef.current, 18847 settings: language 18848 }); 18849 const [lang, setLang] = (0, import_element54.useState)(""); 18850 const [dir, setDir] = (0, import_element54.useState)("ltr"); 18851 const directionItems = [ 18852 { label: (0, import_i18n21.__)("Left to right"), value: "ltr" }, 18853 { label: (0, import_i18n21.__)("Right to left"), value: "rtl" } 18854 ]; 18855 return /* @__PURE__ */ (0, import_jsx_runtime99.jsx)( 18856 import_components5.Popover, 18857 { 18858 className: "block-editor-format-toolbar__language-popover", 18859 anchor: popoverAnchor, 18860 onClose, 18861 children: /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)( 18862 Stack, 18863 { 18864 render: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("form", {}), 18865 direction: "column", 18866 gap: "lg", 18867 className: "block-editor-format-toolbar__language-container-content", 18868 onSubmit: (event) => { 18869 event.preventDefault(); 18870 onChange( 18871 (0, import_rich_text15.applyFormat)(value, { 18872 type: name13, 18873 attributes: { 18874 lang, 18875 dir 18876 } 18877 }) 18878 ); 18879 onClose(); 18880 }, 18881 children: [ 18882 /* @__PURE__ */ (0, import_jsx_runtime99.jsx)( 18883 import_components5.TextControl, 18884 { 18885 label: title13, 18886 value: lang, 18887 onChange: (val) => setLang(val), 18888 help: (0, import_i18n21.__)( 18889 'A valid language attribute, like "en" or "fr".' 18890 ) 18891 } 18892 ), 18893 /* @__PURE__ */ (0, import_jsx_runtime99.jsx)( 18894 SelectControl2, 18895 { 18896 label: (0, import_i18n21.__)("Text direction"), 18897 value: directionItems.find((item) => item.value === dir) ?? null, 18898 items: directionItems, 18899 onValueChange: (item) => { 18900 if (item?.value === "ltr" || item?.value === "rtl") { 18901 setDir(item.value); 18902 } 18903 } 18904 } 18905 ), 18906 /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Stack, { justify: "right", children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)( 18907 import_components5.Button, 18908 { 18909 __next40pxDefaultSize: true, 18910 variant: "primary", 18911 type: "submit", 18912 text: (0, import_i18n21.__)("Apply") 18913 } 18914 ) }) 18915 ] 18916 } 18917 ) 18918 } 18919 ); 18920 } 18921 18922 // packages/format-library/build-module/math/index.mjs 18923 var import_i18n22 = __toESM(require_i18n(), 1); 18924 var import_element55 = __toESM(require_element(), 1); 18925 var import_rich_text16 = __toESM(require_rich_text(), 1); 18926 var import_block_editor16 = __toESM(require_block_editor(), 1); 18927 var import_components6 = __toESM(require_components(), 1); 18928 var import_jsx_runtime100 = __toESM(require_jsx_runtime(), 1); 18929 var name14 = "core/math"; 18930 var title14 = (0, import_i18n22.__)("Math"); 18931 function InlineUI2({ 18932 value, 18933 onChange, 18934 activeObjectAttributes, 18935 contentRef, 18936 latexToMathML 18937 }) { 18938 const [latex, setLatex] = (0, import_element55.useState)( 18939 activeObjectAttributes["data-latex"] || "" 18940 ); 18941 const [error2, setError] = (0, import_element55.useState)(null); 18942 const formRef = (0, import_element55.useRef)(null); 18943 const popoverAnchor = (0, import_rich_text16.useAnchor)({ 18944 // eslint-disable-next-line react-hooks/refs 18945 editableContentElement: contentRef.current, 18946 settings: math 18947 }); 18948 const handleLatexChange = (newLatex) => { 18949 setLatex(newLatex); 18950 let mathML = ""; 18951 if (newLatex && latexToMathML) { 18952 try { 18953 mathML = latexToMathML(newLatex, { displayMode: false }); 18954 setError(null); 18955 } catch (err) { 18956 setError( 18957 err instanceof Error ? err.message : (0, import_i18n22.__)("Could not parse the LaTeX math syntax.") 18958 ); 18959 } 18960 } else { 18961 setError(null); 18962 } 18963 if (value.start === void 0) { 18964 return; 18965 } 18966 const newReplacements = value.replacements.slice(); 18967 newReplacements[value.start] = { 18968 type: name14, 18969 attributes: { 18970 "data-latex": newLatex 18971 }, 18972 innerHTML: mathML 18973 }; 18974 onChange({ 18975 ...value, 18976 replacements: newReplacements 18977 }); 18978 }; 18979 return /* @__PURE__ */ (0, import_jsx_runtime100.jsx)( 18980 import_components6.Popover, 18981 { 18982 placement: "bottom-start", 18983 offset: 8, 18984 focusOnMount: false, 18985 anchor: popoverAnchor, 18986 onFocusOutside: () => formRef.current?.reportValidity(), 18987 className: "block-editor-format-toolbar__math-popover", 18988 children: /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)( 18989 "form", 18990 { 18991 ref: formRef, 18992 style: { minWidth: "300px", padding: "16px" }, 18993 onSubmit: (event) => event.preventDefault(), 18994 children: [ 18995 /* @__PURE__ */ (0, import_jsx_runtime100.jsx)( 18996 ValidatedInputControl, 18997 { 18998 label: (0, import_i18n22.__)("LaTeX math syntax"), 18999 value: latex, 19000 customValidity: error2 ? { type: "invalid", message: error2 } : void 0, 19001 onValueChange: handleLatexChange, 19002 placeholder: (0, import_i18n22.__)("e.g., x^2, \\frac{a}{b}, \\sqrt{x}"), 19003 autoComplete: "off", 19004 className: "block-editor-format-toolbar__math-input" 19005 } 19006 ), 19007 /* @__PURE__ */ (0, import_jsx_runtime100.jsx)( 19008 Link, 19009 { 19010 openInNewTab: true, 19011 className: "block-editor-format-toolbar__math-learn-more", 19012 href: (0, import_i18n22.__)( 19013 "https://wordpress.org/documentation/article/math-block/" 19014 ), 19015 children: (0, import_i18n22.__)("Learn more about LaTeX syntax") 19016 } 19017 ) 19018 ] 19019 } 19020 ) 19021 } 19022 ); 19023 } 19024 function Edit4({ 19025 value, 19026 onChange, 19027 onFocus, 19028 isObjectActive, 19029 activeObjectAttributes, 19030 contentRef 19031 }) { 19032 const [latexToMathML, setLatexToMathML] = (0, import_element55.useState)(); 19033 (0, import_element55.useEffect)(() => { 19034 import("@wordpress/latex-to-mathml").then((module) => { 19035 setLatexToMathML(() => module.default); 19036 }); 19037 }, []); 19038 function onClick() { 19039 let newValue; 19040 if (isObjectActive) { 19041 const latex = activeObjectAttributes["data-latex"] || ""; 19042 newValue = (0, import_rich_text16.insert)(value, latex); 19043 newValue.start = newValue.end - latex.length; 19044 } else { 19045 const selectedText = (0, import_rich_text16.getTextContent)((0, import_rich_text16.slice)(value)); 19046 let innerHTML = ""; 19047 if (selectedText && latexToMathML) { 19048 try { 19049 innerHTML = latexToMathML(selectedText, { 19050 displayMode: false 19051 }); 19052 } catch { 19053 } 19054 } 19055 newValue = (0, import_rich_text16.insertObject)(value, { 19056 type: name14, 19057 attributes: { "data-latex": selectedText }, 19058 innerHTML 19059 }); 19060 newValue.start = newValue.end - 1; 19061 } 19062 onChange(newValue); 19063 onFocus(); 19064 } 19065 return /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(import_jsx_runtime100.Fragment, { children: [ 19066 /* @__PURE__ */ (0, import_jsx_runtime100.jsx)( 19067 import_block_editor16.RichTextToolbarButton, 19068 { 19069 icon: math_default, 19070 title: title14, 19071 onClick, 19072 isActive: isObjectActive 19073 } 19074 ), 19075 isObjectActive && /* @__PURE__ */ (0, import_jsx_runtime100.jsx)( 19076 InlineUI2, 19077 { 19078 value, 19079 onChange, 19080 activeObjectAttributes, 19081 contentRef, 19082 latexToMathML 19083 } 19084 ) 19085 ] }); 19086 } 19087 var math = { 19088 name: name14, 19089 title: title14, 19090 tagName: "math", 19091 className: null, 19092 attributes: { 19093 "data-latex": "data-latex" 19094 }, 19095 contentEditable: false, 19096 edit: Edit4 19097 }; 19098 19099 // packages/format-library/build-module/non-breaking-space/index.mjs 19100 var import_i18n23 = __toESM(require_i18n(), 1); 19101 var import_rich_text17 = __toESM(require_rich_text(), 1); 19102 var import_block_editor17 = __toESM(require_block_editor(), 1); 19103 var import_components7 = __toESM(require_components(), 1); 19104 var import_jsx_runtime101 = __toESM(require_jsx_runtime(), 1); 19105 var name15 = "core/non-breaking-space"; 19106 var title15 = (0, import_i18n23.__)("Non breaking space"); 19107 var NBSP = "\xA0"; 19108 var icon = /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_components7.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_components7.Path, { d: "M4.5 9.5H6V14h12V9.5h1.5v6h-15z" }) }); 19109 function getNonBreakingSpaceRange({ text, start, end }) { 19110 if (start === void 0 || end === void 0) { 19111 return null; 19112 } 19113 const from = start === end ? Math.max(start - 1, 0) : start; 19114 const to = start === end ? end + 1 : end; 19115 return text.slice(from, to).includes(NBSP) ? [from, to] : null; 19116 } 19117 function PopoverAnchor({ 19118 contentRef 19119 }) { 19120 const popoverAnchor = (0, import_rich_text17.useAnchor)({ 19121 // eslint-disable-next-line react-hooks/refs 19122 editableContentElement: contentRef.current, 19123 settings: nonBreakingSpace 19124 }); 19125 return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_components7.Popover, { anchor: popoverAnchor, children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { style: { whiteSpace: "nowrap", padding: "4px" }, children: (0, import_i18n23.__)("Non-breaking space") }) }); 19126 } 19127 var nonBreakingSpace = { 19128 name: name15, 19129 title: title15, 19130 tagName: "span", 19131 className: "non-breaking-space", 19132 edit({ value, onChange, onFocus, contentRef }) { 19133 function addNonBreakingSpace() { 19134 onChange((0, import_rich_text17.insert)(value, NBSP)); 19135 } 19136 const range = getNonBreakingSpaceRange(value); 19137 function replaceNonBreakingSpaces() { 19138 if (!range) { 19139 return; 19140 } 19141 const [from, to] = range; 19142 const { text } = value; 19143 onChange({ 19144 ...value, 19145 text: text.slice(0, from) + text.slice(from, to).replaceAll(NBSP, " ") + text.slice(to) 19146 }); 19147 onFocus(); 19148 } 19149 const selectedValue = value.start && value.end ? value.text.slice(value.start, value.end) : null; 19150 return /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(import_jsx_runtime101.Fragment, { children: [ 19151 /* @__PURE__ */ (0, import_jsx_runtime101.jsx)( 19152 import_block_editor17.RichTextShortcut, 19153 { 19154 type: "primaryShift", 19155 character: " ", 19156 onUse: addNonBreakingSpace 19157 } 19158 ), 19159 range && /* @__PURE__ */ (0, import_jsx_runtime101.jsx)( 19160 import_block_editor17.RichTextToolbarButton, 19161 { 19162 name: "non-breaking-space", 19163 icon, 19164 title: (0, import_i18n23.__)("Replace non-breaking spaces"), 19165 onClick: replaceNonBreakingSpaces, 19166 isActive: true 19167 } 19168 ), 19169 selectedValue === NBSP && /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(PopoverAnchor, { contentRef }) 19170 ] }); 19171 }, 19172 __experimentalCreatePrepareEditableTree() { 19173 return (formats, text) => { 19174 let record = { formats, text }; 19175 let index3 = -1; 19176 do { 19177 index3 = text.indexOf(NBSP, index3 + 1); 19178 if (index3 !== -1) { 19179 record = (0, import_rich_text17.applyFormat)( 19180 record, 19181 { type: name15 }, 19182 index3, 19183 index3 + 1 19184 ); 19185 } 19186 } while (index3 !== -1); 19187 return record.formats; 19188 }; 19189 } 19190 }; 19191 19192 // packages/format-library/build-module/default-formats.mjs 19193 var default_formats_default = [ 19194 bold, 19195 code, 19196 image, 19197 italic, 19198 link, 19199 strikethrough, 19200 underline, 19201 textColor, 19202 subscript, 19203 superscript, 19204 keyboard2, 19205 unknown, 19206 language, 19207 math, 19208 nonBreakingSpace 19209 ]; 19210 19211 // packages/format-library/build-module/index.mjs 19212 default_formats_default.forEach( 19213 ({ name: name16, ...settings }) => (0, import_rich_text18.registerFormatType)(name16, settings) 19214 ); 19215 })(); 19216 /*! Bundled license information: 19217 19218 use-sync-external-store/cjs/use-sync-external-store-shim.development.js: 19219 (** 19220 * @license React 19221 * use-sync-external-store-shim.development.js 19222 * 19223 * Copyright (c) Meta Platforms, Inc. and affiliates. 19224 * 19225 * This source code is licensed under the MIT license found in the 19226 * LICENSE file in the root directory of this source tree. 19227 *) 19228 19229 use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js: 19230 (** 19231 * @license React 19232 * use-sync-external-store-shim/with-selector.development.js 19233 * 19234 * Copyright (c) Meta Platforms, Inc. and affiliates. 19235 * 19236 * This source code is licensed under the MIT license found in the 19237 * LICENSE file in the root directory of this source tree. 19238 *) 19239 */ 19240 (window.wp ||= {}).formatLibrary = wp.formatLibrary; 19241 })();
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated : Mon Oct 26 08:20:34 2026 | Cross-referenced by PHPXref |