| [ Index ] |
PHP Cross Reference of WordPress Trunk (Updated Daily) |
[Summary view] [Print] [Text view]
1 (function() { 2 var wp; 3 (wp ||= {}).commands = (() => { 4 var __create = Object.create; 5 var __defProp = Object.defineProperty; 6 var __getOwnPropDesc = Object.getOwnPropertyDescriptor; 7 var __getOwnPropNames = Object.getOwnPropertyNames; 8 var __getProtoOf = Object.getPrototypeOf; 9 var __hasOwnProp = Object.prototype.hasOwnProperty; 10 var __commonJS = (cb, mod) => function __require() { 11 return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; 12 }; 13 var __export = (target, all) => { 14 for (var name in all) 15 __defProp(target, name, { get: all[name], enumerable: true }); 16 }; 17 var __copyProps = (to, from, except, desc) => { 18 if (from && typeof from === "object" || typeof from === "function") { 19 for (let key of __getOwnPropNames(from)) 20 if (!__hasOwnProp.call(to, key) && key !== except) 21 __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); 22 } 23 return to; 24 }; 25 var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( 26 // If the importer is in node compatibility mode or this is not an ESM 27 // file that has been converted to a CommonJS file using a Babel- 28 // compatible transform (i.e. "__esModule" has not been set), then set 29 // "default" to the CommonJS "module.exports" for node compatibility. 30 isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, 31 mod 32 )); 33 var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); 34 35 // vendor-external:react 36 var require_react = __commonJS({ 37 "vendor-external:react"(exports, module) { 38 module.exports = window.React; 39 } 40 }); 41 42 // vendor-external:react/jsx-runtime 43 var require_jsx_runtime = __commonJS({ 44 "vendor-external:react/jsx-runtime"(exports, module) { 45 module.exports = window.ReactJSXRuntime; 46 } 47 }); 48 49 // vendor-external:react-dom 50 var require_react_dom = __commonJS({ 51 "vendor-external:react-dom"(exports, module) { 52 module.exports = window.ReactDOM; 53 } 54 }); 55 56 // package-external:@wordpress/data 57 var require_data = __commonJS({ 58 "package-external:@wordpress/data"(exports, module) { 59 module.exports = window.wp.data; 60 } 61 }); 62 63 // package-external:@wordpress/element 64 var require_element = __commonJS({ 65 "package-external:@wordpress/element"(exports, module) { 66 module.exports = window.wp.element; 67 } 68 }); 69 70 // package-external:@wordpress/i18n 71 var require_i18n = __commonJS({ 72 "package-external:@wordpress/i18n"(exports, module) { 73 module.exports = window.wp.i18n; 74 } 75 }); 76 77 // package-external:@wordpress/components 78 var require_components = __commonJS({ 79 "package-external:@wordpress/components"(exports, module) { 80 module.exports = window.wp.components; 81 } 82 }); 83 84 // package-external:@wordpress/keyboard-shortcuts 85 var require_keyboard_shortcuts = __commonJS({ 86 "package-external:@wordpress/keyboard-shortcuts"(exports, module) { 87 module.exports = window.wp.keyboardShortcuts; 88 } 89 }); 90 91 // package-external:@wordpress/primitives 92 var require_primitives = __commonJS({ 93 "package-external:@wordpress/primitives"(exports, module) { 94 module.exports = window.wp.primitives; 95 } 96 }); 97 98 // package-external:@wordpress/private-apis 99 var require_private_apis = __commonJS({ 100 "package-external:@wordpress/private-apis"(exports, module) { 101 module.exports = window.wp.privateApis; 102 } 103 }); 104 105 // package-external:@wordpress/preferences 106 var require_preferences = __commonJS({ 107 "package-external:@wordpress/preferences"(exports, module) { 108 module.exports = window.wp.preferences; 109 } 110 }); 111 112 // packages/commands/build-module/index.mjs 113 var index_exports = {}; 114 __export(index_exports, { 115 CommandMenu: () => CommandMenu, 116 privateApis: () => privateApis, 117 store: () => store, 118 useCommand: () => useCommand, 119 useCommandLoader: () => useCommandLoader, 120 useCommands: () => useCommands 121 }); 122 123 // node_modules/cmdk/dist/chunk-NZJY6EH4.mjs 124 var U = 1; 125 var Y = 0.9; 126 var H = 0.8; 127 var J = 0.17; 128 var p = 0.1; 129 var u = 0.999; 130 var $ = 0.9999; 131 var k = 0.99; 132 var m = /[\\\/_+.#"@\[\(\{&]/; 133 var B = /[\\\/_+.#"@\[\(\{&]/g; 134 var K = /[\s-]/; 135 var X = /[\s-]/g; 136 function G(_, C, h, P2, A, f, O) { 137 if (f === C.length) return A === _.length ? U : k; 138 var T2 = `$A},$f}`; 139 if (O[T2] !== void 0) return O[T2]; 140 for (var L2 = P2.charAt(f), c = h.indexOf(L2, A), S = 0, E, N2, R, M; c >= 0; ) E = G(_, C, h, P2, c + 1, f + 1, O), E > S && (c === A ? E *= U : m.test(_.charAt(c - 1)) ? (E *= H, R = _.slice(A, c - 1).match(B), R && A > 0 && (E *= Math.pow(u, R.length))) : K.test(_.charAt(c - 1)) ? (E *= Y, M = _.slice(A, c - 1).match(X), M && A > 0 && (E *= Math.pow(u, M.length))) : (E *= J, A > 0 && (E *= Math.pow(u, c - A))), _.charAt(c) !== C.charAt(f) && (E *= $)), (E < p && h.charAt(c - 1) === P2.charAt(f + 1) || P2.charAt(f + 1) === P2.charAt(f) && h.charAt(c - 1) !== P2.charAt(f)) && (N2 = G(_, C, h, P2, c + 1, f + 2, O), N2 * p > E && (E = N2 * p)), E > S && (S = E), c = h.indexOf(L2, c + 1); 141 return O[T2] = S, S; 142 } 143 function D(_) { 144 return _.toLowerCase().replace(X, " "); 145 } 146 function W(_, C, h) { 147 return _ = h && h.length > 0 ? `$_ + " " + h.join(" ")}` : _, G(_, C, D(_), D(C), 0, 0, {}); 148 } 149 150 // node_modules/@radix-ui/react-dialog/dist/index.mjs 151 var React24 = __toESM(require_react(), 1); 152 153 // node_modules/@radix-ui/primitive/dist/index.mjs 154 var canUseDOM = !!(typeof window !== "undefined" && window.document && window.document.createElement); 155 function composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) { 156 return function handleEvent(event) { 157 originalEventHandler?.(event); 158 if (checkForDefaultPrevented === false || !event.defaultPrevented) { 159 return ourEventHandler?.(event); 160 } 161 }; 162 } 163 164 // node_modules/@radix-ui/react-compose-refs/dist/index.mjs 165 var React = __toESM(require_react(), 1); 166 function setRef(ref, value) { 167 if (typeof ref === "function") { 168 return ref(value); 169 } else if (ref !== null && ref !== void 0) { 170 ref.current = value; 171 } 172 } 173 function composeRefs(...refs) { 174 return (node) => { 175 let hasCleanup = false; 176 const cleanups = refs.map((ref) => { 177 const cleanup = setRef(ref, node); 178 if (!hasCleanup && typeof cleanup == "function") { 179 hasCleanup = true; 180 } 181 return cleanup; 182 }); 183 if (hasCleanup) { 184 return () => { 185 for (let i = 0; i < cleanups.length; i++) { 186 const cleanup = cleanups[i]; 187 if (typeof cleanup == "function") { 188 cleanup(); 189 } else { 190 setRef(refs[i], null); 191 } 192 } 193 }; 194 } 195 }; 196 } 197 function useComposedRefs(...refs) { 198 return React.useCallback(composeRefs(...refs), refs); 199 } 200 201 // node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-context/dist/index.mjs 202 var React2 = __toESM(require_react(), 1); 203 var import_jsx_runtime = __toESM(require_jsx_runtime(), 1); 204 function createContext2(rootComponentName, defaultContext) { 205 const Context = React2.createContext(defaultContext); 206 const Provider = (props) => { 207 const { children, ...context2 } = props; 208 const value = React2.useMemo(() => context2, Object.values(context2)); 209 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Context.Provider, { value, children }); 210 }; 211 Provider.displayName = rootComponentName + "Provider"; 212 function useContext22(consumerName) { 213 const context2 = React2.useContext(Context); 214 if (context2) return context2; 215 if (defaultContext !== void 0) return defaultContext; 216 throw new Error(`\`$consumerName}\` must be used within \`$rootComponentName}\``); 217 } 218 return [Provider, useContext22]; 219 } 220 function createContextScope(scopeName, createContextScopeDeps = []) { 221 let defaultContexts = []; 222 function createContext32(rootComponentName, defaultContext) { 223 const BaseContext = React2.createContext(defaultContext); 224 const index = defaultContexts.length; 225 defaultContexts = [...defaultContexts, defaultContext]; 226 const Provider = (props) => { 227 const { scope, children, ...context2 } = props; 228 const Context = scope?.[scopeName]?.[index] || BaseContext; 229 const value = React2.useMemo(() => context2, Object.values(context2)); 230 return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Context.Provider, { value, children }); 231 }; 232 Provider.displayName = rootComponentName + "Provider"; 233 function useContext22(consumerName, scope) { 234 const Context = scope?.[scopeName]?.[index] || BaseContext; 235 const context2 = React2.useContext(Context); 236 if (context2) return context2; 237 if (defaultContext !== void 0) return defaultContext; 238 throw new Error(`\`$consumerName}\` must be used within \`$rootComponentName}\``); 239 } 240 return [Provider, useContext22]; 241 } 242 const createScope = () => { 243 const scopeContexts = defaultContexts.map((defaultContext) => { 244 return React2.createContext(defaultContext); 245 }); 246 return function useScope(scope) { 247 const contexts = scope?.[scopeName] || scopeContexts; 248 return React2.useMemo( 249 () => ({ [`__scope$scopeName}`]: { ...scope, [scopeName]: contexts } }), 250 [scope, contexts] 251 ); 252 }; 253 }; 254 createScope.scopeName = scopeName; 255 return [createContext32, composeContextScopes(createScope, ...createContextScopeDeps)]; 256 } 257 function composeContextScopes(...scopes) { 258 const baseScope = scopes[0]; 259 if (scopes.length === 1) return baseScope; 260 const createScope = () => { 261 const scopeHooks = scopes.map((createScope2) => ({ 262 useScope: createScope2(), 263 scopeName: createScope2.scopeName 264 })); 265 return function useComposedScopes(overrideScopes) { 266 const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => { 267 const scopeProps = useScope(overrideScopes); 268 const currentScope = scopeProps[`__scope$scopeName}`]; 269 return { ...nextScopes2, ...currentScope }; 270 }, {}); 271 return React2.useMemo(() => ({ [`__scope$baseScope.scopeName}`]: nextScopes }), [nextScopes]); 272 }; 273 }; 274 createScope.scopeName = baseScope.scopeName; 275 return createScope; 276 } 277 278 // node_modules/@radix-ui/react-id/dist/index.mjs 279 var React4 = __toESM(require_react(), 1); 280 281 // node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs 282 var React3 = __toESM(require_react(), 1); 283 var useLayoutEffect2 = globalThis?.document ? React3.useLayoutEffect : () => { 284 }; 285 286 // node_modules/@radix-ui/react-id/dist/index.mjs 287 var useReactId = React4[" useId ".trim().toString()] || (() => void 0); 288 var count = 0; 289 function useId(deterministicId) { 290 const [id, setId] = React4.useState(useReactId()); 291 useLayoutEffect2(() => { 292 if (!deterministicId) setId((reactId) => reactId ?? String(count++)); 293 }, [deterministicId]); 294 return deterministicId || (id ? `radix-$id}` : ""); 295 } 296 297 // node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs 298 var React5 = __toESM(require_react(), 1); 299 var React22 = __toESM(require_react(), 1); 300 var useInsertionEffect = React5[" useInsertionEffect ".trim().toString()] || useLayoutEffect2; 301 function useControllableState({ 302 prop, 303 defaultProp, 304 onChange = () => { 305 }, 306 caller 307 }) { 308 const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({ 309 defaultProp, 310 onChange 311 }); 312 const isControlled = prop !== void 0; 313 const value = isControlled ? prop : uncontrolledProp; 314 if (true) { 315 const isControlledRef = React5.useRef(prop !== void 0); 316 React5.useEffect(() => { 317 const wasControlled = isControlledRef.current; 318 if (wasControlled !== isControlled) { 319 const from = wasControlled ? "controlled" : "uncontrolled"; 320 const to = isControlled ? "controlled" : "uncontrolled"; 321 console.warn( 322 `$caller} is changing from $from} to $to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.` 323 ); 324 } 325 isControlledRef.current = isControlled; 326 }, [isControlled, caller]); 327 } 328 const setValue = React5.useCallback( 329 (nextValue) => { 330 if (isControlled) { 331 const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue; 332 if (value2 !== prop) { 333 onChangeRef.current?.(value2); 334 } 335 } else { 336 setUncontrolledProp(nextValue); 337 } 338 }, 339 [isControlled, prop, setUncontrolledProp, onChangeRef] 340 ); 341 return [value, setValue]; 342 } 343 function useUncontrolledState({ 344 defaultProp, 345 onChange 346 }) { 347 const [value, setValue] = React5.useState(defaultProp); 348 const prevValueRef = React5.useRef(value); 349 const onChangeRef = React5.useRef(onChange); 350 useInsertionEffect(() => { 351 onChangeRef.current = onChange; 352 }, [onChange]); 353 React5.useEffect(() => { 354 if (prevValueRef.current !== value) { 355 onChangeRef.current?.(value); 356 prevValueRef.current = value; 357 } 358 }, [value, prevValueRef]); 359 return [value, setValue, onChangeRef]; 360 } 361 function isFunction(value) { 362 return typeof value === "function"; 363 } 364 365 // node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs 366 var React10 = __toESM(require_react(), 1); 367 368 // node_modules/@radix-ui/react-primitive/dist/index.mjs 369 var React7 = __toESM(require_react(), 1); 370 var ReactDOM = __toESM(require_react_dom(), 1); 371 372 // node_modules/@radix-ui/react-slot/dist/index.mjs 373 var React6 = __toESM(require_react(), 1); 374 var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1); 375 // @__NO_SIDE_EFFECTS__ 376 function createSlot(ownerName) { 377 const SlotClone = /* @__PURE__ */ createSlotClone(ownerName); 378 const Slot2 = React6.forwardRef((props, forwardedRef) => { 379 const { children, ...slotProps } = props; 380 const childrenArray = React6.Children.toArray(children); 381 const slottable = childrenArray.find(isSlottable); 382 if (slottable) { 383 const newElement = slottable.props.children; 384 const newChildren = childrenArray.map((child) => { 385 if (child === slottable) { 386 if (React6.Children.count(newElement) > 1) return React6.Children.only(null); 387 return React6.isValidElement(newElement) ? newElement.props.children : null; 388 } else { 389 return child; 390 } 391 }); 392 return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children: React6.isValidElement(newElement) ? React6.cloneElement(newElement, void 0, newChildren) : null }); 393 } 394 return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children }); 395 }); 396 Slot2.displayName = `$ownerName}.Slot`; 397 return Slot2; 398 } 399 // @__NO_SIDE_EFFECTS__ 400 function createSlotClone(ownerName) { 401 const SlotClone = React6.forwardRef((props, forwardedRef) => { 402 const { children, ...slotProps } = props; 403 if (React6.isValidElement(children)) { 404 const childrenRef = getElementRef(children); 405 const props2 = mergeProps(slotProps, children.props); 406 if (children.type !== React6.Fragment) { 407 props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef; 408 } 409 return React6.cloneElement(children, props2); 410 } 411 return React6.Children.count(children) > 1 ? React6.Children.only(null) : null; 412 }); 413 SlotClone.displayName = `$ownerName}.SlotClone`; 414 return SlotClone; 415 } 416 var SLOTTABLE_IDENTIFIER = /* @__PURE__ */ Symbol("radix.slottable"); 417 function isSlottable(child) { 418 return React6.isValidElement(child) && typeof child.type === "function" && "__radixId" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER; 419 } 420 function mergeProps(slotProps, childProps) { 421 const overrideProps = { ...childProps }; 422 for (const propName in childProps) { 423 const slotPropValue = slotProps[propName]; 424 const childPropValue = childProps[propName]; 425 const isHandler = /^on[A-Z]/.test(propName); 426 if (isHandler) { 427 if (slotPropValue && childPropValue) { 428 overrideProps[propName] = (...args) => { 429 const result = childPropValue(...args); 430 slotPropValue(...args); 431 return result; 432 }; 433 } else if (slotPropValue) { 434 overrideProps[propName] = slotPropValue; 435 } 436 } else if (propName === "style") { 437 overrideProps[propName] = { ...slotPropValue, ...childPropValue }; 438 } else if (propName === "className") { 439 overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(" "); 440 } 441 } 442 return { ...slotProps, ...overrideProps }; 443 } 444 function getElementRef(element) { 445 let getter = Object.getOwnPropertyDescriptor(element.props, "ref")?.get; 446 let mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning; 447 if (mayWarn) { 448 return element.ref; 449 } 450 getter = Object.getOwnPropertyDescriptor(element, "ref")?.get; 451 mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning; 452 if (mayWarn) { 453 return element.props.ref; 454 } 455 return element.props.ref || element.ref; 456 } 457 458 // node_modules/@radix-ui/react-primitive/dist/index.mjs 459 var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1); 460 var NODES = [ 461 "a", 462 "button", 463 "div", 464 "form", 465 "h2", 466 "h3", 467 "img", 468 "input", 469 "label", 470 "li", 471 "nav", 472 "ol", 473 "p", 474 "select", 475 "span", 476 "svg", 477 "ul" 478 ]; 479 var Primitive = NODES.reduce((primitive, node) => { 480 const Slot2 = createSlot(`Primitive.$node}`); 481 const Node2 = React7.forwardRef((props, forwardedRef) => { 482 const { asChild, ...primitiveProps } = props; 483 const Comp = asChild ? Slot2 : node; 484 if (typeof window !== "undefined") { 485 window[/* @__PURE__ */ Symbol.for("radix-ui")] = true; 486 } 487 return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Comp, { ...primitiveProps, ref: forwardedRef }); 488 }); 489 Node2.displayName = `Primitive.$node}`; 490 return { ...primitive, [node]: Node2 }; 491 }, {}); 492 function dispatchDiscreteCustomEvent(target, event) { 493 if (target) ReactDOM.flushSync(() => target.dispatchEvent(event)); 494 } 495 496 // node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs 497 var React8 = __toESM(require_react(), 1); 498 function useCallbackRef(callback) { 499 const callbackRef = React8.useRef(callback); 500 React8.useEffect(() => { 501 callbackRef.current = callback; 502 }); 503 return React8.useMemo(() => (...args) => callbackRef.current?.(...args), []); 504 } 505 506 // node_modules/@radix-ui/react-dismissable-layer/node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs 507 var React9 = __toESM(require_react(), 1); 508 function useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) { 509 const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp); 510 React9.useEffect(() => { 511 const handleKeyDown = (event) => { 512 if (event.key === "Escape") { 513 onEscapeKeyDown(event); 514 } 515 }; 516 ownerDocument.addEventListener("keydown", handleKeyDown, { capture: true }); 517 return () => ownerDocument.removeEventListener("keydown", handleKeyDown, { capture: true }); 518 }, [onEscapeKeyDown, ownerDocument]); 519 } 520 521 // node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs 522 var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1); 523 var DISMISSABLE_LAYER_NAME = "DismissableLayer"; 524 var CONTEXT_UPDATE = "dismissableLayer.update"; 525 var POINTER_DOWN_OUTSIDE = "dismissableLayer.pointerDownOutside"; 526 var FOCUS_OUTSIDE = "dismissableLayer.focusOutside"; 527 var originalBodyPointerEvents; 528 var DismissableLayerContext = React10.createContext({ 529 layers: /* @__PURE__ */ new Set(), 530 layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(), 531 branches: /* @__PURE__ */ new Set() 532 }); 533 var DismissableLayer = React10.forwardRef( 534 (props, forwardedRef) => { 535 const { 536 disableOutsidePointerEvents = false, 537 onEscapeKeyDown, 538 onPointerDownOutside, 539 onFocusOutside, 540 onInteractOutside, 541 onDismiss, 542 ...layerProps 543 } = props; 544 const context2 = React10.useContext(DismissableLayerContext); 545 const [node, setNode] = React10.useState(null); 546 const ownerDocument = node?.ownerDocument ?? globalThis?.document; 547 const [, force] = React10.useState({}); 548 const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2)); 549 const layers = Array.from(context2.layers); 550 const [highestLayerWithOutsidePointerEventsDisabled] = [...context2.layersWithOutsidePointerEventsDisabled].slice(-1); 551 const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled); 552 const index = node ? layers.indexOf(node) : -1; 553 const isBodyPointerEventsDisabled = context2.layersWithOutsidePointerEventsDisabled.size > 0; 554 const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex; 555 const pointerDownOutside = usePointerDownOutside((event) => { 556 const target = event.target; 557 const isPointerDownOnBranch = [...context2.branches].some((branch) => branch.contains(target)); 558 if (!isPointerEventsEnabled || isPointerDownOnBranch) return; 559 onPointerDownOutside?.(event); 560 onInteractOutside?.(event); 561 if (!event.defaultPrevented) onDismiss?.(); 562 }, ownerDocument); 563 const focusOutside = useFocusOutside((event) => { 564 const target = event.target; 565 const isFocusInBranch = [...context2.branches].some((branch) => branch.contains(target)); 566 if (isFocusInBranch) return; 567 onFocusOutside?.(event); 568 onInteractOutside?.(event); 569 if (!event.defaultPrevented) onDismiss?.(); 570 }, ownerDocument); 571 useEscapeKeydown((event) => { 572 const isHighestLayer = index === context2.layers.size - 1; 573 if (!isHighestLayer) return; 574 onEscapeKeyDown?.(event); 575 if (!event.defaultPrevented && onDismiss) { 576 event.preventDefault(); 577 onDismiss(); 578 } 579 }, ownerDocument); 580 React10.useEffect(() => { 581 if (!node) return; 582 if (disableOutsidePointerEvents) { 583 if (context2.layersWithOutsidePointerEventsDisabled.size === 0) { 584 originalBodyPointerEvents = ownerDocument.body.style.pointerEvents; 585 ownerDocument.body.style.pointerEvents = "none"; 586 } 587 context2.layersWithOutsidePointerEventsDisabled.add(node); 588 } 589 context2.layers.add(node); 590 dispatchUpdate(); 591 return () => { 592 if (disableOutsidePointerEvents && context2.layersWithOutsidePointerEventsDisabled.size === 1) { 593 ownerDocument.body.style.pointerEvents = originalBodyPointerEvents; 594 } 595 }; 596 }, [node, ownerDocument, disableOutsidePointerEvents, context2]); 597 React10.useEffect(() => { 598 return () => { 599 if (!node) return; 600 context2.layers.delete(node); 601 context2.layersWithOutsidePointerEventsDisabled.delete(node); 602 dispatchUpdate(); 603 }; 604 }, [node, context2]); 605 React10.useEffect(() => { 606 const handleUpdate = () => force({}); 607 document.addEventListener(CONTEXT_UPDATE, handleUpdate); 608 return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate); 609 }, []); 610 return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)( 611 Primitive.div, 612 { 613 ...layerProps, 614 ref: composedRefs, 615 style: { 616 pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? "auto" : "none" : void 0, 617 ...props.style 618 }, 619 onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture), 620 onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture), 621 onPointerDownCapture: composeEventHandlers( 622 props.onPointerDownCapture, 623 pointerDownOutside.onPointerDownCapture 624 ) 625 } 626 ); 627 } 628 ); 629 DismissableLayer.displayName = DISMISSABLE_LAYER_NAME; 630 var BRANCH_NAME = "DismissableLayerBranch"; 631 var DismissableLayerBranch = React10.forwardRef((props, forwardedRef) => { 632 const context2 = React10.useContext(DismissableLayerContext); 633 const ref = React10.useRef(null); 634 const composedRefs = useComposedRefs(forwardedRef, ref); 635 React10.useEffect(() => { 636 const node = ref.current; 637 if (node) { 638 context2.branches.add(node); 639 return () => { 640 context2.branches.delete(node); 641 }; 642 } 643 }, [context2.branches]); 644 return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Primitive.div, { ...props, ref: composedRefs }); 645 }); 646 DismissableLayerBranch.displayName = BRANCH_NAME; 647 function usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) { 648 const handlePointerDownOutside = useCallbackRef(onPointerDownOutside); 649 const isPointerInsideReactTreeRef = React10.useRef(false); 650 const handleClickRef = React10.useRef(() => { 651 }); 652 React10.useEffect(() => { 653 const handlePointerDown = (event) => { 654 if (event.target && !isPointerInsideReactTreeRef.current) { 655 let handleAndDispatchPointerDownOutsideEvent2 = function() { 656 handleAndDispatchCustomEvent( 657 POINTER_DOWN_OUTSIDE, 658 handlePointerDownOutside, 659 eventDetail, 660 { discrete: true } 661 ); 662 }; 663 var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2; 664 const eventDetail = { originalEvent: event }; 665 if (event.pointerType === "touch") { 666 ownerDocument.removeEventListener("click", handleClickRef.current); 667 handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2; 668 ownerDocument.addEventListener("click", handleClickRef.current, { once: true }); 669 } else { 670 handleAndDispatchPointerDownOutsideEvent2(); 671 } 672 } else { 673 ownerDocument.removeEventListener("click", handleClickRef.current); 674 } 675 isPointerInsideReactTreeRef.current = false; 676 }; 677 const timerId = window.setTimeout(() => { 678 ownerDocument.addEventListener("pointerdown", handlePointerDown); 679 }, 0); 680 return () => { 681 window.clearTimeout(timerId); 682 ownerDocument.removeEventListener("pointerdown", handlePointerDown); 683 ownerDocument.removeEventListener("click", handleClickRef.current); 684 }; 685 }, [ownerDocument, handlePointerDownOutside]); 686 return { 687 // ensures we check React component tree (not just DOM tree) 688 onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true 689 }; 690 } 691 function useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) { 692 const handleFocusOutside = useCallbackRef(onFocusOutside); 693 const isFocusInsideReactTreeRef = React10.useRef(false); 694 React10.useEffect(() => { 695 const handleFocus = (event) => { 696 if (event.target && !isFocusInsideReactTreeRef.current) { 697 const eventDetail = { originalEvent: event }; 698 handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, { 699 discrete: false 700 }); 701 } 702 }; 703 ownerDocument.addEventListener("focusin", handleFocus); 704 return () => ownerDocument.removeEventListener("focusin", handleFocus); 705 }, [ownerDocument, handleFocusOutside]); 706 return { 707 onFocusCapture: () => isFocusInsideReactTreeRef.current = true, 708 onBlurCapture: () => isFocusInsideReactTreeRef.current = false 709 }; 710 } 711 function dispatchUpdate() { 712 const event = new CustomEvent(CONTEXT_UPDATE); 713 document.dispatchEvent(event); 714 } 715 function handleAndDispatchCustomEvent(name, handler, detail, { discrete }) { 716 const target = detail.originalEvent.target; 717 const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail }); 718 if (handler) target.addEventListener(name, handler, { once: true }); 719 if (discrete) { 720 dispatchDiscreteCustomEvent(target, event); 721 } else { 722 target.dispatchEvent(event); 723 } 724 } 725 726 // node_modules/@radix-ui/react-focus-scope/dist/index.mjs 727 var React11 = __toESM(require_react(), 1); 728 var import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1); 729 var AUTOFOCUS_ON_MOUNT = "focusScope.autoFocusOnMount"; 730 var AUTOFOCUS_ON_UNMOUNT = "focusScope.autoFocusOnUnmount"; 731 var EVENT_OPTIONS = { bubbles: false, cancelable: true }; 732 var FOCUS_SCOPE_NAME = "FocusScope"; 733 var FocusScope = React11.forwardRef((props, forwardedRef) => { 734 const { 735 loop = false, 736 trapped = false, 737 onMountAutoFocus: onMountAutoFocusProp, 738 onUnmountAutoFocus: onUnmountAutoFocusProp, 739 ...scopeProps 740 } = props; 741 const [container, setContainer] = React11.useState(null); 742 const onMountAutoFocus = useCallbackRef(onMountAutoFocusProp); 743 const onUnmountAutoFocus = useCallbackRef(onUnmountAutoFocusProp); 744 const lastFocusedElementRef = React11.useRef(null); 745 const composedRefs = useComposedRefs(forwardedRef, (node) => setContainer(node)); 746 const focusScope = React11.useRef({ 747 paused: false, 748 pause() { 749 this.paused = true; 750 }, 751 resume() { 752 this.paused = false; 753 } 754 }).current; 755 React11.useEffect(() => { 756 if (trapped) { 757 let handleFocusIn2 = function(event) { 758 if (focusScope.paused || !container) return; 759 const target = event.target; 760 if (container.contains(target)) { 761 lastFocusedElementRef.current = target; 762 } else { 763 focus(lastFocusedElementRef.current, { select: true }); 764 } 765 }, handleFocusOut2 = function(event) { 766 if (focusScope.paused || !container) return; 767 const relatedTarget = event.relatedTarget; 768 if (relatedTarget === null) return; 769 if (!container.contains(relatedTarget)) { 770 focus(lastFocusedElementRef.current, { select: true }); 771 } 772 }, handleMutations2 = function(mutations) { 773 const focusedElement = document.activeElement; 774 if (focusedElement !== document.body) return; 775 for (const mutation of mutations) { 776 if (mutation.removedNodes.length > 0) focus(container); 777 } 778 }; 779 var handleFocusIn = handleFocusIn2, handleFocusOut = handleFocusOut2, handleMutations = handleMutations2; 780 document.addEventListener("focusin", handleFocusIn2); 781 document.addEventListener("focusout", handleFocusOut2); 782 const mutationObserver = new MutationObserver(handleMutations2); 783 if (container) mutationObserver.observe(container, { childList: true, subtree: true }); 784 return () => { 785 document.removeEventListener("focusin", handleFocusIn2); 786 document.removeEventListener("focusout", handleFocusOut2); 787 mutationObserver.disconnect(); 788 }; 789 } 790 }, [trapped, container, focusScope.paused]); 791 React11.useEffect(() => { 792 if (container) { 793 focusScopesStack.add(focusScope); 794 const previouslyFocusedElement = document.activeElement; 795 const hasFocusedCandidate = container.contains(previouslyFocusedElement); 796 if (!hasFocusedCandidate) { 797 const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS); 798 container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus); 799 container.dispatchEvent(mountEvent); 800 if (!mountEvent.defaultPrevented) { 801 focusFirst(removeLinks(getTabbableCandidates(container)), { select: true }); 802 if (document.activeElement === previouslyFocusedElement) { 803 focus(container); 804 } 805 } 806 } 807 return () => { 808 container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus); 809 setTimeout(() => { 810 const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS); 811 container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus); 812 container.dispatchEvent(unmountEvent); 813 if (!unmountEvent.defaultPrevented) { 814 focus(previouslyFocusedElement ?? document.body, { select: true }); 815 } 816 container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus); 817 focusScopesStack.remove(focusScope); 818 }, 0); 819 }; 820 } 821 }, [container, onMountAutoFocus, onUnmountAutoFocus, focusScope]); 822 const handleKeyDown = React11.useCallback( 823 (event) => { 824 if (!loop && !trapped) return; 825 if (focusScope.paused) return; 826 const isTabKey = event.key === "Tab" && !event.altKey && !event.ctrlKey && !event.metaKey; 827 const focusedElement = document.activeElement; 828 if (isTabKey && focusedElement) { 829 const container2 = event.currentTarget; 830 const [first, last] = getTabbableEdges(container2); 831 const hasTabbableElementsInside = first && last; 832 if (!hasTabbableElementsInside) { 833 if (focusedElement === container2) event.preventDefault(); 834 } else { 835 if (!event.shiftKey && focusedElement === last) { 836 event.preventDefault(); 837 if (loop) focus(first, { select: true }); 838 } else if (event.shiftKey && focusedElement === first) { 839 event.preventDefault(); 840 if (loop) focus(last, { select: true }); 841 } 842 } 843 } 844 }, 845 [loop, trapped, focusScope.paused] 846 ); 847 return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Primitive.div, { tabIndex: -1, ...scopeProps, ref: composedRefs, onKeyDown: handleKeyDown }); 848 }); 849 FocusScope.displayName = FOCUS_SCOPE_NAME; 850 function focusFirst(candidates, { select = false } = {}) { 851 const previouslyFocusedElement = document.activeElement; 852 for (const candidate of candidates) { 853 focus(candidate, { select }); 854 if (document.activeElement !== previouslyFocusedElement) return; 855 } 856 } 857 function getTabbableEdges(container) { 858 const candidates = getTabbableCandidates(container); 859 const first = findVisible(candidates, container); 860 const last = findVisible(candidates.reverse(), container); 861 return [first, last]; 862 } 863 function getTabbableCandidates(container) { 864 const nodes = []; 865 const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, { 866 acceptNode: (node) => { 867 const isHiddenInput = node.tagName === "INPUT" && node.type === "hidden"; 868 if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP; 869 return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP; 870 } 871 }); 872 while (walker.nextNode()) nodes.push(walker.currentNode); 873 return nodes; 874 } 875 function findVisible(elements, container) { 876 for (const element of elements) { 877 if (!isHidden(element, { upTo: container })) return element; 878 } 879 } 880 function isHidden(node, { upTo }) { 881 if (getComputedStyle(node).visibility === "hidden") return true; 882 while (node) { 883 if (upTo !== void 0 && node === upTo) return false; 884 if (getComputedStyle(node).display === "none") return true; 885 node = node.parentElement; 886 } 887 return false; 888 } 889 function isSelectableInput(element) { 890 return element instanceof HTMLInputElement && "select" in element; 891 } 892 function focus(element, { select = false } = {}) { 893 if (element && element.focus) { 894 const previouslyFocusedElement = document.activeElement; 895 element.focus({ preventScroll: true }); 896 if (element !== previouslyFocusedElement && isSelectableInput(element) && select) 897 element.select(); 898 } 899 } 900 var focusScopesStack = createFocusScopesStack(); 901 function createFocusScopesStack() { 902 let stack = []; 903 return { 904 add(focusScope) { 905 const activeFocusScope = stack[0]; 906 if (focusScope !== activeFocusScope) { 907 activeFocusScope?.pause(); 908 } 909 stack = arrayRemove(stack, focusScope); 910 stack.unshift(focusScope); 911 }, 912 remove(focusScope) { 913 stack = arrayRemove(stack, focusScope); 914 stack[0]?.resume(); 915 } 916 }; 917 } 918 function arrayRemove(array, item) { 919 const updatedArray = [...array]; 920 const index = updatedArray.indexOf(item); 921 if (index !== -1) { 922 updatedArray.splice(index, 1); 923 } 924 return updatedArray; 925 } 926 function removeLinks(items) { 927 return items.filter((item) => item.tagName !== "A"); 928 } 929 930 // node_modules/@radix-ui/react-portal/dist/index.mjs 931 var React12 = __toESM(require_react(), 1); 932 var import_react_dom = __toESM(require_react_dom(), 1); 933 var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1); 934 var PORTAL_NAME = "Portal"; 935 var Portal = React12.forwardRef((props, forwardedRef) => { 936 const { container: containerProp, ...portalProps } = props; 937 const [mounted, setMounted] = React12.useState(false); 938 useLayoutEffect2(() => setMounted(true), []); 939 const container = containerProp || mounted && globalThis?.document?.body; 940 return container ? import_react_dom.default.createPortal(/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null; 941 }); 942 Portal.displayName = PORTAL_NAME; 943 944 // node_modules/@radix-ui/react-presence/dist/index.mjs 945 var React23 = __toESM(require_react(), 1); 946 var React13 = __toESM(require_react(), 1); 947 function useStateMachine(initialState, machine) { 948 return React13.useReducer((state, event) => { 949 const nextState = machine[state][event]; 950 return nextState ?? state; 951 }, initialState); 952 } 953 var Presence = (props) => { 954 const { present, children } = props; 955 const presence = usePresence(present); 956 const child = typeof children === "function" ? children({ present: presence.isPresent }) : React23.Children.only(children); 957 const ref = useComposedRefs(presence.ref, getElementRef2(child)); 958 const forceMount = typeof children === "function"; 959 return forceMount || presence.isPresent ? React23.cloneElement(child, { ref }) : null; 960 }; 961 Presence.displayName = "Presence"; 962 function usePresence(present) { 963 const [node, setNode] = React23.useState(); 964 const stylesRef = React23.useRef(null); 965 const prevPresentRef = React23.useRef(present); 966 const prevAnimationNameRef = React23.useRef("none"); 967 const initialState = present ? "mounted" : "unmounted"; 968 const [state, send] = useStateMachine(initialState, { 969 mounted: { 970 UNMOUNT: "unmounted", 971 ANIMATION_OUT: "unmountSuspended" 972 }, 973 unmountSuspended: { 974 MOUNT: "mounted", 975 ANIMATION_END: "unmounted" 976 }, 977 unmounted: { 978 MOUNT: "mounted" 979 } 980 }); 981 React23.useEffect(() => { 982 const currentAnimationName = getAnimationName(stylesRef.current); 983 prevAnimationNameRef.current = state === "mounted" ? currentAnimationName : "none"; 984 }, [state]); 985 useLayoutEffect2(() => { 986 const styles = stylesRef.current; 987 const wasPresent = prevPresentRef.current; 988 const hasPresentChanged = wasPresent !== present; 989 if (hasPresentChanged) { 990 const prevAnimationName = prevAnimationNameRef.current; 991 const currentAnimationName = getAnimationName(styles); 992 if (present) { 993 send("MOUNT"); 994 } else if (currentAnimationName === "none" || styles?.display === "none") { 995 send("UNMOUNT"); 996 } else { 997 const isAnimating = prevAnimationName !== currentAnimationName; 998 if (wasPresent && isAnimating) { 999 send("ANIMATION_OUT"); 1000 } else { 1001 send("UNMOUNT"); 1002 } 1003 } 1004 prevPresentRef.current = present; 1005 } 1006 }, [present, send]); 1007 useLayoutEffect2(() => { 1008 if (node) { 1009 let timeoutId; 1010 const ownerWindow = node.ownerDocument.defaultView ?? window; 1011 const handleAnimationEnd = (event) => { 1012 const currentAnimationName = getAnimationName(stylesRef.current); 1013 const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName)); 1014 if (event.target === node && isCurrentAnimation) { 1015 send("ANIMATION_END"); 1016 if (!prevPresentRef.current) { 1017 const currentFillMode = node.style.animationFillMode; 1018 node.style.animationFillMode = "forwards"; 1019 timeoutId = ownerWindow.setTimeout(() => { 1020 if (node.style.animationFillMode === "forwards") { 1021 node.style.animationFillMode = currentFillMode; 1022 } 1023 }); 1024 } 1025 } 1026 }; 1027 const handleAnimationStart = (event) => { 1028 if (event.target === node) { 1029 prevAnimationNameRef.current = getAnimationName(stylesRef.current); 1030 } 1031 }; 1032 node.addEventListener("animationstart", handleAnimationStart); 1033 node.addEventListener("animationcancel", handleAnimationEnd); 1034 node.addEventListener("animationend", handleAnimationEnd); 1035 return () => { 1036 ownerWindow.clearTimeout(timeoutId); 1037 node.removeEventListener("animationstart", handleAnimationStart); 1038 node.removeEventListener("animationcancel", handleAnimationEnd); 1039 node.removeEventListener("animationend", handleAnimationEnd); 1040 }; 1041 } else { 1042 send("ANIMATION_END"); 1043 } 1044 }, [node, send]); 1045 return { 1046 isPresent: ["mounted", "unmountSuspended"].includes(state), 1047 ref: React23.useCallback((node2) => { 1048 stylesRef.current = node2 ? getComputedStyle(node2) : null; 1049 setNode(node2); 1050 }, []) 1051 }; 1052 } 1053 function getAnimationName(styles) { 1054 return styles?.animationName || "none"; 1055 } 1056 function getElementRef2(element) { 1057 let getter = Object.getOwnPropertyDescriptor(element.props, "ref")?.get; 1058 let mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning; 1059 if (mayWarn) { 1060 return element.ref; 1061 } 1062 getter = Object.getOwnPropertyDescriptor(element, "ref")?.get; 1063 mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning; 1064 if (mayWarn) { 1065 return element.props.ref; 1066 } 1067 return element.props.ref || element.ref; 1068 } 1069 1070 // node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-focus-guards/dist/index.mjs 1071 var React14 = __toESM(require_react(), 1); 1072 var count2 = 0; 1073 function useFocusGuards() { 1074 React14.useEffect(() => { 1075 const edgeGuards = document.querySelectorAll("[data-radix-focus-guard]"); 1076 document.body.insertAdjacentElement("afterbegin", edgeGuards[0] ?? createFocusGuard()); 1077 document.body.insertAdjacentElement("beforeend", edgeGuards[1] ?? createFocusGuard()); 1078 count2++; 1079 return () => { 1080 if (count2 === 1) { 1081 document.querySelectorAll("[data-radix-focus-guard]").forEach((node) => node.remove()); 1082 } 1083 count2--; 1084 }; 1085 }, []); 1086 } 1087 function createFocusGuard() { 1088 const element = document.createElement("span"); 1089 element.setAttribute("data-radix-focus-guard", ""); 1090 element.tabIndex = 0; 1091 element.style.outline = "none"; 1092 element.style.opacity = "0"; 1093 element.style.position = "fixed"; 1094 element.style.pointerEvents = "none"; 1095 return element; 1096 } 1097 1098 // node_modules/tslib/tslib.es6.mjs 1099 var __assign = function() { 1100 __assign = Object.assign || function __assign2(t2) { 1101 for (var s, i = 1, n = arguments.length; i < n; i++) { 1102 s = arguments[i]; 1103 for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2)) t2[p2] = s[p2]; 1104 } 1105 return t2; 1106 }; 1107 return __assign.apply(this, arguments); 1108 }; 1109 function __rest(s, e) { 1110 var t2 = {}; 1111 for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2) && e.indexOf(p2) < 0) 1112 t2[p2] = s[p2]; 1113 if (s != null && typeof Object.getOwnPropertySymbols === "function") 1114 for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) { 1115 if (e.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i])) 1116 t2[p2[i]] = s[p2[i]]; 1117 } 1118 return t2; 1119 } 1120 function __spreadArray(to, from, pack) { 1121 if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { 1122 if (ar || !(i in from)) { 1123 if (!ar) ar = Array.prototype.slice.call(from, 0, i); 1124 ar[i] = from[i]; 1125 } 1126 } 1127 return to.concat(ar || Array.prototype.slice.call(from)); 1128 } 1129 1130 // node_modules/@radix-ui/react-dialog/node_modules/react-remove-scroll/dist/es2015/Combination.js 1131 var React21 = __toESM(require_react()); 1132 1133 // node_modules/@radix-ui/react-dialog/node_modules/react-remove-scroll/dist/es2015/UI.js 1134 var React17 = __toESM(require_react()); 1135 1136 // node_modules/react-remove-scroll-bar/dist/es2015/constants.js 1137 var zeroRightClassName = "right-scroll-bar-position"; 1138 var fullWidthClassName = "width-before-scroll-bar"; 1139 var noScrollbarsClassName = "with-scroll-bars-hidden"; 1140 var removedBarSizeVariable = "--removed-body-scroll-bar-size"; 1141 1142 // node_modules/use-callback-ref/dist/es2015/assignRef.js 1143 function assignRef(ref, value) { 1144 if (typeof ref === "function") { 1145 ref(value); 1146 } else if (ref) { 1147 ref.current = value; 1148 } 1149 return ref; 1150 } 1151 1152 // node_modules/use-callback-ref/dist/es2015/useRef.js 1153 var import_react = __toESM(require_react()); 1154 function useCallbackRef2(initialValue, callback) { 1155 var ref = (0, import_react.useState)(function() { 1156 return { 1157 // value 1158 value: initialValue, 1159 // last callback 1160 callback, 1161 // "memoized" public interface 1162 facade: { 1163 get current() { 1164 return ref.value; 1165 }, 1166 set current(value) { 1167 var last = ref.value; 1168 if (last !== value) { 1169 ref.value = value; 1170 ref.callback(value, last); 1171 } 1172 } 1173 } 1174 }; 1175 })[0]; 1176 ref.callback = callback; 1177 return ref.facade; 1178 } 1179 1180 // node_modules/use-callback-ref/dist/es2015/useMergeRef.js 1181 var React15 = __toESM(require_react()); 1182 var useIsomorphicLayoutEffect = typeof window !== "undefined" ? React15.useLayoutEffect : React15.useEffect; 1183 var currentValues = /* @__PURE__ */ new WeakMap(); 1184 function useMergeRefs(refs, defaultValue) { 1185 var callbackRef = useCallbackRef2(defaultValue || null, function(newValue) { 1186 return refs.forEach(function(ref) { 1187 return assignRef(ref, newValue); 1188 }); 1189 }); 1190 useIsomorphicLayoutEffect(function() { 1191 var oldValue = currentValues.get(callbackRef); 1192 if (oldValue) { 1193 var prevRefs_1 = new Set(oldValue); 1194 var nextRefs_1 = new Set(refs); 1195 var current_1 = callbackRef.current; 1196 prevRefs_1.forEach(function(ref) { 1197 if (!nextRefs_1.has(ref)) { 1198 assignRef(ref, null); 1199 } 1200 }); 1201 nextRefs_1.forEach(function(ref) { 1202 if (!prevRefs_1.has(ref)) { 1203 assignRef(ref, current_1); 1204 } 1205 }); 1206 } 1207 currentValues.set(callbackRef, refs); 1208 }, [refs]); 1209 return callbackRef; 1210 } 1211 1212 // node_modules/use-sidecar/dist/es2015/medium.js 1213 function ItoI(a) { 1214 return a; 1215 } 1216 function innerCreateMedium(defaults, middleware) { 1217 if (middleware === void 0) { 1218 middleware = ItoI; 1219 } 1220 var buffer = []; 1221 var assigned = false; 1222 var medium = { 1223 read: function() { 1224 if (assigned) { 1225 throw new Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`."); 1226 } 1227 if (buffer.length) { 1228 return buffer[buffer.length - 1]; 1229 } 1230 return defaults; 1231 }, 1232 useMedium: function(data) { 1233 var item = middleware(data, assigned); 1234 buffer.push(item); 1235 return function() { 1236 buffer = buffer.filter(function(x) { 1237 return x !== item; 1238 }); 1239 }; 1240 }, 1241 assignSyncMedium: function(cb) { 1242 assigned = true; 1243 while (buffer.length) { 1244 var cbs = buffer; 1245 buffer = []; 1246 cbs.forEach(cb); 1247 } 1248 buffer = { 1249 push: function(x) { 1250 return cb(x); 1251 }, 1252 filter: function() { 1253 return buffer; 1254 } 1255 }; 1256 }, 1257 assignMedium: function(cb) { 1258 assigned = true; 1259 var pendingQueue = []; 1260 if (buffer.length) { 1261 var cbs = buffer; 1262 buffer = []; 1263 cbs.forEach(cb); 1264 pendingQueue = buffer; 1265 } 1266 var executeQueue = function() { 1267 var cbs2 = pendingQueue; 1268 pendingQueue = []; 1269 cbs2.forEach(cb); 1270 }; 1271 var cycle = function() { 1272 return Promise.resolve().then(executeQueue); 1273 }; 1274 cycle(); 1275 buffer = { 1276 push: function(x) { 1277 pendingQueue.push(x); 1278 cycle(); 1279 }, 1280 filter: function(filter) { 1281 pendingQueue = pendingQueue.filter(filter); 1282 return buffer; 1283 } 1284 }; 1285 } 1286 }; 1287 return medium; 1288 } 1289 function createSidecarMedium(options) { 1290 if (options === void 0) { 1291 options = {}; 1292 } 1293 var medium = innerCreateMedium(null); 1294 medium.options = __assign({ async: true, ssr: false }, options); 1295 return medium; 1296 } 1297 1298 // node_modules/use-sidecar/dist/es2015/exports.js 1299 var React16 = __toESM(require_react()); 1300 var SideCar = function(_a) { 1301 var sideCar = _a.sideCar, rest = __rest(_a, ["sideCar"]); 1302 if (!sideCar) { 1303 throw new Error("Sidecar: please provide `sideCar` property to import the right car"); 1304 } 1305 var Target = sideCar.read(); 1306 if (!Target) { 1307 throw new Error("Sidecar medium not found"); 1308 } 1309 return React16.createElement(Target, __assign({}, rest)); 1310 }; 1311 SideCar.isSideCarExport = true; 1312 function exportSidecar(medium, exported) { 1313 medium.useMedium(exported); 1314 return SideCar; 1315 } 1316 1317 // node_modules/@radix-ui/react-dialog/node_modules/react-remove-scroll/dist/es2015/medium.js 1318 var effectCar = createSidecarMedium(); 1319 1320 // node_modules/@radix-ui/react-dialog/node_modules/react-remove-scroll/dist/es2015/UI.js 1321 var nothing = function() { 1322 return; 1323 }; 1324 var RemoveScroll = React17.forwardRef(function(props, parentRef) { 1325 var ref = React17.useRef(null); 1326 var _a = React17.useState({ 1327 onScrollCapture: nothing, 1328 onWheelCapture: nothing, 1329 onTouchMoveCapture: nothing 1330 }), callbacks = _a[0], setCallbacks = _a[1]; 1331 var forwardProps = props.forwardProps, children = props.children, className = props.className, removeScrollBar = props.removeScrollBar, enabled = props.enabled, shards = props.shards, sideCar = props.sideCar, noRelative = props.noRelative, noIsolation = props.noIsolation, inert = props.inert, allowPinchZoom = props.allowPinchZoom, _b = props.as, Container = _b === void 0 ? "div" : _b, gapMode = props.gapMode, rest = __rest(props, ["forwardProps", "children", "className", "removeScrollBar", "enabled", "shards", "sideCar", "noRelative", "noIsolation", "inert", "allowPinchZoom", "as", "gapMode"]); 1332 var SideCar2 = sideCar; 1333 var containerRef = useMergeRefs([ref, parentRef]); 1334 var containerProps = __assign(__assign({}, rest), callbacks); 1335 return React17.createElement( 1336 React17.Fragment, 1337 null, 1338 enabled && React17.createElement(SideCar2, { sideCar: effectCar, removeScrollBar, shards, noRelative, noIsolation, inert, setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref, gapMode }), 1339 forwardProps ? React17.cloneElement(React17.Children.only(children), __assign(__assign({}, containerProps), { ref: containerRef })) : React17.createElement(Container, __assign({}, containerProps, { className, ref: containerRef }), children) 1340 ); 1341 }); 1342 RemoveScroll.defaultProps = { 1343 enabled: true, 1344 removeScrollBar: true, 1345 inert: false 1346 }; 1347 RemoveScroll.classNames = { 1348 fullWidth: fullWidthClassName, 1349 zeroRight: zeroRightClassName 1350 }; 1351 1352 // node_modules/@radix-ui/react-dialog/node_modules/react-remove-scroll/dist/es2015/SideEffect.js 1353 var React20 = __toESM(require_react()); 1354 1355 // node_modules/react-remove-scroll-bar/dist/es2015/component.js 1356 var React19 = __toESM(require_react()); 1357 1358 // node_modules/react-style-singleton/dist/es2015/hook.js 1359 var React18 = __toESM(require_react()); 1360 1361 // node_modules/get-nonce/dist/es2015/index.js 1362 var currentNonce; 1363 var getNonce = function() { 1364 if (currentNonce) { 1365 return currentNonce; 1366 } 1367 if (typeof __webpack_nonce__ !== "undefined") { 1368 return __webpack_nonce__; 1369 } 1370 return void 0; 1371 }; 1372 1373 // node_modules/react-style-singleton/dist/es2015/singleton.js 1374 function makeStyleTag() { 1375 if (!document) 1376 return null; 1377 var tag = document.createElement("style"); 1378 tag.type = "text/css"; 1379 var nonce = getNonce(); 1380 if (nonce) { 1381 tag.setAttribute("nonce", nonce); 1382 } 1383 return tag; 1384 } 1385 function injectStyles(tag, css) { 1386 if (tag.styleSheet) { 1387 tag.styleSheet.cssText = css; 1388 } else { 1389 tag.appendChild(document.createTextNode(css)); 1390 } 1391 } 1392 function insertStyleTag(tag) { 1393 var head = document.head || document.getElementsByTagName("head")[0]; 1394 head.appendChild(tag); 1395 } 1396 var stylesheetSingleton = function() { 1397 var counter = 0; 1398 var stylesheet = null; 1399 return { 1400 add: function(style) { 1401 if (counter == 0) { 1402 if (stylesheet = makeStyleTag()) { 1403 injectStyles(stylesheet, style); 1404 insertStyleTag(stylesheet); 1405 } 1406 } 1407 counter++; 1408 }, 1409 remove: function() { 1410 counter--; 1411 if (!counter && stylesheet) { 1412 stylesheet.parentNode && stylesheet.parentNode.removeChild(stylesheet); 1413 stylesheet = null; 1414 } 1415 } 1416 }; 1417 }; 1418 1419 // node_modules/react-style-singleton/dist/es2015/hook.js 1420 var styleHookSingleton = function() { 1421 var sheet = stylesheetSingleton(); 1422 return function(styles, isDynamic) { 1423 React18.useEffect(function() { 1424 sheet.add(styles); 1425 return function() { 1426 sheet.remove(); 1427 }; 1428 }, [styles && isDynamic]); 1429 }; 1430 }; 1431 1432 // node_modules/react-style-singleton/dist/es2015/component.js 1433 var styleSingleton = function() { 1434 var useStyle = styleHookSingleton(); 1435 var Sheet = function(_a) { 1436 var styles = _a.styles, dynamic = _a.dynamic; 1437 useStyle(styles, dynamic); 1438 return null; 1439 }; 1440 return Sheet; 1441 }; 1442 1443 // node_modules/react-remove-scroll-bar/dist/es2015/utils.js 1444 var zeroGap = { 1445 left: 0, 1446 top: 0, 1447 right: 0, 1448 gap: 0 1449 }; 1450 var parse = function(x) { 1451 return parseInt(x || "", 10) || 0; 1452 }; 1453 var getOffset = function(gapMode) { 1454 var cs = window.getComputedStyle(document.body); 1455 var left = cs[gapMode === "padding" ? "paddingLeft" : "marginLeft"]; 1456 var top = cs[gapMode === "padding" ? "paddingTop" : "marginTop"]; 1457 var right = cs[gapMode === "padding" ? "paddingRight" : "marginRight"]; 1458 return [parse(left), parse(top), parse(right)]; 1459 }; 1460 var getGapWidth = function(gapMode) { 1461 if (gapMode === void 0) { 1462 gapMode = "margin"; 1463 } 1464 if (typeof window === "undefined") { 1465 return zeroGap; 1466 } 1467 var offsets = getOffset(gapMode); 1468 var documentWidth = document.documentElement.clientWidth; 1469 var windowWidth = window.innerWidth; 1470 return { 1471 left: offsets[0], 1472 top: offsets[1], 1473 right: offsets[2], 1474 gap: Math.max(0, windowWidth - documentWidth + offsets[2] - offsets[0]) 1475 }; 1476 }; 1477 1478 // node_modules/react-remove-scroll-bar/dist/es2015/component.js 1479 var Style = styleSingleton(); 1480 var lockAttribute = "data-scroll-locked"; 1481 var getStyles = function(_a, allowRelative, gapMode, important) { 1482 var left = _a.left, top = _a.top, right = _a.right, gap = _a.gap; 1483 if (gapMode === void 0) { 1484 gapMode = "margin"; 1485 } 1486 return "\n .".concat(noScrollbarsClassName, " {\n overflow: hidden ").concat(important, ";\n padding-right: ").concat(gap, "px ").concat(important, ";\n }\n body[").concat(lockAttribute, "] {\n overflow: hidden ").concat(important, ";\n overscroll-behavior: contain;\n ").concat([ 1487 allowRelative && "position: relative ".concat(important, ";"), 1488 gapMode === "margin" && "\n padding-left: ".concat(left, "px;\n padding-top: ").concat(top, "px;\n padding-right: ").concat(right, "px;\n margin-left:0;\n margin-top:0;\n margin-right: ").concat(gap, "px ").concat(important, ";\n "), 1489 gapMode === "padding" && "padding-right: ".concat(gap, "px ").concat(important, ";") 1490 ].filter(Boolean).join(""), "\n }\n \n .").concat(zeroRightClassName, " {\n right: ").concat(gap, "px ").concat(important, ";\n }\n \n .").concat(fullWidthClassName, " {\n margin-right: ").concat(gap, "px ").concat(important, ";\n }\n \n .").concat(zeroRightClassName, " .").concat(zeroRightClassName, " {\n right: 0 ").concat(important, ";\n }\n \n .").concat(fullWidthClassName, " .").concat(fullWidthClassName, " {\n margin-right: 0 ").concat(important, ";\n }\n \n body[").concat(lockAttribute, "] {\n ").concat(removedBarSizeVariable, ": ").concat(gap, "px;\n }\n"); 1491 }; 1492 var getCurrentUseCounter = function() { 1493 var counter = parseInt(document.body.getAttribute(lockAttribute) || "0", 10); 1494 return isFinite(counter) ? counter : 0; 1495 }; 1496 var useLockAttribute = function() { 1497 React19.useEffect(function() { 1498 document.body.setAttribute(lockAttribute, (getCurrentUseCounter() + 1).toString()); 1499 return function() { 1500 var newCounter = getCurrentUseCounter() - 1; 1501 if (newCounter <= 0) { 1502 document.body.removeAttribute(lockAttribute); 1503 } else { 1504 document.body.setAttribute(lockAttribute, newCounter.toString()); 1505 } 1506 }; 1507 }, []); 1508 }; 1509 var RemoveScrollBar = function(_a) { 1510 var noRelative = _a.noRelative, noImportant = _a.noImportant, _b = _a.gapMode, gapMode = _b === void 0 ? "margin" : _b; 1511 useLockAttribute(); 1512 var gap = React19.useMemo(function() { 1513 return getGapWidth(gapMode); 1514 }, [gapMode]); 1515 return React19.createElement(Style, { styles: getStyles(gap, !noRelative, gapMode, !noImportant ? "!important" : "") }); 1516 }; 1517 1518 // node_modules/@radix-ui/react-dialog/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js 1519 var passiveSupported = false; 1520 if (typeof window !== "undefined") { 1521 try { 1522 options = Object.defineProperty({}, "passive", { 1523 get: function() { 1524 passiveSupported = true; 1525 return true; 1526 } 1527 }); 1528 window.addEventListener("test", options, options); 1529 window.removeEventListener("test", options, options); 1530 } catch (err) { 1531 passiveSupported = false; 1532 } 1533 } 1534 var options; 1535 var nonPassive = passiveSupported ? { passive: false } : false; 1536 1537 // node_modules/@radix-ui/react-dialog/node_modules/react-remove-scroll/dist/es2015/handleScroll.js 1538 var alwaysContainsScroll = function(node) { 1539 return node.tagName === "TEXTAREA"; 1540 }; 1541 var elementCanBeScrolled = function(node, overflow) { 1542 if (!(node instanceof Element)) { 1543 return false; 1544 } 1545 var styles = window.getComputedStyle(node); 1546 return ( 1547 // not-not-scrollable 1548 styles[overflow] !== "hidden" && // contains scroll inside self 1549 !(styles.overflowY === styles.overflowX && !alwaysContainsScroll(node) && styles[overflow] === "visible") 1550 ); 1551 }; 1552 var elementCouldBeVScrolled = function(node) { 1553 return elementCanBeScrolled(node, "overflowY"); 1554 }; 1555 var elementCouldBeHScrolled = function(node) { 1556 return elementCanBeScrolled(node, "overflowX"); 1557 }; 1558 var locationCouldBeScrolled = function(axis, node) { 1559 var ownerDocument = node.ownerDocument; 1560 var current = node; 1561 do { 1562 if (typeof ShadowRoot !== "undefined" && current instanceof ShadowRoot) { 1563 current = current.host; 1564 } 1565 var isScrollable = elementCouldBeScrolled(axis, current); 1566 if (isScrollable) { 1567 var _a = getScrollVariables(axis, current), scrollHeight = _a[1], clientHeight = _a[2]; 1568 if (scrollHeight > clientHeight) { 1569 return true; 1570 } 1571 } 1572 current = current.parentNode; 1573 } while (current && current !== ownerDocument.body); 1574 return false; 1575 }; 1576 var getVScrollVariables = function(_a) { 1577 var scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight, clientHeight = _a.clientHeight; 1578 return [ 1579 scrollTop, 1580 scrollHeight, 1581 clientHeight 1582 ]; 1583 }; 1584 var getHScrollVariables = function(_a) { 1585 var scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth; 1586 return [ 1587 scrollLeft, 1588 scrollWidth, 1589 clientWidth 1590 ]; 1591 }; 1592 var elementCouldBeScrolled = function(axis, node) { 1593 return axis === "v" ? elementCouldBeVScrolled(node) : elementCouldBeHScrolled(node); 1594 }; 1595 var getScrollVariables = function(axis, node) { 1596 return axis === "v" ? getVScrollVariables(node) : getHScrollVariables(node); 1597 }; 1598 var getDirectionFactor = function(axis, direction) { 1599 return axis === "h" && direction === "rtl" ? -1 : 1; 1600 }; 1601 var handleScroll = function(axis, endTarget, event, sourceDelta, noOverscroll) { 1602 var directionFactor = getDirectionFactor(axis, window.getComputedStyle(endTarget).direction); 1603 var delta = directionFactor * sourceDelta; 1604 var target = event.target; 1605 var targetInLock = endTarget.contains(target); 1606 var shouldCancelScroll = false; 1607 var isDeltaPositive = delta > 0; 1608 var availableScroll = 0; 1609 var availableScrollTop = 0; 1610 do { 1611 if (!target) { 1612 break; 1613 } 1614 var _a = getScrollVariables(axis, target), position = _a[0], scroll_1 = _a[1], capacity = _a[2]; 1615 var elementScroll = scroll_1 - capacity - directionFactor * position; 1616 if (position || elementScroll) { 1617 if (elementCouldBeScrolled(axis, target)) { 1618 availableScroll += elementScroll; 1619 availableScrollTop += position; 1620 } 1621 } 1622 var parent_1 = target.parentNode; 1623 target = parent_1 && parent_1.nodeType === Node.DOCUMENT_FRAGMENT_NODE ? parent_1.host : parent_1; 1624 } while ( 1625 // portaled content 1626 !targetInLock && target !== document.body || // self content 1627 targetInLock && (endTarget.contains(target) || endTarget === target) 1628 ); 1629 if (isDeltaPositive && (noOverscroll && Math.abs(availableScroll) < 1 || !noOverscroll && delta > availableScroll)) { 1630 shouldCancelScroll = true; 1631 } else if (!isDeltaPositive && (noOverscroll && Math.abs(availableScrollTop) < 1 || !noOverscroll && -delta > availableScrollTop)) { 1632 shouldCancelScroll = true; 1633 } 1634 return shouldCancelScroll; 1635 }; 1636 1637 // node_modules/@radix-ui/react-dialog/node_modules/react-remove-scroll/dist/es2015/SideEffect.js 1638 var getTouchXY = function(event) { 1639 return "changedTouches" in event ? [event.changedTouches[0].clientX, event.changedTouches[0].clientY] : [0, 0]; 1640 }; 1641 var getDeltaXY = function(event) { 1642 return [event.deltaX, event.deltaY]; 1643 }; 1644 var extractRef = function(ref) { 1645 return ref && "current" in ref ? ref.current : ref; 1646 }; 1647 var deltaCompare = function(x, y) { 1648 return x[0] === y[0] && x[1] === y[1]; 1649 }; 1650 var generateStyle = function(id) { 1651 return "\n .block-interactivity-".concat(id, " {pointer-events: none;}\n .allow-interactivity-").concat(id, " {pointer-events: all;}\n"); 1652 }; 1653 var idCounter = 0; 1654 var lockStack = []; 1655 function RemoveScrollSideCar(props) { 1656 var shouldPreventQueue = React20.useRef([]); 1657 var touchStartRef = React20.useRef([0, 0]); 1658 var activeAxis = React20.useRef(); 1659 var id = React20.useState(idCounter++)[0]; 1660 var Style2 = React20.useState(styleSingleton)[0]; 1661 var lastProps = React20.useRef(props); 1662 React20.useEffect(function() { 1663 lastProps.current = props; 1664 }, [props]); 1665 React20.useEffect(function() { 1666 if (props.inert) { 1667 document.body.classList.add("block-interactivity-".concat(id)); 1668 var allow_1 = __spreadArray([props.lockRef.current], (props.shards || []).map(extractRef), true).filter(Boolean); 1669 allow_1.forEach(function(el) { 1670 return el.classList.add("allow-interactivity-".concat(id)); 1671 }); 1672 return function() { 1673 document.body.classList.remove("block-interactivity-".concat(id)); 1674 allow_1.forEach(function(el) { 1675 return el.classList.remove("allow-interactivity-".concat(id)); 1676 }); 1677 }; 1678 } 1679 return; 1680 }, [props.inert, props.lockRef.current, props.shards]); 1681 var shouldCancelEvent = React20.useCallback(function(event, parent) { 1682 if ("touches" in event && event.touches.length === 2 || event.type === "wheel" && event.ctrlKey) { 1683 return !lastProps.current.allowPinchZoom; 1684 } 1685 var touch = getTouchXY(event); 1686 var touchStart = touchStartRef.current; 1687 var deltaX = "deltaX" in event ? event.deltaX : touchStart[0] - touch[0]; 1688 var deltaY = "deltaY" in event ? event.deltaY : touchStart[1] - touch[1]; 1689 var currentAxis; 1690 var target = event.target; 1691 var moveDirection = Math.abs(deltaX) > Math.abs(deltaY) ? "h" : "v"; 1692 if ("touches" in event && moveDirection === "h" && target.type === "range") { 1693 return false; 1694 } 1695 var canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target); 1696 if (!canBeScrolledInMainDirection) { 1697 return true; 1698 } 1699 if (canBeScrolledInMainDirection) { 1700 currentAxis = moveDirection; 1701 } else { 1702 currentAxis = moveDirection === "v" ? "h" : "v"; 1703 canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target); 1704 } 1705 if (!canBeScrolledInMainDirection) { 1706 return false; 1707 } 1708 if (!activeAxis.current && "changedTouches" in event && (deltaX || deltaY)) { 1709 activeAxis.current = currentAxis; 1710 } 1711 if (!currentAxis) { 1712 return true; 1713 } 1714 var cancelingAxis = activeAxis.current || currentAxis; 1715 return handleScroll(cancelingAxis, parent, event, cancelingAxis === "h" ? deltaX : deltaY, true); 1716 }, []); 1717 var shouldPrevent = React20.useCallback(function(_event) { 1718 var event = _event; 1719 if (!lockStack.length || lockStack[lockStack.length - 1] !== Style2) { 1720 return; 1721 } 1722 var delta = "deltaY" in event ? getDeltaXY(event) : getTouchXY(event); 1723 var sourceEvent = shouldPreventQueue.current.filter(function(e) { 1724 return e.name === event.type && (e.target === event.target || event.target === e.shadowParent) && deltaCompare(e.delta, delta); 1725 })[0]; 1726 if (sourceEvent && sourceEvent.should) { 1727 if (event.cancelable) { 1728 event.preventDefault(); 1729 } 1730 return; 1731 } 1732 if (!sourceEvent) { 1733 var shardNodes = (lastProps.current.shards || []).map(extractRef).filter(Boolean).filter(function(node) { 1734 return node.contains(event.target); 1735 }); 1736 var shouldStop = shardNodes.length > 0 ? shouldCancelEvent(event, shardNodes[0]) : !lastProps.current.noIsolation; 1737 if (shouldStop) { 1738 if (event.cancelable) { 1739 event.preventDefault(); 1740 } 1741 } 1742 } 1743 }, []); 1744 var shouldCancel = React20.useCallback(function(name, delta, target, should) { 1745 var event = { name, delta, target, should, shadowParent: getOutermostShadowParent(target) }; 1746 shouldPreventQueue.current.push(event); 1747 setTimeout(function() { 1748 shouldPreventQueue.current = shouldPreventQueue.current.filter(function(e) { 1749 return e !== event; 1750 }); 1751 }, 1); 1752 }, []); 1753 var scrollTouchStart = React20.useCallback(function(event) { 1754 touchStartRef.current = getTouchXY(event); 1755 activeAxis.current = void 0; 1756 }, []); 1757 var scrollWheel = React20.useCallback(function(event) { 1758 shouldCancel(event.type, getDeltaXY(event), event.target, shouldCancelEvent(event, props.lockRef.current)); 1759 }, []); 1760 var scrollTouchMove = React20.useCallback(function(event) { 1761 shouldCancel(event.type, getTouchXY(event), event.target, shouldCancelEvent(event, props.lockRef.current)); 1762 }, []); 1763 React20.useEffect(function() { 1764 lockStack.push(Style2); 1765 props.setCallbacks({ 1766 onScrollCapture: scrollWheel, 1767 onWheelCapture: scrollWheel, 1768 onTouchMoveCapture: scrollTouchMove 1769 }); 1770 document.addEventListener("wheel", shouldPrevent, nonPassive); 1771 document.addEventListener("touchmove", shouldPrevent, nonPassive); 1772 document.addEventListener("touchstart", scrollTouchStart, nonPassive); 1773 return function() { 1774 lockStack = lockStack.filter(function(inst) { 1775 return inst !== Style2; 1776 }); 1777 document.removeEventListener("wheel", shouldPrevent, nonPassive); 1778 document.removeEventListener("touchmove", shouldPrevent, nonPassive); 1779 document.removeEventListener("touchstart", scrollTouchStart, nonPassive); 1780 }; 1781 }, []); 1782 var removeScrollBar = props.removeScrollBar, inert = props.inert; 1783 return React20.createElement( 1784 React20.Fragment, 1785 null, 1786 inert ? React20.createElement(Style2, { styles: generateStyle(id) }) : null, 1787 removeScrollBar ? React20.createElement(RemoveScrollBar, { noRelative: props.noRelative, gapMode: props.gapMode }) : null 1788 ); 1789 } 1790 function getOutermostShadowParent(node) { 1791 var shadowParent = null; 1792 while (node !== null) { 1793 if (node instanceof ShadowRoot) { 1794 shadowParent = node.host; 1795 node = node.host; 1796 } 1797 node = node.parentNode; 1798 } 1799 return shadowParent; 1800 } 1801 1802 // node_modules/@radix-ui/react-dialog/node_modules/react-remove-scroll/dist/es2015/sidecar.js 1803 var sidecar_default = exportSidecar(effectCar, RemoveScrollSideCar); 1804 1805 // node_modules/@radix-ui/react-dialog/node_modules/react-remove-scroll/dist/es2015/Combination.js 1806 var ReactRemoveScroll = React21.forwardRef(function(props, ref) { 1807 return React21.createElement(RemoveScroll, __assign({}, props, { ref, sideCar: sidecar_default })); 1808 }); 1809 ReactRemoveScroll.classNames = RemoveScroll.classNames; 1810 var Combination_default = ReactRemoveScroll; 1811 1812 // node_modules/aria-hidden/dist/es2015/index.js 1813 var getDefaultParent = function(originalTarget) { 1814 if (typeof document === "undefined") { 1815 return null; 1816 } 1817 var sampleTarget = Array.isArray(originalTarget) ? originalTarget[0] : originalTarget; 1818 return sampleTarget.ownerDocument.body; 1819 }; 1820 var counterMap = /* @__PURE__ */ new WeakMap(); 1821 var uncontrolledNodes = /* @__PURE__ */ new WeakMap(); 1822 var markerMap = {}; 1823 var lockCount = 0; 1824 var unwrapHost = function(node) { 1825 return node && (node.host || unwrapHost(node.parentNode)); 1826 }; 1827 var correctTargets = function(parent, targets) { 1828 return targets.map(function(target) { 1829 if (parent.contains(target)) { 1830 return target; 1831 } 1832 var correctedTarget = unwrapHost(target); 1833 if (correctedTarget && parent.contains(correctedTarget)) { 1834 return correctedTarget; 1835 } 1836 console.error("aria-hidden", target, "in not contained inside", parent, ". Doing nothing"); 1837 return null; 1838 }).filter(function(x) { 1839 return Boolean(x); 1840 }); 1841 }; 1842 var applyAttributeToOthers = function(originalTarget, parentNode, markerName, controlAttribute) { 1843 var targets = correctTargets(parentNode, Array.isArray(originalTarget) ? originalTarget : [originalTarget]); 1844 if (!markerMap[markerName]) { 1845 markerMap[markerName] = /* @__PURE__ */ new WeakMap(); 1846 } 1847 var markerCounter = markerMap[markerName]; 1848 var hiddenNodes = []; 1849 var elementsToKeep = /* @__PURE__ */ new Set(); 1850 var elementsToStop = new Set(targets); 1851 var keep = function(el) { 1852 if (!el || elementsToKeep.has(el)) { 1853 return; 1854 } 1855 elementsToKeep.add(el); 1856 keep(el.parentNode); 1857 }; 1858 targets.forEach(keep); 1859 var deep = function(parent) { 1860 if (!parent || elementsToStop.has(parent)) { 1861 return; 1862 } 1863 Array.prototype.forEach.call(parent.children, function(node) { 1864 if (elementsToKeep.has(node)) { 1865 deep(node); 1866 } else { 1867 try { 1868 var attr = node.getAttribute(controlAttribute); 1869 var alreadyHidden = attr !== null && attr !== "false"; 1870 var counterValue = (counterMap.get(node) || 0) + 1; 1871 var markerValue = (markerCounter.get(node) || 0) + 1; 1872 counterMap.set(node, counterValue); 1873 markerCounter.set(node, markerValue); 1874 hiddenNodes.push(node); 1875 if (counterValue === 1 && alreadyHidden) { 1876 uncontrolledNodes.set(node, true); 1877 } 1878 if (markerValue === 1) { 1879 node.setAttribute(markerName, "true"); 1880 } 1881 if (!alreadyHidden) { 1882 node.setAttribute(controlAttribute, "true"); 1883 } 1884 } catch (e) { 1885 console.error("aria-hidden: cannot operate on ", node, e); 1886 } 1887 } 1888 }); 1889 }; 1890 deep(parentNode); 1891 elementsToKeep.clear(); 1892 lockCount++; 1893 return function() { 1894 hiddenNodes.forEach(function(node) { 1895 var counterValue = counterMap.get(node) - 1; 1896 var markerValue = markerCounter.get(node) - 1; 1897 counterMap.set(node, counterValue); 1898 markerCounter.set(node, markerValue); 1899 if (!counterValue) { 1900 if (!uncontrolledNodes.has(node)) { 1901 node.removeAttribute(controlAttribute); 1902 } 1903 uncontrolledNodes.delete(node); 1904 } 1905 if (!markerValue) { 1906 node.removeAttribute(markerName); 1907 } 1908 }); 1909 lockCount--; 1910 if (!lockCount) { 1911 counterMap = /* @__PURE__ */ new WeakMap(); 1912 counterMap = /* @__PURE__ */ new WeakMap(); 1913 uncontrolledNodes = /* @__PURE__ */ new WeakMap(); 1914 markerMap = {}; 1915 } 1916 }; 1917 }; 1918 var hideOthers = function(originalTarget, parentNode, markerName) { 1919 if (markerName === void 0) { 1920 markerName = "data-aria-hidden"; 1921 } 1922 var targets = Array.from(Array.isArray(originalTarget) ? originalTarget : [originalTarget]); 1923 var activeParentNode = parentNode || getDefaultParent(originalTarget); 1924 if (!activeParentNode) { 1925 return function() { 1926 return null; 1927 }; 1928 } 1929 targets.push.apply(targets, Array.from(activeParentNode.querySelectorAll("[aria-live], script"))); 1930 return applyAttributeToOthers(targets, activeParentNode, markerName, "aria-hidden"); 1931 }; 1932 1933 // node_modules/@radix-ui/react-dialog/dist/index.mjs 1934 var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1); 1935 var DIALOG_NAME = "Dialog"; 1936 var [createDialogContext, createDialogScope] = createContextScope(DIALOG_NAME); 1937 var [DialogProvider, useDialogContext] = createDialogContext(DIALOG_NAME); 1938 var Dialog = (props) => { 1939 const { 1940 __scopeDialog, 1941 children, 1942 open: openProp, 1943 defaultOpen, 1944 onOpenChange, 1945 modal = true 1946 } = props; 1947 const triggerRef = React24.useRef(null); 1948 const contentRef = React24.useRef(null); 1949 const [open2, setOpen] = useControllableState({ 1950 prop: openProp, 1951 defaultProp: defaultOpen ?? false, 1952 onChange: onOpenChange, 1953 caller: DIALOG_NAME 1954 }); 1955 return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( 1956 DialogProvider, 1957 { 1958 scope: __scopeDialog, 1959 triggerRef, 1960 contentRef, 1961 contentId: useId(), 1962 titleId: useId(), 1963 descriptionId: useId(), 1964 open: open2, 1965 onOpenChange: setOpen, 1966 onOpenToggle: React24.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]), 1967 modal, 1968 children 1969 } 1970 ); 1971 }; 1972 Dialog.displayName = DIALOG_NAME; 1973 var TRIGGER_NAME = "DialogTrigger"; 1974 var DialogTrigger = React24.forwardRef( 1975 (props, forwardedRef) => { 1976 const { __scopeDialog, ...triggerProps } = props; 1977 const context2 = useDialogContext(TRIGGER_NAME, __scopeDialog); 1978 const composedTriggerRef = useComposedRefs(forwardedRef, context2.triggerRef); 1979 return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( 1980 Primitive.button, 1981 { 1982 type: "button", 1983 "aria-haspopup": "dialog", 1984 "aria-expanded": context2.open, 1985 "aria-controls": context2.contentId, 1986 "data-state": getState(context2.open), 1987 ...triggerProps, 1988 ref: composedTriggerRef, 1989 onClick: composeEventHandlers(props.onClick, context2.onOpenToggle) 1990 } 1991 ); 1992 } 1993 ); 1994 DialogTrigger.displayName = TRIGGER_NAME; 1995 var PORTAL_NAME2 = "DialogPortal"; 1996 var [PortalProvider, usePortalContext] = createDialogContext(PORTAL_NAME2, { 1997 forceMount: void 0 1998 }); 1999 var DialogPortal = (props) => { 2000 const { __scopeDialog, forceMount, children, container } = props; 2001 const context2 = useDialogContext(PORTAL_NAME2, __scopeDialog); 2002 return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(PortalProvider, { scope: __scopeDialog, forceMount, children: React24.Children.map(children, (child) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Presence, { present: forceMount || context2.open, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Portal, { asChild: true, container, children: child }) })) }); 2003 }; 2004 DialogPortal.displayName = PORTAL_NAME2; 2005 var OVERLAY_NAME = "DialogOverlay"; 2006 var DialogOverlay = React24.forwardRef( 2007 (props, forwardedRef) => { 2008 const portalContext = usePortalContext(OVERLAY_NAME, props.__scopeDialog); 2009 const { forceMount = portalContext.forceMount, ...overlayProps } = props; 2010 const context2 = useDialogContext(OVERLAY_NAME, props.__scopeDialog); 2011 return context2.modal ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Presence, { present: forceMount || context2.open, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(DialogOverlayImpl, { ...overlayProps, ref: forwardedRef }) }) : null; 2012 } 2013 ); 2014 DialogOverlay.displayName = OVERLAY_NAME; 2015 var Slot = createSlot("DialogOverlay.RemoveScroll"); 2016 var DialogOverlayImpl = React24.forwardRef( 2017 (props, forwardedRef) => { 2018 const { __scopeDialog, ...overlayProps } = props; 2019 const context2 = useDialogContext(OVERLAY_NAME, __scopeDialog); 2020 return ( 2021 // Make sure `Content` is scrollable even when it doesn't live inside `RemoveScroll` 2022 // ie. when `Overlay` and `Content` are siblings 2023 /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Combination_default, { as: Slot, allowPinchZoom: true, shards: [context2.contentRef], children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( 2024 Primitive.div, 2025 { 2026 "data-state": getState(context2.open), 2027 ...overlayProps, 2028 ref: forwardedRef, 2029 style: { pointerEvents: "auto", ...overlayProps.style } 2030 } 2031 ) }) 2032 ); 2033 } 2034 ); 2035 var CONTENT_NAME = "DialogContent"; 2036 var DialogContent = React24.forwardRef( 2037 (props, forwardedRef) => { 2038 const portalContext = usePortalContext(CONTENT_NAME, props.__scopeDialog); 2039 const { forceMount = portalContext.forceMount, ...contentProps } = props; 2040 const context2 = useDialogContext(CONTENT_NAME, props.__scopeDialog); 2041 return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Presence, { present: forceMount || context2.open, children: context2.modal ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(DialogContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(DialogContentNonModal, { ...contentProps, ref: forwardedRef }) }); 2042 } 2043 ); 2044 DialogContent.displayName = CONTENT_NAME; 2045 var DialogContentModal = React24.forwardRef( 2046 (props, forwardedRef) => { 2047 const context2 = useDialogContext(CONTENT_NAME, props.__scopeDialog); 2048 const contentRef = React24.useRef(null); 2049 const composedRefs = useComposedRefs(forwardedRef, context2.contentRef, contentRef); 2050 React24.useEffect(() => { 2051 const content = contentRef.current; 2052 if (content) return hideOthers(content); 2053 }, []); 2054 return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( 2055 DialogContentImpl, 2056 { 2057 ...props, 2058 ref: composedRefs, 2059 trapFocus: context2.open, 2060 disableOutsidePointerEvents: true, 2061 onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => { 2062 event.preventDefault(); 2063 context2.triggerRef.current?.focus(); 2064 }), 2065 onPointerDownOutside: composeEventHandlers(props.onPointerDownOutside, (event) => { 2066 const originalEvent = event.detail.originalEvent; 2067 const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true; 2068 const isRightClick = originalEvent.button === 2 || ctrlLeftClick; 2069 if (isRightClick) event.preventDefault(); 2070 }), 2071 onFocusOutside: composeEventHandlers( 2072 props.onFocusOutside, 2073 (event) => event.preventDefault() 2074 ) 2075 } 2076 ); 2077 } 2078 ); 2079 var DialogContentNonModal = React24.forwardRef( 2080 (props, forwardedRef) => { 2081 const context2 = useDialogContext(CONTENT_NAME, props.__scopeDialog); 2082 const hasInteractedOutsideRef = React24.useRef(false); 2083 const hasPointerDownOutsideRef = React24.useRef(false); 2084 return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( 2085 DialogContentImpl, 2086 { 2087 ...props, 2088 ref: forwardedRef, 2089 trapFocus: false, 2090 disableOutsidePointerEvents: false, 2091 onCloseAutoFocus: (event) => { 2092 props.onCloseAutoFocus?.(event); 2093 if (!event.defaultPrevented) { 2094 if (!hasInteractedOutsideRef.current) context2.triggerRef.current?.focus(); 2095 event.preventDefault(); 2096 } 2097 hasInteractedOutsideRef.current = false; 2098 hasPointerDownOutsideRef.current = false; 2099 }, 2100 onInteractOutside: (event) => { 2101 props.onInteractOutside?.(event); 2102 if (!event.defaultPrevented) { 2103 hasInteractedOutsideRef.current = true; 2104 if (event.detail.originalEvent.type === "pointerdown") { 2105 hasPointerDownOutsideRef.current = true; 2106 } 2107 } 2108 const target = event.target; 2109 const targetIsTrigger = context2.triggerRef.current?.contains(target); 2110 if (targetIsTrigger) event.preventDefault(); 2111 if (event.detail.originalEvent.type === "focusin" && hasPointerDownOutsideRef.current) { 2112 event.preventDefault(); 2113 } 2114 } 2115 } 2116 ); 2117 } 2118 ); 2119 var DialogContentImpl = React24.forwardRef( 2120 (props, forwardedRef) => { 2121 const { __scopeDialog, trapFocus, onOpenAutoFocus, onCloseAutoFocus, ...contentProps } = props; 2122 const context2 = useDialogContext(CONTENT_NAME, __scopeDialog); 2123 const contentRef = React24.useRef(null); 2124 const composedRefs = useComposedRefs(forwardedRef, contentRef); 2125 useFocusGuards(); 2126 return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [ 2127 /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( 2128 FocusScope, 2129 { 2130 asChild: true, 2131 loop: true, 2132 trapped: trapFocus, 2133 onMountAutoFocus: onOpenAutoFocus, 2134 onUnmountAutoFocus: onCloseAutoFocus, 2135 children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( 2136 DismissableLayer, 2137 { 2138 role: "dialog", 2139 id: context2.contentId, 2140 "aria-describedby": context2.descriptionId, 2141 "aria-labelledby": context2.titleId, 2142 "data-state": getState(context2.open), 2143 ...contentProps, 2144 ref: composedRefs, 2145 onDismiss: () => context2.onOpenChange(false) 2146 } 2147 ) 2148 } 2149 ), 2150 /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [ 2151 /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(TitleWarning, { titleId: context2.titleId }), 2152 /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(DescriptionWarning, { contentRef, descriptionId: context2.descriptionId }) 2153 ] }) 2154 ] }); 2155 } 2156 ); 2157 var TITLE_NAME = "DialogTitle"; 2158 var DialogTitle = React24.forwardRef( 2159 (props, forwardedRef) => { 2160 const { __scopeDialog, ...titleProps } = props; 2161 const context2 = useDialogContext(TITLE_NAME, __scopeDialog); 2162 return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Primitive.h2, { id: context2.titleId, ...titleProps, ref: forwardedRef }); 2163 } 2164 ); 2165 DialogTitle.displayName = TITLE_NAME; 2166 var DESCRIPTION_NAME = "DialogDescription"; 2167 var DialogDescription = React24.forwardRef( 2168 (props, forwardedRef) => { 2169 const { __scopeDialog, ...descriptionProps } = props; 2170 const context2 = useDialogContext(DESCRIPTION_NAME, __scopeDialog); 2171 return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Primitive.p, { id: context2.descriptionId, ...descriptionProps, ref: forwardedRef }); 2172 } 2173 ); 2174 DialogDescription.displayName = DESCRIPTION_NAME; 2175 var CLOSE_NAME = "DialogClose"; 2176 var DialogClose = React24.forwardRef( 2177 (props, forwardedRef) => { 2178 const { __scopeDialog, ...closeProps } = props; 2179 const context2 = useDialogContext(CLOSE_NAME, __scopeDialog); 2180 return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( 2181 Primitive.button, 2182 { 2183 type: "button", 2184 ...closeProps, 2185 ref: forwardedRef, 2186 onClick: composeEventHandlers(props.onClick, () => context2.onOpenChange(false)) 2187 } 2188 ); 2189 } 2190 ); 2191 DialogClose.displayName = CLOSE_NAME; 2192 function getState(open2) { 2193 return open2 ? "open" : "closed"; 2194 } 2195 var TITLE_WARNING_NAME = "DialogTitleWarning"; 2196 var [WarningProvider, useWarningContext] = createContext2(TITLE_WARNING_NAME, { 2197 contentName: CONTENT_NAME, 2198 titleName: TITLE_NAME, 2199 docsSlug: "dialog" 2200 }); 2201 var TitleWarning = ({ titleId }) => { 2202 const titleWarningContext = useWarningContext(TITLE_WARNING_NAME); 2203 const MESSAGE = `\`$titleWarningContext.contentName}\` requires a \`$titleWarningContext.titleName}\` for the component to be accessible for screen reader users. 2204 2205 If you want to hide the \`$titleWarningContext.titleName}\`, you can wrap it with our VisuallyHidden component. 2206 2207 For more information, see https://radix-ui.com/primitives/docs/components/$titleWarningContext.docsSlug}`; 2208 React24.useEffect(() => { 2209 if (titleId) { 2210 const hasTitle = document.getElementById(titleId); 2211 if (!hasTitle) console.error(MESSAGE); 2212 } 2213 }, [MESSAGE, titleId]); 2214 return null; 2215 }; 2216 var DESCRIPTION_WARNING_NAME = "DialogDescriptionWarning"; 2217 var DescriptionWarning = ({ contentRef, descriptionId }) => { 2218 const descriptionWarningContext = useWarningContext(DESCRIPTION_WARNING_NAME); 2219 const MESSAGE = `Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {$descriptionWarningContext.contentName}}.`; 2220 React24.useEffect(() => { 2221 const describedById = contentRef.current?.getAttribute("aria-describedby"); 2222 if (descriptionId && describedById) { 2223 const hasDescription = document.getElementById(descriptionId); 2224 if (!hasDescription) console.warn(MESSAGE); 2225 } 2226 }, [MESSAGE, contentRef, descriptionId]); 2227 return null; 2228 }; 2229 var Root = Dialog; 2230 var Portal2 = DialogPortal; 2231 var Overlay = DialogOverlay; 2232 var Content = DialogContent; 2233 2234 // node_modules/cmdk/dist/index.mjs 2235 var t = __toESM(require_react(), 1); 2236 var N = '[cmdk-group=""]'; 2237 var Y2 = '[cmdk-group-items=""]'; 2238 var be = '[cmdk-group-heading=""]'; 2239 var le = '[cmdk-item=""]'; 2240 var ce = `$le}:not([aria-disabled="true"])`; 2241 var Z = "cmdk-item-select"; 2242 var T = "data-value"; 2243 var Re = (r2, o, n) => W(r2, o, n); 2244 var ue = t.createContext(void 0); 2245 var K2 = () => t.useContext(ue); 2246 var de = t.createContext(void 0); 2247 var ee = () => t.useContext(de); 2248 var fe = t.createContext(void 0); 2249 var me = t.forwardRef((r2, o) => { 2250 let n = L(() => { 2251 var e, a; 2252 return { search: "", value: (a = (e = r2.value) != null ? e : r2.defaultValue) != null ? a : "", selectedItemId: void 0, filtered: { count: 0, items: /* @__PURE__ */ new Map(), groups: /* @__PURE__ */ new Set() } }; 2253 }), u2 = L(() => /* @__PURE__ */ new Set()), c = L(() => /* @__PURE__ */ new Map()), d = L(() => /* @__PURE__ */ new Map()), f = L(() => /* @__PURE__ */ new Set()), p2 = pe(r2), { label: b, children: m2, value: R, onValueChange: x, filter: C, shouldFilter: S, loop: A, disablePointerSelection: ge = false, vimBindings: j = true, ...O } = r2, $2 = useId(), q = useId(), _ = useId(), I = t.useRef(null), v = ke(); 2254 k2(() => { 2255 if (R !== void 0) { 2256 let e = R.trim(); 2257 n.current.value = e, E.emit(); 2258 } 2259 }, [R]), k2(() => { 2260 v(6, ne); 2261 }, []); 2262 let E = t.useMemo(() => ({ subscribe: (e) => (f.current.add(e), () => f.current.delete(e)), snapshot: () => n.current, setState: (e, a, s) => { 2263 var i, l, g, y; 2264 if (!Object.is(n.current[e], a)) { 2265 if (n.current[e] = a, e === "search") J2(), z(), v(1, W2); 2266 else if (e === "value") { 2267 if (document.activeElement.hasAttribute("cmdk-input") || document.activeElement.hasAttribute("cmdk-root")) { 2268 let h = document.getElementById(_); 2269 h ? h.focus() : (i = document.getElementById($2)) == null || i.focus(); 2270 } 2271 if (v(7, () => { 2272 var h; 2273 n.current.selectedItemId = (h = M()) == null ? void 0 : h.id, E.emit(); 2274 }), s || v(5, ne), ((l = p2.current) == null ? void 0 : l.value) !== void 0) { 2275 let h = a != null ? a : ""; 2276 (y = (g = p2.current).onValueChange) == null || y.call(g, h); 2277 return; 2278 } 2279 } 2280 E.emit(); 2281 } 2282 }, emit: () => { 2283 f.current.forEach((e) => e()); 2284 } }), []), U2 = t.useMemo(() => ({ value: (e, a, s) => { 2285 var i; 2286 a !== ((i = d.current.get(e)) == null ? void 0 : i.value) && (d.current.set(e, { value: a, keywords: s }), n.current.filtered.items.set(e, te(a, s)), v(2, () => { 2287 z(), E.emit(); 2288 })); 2289 }, item: (e, a) => (u2.current.add(e), a && (c.current.has(a) ? c.current.get(a).add(e) : c.current.set(a, /* @__PURE__ */ new Set([e]))), v(3, () => { 2290 J2(), z(), n.current.value || W2(), E.emit(); 2291 }), () => { 2292 d.current.delete(e), u2.current.delete(e), n.current.filtered.items.delete(e); 2293 let s = M(); 2294 v(4, () => { 2295 J2(), (s == null ? void 0 : s.getAttribute("id")) === e && W2(), E.emit(); 2296 }); 2297 }), group: (e) => (c.current.has(e) || c.current.set(e, /* @__PURE__ */ new Set()), () => { 2298 d.current.delete(e), c.current.delete(e); 2299 }), filter: () => p2.current.shouldFilter, label: b || r2["aria-label"], getDisablePointerSelection: () => p2.current.disablePointerSelection, listId: $2, inputId: _, labelId: q, listInnerRef: I }), []); 2300 function te(e, a) { 2301 var i, l; 2302 let s = (l = (i = p2.current) == null ? void 0 : i.filter) != null ? l : Re; 2303 return e ? s(e, n.current.search, a) : 0; 2304 } 2305 function z() { 2306 if (!n.current.search || p2.current.shouldFilter === false) return; 2307 let e = n.current.filtered.items, a = []; 2308 n.current.filtered.groups.forEach((i) => { 2309 let l = c.current.get(i), g = 0; 2310 l.forEach((y) => { 2311 let h = e.get(y); 2312 g = Math.max(h, g); 2313 }), a.push([i, g]); 2314 }); 2315 let s = I.current; 2316 V().sort((i, l) => { 2317 var h, F; 2318 let g = i.getAttribute("id"), y = l.getAttribute("id"); 2319 return ((h = e.get(y)) != null ? h : 0) - ((F = e.get(g)) != null ? F : 0); 2320 }).forEach((i) => { 2321 let l = i.closest(Y2); 2322 l ? l.appendChild(i.parentElement === l ? i : i.closest(`$Y2} > *`)) : s.appendChild(i.parentElement === s ? i : i.closest(`$Y2} > *`)); 2323 }), a.sort((i, l) => l[1] - i[1]).forEach((i) => { 2324 var g; 2325 let l = (g = I.current) == null ? void 0 : g.querySelector(`$N}[$T}="$encodeURIComponent(i[0])}"]`); 2326 l == null || l.parentElement.appendChild(l); 2327 }); 2328 } 2329 function W2() { 2330 let e = V().find((s) => s.getAttribute("aria-disabled") !== "true"), a = e == null ? void 0 : e.getAttribute(T); 2331 E.setState("value", a || void 0); 2332 } 2333 function J2() { 2334 var a, s, i, l; 2335 if (!n.current.search || p2.current.shouldFilter === false) { 2336 n.current.filtered.count = u2.current.size; 2337 return; 2338 } 2339 n.current.filtered.groups = /* @__PURE__ */ new Set(); 2340 let e = 0; 2341 for (let g of u2.current) { 2342 let y = (s = (a = d.current.get(g)) == null ? void 0 : a.value) != null ? s : "", h = (l = (i = d.current.get(g)) == null ? void 0 : i.keywords) != null ? l : [], F = te(y, h); 2343 n.current.filtered.items.set(g, F), F > 0 && e++; 2344 } 2345 for (let [g, y] of c.current) for (let h of y) if (n.current.filtered.items.get(h) > 0) { 2346 n.current.filtered.groups.add(g); 2347 break; 2348 } 2349 n.current.filtered.count = e; 2350 } 2351 function ne() { 2352 var a, s, i; 2353 let e = M(); 2354 e && (((a = e.parentElement) == null ? void 0 : a.firstChild) === e && ((i = (s = e.closest(N)) == null ? void 0 : s.querySelector(be)) == null || i.scrollIntoView({ block: "nearest" })), e.scrollIntoView({ block: "nearest" })); 2355 } 2356 function M() { 2357 var e; 2358 return (e = I.current) == null ? void 0 : e.querySelector(`$le}[aria-selected="true"]`); 2359 } 2360 function V() { 2361 var e; 2362 return Array.from(((e = I.current) == null ? void 0 : e.querySelectorAll(ce)) || []); 2363 } 2364 function X2(e) { 2365 let s = V()[e]; 2366 s && E.setState("value", s.getAttribute(T)); 2367 } 2368 function Q(e) { 2369 var g; 2370 let a = M(), s = V(), i = s.findIndex((y) => y === a), l = s[i + e]; 2371 (g = p2.current) != null && g.loop && (l = i + e < 0 ? s[s.length - 1] : i + e === s.length ? s[0] : s[i + e]), l && E.setState("value", l.getAttribute(T)); 2372 } 2373 function re(e) { 2374 let a = M(), s = a == null ? void 0 : a.closest(N), i; 2375 for (; s && !i; ) s = e > 0 ? we(s, N) : De(s, N), i = s == null ? void 0 : s.querySelector(ce); 2376 i ? E.setState("value", i.getAttribute(T)) : Q(e); 2377 } 2378 let oe = () => X2(V().length - 1), ie = (e) => { 2379 e.preventDefault(), e.metaKey ? oe() : e.altKey ? re(1) : Q(1); 2380 }, se = (e) => { 2381 e.preventDefault(), e.metaKey ? X2(0) : e.altKey ? re(-1) : Q(-1); 2382 }; 2383 return t.createElement(Primitive.div, { ref: o, tabIndex: -1, ...O, "cmdk-root": "", onKeyDown: (e) => { 2384 var s; 2385 (s = O.onKeyDown) == null || s.call(O, e); 2386 let a = e.nativeEvent.isComposing || e.keyCode === 229; 2387 if (!(e.defaultPrevented || a)) switch (e.key) { 2388 case "n": 2389 case "j": { 2390 j && e.ctrlKey && ie(e); 2391 break; 2392 } 2393 case "ArrowDown": { 2394 ie(e); 2395 break; 2396 } 2397 case "p": 2398 case "k": { 2399 j && e.ctrlKey && se(e); 2400 break; 2401 } 2402 case "ArrowUp": { 2403 se(e); 2404 break; 2405 } 2406 case "Home": { 2407 e.preventDefault(), X2(0); 2408 break; 2409 } 2410 case "End": { 2411 e.preventDefault(), oe(); 2412 break; 2413 } 2414 case "Enter": { 2415 e.preventDefault(); 2416 let i = M(); 2417 if (i) { 2418 let l = new Event(Z); 2419 i.dispatchEvent(l); 2420 } 2421 } 2422 } 2423 } }, t.createElement("label", { "cmdk-label": "", htmlFor: U2.inputId, id: U2.labelId, style: Te }, b), B2(r2, (e) => t.createElement(de.Provider, { value: E }, t.createElement(ue.Provider, { value: U2 }, e)))); 2424 }); 2425 var he = t.forwardRef((r2, o) => { 2426 var _, I; 2427 let n = useId(), u2 = t.useRef(null), c = t.useContext(fe), d = K2(), f = pe(r2), p2 = (I = (_ = f.current) == null ? void 0 : _.forceMount) != null ? I : c == null ? void 0 : c.forceMount; 2428 k2(() => { 2429 if (!p2) return d.item(n, c == null ? void 0 : c.id); 2430 }, [p2]); 2431 let b = ve(n, u2, [r2.value, r2.children, u2], r2.keywords), m2 = ee(), R = P((v) => v.value && v.value === b.current), x = P((v) => p2 || d.filter() === false ? true : v.search ? v.filtered.items.get(n) > 0 : true); 2432 t.useEffect(() => { 2433 let v = u2.current; 2434 if (!(!v || r2.disabled)) return v.addEventListener(Z, C), () => v.removeEventListener(Z, C); 2435 }, [x, r2.onSelect, r2.disabled]); 2436 function C() { 2437 var v, E; 2438 S(), (E = (v = f.current).onSelect) == null || E.call(v, b.current); 2439 } 2440 function S() { 2441 m2.setState("value", b.current, true); 2442 } 2443 if (!x) return null; 2444 let { disabled: A, value: ge, onSelect: j, forceMount: O, keywords: $2, ...q } = r2; 2445 return t.createElement(Primitive.div, { ref: composeRefs(u2, o), ...q, id: n, "cmdk-item": "", role: "option", "aria-disabled": !!A, "aria-selected": !!R, "data-disabled": !!A, "data-selected": !!R, onPointerMove: A || d.getDisablePointerSelection() ? void 0 : S, onClick: A ? void 0 : C }, r2.children); 2446 }); 2447 var Ee = t.forwardRef((r2, o) => { 2448 let { heading: n, children: u2, forceMount: c, ...d } = r2, f = useId(), p2 = t.useRef(null), b = t.useRef(null), m2 = useId(), R = K2(), x = P((S) => c || R.filter() === false ? true : S.search ? S.filtered.groups.has(f) : true); 2449 k2(() => R.group(f), []), ve(f, p2, [r2.value, r2.heading, b]); 2450 let C = t.useMemo(() => ({ id: f, forceMount: c }), [c]); 2451 return t.createElement(Primitive.div, { ref: composeRefs(p2, o), ...d, "cmdk-group": "", role: "presentation", hidden: x ? void 0 : true }, n && t.createElement("div", { ref: b, "cmdk-group-heading": "", "aria-hidden": true, id: m2 }, n), B2(r2, (S) => t.createElement("div", { "cmdk-group-items": "", role: "group", "aria-labelledby": n ? m2 : void 0 }, t.createElement(fe.Provider, { value: C }, S)))); 2452 }); 2453 var ye = t.forwardRef((r2, o) => { 2454 let { alwaysRender: n, ...u2 } = r2, c = t.useRef(null), d = P((f) => !f.search); 2455 return !n && !d ? null : t.createElement(Primitive.div, { ref: composeRefs(c, o), ...u2, "cmdk-separator": "", role: "separator" }); 2456 }); 2457 var Se = t.forwardRef((r2, o) => { 2458 let { onValueChange: n, ...u2 } = r2, c = r2.value != null, d = ee(), f = P((m2) => m2.search), p2 = P((m2) => m2.selectedItemId), b = K2(); 2459 return t.useEffect(() => { 2460 r2.value != null && d.setState("search", r2.value); 2461 }, [r2.value]), t.createElement(Primitive.input, { ref: o, ...u2, "cmdk-input": "", autoComplete: "off", autoCorrect: "off", spellCheck: false, "aria-autocomplete": "list", role: "combobox", "aria-expanded": true, "aria-controls": b.listId, "aria-labelledby": b.labelId, "aria-activedescendant": p2, id: b.inputId, type: "text", value: c ? r2.value : f, onChange: (m2) => { 2462 c || d.setState("search", m2.target.value), n == null || n(m2.target.value); 2463 } }); 2464 }); 2465 var Ce = t.forwardRef((r2, o) => { 2466 let { children: n, label: u2 = "Suggestions", ...c } = r2, d = t.useRef(null), f = t.useRef(null), p2 = P((m2) => m2.selectedItemId), b = K2(); 2467 return t.useEffect(() => { 2468 if (f.current && d.current) { 2469 let m2 = f.current, R = d.current, x, C = new ResizeObserver(() => { 2470 x = requestAnimationFrame(() => { 2471 let S = m2.offsetHeight; 2472 R.style.setProperty("--cmdk-list-height", S.toFixed(1) + "px"); 2473 }); 2474 }); 2475 return C.observe(m2), () => { 2476 cancelAnimationFrame(x), C.unobserve(m2); 2477 }; 2478 } 2479 }, []), t.createElement(Primitive.div, { ref: composeRefs(d, o), ...c, "cmdk-list": "", role: "listbox", tabIndex: -1, "aria-activedescendant": p2, "aria-label": u2, id: b.listId }, B2(r2, (m2) => t.createElement("div", { ref: composeRefs(f, b.listInnerRef), "cmdk-list-sizer": "" }, m2))); 2480 }); 2481 var xe = t.forwardRef((r2, o) => { 2482 let { open: n, onOpenChange: u2, overlayClassName: c, contentClassName: d, container: f, ...p2 } = r2; 2483 return t.createElement(Root, { open: n, onOpenChange: u2 }, t.createElement(Portal2, { container: f }, t.createElement(Overlay, { "cmdk-overlay": "", className: c }), t.createElement(Content, { "aria-label": r2.label, "cmdk-dialog": "", className: d }, t.createElement(me, { ref: o, ...p2 })))); 2484 }); 2485 var Ie = t.forwardRef((r2, o) => P((u2) => u2.filtered.count === 0) ? t.createElement(Primitive.div, { ref: o, ...r2, "cmdk-empty": "", role: "presentation" }) : null); 2486 var Pe = t.forwardRef((r2, o) => { 2487 let { progress: n, children: u2, label: c = "Loading...", ...d } = r2; 2488 return t.createElement(Primitive.div, { ref: o, ...d, "cmdk-loading": "", role: "progressbar", "aria-valuenow": n, "aria-valuemin": 0, "aria-valuemax": 100, "aria-label": c }, B2(r2, (f) => t.createElement("div", { "aria-hidden": true }, f))); 2489 }); 2490 var _e = Object.assign(me, { List: Ce, Item: he, Input: Se, Group: Ee, Separator: ye, Dialog: xe, Empty: Ie, Loading: Pe }); 2491 function we(r2, o) { 2492 let n = r2.nextElementSibling; 2493 for (; n; ) { 2494 if (n.matches(o)) return n; 2495 n = n.nextElementSibling; 2496 } 2497 } 2498 function De(r2, o) { 2499 let n = r2.previousElementSibling; 2500 for (; n; ) { 2501 if (n.matches(o)) return n; 2502 n = n.previousElementSibling; 2503 } 2504 } 2505 function pe(r2) { 2506 let o = t.useRef(r2); 2507 return k2(() => { 2508 o.current = r2; 2509 }), o; 2510 } 2511 var k2 = typeof window == "undefined" ? t.useEffect : t.useLayoutEffect; 2512 function L(r2) { 2513 let o = t.useRef(); 2514 return o.current === void 0 && (o.current = r2()), o; 2515 } 2516 function P(r2) { 2517 let o = ee(), n = () => r2(o.snapshot()); 2518 return t.useSyncExternalStore(o.subscribe, n, n); 2519 } 2520 function ve(r2, o, n, u2 = []) { 2521 let c = t.useRef(), d = K2(); 2522 return k2(() => { 2523 var b; 2524 let f = (() => { 2525 var m2; 2526 for (let R of n) { 2527 if (typeof R == "string") return R.trim(); 2528 if (typeof R == "object" && "current" in R) return R.current ? (m2 = R.current.textContent) == null ? void 0 : m2.trim() : c.current; 2529 } 2530 })(), p2 = u2.map((m2) => m2.trim()); 2531 d.value(r2, f, p2), (b = o.current) == null || b.setAttribute(T, f), c.current = f; 2532 }), c; 2533 } 2534 var ke = () => { 2535 let [r2, o] = t.useState(), n = L(() => /* @__PURE__ */ new Map()); 2536 return k2(() => { 2537 n.current.forEach((u2) => u2()), n.current = /* @__PURE__ */ new Map(); 2538 }, [r2]), (u2, c) => { 2539 n.current.set(u2, c), o({}); 2540 }; 2541 }; 2542 function Me(r2) { 2543 let o = r2.type; 2544 return typeof o == "function" ? o(r2.props) : "render" in o ? o.render(r2.props) : r2; 2545 } 2546 function B2({ asChild: r2, children: o }, n) { 2547 return r2 && t.isValidElement(o) ? t.cloneElement(Me(o), { ref: o.ref }, n(o.props.children)) : n(o); 2548 } 2549 var Te = { position: "absolute", width: "1px", height: "1px", padding: "0", margin: "-1px", overflow: "hidden", clip: "rect(0, 0, 0, 0)", whiteSpace: "nowrap", borderWidth: "0" }; 2550 2551 // node_modules/clsx/dist/clsx.mjs 2552 function r(e) { 2553 var t2, f, n = ""; 2554 if ("string" == typeof e || "number" == typeof e) n += e; 2555 else if ("object" == typeof e) if (Array.isArray(e)) { 2556 var o = e.length; 2557 for (t2 = 0; t2 < o; t2++) e[t2] && (f = r(e[t2])) && (n && (n += " "), n += f); 2558 } else for (f in e) e[f] && (n && (n += " "), n += f); 2559 return n; 2560 } 2561 function clsx() { 2562 for (var e, t2, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t2 = r(e)) && (n && (n += " "), n += t2); 2563 return n; 2564 } 2565 var clsx_default = clsx; 2566 2567 // packages/commands/build-module/components/command-menu.mjs 2568 var import_data5 = __toESM(require_data(), 1); 2569 var import_element3 = __toESM(require_element(), 1); 2570 var import_i18n = __toESM(require_i18n(), 1); 2571 var import_components = __toESM(require_components(), 1); 2572 var import_keyboard_shortcuts = __toESM(require_keyboard_shortcuts(), 1); 2573 2574 // packages/icons/build-module/icon/index.mjs 2575 var import_element = __toESM(require_element(), 1); 2576 var icon_default = (0, import_element.forwardRef)( 2577 ({ icon, size = 24, ...props }, ref) => { 2578 return (0, import_element.cloneElement)(icon, { 2579 width: size, 2580 height: size, 2581 ...props, 2582 ref 2583 }); 2584 } 2585 ); 2586 2587 // packages/icons/build-module/library/arrow-right.mjs 2588 var import_primitives = __toESM(require_primitives(), 1); 2589 var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1); 2590 var arrow_right_default = /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_primitives.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_primitives.Path, { d: "m14.5 6.5-1 1 3.7 3.7H4v1.6h13.2l-3.7 3.7 1 1 5.6-5.5z" }) }); 2591 2592 // packages/icons/build-module/library/search.mjs 2593 var import_primitives2 = __toESM(require_primitives(), 1); 2594 var import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1); 2595 var search_default = /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_primitives2.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_primitives2.Path, { d: "M13 5c-3.3 0-6 2.7-6 6 0 1.4.5 2.7 1.3 3.7l-3.8 3.8 1.1 1.1 3.8-3.8c1 .8 2.3 1.3 3.7 1.3 3.3 0 6-2.7 6-6S16.3 5 13 5zm0 10.5c-2.5 0-4.5-2-4.5-4.5s2-4.5 4.5-4.5 4.5 2 4.5 4.5-2 4.5-4.5 4.5z" }) }); 2596 2597 // packages/commands/build-module/store/index.mjs 2598 var import_data3 = __toESM(require_data(), 1); 2599 2600 // packages/commands/build-module/store/reducer.mjs 2601 var import_data = __toESM(require_data(), 1); 2602 function commands(state = {}, action) { 2603 switch (action.type) { 2604 case "REGISTER_COMMAND": 2605 return { 2606 ...state, 2607 [action.name]: { 2608 name: action.name, 2609 label: action.label, 2610 searchLabel: action.searchLabel, 2611 context: action.context, 2612 category: action.category, 2613 callback: action.callback, 2614 icon: action.icon, 2615 keywords: action.keywords 2616 } 2617 }; 2618 case "UNREGISTER_COMMAND": { 2619 const { [action.name]: _, ...remainingState } = state; 2620 return remainingState; 2621 } 2622 } 2623 return state; 2624 } 2625 function commandLoaders(state = {}, action) { 2626 switch (action.type) { 2627 case "REGISTER_COMMAND_LOADER": 2628 return { 2629 ...state, 2630 [action.name]: { 2631 name: action.name, 2632 context: action.context, 2633 category: action.category, 2634 hook: action.hook 2635 } 2636 }; 2637 case "UNREGISTER_COMMAND_LOADER": { 2638 const { [action.name]: _, ...remainingState } = state; 2639 return remainingState; 2640 } 2641 } 2642 return state; 2643 } 2644 function isOpen(state = false, action) { 2645 switch (action.type) { 2646 case "OPEN": 2647 return true; 2648 case "CLOSE": 2649 return false; 2650 } 2651 return state; 2652 } 2653 function context(state = "root", action) { 2654 switch (action.type) { 2655 case "SET_CONTEXT": 2656 return action.context; 2657 } 2658 return state; 2659 } 2660 function loaderStates(state = {}, action) { 2661 switch (action.type) { 2662 case "SET_LOADER_LOADING": 2663 return { 2664 ...state, 2665 [action.name]: action.isLoading 2666 }; 2667 } 2668 return state; 2669 } 2670 var reducer = (0, import_data.combineReducers)({ 2671 commands, 2672 commandLoaders, 2673 isOpen, 2674 context, 2675 loaderStates 2676 }); 2677 var reducer_default = reducer; 2678 2679 // packages/commands/build-module/store/actions.mjs 2680 var actions_exports = {}; 2681 __export(actions_exports, { 2682 close: () => close, 2683 open: () => open, 2684 registerCommand: () => registerCommand, 2685 registerCommandLoader: () => registerCommandLoader, 2686 unregisterCommand: () => unregisterCommand, 2687 unregisterCommandLoader: () => unregisterCommandLoader 2688 }); 2689 var REGISTERABLE_CATEGORIES = /* @__PURE__ */ new Set([ 2690 "command", 2691 "view", 2692 "edit", 2693 "action" 2694 ]); 2695 function registerCommand(config) { 2696 let { category } = config; 2697 if (!category || !REGISTERABLE_CATEGORIES.has(category)) { 2698 category = "action"; 2699 } 2700 return { 2701 type: "REGISTER_COMMAND", 2702 ...config, 2703 category 2704 }; 2705 } 2706 function unregisterCommand(name) { 2707 return { 2708 type: "UNREGISTER_COMMAND", 2709 name 2710 }; 2711 } 2712 function registerCommandLoader(config) { 2713 let { category } = config; 2714 if (!category || !REGISTERABLE_CATEGORIES.has(category)) { 2715 category = "action"; 2716 } 2717 return { 2718 type: "REGISTER_COMMAND_LOADER", 2719 ...config, 2720 category 2721 }; 2722 } 2723 function unregisterCommandLoader(name) { 2724 return { 2725 type: "UNREGISTER_COMMAND_LOADER", 2726 name 2727 }; 2728 } 2729 function open() { 2730 return { 2731 type: "OPEN" 2732 }; 2733 } 2734 function close() { 2735 return { 2736 type: "CLOSE" 2737 }; 2738 } 2739 2740 // packages/commands/build-module/store/selectors.mjs 2741 var selectors_exports = {}; 2742 __export(selectors_exports, { 2743 getCommandLoaders: () => getCommandLoaders, 2744 getCommands: () => getCommands, 2745 getContext: () => getContext, 2746 isOpen: () => isOpen2 2747 }); 2748 var import_data2 = __toESM(require_data(), 1); 2749 var getCommands = (0, import_data2.createSelector)( 2750 (state, contextual = false) => Object.values(state.commands).filter((command) => { 2751 const isContextual = command.context && command.context === state.context; 2752 return contextual ? isContextual : !isContextual; 2753 }), 2754 (state) => [state.commands, state.context] 2755 ); 2756 var getCommandLoaders = (0, import_data2.createSelector)( 2757 (state, contextual = false) => Object.values(state.commandLoaders).filter((loader) => { 2758 const isContextual = loader.context && loader.context === state.context; 2759 return contextual ? isContextual : !isContextual; 2760 }), 2761 (state) => [state.commandLoaders, state.context] 2762 ); 2763 function isOpen2(state) { 2764 return state.isOpen; 2765 } 2766 function getContext(state) { 2767 return state.context; 2768 } 2769 2770 // packages/commands/build-module/store/private-actions.mjs 2771 var private_actions_exports = {}; 2772 __export(private_actions_exports, { 2773 setContext: () => setContext, 2774 setLoaderLoading: () => setLoaderLoading 2775 }); 2776 function setContext(context2) { 2777 return { 2778 type: "SET_CONTEXT", 2779 context: context2 2780 }; 2781 } 2782 function setLoaderLoading(name, isLoading2) { 2783 return { 2784 type: "SET_LOADER_LOADING", 2785 name, 2786 isLoading: isLoading2 2787 }; 2788 } 2789 2790 // packages/commands/build-module/store/private-selectors.mjs 2791 var private_selectors_exports = {}; 2792 __export(private_selectors_exports, { 2793 isLoading: () => isLoading 2794 }); 2795 function isLoading(state) { 2796 return Object.values(state.loaderStates).some(Boolean); 2797 } 2798 2799 // packages/commands/build-module/lock-unlock.mjs 2800 var import_private_apis = __toESM(require_private_apis(), 1); 2801 var { lock, unlock } = (0, import_private_apis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)( 2802 "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.", 2803 "@wordpress/commands" 2804 ); 2805 2806 // packages/commands/build-module/store/index.mjs 2807 var STORE_NAME = "core/commands"; 2808 var store = (0, import_data3.createReduxStore)(STORE_NAME, { 2809 reducer: reducer_default, 2810 actions: actions_exports, 2811 selectors: selectors_exports 2812 }); 2813 (0, import_data3.register)(store); 2814 unlock(store).registerPrivateActions(private_actions_exports); 2815 unlock(store).registerPrivateSelectors(private_selectors_exports); 2816 2817 // packages/commands/build-module/components/use-recent-commands.mjs 2818 var import_data4 = __toESM(require_data(), 1); 2819 var import_preferences = __toESM(require_preferences(), 1); 2820 var import_element2 = __toESM(require_element(), 1); 2821 var MAX_RECENTLY_SAVED = 30; 2822 var MAX_RECENTLY_DISPLAYED = 5; 2823 var EMPTY_ARRAY = []; 2824 var EMPTY_SET = /* @__PURE__ */ new Set(); 2825 function recordUsage(name) { 2826 const current = (0, import_data4.select)(import_preferences.store).get( 2827 "core/commands", 2828 "recentlyUsed" 2829 ) ?? []; 2830 const next = [name, ...current.filter((n) => n !== name)].slice( 2831 0, 2832 MAX_RECENTLY_SAVED 2833 ); 2834 (0, import_data4.dispatch)(import_preferences.store).set("core/commands", "recentlyUsed", next); 2835 } 2836 function useLoaderCollector(hook, name, filterNames, onResolved) { 2837 const { setLoaderLoading: setLoaderLoading2 } = unlock((0, import_data4.useDispatch)(store)); 2838 const { isLoading: loading, commands: commands2 = [] } = hook({ search: "" }) ?? {}; 2839 (0, import_element2.useEffect)(() => { 2840 setLoaderLoading2(name, loading); 2841 }, [setLoaderLoading2, name, loading]); 2842 const filtered = filterNames ? commands2.filter((c) => filterNames.has(c.name)) : commands2; 2843 (0, import_element2.useEffect)(() => { 2844 onResolved(name, filtered); 2845 }, [onResolved, name, filtered]); 2846 (0, import_element2.useEffect)(() => { 2847 return () => onResolved(name, []); 2848 }, [onResolved, name]); 2849 } 2850 function useRecentCommands() { 2851 const { 2852 contextualCommands, 2853 staticCommands, 2854 contextualLoaders, 2855 staticLoaders, 2856 recentlyUsedNames = EMPTY_ARRAY 2857 } = (0, import_data4.useSelect)((select) => { 2858 const { getCommands: getCommands2, getCommandLoaders: getCommandLoaders2 } = select(store); 2859 return { 2860 contextualCommands: getCommands2(true), 2861 staticCommands: getCommands2(false), 2862 contextualLoaders: getCommandLoaders2(true), 2863 staticLoaders: getCommandLoaders2(false), 2864 recentlyUsedNames: select(import_preferences.store).get( 2865 "core/commands", 2866 "recentlyUsed" 2867 ) 2868 }; 2869 }, []); 2870 const [resolvedMap, setResolvedMap] = (0, import_element2.useState)(() => /* @__PURE__ */ new Map()); 2871 const onResolved = (0, import_element2.useCallback)((loaderName, cmds) => { 2872 setResolvedMap((prev) => { 2873 const prevCmds = prev.get(loaderName); 2874 if (prevCmds && prevCmds.length === cmds.length && prevCmds.every((c, i) => c.name === cmds[i].name)) { 2875 return prev; 2876 } 2877 const next = new Map(prev); 2878 next.set(loaderName, cmds); 2879 return next; 2880 }); 2881 }, []); 2882 const { recentNames, recentSet } = (0, import_element2.useMemo)(() => { 2883 const names = recentlyUsedNames.slice(0, MAX_RECENTLY_DISPLAYED); 2884 return { recentNames: names, recentSet: new Set(names) }; 2885 }, [recentlyUsedNames]); 2886 if (!recentlyUsedNames.length) { 2887 return { 2888 commands: [], 2889 loaders: [], 2890 recentSet: EMPTY_SET, 2891 onResolved 2892 }; 2893 } 2894 const allStaticCommands = [...contextualCommands, ...staticCommands]; 2895 const loaders = [...contextualLoaders, ...staticLoaders]; 2896 const allByName = /* @__PURE__ */ new Map(); 2897 allStaticCommands.forEach((c) => allByName.set(c.name, c)); 2898 for (const cmds of resolvedMap.values()) { 2899 cmds.forEach((c) => { 2900 if (!allByName.has(c.name)) { 2901 allByName.set(c.name, c); 2902 } 2903 }); 2904 } 2905 const commands2 = recentNames.map((n) => allByName.get(n)).filter(Boolean); 2906 return { commands: commands2, loaders, recentSet, onResolved }; 2907 } 2908 2909 // packages/commands/build-module/components/command-menu.mjs 2910 var import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1); 2911 var { withIgnoreIMEEvents } = unlock(import_components.privateApis); 2912 var ITEM_ID_PREFIX = "command-palette-item-"; 2913 var inputLabel = (0, import_i18n.__)("Search commands and settings"); 2914 var CATEGORY_ICONS = { 2915 view: arrow_right_default 2916 }; 2917 var CATEGORY_LABELS = { 2918 command: (0, import_i18n.__)("Command"), 2919 view: (0, import_i18n.__)("View"), 2920 edit: (0, import_i18n.__)("Edit"), 2921 action: (0, import_i18n.__)("Action"), 2922 workflow: (0, import_i18n.__)("Workflow") 2923 }; 2924 function isValidIcon(icon) { 2925 return !!icon && (typeof icon === "string" || (0, import_element3.isValidElement)(icon) || typeof icon === "function" || icon instanceof import_element3.Component); 2926 } 2927 function CommandItem({ command, search, category, valuePrefix }) { 2928 const { close: close2 } = (0, import_data5.useDispatch)(store); 2929 const commandCategory = category ?? command.category; 2930 const label = command.searchLabel ?? command.label; 2931 const value = valuePrefix ? `$valuePrefix}$command.name}` : label; 2932 return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)( 2933 _e.Item, 2934 { 2935 id: `$ITEM_ID_PREFIX}$value.toLowerCase()}`, 2936 value, 2937 keywords: valuePrefix ? [...command.keywords ?? [], label] : command.keywords, 2938 onSelect: () => { 2939 recordUsage(command.name); 2940 command.callback({ close: close2 }); 2941 }, 2942 children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)( 2943 import_components.__experimentalHStack, 2944 { 2945 alignment: "left", 2946 className: clsx_default("commands-command-menu__item", { 2947 "has-icon": CATEGORY_ICONS[commandCategory] || command.icon 2948 }), 2949 children: [ 2950 CATEGORY_ICONS[commandCategory] ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(icon_default, { icon: CATEGORY_ICONS[commandCategory] }) : isValidIcon(command.icon) && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(icon_default, { icon: command.icon }), 2951 /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "commands-command-menu__item-label", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)( 2952 import_components.TextHighlight, 2953 { 2954 text: command.label, 2955 highlight: search 2956 } 2957 ) }), 2958 CATEGORY_LABELS[commandCategory] && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "commands-command-menu__item-category", children: CATEGORY_LABELS[commandCategory] }) 2959 ] 2960 } 2961 ) 2962 }, 2963 command.name 2964 ); 2965 } 2966 function CommandMenuLoader({ name, search, hook, category, valuePrefix }) { 2967 const { setLoaderLoading: setLoaderLoading2 } = unlock((0, import_data5.useDispatch)(store)); 2968 const { isLoading: loading, commands: commands2 = [] } = hook({ search }) ?? {}; 2969 (0, import_element3.useEffect)(() => { 2970 setLoaderLoading2(name, loading); 2971 }, [setLoaderLoading2, name, loading]); 2972 if (!commands2.length) { 2973 return null; 2974 } 2975 return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_jsx_runtime10.Fragment, { children: commands2.map((command) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)( 2976 CommandItem, 2977 { 2978 command, 2979 search, 2980 category: command.category ?? category, 2981 valuePrefix 2982 }, 2983 command.name 2984 )) }); 2985 } 2986 function CommandMenuLoaderWrapper({ hook, ...props }) { 2987 const currentLoaderRef = (0, import_element3.useRef)(hook); 2988 const [key, setKey] = (0, import_element3.useState)(0); 2989 (0, import_element3.useEffect)(() => { 2990 if (currentLoaderRef.current !== hook) { 2991 currentLoaderRef.current = hook; 2992 setKey((prevKey) => prevKey + 1); 2993 } 2994 }, [hook]); 2995 return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)( 2996 CommandMenuLoader, 2997 { 2998 hook: currentLoaderRef.current, 2999 ...props 3000 }, 3001 key 3002 ); 3003 } 3004 function CommandList({ search, commands: commands2, loaders, valuePrefix }) { 3005 return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment, { children: [ 3006 commands2.map((command) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)( 3007 CommandItem, 3008 { 3009 command, 3010 search, 3011 valuePrefix 3012 }, 3013 command.name 3014 )), 3015 loaders.map((loader) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)( 3016 CommandMenuLoaderWrapper, 3017 { 3018 name: loader.name, 3019 search, 3020 hook: loader.hook, 3021 category: loader.category, 3022 valuePrefix 3023 }, 3024 loader.name 3025 )) 3026 ] }); 3027 } 3028 function RecentLoaderRunner({ hook, name, filterNames, onResolved }) { 3029 useLoaderCollector(hook, name, filterNames, onResolved); 3030 return null; 3031 } 3032 function RecentGroup() { 3033 const { commands: commands2, loaders, recentSet, onResolved } = useRecentCommands(); 3034 if (!commands2.length && !loaders.length) { 3035 return null; 3036 } 3037 return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(_e.Group, { heading: (0, import_i18n.__)("Recent"), children: [ 3038 loaders.map((loader) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)( 3039 RecentLoaderRunner, 3040 { 3041 name: loader.name, 3042 hook: loader.hook, 3043 filterNames: recentSet, 3044 onResolved 3045 }, 3046 loader.name 3047 )), 3048 commands2.map((command) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)( 3049 CommandItem, 3050 { 3051 command, 3052 search: "", 3053 valuePrefix: "recent-" 3054 }, 3055 command.name 3056 )) 3057 ] }); 3058 } 3059 function SuggestionsGroup() { 3060 const { commands: commands2, loaders } = (0, import_data5.useSelect)((select) => { 3061 const { getCommands: getCommands2, getCommandLoaders: getCommandLoaders2 } = select(store); 3062 return { 3063 commands: getCommands2(true), 3064 loaders: getCommandLoaders2(true) 3065 }; 3066 }, []); 3067 return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(_e.Group, { heading: (0, import_i18n.__)("Suggestions"), children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(CommandList, { search: "", commands: commands2, loaders }) }); 3068 } 3069 function ResultsGroup({ search }) { 3070 const { commands: commands2, contextualCommands, loaders, contextualLoaders } = (0, import_data5.useSelect)((select) => { 3071 const { getCommands: getCommands2, getCommandLoaders: getCommandLoaders2 } = select(store); 3072 return { 3073 commands: getCommands2(false), 3074 contextualCommands: getCommands2(true), 3075 loaders: getCommandLoaders2(false), 3076 contextualLoaders: getCommandLoaders2(true) 3077 }; 3078 }, []); 3079 return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(_e.Group, { heading: (0, import_i18n.__)("Results"), children: [ 3080 /* @__PURE__ */ (0, import_jsx_runtime10.jsx)( 3081 CommandList, 3082 { 3083 search, 3084 commands: commands2, 3085 loaders 3086 } 3087 ), 3088 /* @__PURE__ */ (0, import_jsx_runtime10.jsx)( 3089 CommandList, 3090 { 3091 search, 3092 commands: contextualCommands, 3093 loaders: contextualLoaders 3094 } 3095 ) 3096 ] }); 3097 } 3098 function CommandInput({ search, setSearch }) { 3099 const commandMenuInput = (0, import_element3.useRef)(); 3100 const _value = P((state) => state.value); 3101 const selectedItemId = _value ? `$ITEM_ID_PREFIX}$_value}` : null; 3102 (0, import_element3.useEffect)(() => { 3103 commandMenuInput.current.focus(); 3104 }, []); 3105 return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)( 3106 _e.Input, 3107 { 3108 ref: commandMenuInput, 3109 value: search, 3110 onValueChange: setSearch, 3111 placeholder: inputLabel, 3112 "aria-activedescendant": selectedItemId 3113 } 3114 ); 3115 } 3116 function CommandMenu() { 3117 const { registerShortcut } = (0, import_data5.useDispatch)(import_keyboard_shortcuts.store); 3118 const [search, setSearch] = (0, import_element3.useState)(""); 3119 const { isOpen: paletteIsOpen, loadersLoading } = (0, import_data5.useSelect)( 3120 (select) => ({ 3121 isOpen: select(store).isOpen(), 3122 loadersLoading: unlock(select(store)).isLoading() 3123 }), 3124 [] 3125 ); 3126 const { open: open2, close: close2 } = (0, import_data5.useDispatch)(store); 3127 (0, import_element3.useEffect)(() => { 3128 registerShortcut({ 3129 name: "core/commands", 3130 category: "global", 3131 description: (0, import_i18n.__)("Open the command palette."), 3132 keyCombination: { 3133 modifier: "primary", 3134 character: "k" 3135 } 3136 }); 3137 }, [registerShortcut]); 3138 (0, import_keyboard_shortcuts.useShortcut)( 3139 "core/commands", 3140 /** @type {React.KeyboardEventHandler} */ 3141 withIgnoreIMEEvents((event) => { 3142 if (event.defaultPrevented) { 3143 return; 3144 } 3145 event.preventDefault(); 3146 if (paletteIsOpen) { 3147 close2(); 3148 } else { 3149 open2(); 3150 } 3151 }), 3152 { 3153 bindGlobal: true 3154 } 3155 ); 3156 const closeAndReset = () => { 3157 setSearch(""); 3158 close2(); 3159 }; 3160 if (!paletteIsOpen) { 3161 return false; 3162 } 3163 return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)( 3164 import_components.Modal, 3165 { 3166 className: "commands-command-menu", 3167 overlayClassName: "commands-command-menu__overlay", 3168 onRequestClose: closeAndReset, 3169 __experimentalHideHeader: true, 3170 size: "medium", 3171 contentLabel: (0, import_i18n.__)("Command palette"), 3172 children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "commands-command-menu__container", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(_e, { label: inputLabel, loop: true, children: [ 3173 /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "commands-command-menu__header", children: [ 3174 /* @__PURE__ */ (0, import_jsx_runtime10.jsx)( 3175 icon_default, 3176 { 3177 className: "commands-command-menu__header-search-icon", 3178 icon: search_default 3179 } 3180 ), 3181 /* @__PURE__ */ (0, import_jsx_runtime10.jsx)( 3182 CommandInput, 3183 { 3184 search, 3185 setSearch 3186 } 3187 ) 3188 ] }), 3189 /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(_e.List, { label: (0, import_i18n.__)("Command suggestions"), children: [ 3190 search && !loadersLoading && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(_e.Empty, { children: (0, import_i18n.__)("No results found.") }), 3191 !search && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(RecentGroup, {}), 3192 !search && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SuggestionsGroup, {}), 3193 search && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ResultsGroup, { search }) 3194 ] }) 3195 ] }) }) 3196 } 3197 ); 3198 } 3199 3200 // packages/commands/build-module/hooks/use-command-context.mjs 3201 var import_element4 = __toESM(require_element(), 1); 3202 var import_data6 = __toESM(require_data(), 1); 3203 function useCommandContext(context2) { 3204 const { getContext: getContext2 } = (0, import_data6.useSelect)(store); 3205 const initialContext = (0, import_element4.useRef)(getContext2()); 3206 const { setContext: setContext2 } = unlock((0, import_data6.useDispatch)(store)); 3207 (0, import_element4.useEffect)(() => { 3208 setContext2(context2); 3209 }, [context2, setContext2]); 3210 (0, import_element4.useEffect)(() => { 3211 const initialContextRef = initialContext.current; 3212 return () => setContext2(initialContextRef); 3213 }, [setContext2]); 3214 } 3215 3216 // packages/commands/build-module/private-apis.mjs 3217 var privateApis = {}; 3218 lock(privateApis, { 3219 useCommandContext 3220 }); 3221 3222 // packages/commands/build-module/hooks/use-command.mjs 3223 var import_element5 = __toESM(require_element(), 1); 3224 var import_data7 = __toESM(require_data(), 1); 3225 function useCommand(command) { 3226 const { registerCommand: registerCommand2, unregisterCommand: unregisterCommand2 } = (0, import_data7.useDispatch)(store); 3227 const currentCallbackRef = (0, import_element5.useRef)(command.callback); 3228 (0, import_element5.useEffect)(() => { 3229 currentCallbackRef.current = command.callback; 3230 }, [command.callback]); 3231 (0, import_element5.useEffect)(() => { 3232 if (command.disabled) { 3233 return; 3234 } 3235 registerCommand2({ 3236 name: command.name, 3237 context: command.context, 3238 category: command.category, 3239 label: command.label, 3240 searchLabel: command.searchLabel, 3241 icon: command.icon, 3242 keywords: command.keywords, 3243 callback: (...args) => currentCallbackRef.current(...args) 3244 }); 3245 return () => { 3246 unregisterCommand2(command.name); 3247 }; 3248 }, [ 3249 command.name, 3250 command.label, 3251 command.searchLabel, 3252 command.icon, 3253 command.context, 3254 command.category, 3255 command.keywords, 3256 command.disabled, 3257 registerCommand2, 3258 unregisterCommand2 3259 ]); 3260 } 3261 function useCommands(commands2) { 3262 const { registerCommand: registerCommand2, unregisterCommand: unregisterCommand2 } = (0, import_data7.useDispatch)(store); 3263 const currentCallbacksRef = (0, import_element5.useRef)({}); 3264 (0, import_element5.useEffect)(() => { 3265 if (!commands2) { 3266 return; 3267 } 3268 commands2.forEach((command) => { 3269 if (command.callback) { 3270 currentCallbacksRef.current[command.name] = command.callback; 3271 } 3272 }); 3273 }, [commands2]); 3274 (0, import_element5.useEffect)(() => { 3275 if (!commands2) { 3276 return; 3277 } 3278 commands2.forEach((command) => { 3279 if (command.disabled) { 3280 return; 3281 } 3282 registerCommand2({ 3283 name: command.name, 3284 context: command.context, 3285 category: command.category, 3286 label: command.label, 3287 searchLabel: command.searchLabel, 3288 icon: command.icon, 3289 keywords: command.keywords, 3290 callback: (...args) => { 3291 const callback = currentCallbacksRef.current[command.name]; 3292 if (callback) { 3293 callback(...args); 3294 } 3295 } 3296 }); 3297 }); 3298 return () => { 3299 commands2.forEach((command) => { 3300 unregisterCommand2(command.name); 3301 }); 3302 }; 3303 }, [commands2, registerCommand2, unregisterCommand2]); 3304 } 3305 3306 // packages/commands/build-module/hooks/use-command-loader.mjs 3307 var import_element6 = __toESM(require_element(), 1); 3308 var import_data8 = __toESM(require_data(), 1); 3309 function useCommandLoader(loader) { 3310 const { registerCommandLoader: registerCommandLoader2, unregisterCommandLoader: unregisterCommandLoader2 } = (0, import_data8.useDispatch)(store); 3311 (0, import_element6.useEffect)(() => { 3312 if (loader.disabled) { 3313 return; 3314 } 3315 registerCommandLoader2({ 3316 name: loader.name, 3317 hook: loader.hook, 3318 context: loader.context, 3319 category: loader.category 3320 }); 3321 return () => { 3322 unregisterCommandLoader2(loader.name); 3323 }; 3324 }, [ 3325 loader.name, 3326 loader.hook, 3327 loader.context, 3328 loader.category, 3329 loader.disabled, 3330 registerCommandLoader2, 3331 unregisterCommandLoader2 3332 ]); 3333 } 3334 return __toCommonJS(index_exports); 3335 })(); 3336 (window.wp ||= {}).commands = wp.commands; 3337 })();
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated : Sun Aug 16 08:20:24 2026 | Cross-referenced by PHPXref |