@epic-web/workshop-app 5.7.1 → 5.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/build/client/assets/{_-CjjFMNGC.js → _-Dn1a0zwA.js} +2 -2
  2. package/build/client/assets/{_-CjjFMNGC.js.map → _-Dn1a0zwA.js.map} +1 -1
  3. package/build/client/assets/_exerciseNumber-BVCFK83o.js +2 -0
  4. package/build/client/assets/{_exerciseNumber-CqkGzsgV.js.map → _exerciseNumber-BVCFK83o.js.map} +1 -1
  5. package/build/client/assets/{_exerciseNumber_._stepNumber-BNWGPi9m.js → _exerciseNumber_._stepNumber-CAxJdIJe.js} +2 -2
  6. package/build/client/assets/{_exerciseNumber_._stepNumber-BNWGPi9m.js.map → _exerciseNumber_._stepNumber-CAxJdIJe.js.map} +1 -1
  7. package/build/client/assets/_exerciseNumber_.finished-DYebDhaK.js +2 -0
  8. package/build/client/assets/_exerciseNumber_.finished-DYebDhaK.js.map +1 -0
  9. package/build/client/assets/_layout-CyDc9BN3.js +6 -0
  10. package/build/client/assets/_layout-CyDc9BN3.js.map +1 -0
  11. package/build/client/assets/_layout-cu1Of_4G.js +2 -0
  12. package/build/client/assets/_layout-cu1Of_4G.js.map +1 -0
  13. package/build/client/assets/{accordion-C-sW--in.js → accordion-e-d1HozW.js} +2 -2
  14. package/build/client/assets/{accordion-C-sW--in.js.map → accordion-e-d1HozW.js.map} +1 -1
  15. package/build/client/assets/{account-Cc968svU.js → account-HU5gUm5Q.js} +2 -2
  16. package/build/client/assets/{account-Cc968svU.js.map → account-HU5gUm5Q.js.map} +1 -1
  17. package/build/client/assets/app-CWEUg7hY.js +2 -0
  18. package/build/client/assets/{app-BOqXK9hi.js.map → app-CWEUg7hY.js.map} +1 -1
  19. package/build/client/assets/{button-BS845Tjo.js → button-Hft_V1bH.js} +2 -2
  20. package/build/client/assets/{button-BS845Tjo.js.map → button-Hft_V1bH.js.map} +1 -1
  21. package/build/client/assets/diff-B_FrL8Cl.js +2 -0
  22. package/build/client/assets/diff-B_FrL8Cl.js.map +1 -0
  23. package/build/client/assets/diff-DmVm_N6W.js +2 -0
  24. package/build/client/assets/{diff-D0e_PrB7.js.map → diff-DmVm_N6W.js.map} +1 -1
  25. package/build/client/assets/{discord-BfP_Rny5.js → discord-C0ZkL9cR.js} +2 -2
  26. package/build/client/assets/{discord-BfP_Rny5.js.map → discord-C0ZkL9cR.js.map} +1 -1
  27. package/build/client/assets/discord-D6ZwxiZG.js +2 -0
  28. package/build/client/assets/discord-D6ZwxiZG.js.map +1 -0
  29. package/build/client/assets/{epic-video-qHKPWPt1.js → epic-video-75U1kyqf.js} +121 -121
  30. package/build/client/assets/{epic-video-qHKPWPt1.js.map → epic-video-75U1kyqf.js.map} +1 -1
  31. package/build/client/assets/{error-boundary-Beul7lrT.js → error-boundary-IvG0vuiP.js} +2 -2
  32. package/build/client/assets/{error-boundary-Beul7lrT.js.map → error-boundary-IvG0vuiP.js.map} +1 -1
  33. package/build/client/assets/finished-DDnBGcs8.js +2 -0
  34. package/build/client/assets/finished-DDnBGcs8.js.map +1 -0
  35. package/build/client/assets/{index-BOQWfIQC.js → index-9OWT3nC-.js} +3 -3
  36. package/build/client/assets/{index-BOQWfIQC.js.map → index-9OWT3nC-.js.map} +1 -1
  37. package/build/client/assets/{index-cZQeGrqL.js → index-BzN2y10J.js} +2 -2
  38. package/build/client/assets/{index-cZQeGrqL.js.map → index-BzN2y10J.js.map} +1 -1
  39. package/build/client/assets/index-CQEwwWTS.js +2 -0
  40. package/build/client/assets/{index-oED4uZLa.js.map → index-CQEwwWTS.js.map} +1 -1
  41. package/build/client/assets/index-DJhl_Q5J.js +2 -0
  42. package/build/client/assets/index-DJhl_Q5J.js.map +1 -0
  43. package/build/client/assets/{index-BHwOR8R1.js → index-c1IJ5ZX5.js} +2 -2
  44. package/build/client/assets/{index-BHwOR8R1.js.map → index-c1IJ5ZX5.js.map} +1 -1
  45. package/build/client/assets/{index-BPegC-d3.js → index-t6AA12_S.js} +2 -2
  46. package/build/client/assets/{index-BPegC-d3.js.map → index-t6AA12_S.js.map} +1 -1
  47. package/build/client/assets/{loading-C2wPVvQw.js → loading-DsHhjqzj.js} +2 -2
  48. package/build/client/assets/{loading-C2wPVvQw.js.map → loading-DsHhjqzj.js.map} +1 -1
  49. package/build/client/assets/{login-DoU7gifi.js → login-DJlKIofe.js} +2 -2
  50. package/build/client/assets/{login-DoU7gifi.js.map → login-DJlKIofe.js.map} +1 -1
  51. package/build/client/assets/manifest-3da21166.js +1 -0
  52. package/build/client/assets/{mdx-CsS30JUo.js → mdx-CsRMuEw9.js} +2 -2
  53. package/build/client/assets/{mdx-CsS30JUo.js.map → mdx-CsRMuEw9.js.map} +1 -1
  54. package/build/client/assets/{misc-BtjCSy-T.js → misc-DoGPlBur.js} +2 -2
  55. package/build/client/assets/{misc-BtjCSy-T.js.map → misc-DoGPlBur.js.map} +1 -1
  56. package/build/client/assets/{nav-chevrons-2hLTwAZb.js → nav-chevrons-CxWSSbTo.js} +2 -2
  57. package/build/client/assets/{nav-chevrons-2hLTwAZb.js.map → nav-chevrons-CxWSSbTo.js.map} +1 -1
  58. package/build/client/assets/onboarding-DssP5iXB.js +2 -0
  59. package/build/client/assets/{onboarding-Cu6eD7KS.js.map → onboarding-DssP5iXB.js.map} +1 -1
  60. package/build/client/assets/online-D33oijLr.js +2 -0
  61. package/build/client/assets/online-D33oijLr.js.map +1 -0
  62. package/build/client/assets/{preferences-br0VSK51.js → preferences-BIt5-Lgy.js} +2 -2
  63. package/build/client/assets/{preferences-br0VSK51.js.map → preferences-BIt5-Lgy.js.map} +1 -1
  64. package/build/client/assets/{presence-CrYBA3ta.js → presence-BsqTpSt4.js} +5 -5
  65. package/build/client/assets/{presence-CrYBA3ta.js.map → presence-BsqTpSt4.js.map} +1 -1
  66. package/build/client/assets/{preview-C2y4Z0qO.js → preview-CZwnFQrx.js} +2 -2
  67. package/build/client/assets/{preview-C2y4Z0qO.js.map → preview-CZwnFQrx.js.map} +1 -1
  68. package/build/client/assets/{product-gqq_YQBW.js → product-CVL4Z9c0.js} +2 -2
  69. package/build/client/assets/{product-gqq_YQBW.js.map → product-CVL4Z9c0.js.map} +1 -1
  70. package/build/client/assets/{progress-D-HsH4j3.js → progress-Dj5cyA_v.js} +2 -2
  71. package/build/client/assets/{progress-D-HsH4j3.js.map → progress-Dj5cyA_v.js.map} +1 -1
  72. package/build/client/assets/{progress-bar-CTPCfvDi.js → progress-bar-Dln7epYZ.js} +2 -2
  73. package/build/client/assets/{progress-bar-CTPCfvDi.js.map → progress-bar-Dln7epYZ.js.map} +1 -1
  74. package/build/client/assets/{revalidation-ws-DYaJNyw1.js → revalidation-ws-Bes2l3ma.js} +2 -2
  75. package/build/client/assets/{revalidation-ws-DYaJNyw1.js.map → revalidation-ws-Bes2l3ma.js.map} +1 -1
  76. package/build/client/assets/{root-C1pLsthM.js → root-Bb8fIt2z.js} +3 -3
  77. package/build/client/assets/{root-C1pLsthM.js.map → root-Bb8fIt2z.js.map} +1 -1
  78. package/build/client/assets/{set-playground-DQzAhC0t.js → set-playground-DOFTHWzE.js} +2 -2
  79. package/build/client/assets/{set-playground-DQzAhC0t.js.map → set-playground-DOFTHWzE.js.map} +1 -1
  80. package/build/client/assets/tailwind-4klXLdJc.css +1 -0
  81. package/build/client/assets/test-BwM0E8Mk.js +2 -0
  82. package/build/client/assets/{test-CDWRwwO-.js.map → test-BwM0E8Mk.js.map} +1 -1
  83. package/build/client/assets/{tests-LWW8wCYZ.js → tests-CDgBzBBo.js} +3 -3
  84. package/build/client/assets/tests-CDgBzBBo.js.map +1 -0
  85. package/build/client/assets/{tooltip-Bp9KHnLy.js → tooltip-DT9kZxPw.js} +2 -2
  86. package/build/client/assets/{tooltip-Bp9KHnLy.js.map → tooltip-DT9kZxPw.js.map} +1 -1
  87. package/build/server/index.js +161 -54
  88. package/build/server/index.js.map +1 -1
  89. package/dist/server/index.js +2 -0
  90. package/package.json +3 -3
  91. package/build/client/assets/_exerciseNumber-CqkGzsgV.js +0 -2
  92. package/build/client/assets/_exerciseNumber_.finished-CdNhLhKg.js +0 -2
  93. package/build/client/assets/_exerciseNumber_.finished-CdNhLhKg.js.map +0 -1
  94. package/build/client/assets/_layout-BMa5nZcJ.js +0 -2
  95. package/build/client/assets/_layout-BMa5nZcJ.js.map +0 -1
  96. package/build/client/assets/_layout-Muw3ERYT.js +0 -6
  97. package/build/client/assets/_layout-Muw3ERYT.js.map +0 -1
  98. package/build/client/assets/app-BOqXK9hi.js +0 -2
  99. package/build/client/assets/diff-D0e_PrB7.js +0 -2
  100. package/build/client/assets/diff-DtvfyjPI.js +0 -2
  101. package/build/client/assets/diff-DtvfyjPI.js.map +0 -1
  102. package/build/client/assets/discord-DILzAZN8.js +0 -2
  103. package/build/client/assets/discord-DILzAZN8.js.map +0 -1
  104. package/build/client/assets/finished-DUKfL220.js +0 -2
  105. package/build/client/assets/finished-DUKfL220.js.map +0 -1
  106. package/build/client/assets/index-DbCT6N5p.js +0 -2
  107. package/build/client/assets/index-DbCT6N5p.js.map +0 -1
  108. package/build/client/assets/index-oED4uZLa.js +0 -2
  109. package/build/client/assets/manifest-3096dc61.js +0 -1
  110. package/build/client/assets/onboarding-Cu6eD7KS.js +0 -2
  111. package/build/client/assets/tailwind-CRGTilRc.css +0 -1
  112. package/build/client/assets/test-CDWRwwO-.js +0 -2
  113. package/build/client/assets/tests-LWW8wCYZ.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index-BPegC-d3.js","sources":["../../../../../node_modules/@radix-ui/number/dist/index.mjs","../../../../../node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-context/dist/index.mjs","../../../../../node_modules/@radix-ui/react-collection/dist/index.mjs","../../../../../node_modules/@radix-ui/react-direction/dist/index.mjs","../../../../../node_modules/@radix-ui/react-use-previous/dist/index.mjs","../../../../../node_modules/@radix-ui/react-select/dist/index.mjs"],"sourcesContent":["// packages/core/number/src/number.ts\nfunction clamp(value, [min, max]) {\n return Math.min(max, Math.max(min, value));\n}\nexport {\n clamp\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/context/src/createContext.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createContext2(rootComponentName, defaultContext) {\n const Context = React.createContext(defaultContext);\n function Provider(props) {\n const { children, ...context } = props;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n }\n function useContext2(consumerName) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n Provider.displayName = rootComponentName + \"Provider\";\n return [Provider, useContext2];\n}\nfunction createContextScope(scopeName, createContextScopeDeps = []) {\n let defaultContexts = [];\n function createContext3(rootComponentName, defaultContext) {\n const BaseContext = React.createContext(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n function Provider(props) {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName][index] || BaseContext;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n }\n function useContext2(consumerName, scope) {\n const Context = scope?.[scopeName][index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n Provider.displayName = rootComponentName + \"Provider\";\n return [Provider, useContext2];\n }\n const createScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n createScope.scopeName = scopeName;\n return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];\n}\nfunction composeContextScopes(...scopes) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n const createScope = () => {\n const scopeHooks = scopes.map((createScope2) => ({\n useScope: createScope2(),\n scopeName: createScope2.scopeName\n }));\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes2, ...currentScope };\n }, {});\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\nexport {\n createContext2 as createContext,\n createContextScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/collection/src/Collection.tsx\nimport React from \"react\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createCollection(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n { collectionRef: { current: null }, itemMap: /* @__PURE__ */ new Map() }\n );\n const CollectionProvider = (props) => {\n const { scope, children } = props;\n const ref = React.useRef(null);\n const itemMap = React.useRef(/* @__PURE__ */ new Map()).current;\n return /* @__PURE__ */ jsx(CollectionProviderImpl, { scope, itemMap, collectionRef: ref, children });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ jsx(Slot, { ref: composedRefs, children });\n }\n );\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n React.useEffect(() => {\n context.itemMap.set(ref, { ref, ...itemData });\n return () => void context.itemMap.delete(ref);\n });\n return /* @__PURE__ */ jsx(Slot, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n }\n );\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useCollection(scope) {\n const context = useCollectionContext(name + \"CollectionConsumer\", scope);\n const getItems = React.useCallback(() => {\n const collectionNode = context.collectionRef.current;\n if (!collectionNode) return [];\n const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));\n const items = Array.from(context.itemMap.values());\n const orderedItems = items.sort(\n (a, b) => orderedNodes.indexOf(a.ref.current) - orderedNodes.indexOf(b.ref.current)\n );\n return orderedItems;\n }, [context.collectionRef, context.itemMap]);\n return getItems;\n }\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n useCollection,\n createCollectionScope\n ];\n}\nexport {\n createCollection\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/direction/src/Direction.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DirectionContext = React.createContext(void 0);\nvar DirectionProvider = (props) => {\n const { dir, children } = props;\n return /* @__PURE__ */ jsx(DirectionContext.Provider, { value: dir, children });\n};\nfunction useDirection(localDir) {\n const globalDir = React.useContext(DirectionContext);\n return localDir || globalDir || \"ltr\";\n}\nvar Provider = DirectionProvider;\nexport {\n DirectionProvider,\n Provider,\n useDirection\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-previous/src/usePrevious.tsx\nimport * as React from \"react\";\nfunction usePrevious(value) {\n const ref = React.useRef({ value, previous: value });\n return React.useMemo(() => {\n if (ref.current.value !== value) {\n ref.current.previous = ref.current.value;\n ref.current.value = value;\n }\n return ref.current.previous;\n }, [value]);\n}\nexport {\n usePrevious\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/select/src/Select.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { clamp } from \"@radix-ui/number\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { VisuallyHidden } from \"@radix-ui/react-visually-hidden\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar OPEN_KEYS = [\" \", \"Enter\", \"ArrowUp\", \"ArrowDown\"];\nvar SELECTION_KEYS = [\" \", \"Enter\"];\nvar SELECT_NAME = \"Select\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(SELECT_NAME);\nvar [createSelectContext, createSelectScope] = createContextScope(SELECT_NAME, [\n createCollectionScope,\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar [SelectProvider, useSelectContext] = createSelectContext(SELECT_NAME);\nvar [SelectNativeOptionsProvider, useSelectNativeOptionsContext] = createSelectContext(SELECT_NAME);\nvar Select = (props) => {\n const {\n __scopeSelect,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n value: valueProp,\n defaultValue,\n onValueChange,\n dir,\n name,\n autoComplete,\n disabled,\n required,\n form\n } = props;\n const popperScope = usePopperScope(__scopeSelect);\n const [trigger, setTrigger] = React.useState(null);\n const [valueNode, setValueNode] = React.useState(null);\n const [valueNodeHasChildren, setValueNodeHasChildren] = React.useState(false);\n const direction = useDirection(dir);\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange\n });\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange\n });\n const triggerPointerDownPosRef = React.useRef(null);\n const isFormControl = trigger ? form || !!trigger.closest(\"form\") : true;\n const [nativeOptionsSet, setNativeOptionsSet] = React.useState(/* @__PURE__ */ new Set());\n const nativeSelectKey = Array.from(nativeOptionsSet).map((option) => option.props.value).join(\";\");\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsxs(\n SelectProvider,\n {\n required,\n scope: __scopeSelect,\n trigger,\n onTriggerChange: setTrigger,\n valueNode,\n onValueNodeChange: setValueNode,\n valueNodeHasChildren,\n onValueNodeHasChildrenChange: setValueNodeHasChildren,\n contentId: useId(),\n value,\n onValueChange: setValue,\n open,\n onOpenChange: setOpen,\n dir: direction,\n triggerPointerDownPosRef,\n disabled,\n children: [\n /* @__PURE__ */ jsx(Collection.Provider, { scope: __scopeSelect, children: /* @__PURE__ */ jsx(\n SelectNativeOptionsProvider,\n {\n scope: props.__scopeSelect,\n onNativeOptionAdd: React.useCallback((option) => {\n setNativeOptionsSet((prev) => new Set(prev).add(option));\n }, []),\n onNativeOptionRemove: React.useCallback((option) => {\n setNativeOptionsSet((prev) => {\n const optionsSet = new Set(prev);\n optionsSet.delete(option);\n return optionsSet;\n });\n }, []),\n children\n }\n ) }),\n isFormControl ? /* @__PURE__ */ jsxs(\n BubbleSelect,\n {\n \"aria-hidden\": true,\n required,\n tabIndex: -1,\n name,\n autoComplete,\n value,\n onChange: (event) => setValue(event.target.value),\n disabled,\n form,\n children: [\n value === void 0 ? /* @__PURE__ */ jsx(\"option\", { value: \"\" }) : null,\n Array.from(nativeOptionsSet)\n ]\n },\n nativeSelectKey\n ) : null\n ]\n }\n ) });\n};\nSelect.displayName = SELECT_NAME;\nvar TRIGGER_NAME = \"SelectTrigger\";\nvar SelectTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, disabled = false, ...triggerProps } = props;\n const popperScope = usePopperScope(__scopeSelect);\n const context = useSelectContext(TRIGGER_NAME, __scopeSelect);\n const isDisabled = context.disabled || disabled;\n const composedRefs = useComposedRefs(forwardedRef, context.onTriggerChange);\n const getItems = useCollection(__scopeSelect);\n const pointerTypeRef = React.useRef(\"touch\");\n const [searchRef, handleTypeaheadSearch, resetTypeahead] = useTypeaheadSearch((search) => {\n const enabledItems = getItems().filter((item) => !item.disabled);\n const currentItem = enabledItems.find((item) => item.value === context.value);\n const nextItem = findNextItem(enabledItems, search, currentItem);\n if (nextItem !== void 0) {\n context.onValueChange(nextItem.value);\n }\n });\n const handleOpen = (pointerEvent) => {\n if (!isDisabled) {\n context.onOpenChange(true);\n resetTypeahead();\n }\n if (pointerEvent) {\n context.triggerPointerDownPosRef.current = {\n x: Math.round(pointerEvent.pageX),\n y: Math.round(pointerEvent.pageY)\n };\n }\n };\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"combobox\",\n \"aria-controls\": context.contentId,\n \"aria-expanded\": context.open,\n \"aria-required\": context.required,\n \"aria-autocomplete\": \"none\",\n dir: context.dir,\n \"data-state\": context.open ? \"open\" : \"closed\",\n disabled: isDisabled,\n \"data-disabled\": isDisabled ? \"\" : void 0,\n \"data-placeholder\": shouldShowPlaceholder(context.value) ? \"\" : void 0,\n ...triggerProps,\n ref: composedRefs,\n onClick: composeEventHandlers(triggerProps.onClick, (event) => {\n event.currentTarget.focus();\n if (pointerTypeRef.current !== \"mouse\") {\n handleOpen(event);\n }\n }),\n onPointerDown: composeEventHandlers(triggerProps.onPointerDown, (event) => {\n pointerTypeRef.current = event.pointerType;\n const target = event.target;\n if (target.hasPointerCapture(event.pointerId)) {\n target.releasePointerCapture(event.pointerId);\n }\n if (event.button === 0 && event.ctrlKey === false && event.pointerType === \"mouse\") {\n handleOpen(event);\n event.preventDefault();\n }\n }),\n onKeyDown: composeEventHandlers(triggerProps.onKeyDown, (event) => {\n const isTypingAhead = searchRef.current !== \"\";\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n if (!isModifierKey && event.key.length === 1) handleTypeaheadSearch(event.key);\n if (isTypingAhead && event.key === \" \") return;\n if (OPEN_KEYS.includes(event.key)) {\n handleOpen();\n event.preventDefault();\n }\n })\n }\n ) });\n }\n);\nSelectTrigger.displayName = TRIGGER_NAME;\nvar VALUE_NAME = \"SelectValue\";\nvar SelectValue = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, className, style, children, placeholder = \"\", ...valueProps } = props;\n const context = useSelectContext(VALUE_NAME, __scopeSelect);\n const { onValueNodeHasChildrenChange } = context;\n const hasChildren = children !== void 0;\n const composedRefs = useComposedRefs(forwardedRef, context.onValueNodeChange);\n useLayoutEffect(() => {\n onValueNodeHasChildrenChange(hasChildren);\n }, [onValueNodeHasChildrenChange, hasChildren]);\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n ...valueProps,\n ref: composedRefs,\n style: { pointerEvents: \"none\" },\n children: shouldShowPlaceholder(context.value) ? /* @__PURE__ */ jsx(Fragment, { children: placeholder }) : children\n }\n );\n }\n);\nSelectValue.displayName = VALUE_NAME;\nvar ICON_NAME = \"SelectIcon\";\nvar SelectIcon = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, children, ...iconProps } = props;\n return /* @__PURE__ */ jsx(Primitive.span, { \"aria-hidden\": true, ...iconProps, ref: forwardedRef, children: children || \"\\u25BC\" });\n }\n);\nSelectIcon.displayName = ICON_NAME;\nvar PORTAL_NAME = \"SelectPortal\";\nvar SelectPortal = (props) => {\n return /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, ...props });\n};\nSelectPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"SelectContent\";\nvar SelectContent = React.forwardRef(\n (props, forwardedRef) => {\n const context = useSelectContext(CONTENT_NAME, props.__scopeSelect);\n const [fragment, setFragment] = React.useState();\n useLayoutEffect(() => {\n setFragment(new DocumentFragment());\n }, []);\n if (!context.open) {\n const frag = fragment;\n return frag ? ReactDOM.createPortal(\n /* @__PURE__ */ jsx(SelectContentProvider, { scope: props.__scopeSelect, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeSelect, children: /* @__PURE__ */ jsx(\"div\", { children: props.children }) }) }),\n frag\n ) : null;\n }\n return /* @__PURE__ */ jsx(SelectContentImpl, { ...props, ref: forwardedRef });\n }\n);\nSelectContent.displayName = CONTENT_NAME;\nvar CONTENT_MARGIN = 10;\nvar [SelectContentProvider, useSelectContentContext] = createSelectContext(CONTENT_NAME);\nvar CONTENT_IMPL_NAME = \"SelectContentImpl\";\nvar SelectContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeSelect,\n position = \"item-aligned\",\n onCloseAutoFocus,\n onEscapeKeyDown,\n onPointerDownOutside,\n //\n // PopperContent props\n side,\n sideOffset,\n align,\n alignOffset,\n arrowPadding,\n collisionBoundary,\n collisionPadding,\n sticky,\n hideWhenDetached,\n avoidCollisions,\n //\n ...contentProps\n } = props;\n const context = useSelectContext(CONTENT_NAME, __scopeSelect);\n const [content, setContent] = React.useState(null);\n const [viewport, setViewport] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n const [selectedItem, setSelectedItem] = React.useState(null);\n const [selectedItemText, setSelectedItemText] = React.useState(\n null\n );\n const getItems = useCollection(__scopeSelect);\n const [isPositioned, setIsPositioned] = React.useState(false);\n const firstValidItemFoundRef = React.useRef(false);\n React.useEffect(() => {\n if (content) return hideOthers(content);\n }, [content]);\n useFocusGuards();\n const focusFirst = React.useCallback(\n (candidates) => {\n const [firstItem, ...restItems] = getItems().map((item) => item.ref.current);\n const [lastItem] = restItems.slice(-1);\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate?.scrollIntoView({ block: \"nearest\" });\n if (candidate === firstItem && viewport) viewport.scrollTop = 0;\n if (candidate === lastItem && viewport) viewport.scrollTop = viewport.scrollHeight;\n candidate?.focus();\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n },\n [getItems, viewport]\n );\n const focusSelectedItem = React.useCallback(\n () => focusFirst([selectedItem, content]),\n [focusFirst, selectedItem, content]\n );\n React.useEffect(() => {\n if (isPositioned) {\n focusSelectedItem();\n }\n }, [isPositioned, focusSelectedItem]);\n const { onOpenChange, triggerPointerDownPosRef } = context;\n React.useEffect(() => {\n if (content) {\n let pointerMoveDelta = { x: 0, y: 0 };\n const handlePointerMove = (event) => {\n pointerMoveDelta = {\n x: Math.abs(Math.round(event.pageX) - (triggerPointerDownPosRef.current?.x ?? 0)),\n y: Math.abs(Math.round(event.pageY) - (triggerPointerDownPosRef.current?.y ?? 0))\n };\n };\n const handlePointerUp = (event) => {\n if (pointerMoveDelta.x <= 10 && pointerMoveDelta.y <= 10) {\n event.preventDefault();\n } else {\n if (!content.contains(event.target)) {\n onOpenChange(false);\n }\n }\n document.removeEventListener(\"pointermove\", handlePointerMove);\n triggerPointerDownPosRef.current = null;\n };\n if (triggerPointerDownPosRef.current !== null) {\n document.addEventListener(\"pointermove\", handlePointerMove);\n document.addEventListener(\"pointerup\", handlePointerUp, { capture: true, once: true });\n }\n return () => {\n document.removeEventListener(\"pointermove\", handlePointerMove);\n document.removeEventListener(\"pointerup\", handlePointerUp, { capture: true });\n };\n }\n }, [content, onOpenChange, triggerPointerDownPosRef]);\n React.useEffect(() => {\n const close = () => onOpenChange(false);\n window.addEventListener(\"blur\", close);\n window.addEventListener(\"resize\", close);\n return () => {\n window.removeEventListener(\"blur\", close);\n window.removeEventListener(\"resize\", close);\n };\n }, [onOpenChange]);\n const [searchRef, handleTypeaheadSearch] = useTypeaheadSearch((search) => {\n const enabledItems = getItems().filter((item) => !item.disabled);\n const currentItem = enabledItems.find((item) => item.ref.current === document.activeElement);\n const nextItem = findNextItem(enabledItems, search, currentItem);\n if (nextItem) {\n setTimeout(() => nextItem.ref.current.focus());\n }\n });\n const itemRefCallback = React.useCallback(\n (node, value, disabled) => {\n const isFirstValidItem = !firstValidItemFoundRef.current && !disabled;\n const isSelectedItem = context.value !== void 0 && context.value === value;\n if (isSelectedItem || isFirstValidItem) {\n setSelectedItem(node);\n if (isFirstValidItem) firstValidItemFoundRef.current = true;\n }\n },\n [context.value]\n );\n const handleItemLeave = React.useCallback(() => content?.focus(), [content]);\n const itemTextRefCallback = React.useCallback(\n (node, value, disabled) => {\n const isFirstValidItem = !firstValidItemFoundRef.current && !disabled;\n const isSelectedItem = context.value !== void 0 && context.value === value;\n if (isSelectedItem || isFirstValidItem) {\n setSelectedItemText(node);\n }\n },\n [context.value]\n );\n const SelectPosition = position === \"popper\" ? SelectPopperPosition : SelectItemAlignedPosition;\n const popperContentProps = SelectPosition === SelectPopperPosition ? {\n side,\n sideOffset,\n align,\n alignOffset,\n arrowPadding,\n collisionBoundary,\n collisionPadding,\n sticky,\n hideWhenDetached,\n avoidCollisions\n } : {};\n return /* @__PURE__ */ jsx(\n SelectContentProvider,\n {\n scope: __scopeSelect,\n content,\n viewport,\n onViewportChange: setViewport,\n itemRefCallback,\n selectedItem,\n onItemLeave: handleItemLeave,\n itemTextRefCallback,\n focusSelectedItem,\n selectedItemText,\n position,\n isPositioned,\n searchRef,\n children: /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, children: /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n trapped: context.open,\n onMountAutoFocus: (event) => {\n event.preventDefault();\n },\n onUnmountAutoFocus: composeEventHandlers(onCloseAutoFocus, (event) => {\n context.trigger?.focus({ preventScroll: true });\n event.preventDefault();\n }),\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents: true,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside: (event) => event.preventDefault(),\n onDismiss: () => context.onOpenChange(false),\n children: /* @__PURE__ */ jsx(\n SelectPosition,\n {\n role: \"listbox\",\n id: context.contentId,\n \"data-state\": context.open ? \"open\" : \"closed\",\n dir: context.dir,\n onContextMenu: (event) => event.preventDefault(),\n ...contentProps,\n ...popperContentProps,\n onPlaced: () => setIsPositioned(true),\n ref: composedRefs,\n style: {\n // flex layout so we can place the scroll buttons properly\n display: \"flex\",\n flexDirection: \"column\",\n // reset the outline by default as the content MAY get focused\n outline: \"none\",\n ...contentProps.style\n },\n onKeyDown: composeEventHandlers(contentProps.onKeyDown, (event) => {\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n if (event.key === \"Tab\") event.preventDefault();\n if (!isModifierKey && event.key.length === 1) handleTypeaheadSearch(event.key);\n if ([\"ArrowUp\", \"ArrowDown\", \"Home\", \"End\"].includes(event.key)) {\n const items = getItems().filter((item) => !item.disabled);\n let candidateNodes = items.map((item) => item.ref.current);\n if ([\"ArrowUp\", \"End\"].includes(event.key)) {\n candidateNodes = candidateNodes.slice().reverse();\n }\n if ([\"ArrowUp\", \"ArrowDown\"].includes(event.key)) {\n const currentElement = event.target;\n const currentIndex = candidateNodes.indexOf(currentElement);\n candidateNodes = candidateNodes.slice(currentIndex + 1);\n }\n setTimeout(() => focusFirst(candidateNodes));\n event.preventDefault();\n }\n })\n }\n )\n }\n )\n }\n ) })\n }\n );\n }\n);\nSelectContentImpl.displayName = CONTENT_IMPL_NAME;\nvar ITEM_ALIGNED_POSITION_NAME = \"SelectItemAlignedPosition\";\nvar SelectItemAlignedPosition = React.forwardRef((props, forwardedRef) => {\n const { __scopeSelect, onPlaced, ...popperProps } = props;\n const context = useSelectContext(CONTENT_NAME, __scopeSelect);\n const contentContext = useSelectContentContext(CONTENT_NAME, __scopeSelect);\n const [contentWrapper, setContentWrapper] = React.useState(null);\n const [content, setContent] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n const getItems = useCollection(__scopeSelect);\n const shouldExpandOnScrollRef = React.useRef(false);\n const shouldRepositionRef = React.useRef(true);\n const { viewport, selectedItem, selectedItemText, focusSelectedItem } = contentContext;\n const position = React.useCallback(() => {\n if (context.trigger && context.valueNode && contentWrapper && content && viewport && selectedItem && selectedItemText) {\n const triggerRect = context.trigger.getBoundingClientRect();\n const contentRect = content.getBoundingClientRect();\n const valueNodeRect = context.valueNode.getBoundingClientRect();\n const itemTextRect = selectedItemText.getBoundingClientRect();\n if (context.dir !== \"rtl\") {\n const itemTextOffset = itemTextRect.left - contentRect.left;\n const left = valueNodeRect.left - itemTextOffset;\n const leftDelta = triggerRect.left - left;\n const minContentWidth = triggerRect.width + leftDelta;\n const contentWidth = Math.max(minContentWidth, contentRect.width);\n const rightEdge = window.innerWidth - CONTENT_MARGIN;\n const clampedLeft = clamp(left, [\n CONTENT_MARGIN,\n // Prevents the content from going off the starting edge of the\n // viewport. It may still go off the ending edge, but this can be\n // controlled by the user since they may want to manage overflow in a\n // specific way.\n // https://github.com/radix-ui/primitives/issues/2049\n Math.max(CONTENT_MARGIN, rightEdge - contentWidth)\n ]);\n contentWrapper.style.minWidth = minContentWidth + \"px\";\n contentWrapper.style.left = clampedLeft + \"px\";\n } else {\n const itemTextOffset = contentRect.right - itemTextRect.right;\n const right = window.innerWidth - valueNodeRect.right - itemTextOffset;\n const rightDelta = window.innerWidth - triggerRect.right - right;\n const minContentWidth = triggerRect.width + rightDelta;\n const contentWidth = Math.max(minContentWidth, contentRect.width);\n const leftEdge = window.innerWidth - CONTENT_MARGIN;\n const clampedRight = clamp(right, [\n CONTENT_MARGIN,\n Math.max(CONTENT_MARGIN, leftEdge - contentWidth)\n ]);\n contentWrapper.style.minWidth = minContentWidth + \"px\";\n contentWrapper.style.right = clampedRight + \"px\";\n }\n const items = getItems();\n const availableHeight = window.innerHeight - CONTENT_MARGIN * 2;\n const itemsHeight = viewport.scrollHeight;\n const contentStyles = window.getComputedStyle(content);\n const contentBorderTopWidth = parseInt(contentStyles.borderTopWidth, 10);\n const contentPaddingTop = parseInt(contentStyles.paddingTop, 10);\n const contentBorderBottomWidth = parseInt(contentStyles.borderBottomWidth, 10);\n const contentPaddingBottom = parseInt(contentStyles.paddingBottom, 10);\n const fullContentHeight = contentBorderTopWidth + contentPaddingTop + itemsHeight + contentPaddingBottom + contentBorderBottomWidth;\n const minContentHeight = Math.min(selectedItem.offsetHeight * 5, fullContentHeight);\n const viewportStyles = window.getComputedStyle(viewport);\n const viewportPaddingTop = parseInt(viewportStyles.paddingTop, 10);\n const viewportPaddingBottom = parseInt(viewportStyles.paddingBottom, 10);\n const topEdgeToTriggerMiddle = triggerRect.top + triggerRect.height / 2 - CONTENT_MARGIN;\n const triggerMiddleToBottomEdge = availableHeight - topEdgeToTriggerMiddle;\n const selectedItemHalfHeight = selectedItem.offsetHeight / 2;\n const itemOffsetMiddle = selectedItem.offsetTop + selectedItemHalfHeight;\n const contentTopToItemMiddle = contentBorderTopWidth + contentPaddingTop + itemOffsetMiddle;\n const itemMiddleToContentBottom = fullContentHeight - contentTopToItemMiddle;\n const willAlignWithoutTopOverflow = contentTopToItemMiddle <= topEdgeToTriggerMiddle;\n if (willAlignWithoutTopOverflow) {\n const isLastItem = items.length > 0 && selectedItem === items[items.length - 1].ref.current;\n contentWrapper.style.bottom = \"0px\";\n const viewportOffsetBottom = content.clientHeight - viewport.offsetTop - viewport.offsetHeight;\n const clampedTriggerMiddleToBottomEdge = Math.max(\n triggerMiddleToBottomEdge,\n selectedItemHalfHeight + // viewport might have padding bottom, include it to avoid a scrollable viewport\n (isLastItem ? viewportPaddingBottom : 0) + viewportOffsetBottom + contentBorderBottomWidth\n );\n const height = contentTopToItemMiddle + clampedTriggerMiddleToBottomEdge;\n contentWrapper.style.height = height + \"px\";\n } else {\n const isFirstItem = items.length > 0 && selectedItem === items[0].ref.current;\n contentWrapper.style.top = \"0px\";\n const clampedTopEdgeToTriggerMiddle = Math.max(\n topEdgeToTriggerMiddle,\n contentBorderTopWidth + viewport.offsetTop + // viewport might have padding top, include it to avoid a scrollable viewport\n (isFirstItem ? viewportPaddingTop : 0) + selectedItemHalfHeight\n );\n const height = clampedTopEdgeToTriggerMiddle + itemMiddleToContentBottom;\n contentWrapper.style.height = height + \"px\";\n viewport.scrollTop = contentTopToItemMiddle - topEdgeToTriggerMiddle + viewport.offsetTop;\n }\n contentWrapper.style.margin = `${CONTENT_MARGIN}px 0`;\n contentWrapper.style.minHeight = minContentHeight + \"px\";\n contentWrapper.style.maxHeight = availableHeight + \"px\";\n onPlaced?.();\n requestAnimationFrame(() => shouldExpandOnScrollRef.current = true);\n }\n }, [\n getItems,\n context.trigger,\n context.valueNode,\n contentWrapper,\n content,\n viewport,\n selectedItem,\n selectedItemText,\n context.dir,\n onPlaced\n ]);\n useLayoutEffect(() => position(), [position]);\n const [contentZIndex, setContentZIndex] = React.useState();\n useLayoutEffect(() => {\n if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n }, [content]);\n const handleScrollButtonChange = React.useCallback(\n (node) => {\n if (node && shouldRepositionRef.current === true) {\n position();\n focusSelectedItem?.();\n shouldRepositionRef.current = false;\n }\n },\n [position, focusSelectedItem]\n );\n return /* @__PURE__ */ jsx(\n SelectViewportProvider,\n {\n scope: __scopeSelect,\n contentWrapper,\n shouldExpandOnScrollRef,\n onScrollButtonChange: handleScrollButtonChange,\n children: /* @__PURE__ */ jsx(\n \"div\",\n {\n ref: setContentWrapper,\n style: {\n display: \"flex\",\n flexDirection: \"column\",\n position: \"fixed\",\n zIndex: contentZIndex\n },\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...popperProps,\n ref: composedRefs,\n style: {\n // When we get the height of the content, it includes borders. If we were to set\n // the height without having `boxSizing: 'border-box'` it would be too big.\n boxSizing: \"border-box\",\n // We need to ensure the content doesn't get taller than the wrapper\n maxHeight: \"100%\",\n ...popperProps.style\n }\n }\n )\n }\n )\n }\n );\n});\nSelectItemAlignedPosition.displayName = ITEM_ALIGNED_POSITION_NAME;\nvar POPPER_POSITION_NAME = \"SelectPopperPosition\";\nvar SelectPopperPosition = React.forwardRef((props, forwardedRef) => {\n const {\n __scopeSelect,\n align = \"start\",\n collisionPadding = CONTENT_MARGIN,\n ...popperProps\n } = props;\n const popperScope = usePopperScope(__scopeSelect);\n return /* @__PURE__ */ jsx(\n PopperPrimitive.Content,\n {\n ...popperScope,\n ...popperProps,\n ref: forwardedRef,\n align,\n collisionPadding,\n style: {\n // Ensure border-box for floating-ui calculations\n boxSizing: \"border-box\",\n ...popperProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-select-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-select-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-select-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-select-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-select-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n );\n});\nSelectPopperPosition.displayName = POPPER_POSITION_NAME;\nvar [SelectViewportProvider, useSelectViewportContext] = createSelectContext(CONTENT_NAME, {});\nvar VIEWPORT_NAME = \"SelectViewport\";\nvar SelectViewport = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, nonce, ...viewportProps } = props;\n const contentContext = useSelectContentContext(VIEWPORT_NAME, __scopeSelect);\n const viewportContext = useSelectViewportContext(VIEWPORT_NAME, __scopeSelect);\n const composedRefs = useComposedRefs(forwardedRef, contentContext.onViewportChange);\n const prevScrollTopRef = React.useRef(0);\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\n \"style\",\n {\n dangerouslySetInnerHTML: {\n __html: `[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}`\n },\n nonce\n }\n ),\n /* @__PURE__ */ jsx(Collection.Slot, { scope: __scopeSelect, children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-radix-select-viewport\": \"\",\n role: \"presentation\",\n ...viewportProps,\n ref: composedRefs,\n style: {\n // we use position: 'relative' here on the `viewport` so that when we call\n // `selectedItem.offsetTop` in calculations, the offset is relative to the viewport\n // (independent of the scrollUpButton).\n position: \"relative\",\n flex: 1,\n // Viewport should only be scrollable in the vertical direction.\n // This won't work in vertical writing modes, so we'll need to\n // revisit this if/when that is supported\n // https://developer.chrome.com/blog/vertical-form-controls\n overflow: \"hidden auto\",\n ...viewportProps.style\n },\n onScroll: composeEventHandlers(viewportProps.onScroll, (event) => {\n const viewport = event.currentTarget;\n const { contentWrapper, shouldExpandOnScrollRef } = viewportContext;\n if (shouldExpandOnScrollRef?.current && contentWrapper) {\n const scrolledBy = Math.abs(prevScrollTopRef.current - viewport.scrollTop);\n if (scrolledBy > 0) {\n const availableHeight = window.innerHeight - CONTENT_MARGIN * 2;\n const cssMinHeight = parseFloat(contentWrapper.style.minHeight);\n const cssHeight = parseFloat(contentWrapper.style.height);\n const prevHeight = Math.max(cssMinHeight, cssHeight);\n if (prevHeight < availableHeight) {\n const nextHeight = prevHeight + scrolledBy;\n const clampedNextHeight = Math.min(availableHeight, nextHeight);\n const heightDiff = nextHeight - clampedNextHeight;\n contentWrapper.style.height = clampedNextHeight + \"px\";\n if (contentWrapper.style.bottom === \"0px\") {\n viewport.scrollTop = heightDiff > 0 ? heightDiff : 0;\n contentWrapper.style.justifyContent = \"flex-end\";\n }\n }\n }\n }\n prevScrollTopRef.current = viewport.scrollTop;\n })\n }\n ) })\n ] });\n }\n);\nSelectViewport.displayName = VIEWPORT_NAME;\nvar GROUP_NAME = \"SelectGroup\";\nvar [SelectGroupContextProvider, useSelectGroupContext] = createSelectContext(GROUP_NAME);\nvar SelectGroup = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...groupProps } = props;\n const groupId = useId();\n return /* @__PURE__ */ jsx(SelectGroupContextProvider, { scope: __scopeSelect, id: groupId, children: /* @__PURE__ */ jsx(Primitive.div, { role: \"group\", \"aria-labelledby\": groupId, ...groupProps, ref: forwardedRef }) });\n }\n);\nSelectGroup.displayName = GROUP_NAME;\nvar LABEL_NAME = \"SelectLabel\";\nvar SelectLabel = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...labelProps } = props;\n const groupContext = useSelectGroupContext(LABEL_NAME, __scopeSelect);\n return /* @__PURE__ */ jsx(Primitive.div, { id: groupContext.id, ...labelProps, ref: forwardedRef });\n }\n);\nSelectLabel.displayName = LABEL_NAME;\nvar ITEM_NAME = \"SelectItem\";\nvar [SelectItemContextProvider, useSelectItemContext] = createSelectContext(ITEM_NAME);\nvar SelectItem = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeSelect,\n value,\n disabled = false,\n textValue: textValueProp,\n ...itemProps\n } = props;\n const context = useSelectContext(ITEM_NAME, __scopeSelect);\n const contentContext = useSelectContentContext(ITEM_NAME, __scopeSelect);\n const isSelected = context.value === value;\n const [textValue, setTextValue] = React.useState(textValueProp ?? \"\");\n const [isFocused, setIsFocused] = React.useState(false);\n const composedRefs = useComposedRefs(\n forwardedRef,\n (node) => contentContext.itemRefCallback?.(node, value, disabled)\n );\n const textId = useId();\n const pointerTypeRef = React.useRef(\"touch\");\n const handleSelect = () => {\n if (!disabled) {\n context.onValueChange(value);\n context.onOpenChange(false);\n }\n };\n if (value === \"\") {\n throw new Error(\n \"A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.\"\n );\n }\n return /* @__PURE__ */ jsx(\n SelectItemContextProvider,\n {\n scope: __scopeSelect,\n value,\n disabled,\n textId,\n isSelected,\n onItemTextChange: React.useCallback((node) => {\n setTextValue((prevTextValue) => prevTextValue || (node?.textContent ?? \"\").trim());\n }, []),\n children: /* @__PURE__ */ jsx(\n Collection.ItemSlot,\n {\n scope: __scopeSelect,\n value,\n disabled,\n textValue,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"option\",\n \"aria-labelledby\": textId,\n \"data-highlighted\": isFocused ? \"\" : void 0,\n \"aria-selected\": isSelected && isFocused,\n \"data-state\": isSelected ? \"checked\" : \"unchecked\",\n \"aria-disabled\": disabled || void 0,\n \"data-disabled\": disabled ? \"\" : void 0,\n tabIndex: disabled ? void 0 : -1,\n ...itemProps,\n ref: composedRefs,\n onFocus: composeEventHandlers(itemProps.onFocus, () => setIsFocused(true)),\n onBlur: composeEventHandlers(itemProps.onBlur, () => setIsFocused(false)),\n onClick: composeEventHandlers(itemProps.onClick, () => {\n if (pointerTypeRef.current !== \"mouse\") handleSelect();\n }),\n onPointerUp: composeEventHandlers(itemProps.onPointerUp, () => {\n if (pointerTypeRef.current === \"mouse\") handleSelect();\n }),\n onPointerDown: composeEventHandlers(itemProps.onPointerDown, (event) => {\n pointerTypeRef.current = event.pointerType;\n }),\n onPointerMove: composeEventHandlers(itemProps.onPointerMove, (event) => {\n pointerTypeRef.current = event.pointerType;\n if (disabled) {\n contentContext.onItemLeave?.();\n } else if (pointerTypeRef.current === \"mouse\") {\n event.currentTarget.focus({ preventScroll: true });\n }\n }),\n onPointerLeave: composeEventHandlers(itemProps.onPointerLeave, (event) => {\n if (event.currentTarget === document.activeElement) {\n contentContext.onItemLeave?.();\n }\n }),\n onKeyDown: composeEventHandlers(itemProps.onKeyDown, (event) => {\n const isTypingAhead = contentContext.searchRef?.current !== \"\";\n if (isTypingAhead && event.key === \" \") return;\n if (SELECTION_KEYS.includes(event.key)) handleSelect();\n if (event.key === \" \") event.preventDefault();\n })\n }\n )\n }\n )\n }\n );\n }\n);\nSelectItem.displayName = ITEM_NAME;\nvar ITEM_TEXT_NAME = \"SelectItemText\";\nvar SelectItemText = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, className, style, ...itemTextProps } = props;\n const context = useSelectContext(ITEM_TEXT_NAME, __scopeSelect);\n const contentContext = useSelectContentContext(ITEM_TEXT_NAME, __scopeSelect);\n const itemContext = useSelectItemContext(ITEM_TEXT_NAME, __scopeSelect);\n const nativeOptionsContext = useSelectNativeOptionsContext(ITEM_TEXT_NAME, __scopeSelect);\n const [itemTextNode, setItemTextNode] = React.useState(null);\n const composedRefs = useComposedRefs(\n forwardedRef,\n (node) => setItemTextNode(node),\n itemContext.onItemTextChange,\n (node) => contentContext.itemTextRefCallback?.(node, itemContext.value, itemContext.disabled)\n );\n const textContent = itemTextNode?.textContent;\n const nativeOption = React.useMemo(\n () => /* @__PURE__ */ jsx(\"option\", { value: itemContext.value, disabled: itemContext.disabled, children: textContent }, itemContext.value),\n [itemContext.disabled, itemContext.value, textContent]\n );\n const { onNativeOptionAdd, onNativeOptionRemove } = nativeOptionsContext;\n useLayoutEffect(() => {\n onNativeOptionAdd(nativeOption);\n return () => onNativeOptionRemove(nativeOption);\n }, [onNativeOptionAdd, onNativeOptionRemove, nativeOption]);\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(Primitive.span, { id: itemContext.textId, ...itemTextProps, ref: composedRefs }),\n itemContext.isSelected && context.valueNode && !context.valueNodeHasChildren ? ReactDOM.createPortal(itemTextProps.children, context.valueNode) : null\n ] });\n }\n);\nSelectItemText.displayName = ITEM_TEXT_NAME;\nvar ITEM_INDICATOR_NAME = \"SelectItemIndicator\";\nvar SelectItemIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...itemIndicatorProps } = props;\n const itemContext = useSelectItemContext(ITEM_INDICATOR_NAME, __scopeSelect);\n return itemContext.isSelected ? /* @__PURE__ */ jsx(Primitive.span, { \"aria-hidden\": true, ...itemIndicatorProps, ref: forwardedRef }) : null;\n }\n);\nSelectItemIndicator.displayName = ITEM_INDICATOR_NAME;\nvar SCROLL_UP_BUTTON_NAME = \"SelectScrollUpButton\";\nvar SelectScrollUpButton = React.forwardRef((props, forwardedRef) => {\n const contentContext = useSelectContentContext(SCROLL_UP_BUTTON_NAME, props.__scopeSelect);\n const viewportContext = useSelectViewportContext(SCROLL_UP_BUTTON_NAME, props.__scopeSelect);\n const [canScrollUp, setCanScrollUp] = React.useState(false);\n const composedRefs = useComposedRefs(forwardedRef, viewportContext.onScrollButtonChange);\n useLayoutEffect(() => {\n if (contentContext.viewport && contentContext.isPositioned) {\n let handleScroll2 = function() {\n const canScrollUp2 = viewport.scrollTop > 0;\n setCanScrollUp(canScrollUp2);\n };\n var handleScroll = handleScroll2;\n const viewport = contentContext.viewport;\n handleScroll2();\n viewport.addEventListener(\"scroll\", handleScroll2);\n return () => viewport.removeEventListener(\"scroll\", handleScroll2);\n }\n }, [contentContext.viewport, contentContext.isPositioned]);\n return canScrollUp ? /* @__PURE__ */ jsx(\n SelectScrollButtonImpl,\n {\n ...props,\n ref: composedRefs,\n onAutoScroll: () => {\n const { viewport, selectedItem } = contentContext;\n if (viewport && selectedItem) {\n viewport.scrollTop = viewport.scrollTop - selectedItem.offsetHeight;\n }\n }\n }\n ) : null;\n});\nSelectScrollUpButton.displayName = SCROLL_UP_BUTTON_NAME;\nvar SCROLL_DOWN_BUTTON_NAME = \"SelectScrollDownButton\";\nvar SelectScrollDownButton = React.forwardRef((props, forwardedRef) => {\n const contentContext = useSelectContentContext(SCROLL_DOWN_BUTTON_NAME, props.__scopeSelect);\n const viewportContext = useSelectViewportContext(SCROLL_DOWN_BUTTON_NAME, props.__scopeSelect);\n const [canScrollDown, setCanScrollDown] = React.useState(false);\n const composedRefs = useComposedRefs(forwardedRef, viewportContext.onScrollButtonChange);\n useLayoutEffect(() => {\n if (contentContext.viewport && contentContext.isPositioned) {\n let handleScroll2 = function() {\n const maxScroll = viewport.scrollHeight - viewport.clientHeight;\n const canScrollDown2 = Math.ceil(viewport.scrollTop) < maxScroll;\n setCanScrollDown(canScrollDown2);\n };\n var handleScroll = handleScroll2;\n const viewport = contentContext.viewport;\n handleScroll2();\n viewport.addEventListener(\"scroll\", handleScroll2);\n return () => viewport.removeEventListener(\"scroll\", handleScroll2);\n }\n }, [contentContext.viewport, contentContext.isPositioned]);\n return canScrollDown ? /* @__PURE__ */ jsx(\n SelectScrollButtonImpl,\n {\n ...props,\n ref: composedRefs,\n onAutoScroll: () => {\n const { viewport, selectedItem } = contentContext;\n if (viewport && selectedItem) {\n viewport.scrollTop = viewport.scrollTop + selectedItem.offsetHeight;\n }\n }\n }\n ) : null;\n});\nSelectScrollDownButton.displayName = SCROLL_DOWN_BUTTON_NAME;\nvar SelectScrollButtonImpl = React.forwardRef((props, forwardedRef) => {\n const { __scopeSelect, onAutoScroll, ...scrollIndicatorProps } = props;\n const contentContext = useSelectContentContext(\"SelectScrollButton\", __scopeSelect);\n const autoScrollTimerRef = React.useRef(null);\n const getItems = useCollection(__scopeSelect);\n const clearAutoScrollTimer = React.useCallback(() => {\n if (autoScrollTimerRef.current !== null) {\n window.clearInterval(autoScrollTimerRef.current);\n autoScrollTimerRef.current = null;\n }\n }, []);\n React.useEffect(() => {\n return () => clearAutoScrollTimer();\n }, [clearAutoScrollTimer]);\n useLayoutEffect(() => {\n const activeItem = getItems().find((item) => item.ref.current === document.activeElement);\n activeItem?.ref.current?.scrollIntoView({ block: \"nearest\" });\n }, [getItems]);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"aria-hidden\": true,\n ...scrollIndicatorProps,\n ref: forwardedRef,\n style: { flexShrink: 0, ...scrollIndicatorProps.style },\n onPointerDown: composeEventHandlers(scrollIndicatorProps.onPointerDown, () => {\n if (autoScrollTimerRef.current === null) {\n autoScrollTimerRef.current = window.setInterval(onAutoScroll, 50);\n }\n }),\n onPointerMove: composeEventHandlers(scrollIndicatorProps.onPointerMove, () => {\n contentContext.onItemLeave?.();\n if (autoScrollTimerRef.current === null) {\n autoScrollTimerRef.current = window.setInterval(onAutoScroll, 50);\n }\n }),\n onPointerLeave: composeEventHandlers(scrollIndicatorProps.onPointerLeave, () => {\n clearAutoScrollTimer();\n })\n }\n );\n});\nvar SEPARATOR_NAME = \"SelectSeparator\";\nvar SelectSeparator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...separatorProps } = props;\n return /* @__PURE__ */ jsx(Primitive.div, { \"aria-hidden\": true, ...separatorProps, ref: forwardedRef });\n }\n);\nSelectSeparator.displayName = SEPARATOR_NAME;\nvar ARROW_NAME = \"SelectArrow\";\nvar SelectArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeSelect);\n const context = useSelectContext(ARROW_NAME, __scopeSelect);\n const contentContext = useSelectContentContext(ARROW_NAME, __scopeSelect);\n return context.open && contentContext.position === \"popper\" ? /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef }) : null;\n }\n);\nSelectArrow.displayName = ARROW_NAME;\nfunction shouldShowPlaceholder(value) {\n return value === \"\" || value === void 0;\n}\nvar BubbleSelect = React.forwardRef(\n (props, forwardedRef) => {\n const { value, ...selectProps } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const prevValue = usePrevious(value);\n React.useEffect(() => {\n const select = ref.current;\n const selectProto = window.HTMLSelectElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n selectProto,\n \"value\"\n );\n const setValue = descriptor.set;\n if (prevValue !== value && setValue) {\n const event = new Event(\"change\", { bubbles: true });\n setValue.call(select, value);\n select.dispatchEvent(event);\n }\n }, [prevValue, value]);\n return /* @__PURE__ */ jsx(VisuallyHidden, { asChild: true, children: /* @__PURE__ */ jsx(\"select\", { ...selectProps, ref: composedRefs, defaultValue: value }) });\n }\n);\nBubbleSelect.displayName = \"BubbleSelect\";\nfunction useTypeaheadSearch(onSearchChange) {\n const handleSearchChange = useCallbackRef(onSearchChange);\n const searchRef = React.useRef(\"\");\n const timerRef = React.useRef(0);\n const handleTypeaheadSearch = React.useCallback(\n (key) => {\n const search = searchRef.current + key;\n handleSearchChange(search);\n (function updateSearch(value) {\n searchRef.current = value;\n window.clearTimeout(timerRef.current);\n if (value !== \"\") timerRef.current = window.setTimeout(() => updateSearch(\"\"), 1e3);\n })(search);\n },\n [handleSearchChange]\n );\n const resetTypeahead = React.useCallback(() => {\n searchRef.current = \"\";\n window.clearTimeout(timerRef.current);\n }, []);\n React.useEffect(() => {\n return () => window.clearTimeout(timerRef.current);\n }, []);\n return [searchRef, handleTypeaheadSearch, resetTypeahead];\n}\nfunction findNextItem(items, search, currentItem) {\n const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n const normalizedSearch = isRepeated ? search[0] : search;\n const currentItemIndex = currentItem ? items.indexOf(currentItem) : -1;\n let wrappedItems = wrapArray(items, Math.max(currentItemIndex, 0));\n const excludeCurrentItem = normalizedSearch.length === 1;\n if (excludeCurrentItem) wrappedItems = wrappedItems.filter((v) => v !== currentItem);\n const nextItem = wrappedItems.find(\n (item) => item.textValue.toLowerCase().startsWith(normalizedSearch.toLowerCase())\n );\n return nextItem !== currentItem ? nextItem : void 0;\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nvar Root2 = Select;\nvar Trigger = SelectTrigger;\nvar Value = SelectValue;\nvar Icon = SelectIcon;\nvar Portal = SelectPortal;\nvar Content2 = SelectContent;\nvar Viewport = SelectViewport;\nvar Group = SelectGroup;\nvar Label = SelectLabel;\nvar Item = SelectItem;\nvar ItemText = SelectItemText;\nvar ItemIndicator = SelectItemIndicator;\nvar ScrollUpButton = SelectScrollUpButton;\nvar ScrollDownButton = SelectScrollDownButton;\nvar Separator = SelectSeparator;\nvar Arrow2 = SelectArrow;\nexport {\n Arrow2 as Arrow,\n Content2 as Content,\n Group,\n Icon,\n Item,\n ItemIndicator,\n ItemText,\n Label,\n Portal,\n Root2 as Root,\n ScrollDownButton,\n ScrollUpButton,\n Select,\n SelectArrow,\n SelectContent,\n SelectGroup,\n SelectIcon,\n SelectItem,\n SelectItemIndicator,\n SelectItemText,\n SelectLabel,\n SelectPortal,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n SelectViewport,\n Separator,\n Trigger,\n Value,\n Viewport,\n createSelectScope\n};\n//# sourceMappingURL=index.mjs.map\n"],"names":["clamp","value","min","max","createContextScope","scopeName","createContextScopeDeps","defaultContexts","createContext3","rootComponentName","defaultContext","BaseContext","React.createContext","index","Provider","props","scope","children","context","Context","React.useMemo","jsx","useContext2","consumerName","React.useContext","createScope","scopeContexts","contexts","composeContextScopes","scopes","baseScope","scopeHooks","createScope2","overrideScopes","nextScopes","nextScopes2","useScope","currentScope","createCollection","name","PROVIDER_NAME","createCollectionContext","createCollectionScope","CollectionProviderImpl","useCollectionContext","CollectionProvider","ref","React","itemMap","COLLECTION_SLOT_NAME","CollectionSlot","forwardedRef","composedRefs","useComposedRefs","Slot","ITEM_SLOT_NAME","ITEM_DATA_ATTR","CollectionItemSlot","itemData","useCollection","collectionNode","orderedNodes","a","b","DirectionContext","useDirection","localDir","globalDir","usePrevious","React.useRef","OPEN_KEYS","SELECTION_KEYS","SELECT_NAME","Collection","createSelectContext","createSelectScope","createPopperScope","usePopperScope","SelectProvider","useSelectContext","SelectNativeOptionsProvider","useSelectNativeOptionsContext","Select","__scopeSelect","openProp","defaultOpen","onOpenChange","valueProp","defaultValue","onValueChange","dir","autoComplete","disabled","required","form","popperScope","trigger","setTrigger","React.useState","valueNode","setValueNode","valueNodeHasChildren","setValueNodeHasChildren","direction","open","setOpen","useControllableState","setValue","triggerPointerDownPosRef","isFormControl","nativeOptionsSet","setNativeOptionsSet","nativeSelectKey","option","PopperPrimitive.Root","jsxs","useId","React.useCallback","prev","optionsSet","BubbleSelect","event","TRIGGER_NAME","SelectTrigger","React.forwardRef","triggerProps","isDisabled","getItems","pointerTypeRef","searchRef","handleTypeaheadSearch","resetTypeahead","useTypeaheadSearch","search","enabledItems","item","currentItem","nextItem","findNextItem","handleOpen","pointerEvent","PopperPrimitive.Anchor","Primitive","shouldShowPlaceholder","composeEventHandlers","target","isTypingAhead","VALUE_NAME","SelectValue","className","style","placeholder","valueProps","onValueNodeHasChildrenChange","hasChildren","useLayoutEffect","Fragment","ICON_NAME","SelectIcon","iconProps","PORTAL_NAME","SelectPortal","PortalPrimitive","CONTENT_NAME","SelectContent","fragment","setFragment","frag","ReactDOM.createPortal","SelectContentProvider","SelectContentImpl","CONTENT_MARGIN","useSelectContentContext","CONTENT_IMPL_NAME","position","onCloseAutoFocus","onEscapeKeyDown","onPointerDownOutside","side","sideOffset","align","alignOffset","arrowPadding","collisionBoundary","collisionPadding","sticky","hideWhenDetached","avoidCollisions","contentProps","content","setContent","viewport","setViewport","node","selectedItem","setSelectedItem","selectedItemText","setSelectedItemText","isPositioned","setIsPositioned","firstValidItemFoundRef","React.useEffect","hideOthers","useFocusGuards","focusFirst","candidates","firstItem","restItems","lastItem","PREVIOUSLY_FOCUSED_ELEMENT","candidate","focusSelectedItem","pointerMoveDelta","handlePointerMove","_a","_b","handlePointerUp","close","itemRefCallback","isFirstValidItem","handleItemLeave","itemTextRefCallback","SelectPosition","SelectPopperPosition","SelectItemAlignedPosition","popperContentProps","RemoveScroll","FocusScope","DismissableLayer","isModifierKey","candidateNodes","currentElement","currentIndex","ITEM_ALIGNED_POSITION_NAME","onPlaced","popperProps","contentContext","contentWrapper","setContentWrapper","shouldExpandOnScrollRef","shouldRepositionRef","triggerRect","contentRect","valueNodeRect","itemTextRect","itemTextOffset","left","leftDelta","minContentWidth","contentWidth","rightEdge","clampedLeft","right","rightDelta","leftEdge","clampedRight","items","availableHeight","itemsHeight","contentStyles","contentBorderTopWidth","contentPaddingTop","contentBorderBottomWidth","contentPaddingBottom","fullContentHeight","minContentHeight","viewportStyles","viewportPaddingTop","viewportPaddingBottom","topEdgeToTriggerMiddle","triggerMiddleToBottomEdge","selectedItemHalfHeight","itemOffsetMiddle","contentTopToItemMiddle","itemMiddleToContentBottom","isLastItem","viewportOffsetBottom","clampedTriggerMiddleToBottomEdge","height","isFirstItem","contentZIndex","setContentZIndex","handleScrollButtonChange","SelectViewportProvider","POPPER_POSITION_NAME","PopperPrimitive.Content","useSelectViewportContext","VIEWPORT_NAME","SelectViewport","nonce","viewportProps","viewportContext","prevScrollTopRef","scrolledBy","cssMinHeight","cssHeight","prevHeight","nextHeight","clampedNextHeight","heightDiff","GROUP_NAME","SelectGroupContextProvider","useSelectGroupContext","SelectGroup","groupProps","groupId","LABEL_NAME","SelectLabel","labelProps","groupContext","ITEM_NAME","SelectItemContextProvider","useSelectItemContext","SelectItem","textValueProp","itemProps","isSelected","textValue","setTextValue","isFocused","setIsFocused","textId","handleSelect","prevTextValue","ITEM_TEXT_NAME","SelectItemText","itemTextProps","itemContext","nativeOptionsContext","itemTextNode","setItemTextNode","textContent","nativeOption","onNativeOptionAdd","onNativeOptionRemove","ITEM_INDICATOR_NAME","SelectItemIndicator","itemIndicatorProps","SCROLL_UP_BUTTON_NAME","SelectScrollUpButton","canScrollUp","setCanScrollUp","handleScroll2","canScrollUp2","SelectScrollButtonImpl","SCROLL_DOWN_BUTTON_NAME","SelectScrollDownButton","canScrollDown","setCanScrollDown","maxScroll","canScrollDown2","onAutoScroll","scrollIndicatorProps","autoScrollTimerRef","clearAutoScrollTimer","activeItem","SEPARATOR_NAME","SelectSeparator","separatorProps","ARROW_NAME","SelectArrow","arrowProps","PopperPrimitive.Arrow","selectProps","prevValue","select","selectProto","VisuallyHidden","onSearchChange","handleSearchChange","useCallbackRef","timerRef","key","updateSearch","normalizedSearch","char","currentItemIndex","wrappedItems","wrapArray","v","array","startIndex","_","Root2","Trigger","Value","Icon","Portal","Content2","Viewport","Group","Label","Item","ItemText","ItemIndicator","ScrollUpButton","ScrollDownButton"],"mappings":"4UACA,SAASA,GAAMC,EAAO,CAACC,EAAKC,CAAG,EAAG,CAChC,OAAO,KAAK,IAAIA,EAAK,KAAK,IAAID,EAAKD,CAAK,CAAC,CAC3C,CCgBA,SAASG,GAAmBC,EAAWC,EAAyB,GAAI,CAClE,IAAIC,EAAkB,CAAA,EACtB,SAASC,EAAeC,EAAmBC,EAAgB,CACzD,MAAMC,EAAcC,gBAAoBF,CAAc,EAChDG,EAAQN,EAAgB,OAC9BA,EAAkB,CAAC,GAAGA,EAAiBG,CAAc,EACrD,SAASI,EAASC,EAAO,CACvB,KAAM,CAAE,MAAAC,EAAO,SAAAC,EAAU,GAAGC,CAAO,EAAKH,EAClCI,GAAUH,GAAA,YAAAA,EAAQX,GAAWQ,KAAUF,EACvCV,EAAQmB,EAAAA,QAAc,IAAMF,EAAS,OAAO,OAAOA,CAAO,CAAC,EACjE,OAAuBG,EAAAA,IAAIF,EAAQ,SAAU,CAAE,MAAAlB,EAAO,SAAAgB,CAAQ,CAAE,CACjE,CACD,SAASK,EAAYC,EAAcP,EAAO,CACxC,MAAMG,GAAUH,GAAA,YAAAA,EAAQX,GAAWQ,KAAUF,EACvCO,EAAUM,aAAiBL,CAAO,EACxC,GAAID,EAAS,OAAOA,EACpB,GAAIR,IAAmB,OAAQ,OAAOA,EACtC,MAAM,IAAI,MAAM,KAAKa,CAAY,4BAA4Bd,CAAiB,IAAI,CACnF,CACD,OAAAK,EAAS,YAAcL,EAAoB,WACpC,CAACK,EAAUQ,CAAW,CAC9B,CACD,MAAMG,EAAc,IAAM,CACxB,MAAMC,EAAgBnB,EAAgB,IAAKG,GAClCE,EAAAA,cAAoBF,CAAc,CAC1C,EACD,OAAO,SAAkBM,EAAO,CAC9B,MAAMW,GAAWX,GAAA,YAAAA,EAAQX,KAAcqB,EACvC,OAAON,EAAa,QAClB,KAAO,CAAE,CAAC,UAAUf,CAAS,EAAE,EAAG,CAAE,GAAGW,EAAO,CAACX,CAAS,EAAGsB,CAAQ,IACnE,CAACX,EAAOW,CAAQ,CACxB,CACA,CACA,EACE,OAAAF,EAAY,UAAYpB,EACjB,CAACG,EAAgBoB,GAAqBH,EAAa,GAAGnB,CAAsB,CAAC,CACtF,CACA,SAASsB,MAAwBC,EAAQ,CACvC,MAAMC,EAAYD,EAAO,CAAC,EAC1B,GAAIA,EAAO,SAAW,EAAG,OAAOC,EAChC,MAAML,EAAc,IAAM,CACxB,MAAMM,EAAaF,EAAO,IAAKG,IAAkB,CAC/C,SAAUA,EAAc,EACxB,UAAWA,EAAa,SACzB,EAAC,EACF,OAAO,SAA2BC,EAAgB,CAChD,MAAMC,EAAaH,EAAW,OAAO,CAACI,EAAa,CAAE,SAAAC,EAAU,UAAA/B,KAAgB,CAE7E,MAAMgC,EADaD,EAASH,CAAc,EACV,UAAU5B,CAAS,EAAE,EACrD,MAAO,CAAE,GAAG8B,EAAa,GAAGE,EAC7B,EAAE,CAAE,CAAA,EACL,OAAOjB,UAAc,KAAO,CAAE,CAAC,UAAUU,EAAU,SAAS,EAAE,EAAGI,CAAY,GAAG,CAACA,CAAU,CAAC,CAClG,CACA,EACE,OAAAT,EAAY,UAAYK,EAAU,UAC3BL,CACT,CCnEA,SAASa,GAAiBC,EAAM,CAC9B,MAAMC,EAAgBD,EAAO,qBACvB,CAACE,EAAyBC,CAAqB,EAAItC,GAAmBoC,CAAa,EACnF,CAACG,EAAwBC,CAAoB,EAAIH,EACrDD,EACA,CAAE,cAAe,CAAE,QAAS,IAAM,EAAE,QAAyB,IAAI,GAAO,CAC5E,EACQK,EAAsB9B,GAAU,CACpC,KAAM,CAAE,MAAAC,EAAO,SAAAC,CAAU,EAAGF,EACtB+B,EAAMC,EAAM,OAAO,IAAI,EACvBC,EAAUD,EAAM,OAAuB,IAAI,GAAK,EAAE,QACxD,OAAuB1B,EAAG,IAACsB,EAAwB,CAAE,MAAA3B,EAAO,QAAAgC,EAAS,cAAeF,EAAK,SAAA7B,CAAQ,CAAE,CACvG,EACE4B,EAAmB,YAAcL,EACjC,MAAMS,EAAuBV,EAAO,iBAC9BW,EAAiBH,EAAM,WAC3B,CAAChC,EAAOoC,IAAiB,CACvB,KAAM,CAAE,MAAAnC,EAAO,SAAAC,CAAU,EAAGF,EACtBG,EAAU0B,EAAqBK,EAAsBjC,CAAK,EAC1DoC,EAAeC,EAAgBF,EAAcjC,EAAQ,aAAa,EACxE,OAAuBG,EAAAA,IAAIiC,GAAM,CAAE,IAAKF,EAAc,SAAAnC,CAAQ,CAAE,CACjE,CACL,EACEiC,EAAe,YAAcD,EAC7B,MAAMM,EAAiBhB,EAAO,qBACxBiB,EAAiB,6BACjBC,EAAqBV,EAAM,WAC/B,CAAChC,EAAOoC,IAAiB,CACvB,KAAM,CAAE,MAAAnC,EAAO,SAAAC,EAAU,GAAGyC,CAAQ,EAAK3C,EACnC+B,EAAMC,EAAM,OAAO,IAAI,EACvBK,EAAeC,EAAgBF,EAAcL,CAAG,EAChD5B,EAAU0B,EAAqBW,EAAgBvC,CAAK,EAC1D,OAAA+B,EAAM,UAAU,KACd7B,EAAQ,QAAQ,IAAI4B,EAAK,CAAE,IAAAA,EAAK,GAAGY,CAAQ,CAAE,EACtC,IAAM,KAAKxC,EAAQ,QAAQ,OAAO4B,CAAG,EAC7C,EACsBzB,MAAIiC,GAAM,CAAO,CAACE,CAAc,EAAG,GAAM,IAAKJ,EAAc,SAAAnC,CAAU,CAAA,CAC9F,CACL,EACEwC,EAAmB,YAAcF,EACjC,SAASI,EAAc3C,EAAO,CAC5B,MAAME,EAAU0B,EAAqBL,EAAO,qBAAsBvB,CAAK,EAWvE,OAViB+B,EAAM,YAAY,IAAM,CACvC,MAAMa,EAAiB1C,EAAQ,cAAc,QAC7C,GAAI,CAAC0C,EAAgB,MAAO,GAC5B,MAAMC,EAAe,MAAM,KAAKD,EAAe,iBAAiB,IAAIJ,CAAc,GAAG,CAAC,EAKtF,OAJc,MAAM,KAAKtC,EAAQ,QAAQ,OAAM,CAAE,EACtB,KACzB,CAAC4C,EAAGC,IAAMF,EAAa,QAAQC,EAAE,IAAI,OAAO,EAAID,EAAa,QAAQE,EAAE,IAAI,OAAO,CAC1F,CAEK,EAAE,CAAC7C,EAAQ,cAAeA,EAAQ,OAAO,CAAC,CAE5C,CACD,MAAO,CACL,CAAE,SAAU2B,EAAoB,KAAMK,EAAgB,SAAUO,CAAoB,EACpFE,EACAjB,CACJ,CACA,CChEA,IAAIsB,GAAmBpD,EAAAA,cAAoB,MAAM,EAKjD,SAASqD,GAAaC,EAAU,CAC9B,MAAMC,EAAY3C,aAAiBwC,EAAgB,EACnD,OAAOE,GAAYC,GAAa,KAClC,CCTA,SAASC,GAAYnE,EAAO,CAC1B,MAAM6C,EAAMuB,EAAAA,OAAa,CAAE,MAAApE,EAAO,SAAUA,CAAK,CAAE,EACnD,OAAOmB,EAAa,QAAC,KACf0B,EAAI,QAAQ,QAAU7C,IACxB6C,EAAI,QAAQ,SAAWA,EAAI,QAAQ,MACnCA,EAAI,QAAQ,MAAQ7C,GAEf6C,EAAI,QAAQ,UAClB,CAAC7C,CAAK,CAAC,CACZ,CCiBA,IAAIqE,GAAY,CAAC,IAAK,QAAS,UAAW,WAAW,EACjDC,GAAiB,CAAC,IAAK,OAAO,EAC9BC,GAAc,SACd,CAACC,GAAYd,GAAejB,EAAqB,EAAIJ,GAAiBkC,EAAW,EACjF,CAACE,GAAqBC,EAAiB,EAAIvE,GAAmBoE,GAAa,CAC7E9B,GACAkC,EACF,CAAC,EACGC,GAAiBD,GAAiB,EAClC,CAACE,GAAgBC,CAAgB,EAAIL,GAAoBF,EAAW,EACpE,CAACQ,GAA6BC,EAA6B,EAAIP,GAAoBF,EAAW,EAC9FU,GAAUnE,GAAU,CACtB,KAAM,CACJ,cAAAoE,EACA,SAAAlE,EACA,KAAMmE,EACN,YAAAC,EACA,aAAAC,EACA,MAAOC,EACP,aAAAC,EACA,cAAAC,EACA,IAAAC,EACA,KAAAnD,EACA,aAAAoD,EACA,SAAAC,EACA,SAAAC,EACA,KAAAC,CACD,EAAG/E,EACEgF,EAAclB,GAAeM,CAAa,EAC1C,CAACa,EAASC,CAAU,EAAIC,EAAc,SAAC,IAAI,EAC3C,CAACC,EAAWC,CAAY,EAAIF,EAAc,SAAC,IAAI,EAC/C,CAACG,EAAsBC,CAAuB,EAAIJ,EAAc,SAAC,EAAK,EACtEK,GAAYtC,GAAayB,CAAG,EAC5B,CAACc,EAAO,GAAOC,CAAO,EAAIC,GAAqB,CACnD,KAAMtB,EACN,YAAaC,EACb,SAAUC,CACd,CAAG,EACK,CAACrF,EAAO0G,CAAQ,EAAID,GAAqB,CAC7C,KAAMnB,EACN,YAAaC,EACb,SAAUC,CACd,CAAG,EACKmB,EAA2BvC,SAAa,IAAI,EAC5CwC,EAAgBb,EAAUF,GAAQ,CAAC,CAACE,EAAQ,QAAQ,MAAM,EAAI,GAC9D,CAACc,EAAkBC,CAAmB,EAAIb,EAAAA,SAA+B,IAAI,GAAK,EAClFc,EAAkB,MAAM,KAAKF,CAAgB,EAAE,IAAKG,GAAWA,EAAO,MAAM,KAAK,EAAE,KAAK,GAAG,EACjG,OAAuB5F,EAAG,IAAC6F,GAAsB,CAAE,GAAGnB,EAAa,SAA0BoB,EAAI,KAC/FrC,GACA,CACE,SAAAe,EACA,MAAOV,EACP,QAAAa,EACA,gBAAiBC,EACjB,UAAAE,EACA,kBAAmBC,EACnB,qBAAAC,EACA,6BAA8BC,EAC9B,UAAWc,GAAO,EAClB,MAAAnH,EACA,cAAe0G,EACf,KAAAH,EACA,aAAcC,EACd,IAAKF,GACL,yBAAAK,EACA,SAAAhB,EACA,SAAU,CACQvE,EAAG,IAACoD,GAAW,SAAU,CAAE,MAAOU,EAAe,SAA0B9D,EAAG,IAC5F2D,GACA,CACE,MAAOjE,EAAM,cACb,kBAAmBsG,EAAAA,YAAmBJ,GAAW,CAC/CF,EAAqBO,GAAS,IAAI,IAAIA,CAAI,EAAE,IAAIL,CAAM,CAAC,CACxD,EAAE,EAAE,EACL,qBAAsBI,EAAAA,YAAmBJ,GAAW,CAClDF,EAAqBO,GAAS,CAC5B,MAAMC,EAAa,IAAI,IAAID,CAAI,EAC/B,OAAAC,EAAW,OAAON,CAAM,EACjBM,CACvB,CAAe,CACF,EAAE,EAAE,EACL,SAAAtG,CACD,CACX,EAAW,EACH4F,EAAgCM,EAAI,KAClCK,GACA,CACE,cAAe,GACf,SAAA3B,EACA,SAAU,GACV,KAAAtD,EACA,aAAAoD,EACA,MAAA1F,EACA,SAAWwH,GAAUd,EAASc,EAAM,OAAO,KAAK,EAChD,SAAA7B,EACA,KAAAE,EACA,SAAU,CACR7F,IAAU,OAAyBoB,MAAI,SAAU,CAAE,MAAO,EAAI,CAAA,EAAI,KAClE,MAAM,KAAKyF,CAAgB,CAC5B,CACF,EACDE,CACV,EAAY,IACL,CACF,CACF,CAAA,CAAE,CACL,EACA9B,GAAO,YAAcV,GACrB,IAAIkD,GAAe,gBACfC,GAAgBC,EAAgB,WAClC,CAAC7G,EAAOoC,IAAiB,CACvB,KAAM,CAAE,cAAAgC,EAAe,SAAAS,EAAW,GAAO,GAAGiC,CAAc,EAAG9G,EACvDgF,EAAclB,GAAeM,CAAa,EAC1CjE,EAAU6D,EAAiB2C,GAAcvC,CAAa,EACtD2C,EAAa5G,EAAQ,UAAY0E,EACjCxC,EAAeC,EAAgBF,EAAcjC,EAAQ,eAAe,EACpE6G,EAAWpE,GAAcwB,CAAa,EACtC6C,EAAiB3D,SAAa,OAAO,EACrC,CAAC4D,EAAWC,EAAuBC,CAAc,EAAIC,GAAoBC,GAAW,CACxF,MAAMC,EAAeP,EAAQ,EAAG,OAAQQ,GAAS,CAACA,EAAK,QAAQ,EACzDC,EAAcF,EAAa,KAAMC,GAASA,EAAK,QAAUrH,EAAQ,KAAK,EACtEuH,EAAWC,GAAaJ,EAAcD,EAAQG,CAAW,EAC3DC,IAAa,QACfvH,EAAQ,cAAcuH,EAAS,KAAK,CAE5C,CAAK,EACKE,EAAcC,GAAiB,CAC9Bd,IACH5G,EAAQ,aAAa,EAAI,EACzBiH,KAEES,IACF1H,EAAQ,yBAAyB,QAAU,CACzC,EAAG,KAAK,MAAM0H,EAAa,KAAK,EAChC,EAAG,KAAK,MAAMA,EAAa,KAAK,CAC1C,EAEA,EACI,OAAuBvH,EAAAA,IAAIwH,GAAwB,CAAE,QAAS,GAAM,GAAG9C,EAAa,SAA0B1E,EAAG,IAC/GyH,EAAU,OACV,CACE,KAAM,SACN,KAAM,WACN,gBAAiB5H,EAAQ,UACzB,gBAAiBA,EAAQ,KACzB,gBAAiBA,EAAQ,SACzB,oBAAqB,OACrB,IAAKA,EAAQ,IACb,aAAcA,EAAQ,KAAO,OAAS,SACtC,SAAU4G,EACV,gBAAiBA,EAAa,GAAK,OACnC,mBAAoBiB,GAAsB7H,EAAQ,KAAK,EAAI,GAAK,OAChE,GAAG2G,EACH,IAAKzE,EACL,QAAS4F,EAAqBnB,EAAa,QAAUJ,GAAU,CAC7DA,EAAM,cAAc,QAChBO,EAAe,UAAY,SAC7BW,EAAWlB,CAAK,CAE5B,CAAS,EACD,cAAeuB,EAAqBnB,EAAa,cAAgBJ,GAAU,CACzEO,EAAe,QAAUP,EAAM,YAC/B,MAAMwB,EAASxB,EAAM,OACjBwB,EAAO,kBAAkBxB,EAAM,SAAS,GAC1CwB,EAAO,sBAAsBxB,EAAM,SAAS,EAE1CA,EAAM,SAAW,GAAKA,EAAM,UAAY,IAASA,EAAM,cAAgB,UACzEkB,EAAWlB,CAAK,EAChBA,EAAM,eAAc,EAEhC,CAAS,EACD,UAAWuB,EAAqBnB,EAAa,UAAYJ,GAAU,CACjE,MAAMyB,EAAgBjB,EAAU,UAAY,GAExC,EADkBR,EAAM,SAAWA,EAAM,QAAUA,EAAM,UACvCA,EAAM,IAAI,SAAW,GAAGS,EAAsBT,EAAM,GAAG,EACzE,EAAAyB,GAAiBzB,EAAM,MAAQ,MAC/BnD,GAAU,SAASmD,EAAM,GAAG,IAC9BkB,IACAlB,EAAM,eAAc,EAEhC,CAAS,CACF,CACF,CAAA,CAAE,CACJ,CACH,EACAE,GAAc,YAAcD,GAC5B,IAAIyB,GAAa,cACbC,GAAcxB,EAAgB,WAChC,CAAC7G,EAAOoC,IAAiB,CACvB,KAAM,CAAE,cAAAgC,EAAe,UAAAkE,EAAW,MAAAC,EAAO,SAAArI,EAAU,YAAAsI,EAAc,GAAI,GAAGC,CAAY,EAAGzI,EACjFG,EAAU6D,EAAiBoE,GAAYhE,CAAa,EACpD,CAAE,6BAAAsE,CAA8B,EAAGvI,EACnCwI,EAAczI,IAAa,OAC3BmC,EAAeC,EAAgBF,EAAcjC,EAAQ,iBAAiB,EAC5EyI,OAAAA,EAAgB,IAAM,CACpBF,EAA6BC,CAAW,CAC9C,EAAO,CAACD,EAA8BC,CAAW,CAAC,EACvBrI,EAAG,IACxByH,EAAU,KACV,CACE,GAAGU,EACH,IAAKpG,EACL,MAAO,CAAE,cAAe,MAAQ,EAChC,SAAU2F,GAAsB7H,EAAQ,KAAK,EAAoBG,EAAAA,IAAIuI,EAAQ,SAAE,CAAE,SAAUL,CAAa,CAAA,EAAItI,CAC7G,CACP,CACG,CACH,EACAmI,GAAY,YAAcD,GAC1B,IAAIU,GAAY,aACZC,GAAalC,EAAgB,WAC/B,CAAC7G,EAAOoC,IAAiB,CACvB,KAAM,CAAE,cAAAgC,EAAe,SAAAlE,EAAU,GAAG8I,CAAS,EAAKhJ,EAClD,OAAuBM,EAAG,IAACyH,EAAU,KAAM,CAAE,cAAe,GAAM,GAAGiB,EAAW,IAAK5G,EAAc,SAAUlC,GAAY,GAAU,CAAA,CACpI,CACH,EACA6I,GAAW,YAAcD,GACzB,IAAIG,GAAc,eACdC,GAAgBlJ,GACKM,EAAAA,IAAI6I,GAAiB,CAAE,QAAS,GAAM,GAAGnJ,CAAK,CAAE,EAEzEkJ,GAAa,YAAcD,GAC3B,IAAIG,EAAe,gBACfC,GAAgBxC,EAAgB,WAClC,CAAC7G,EAAOoC,IAAiB,CACvB,MAAMjC,EAAU6D,EAAiBoF,EAAcpJ,EAAM,aAAa,EAC5D,CAACsJ,EAAUC,CAAW,EAAIpE,EAAc,SAAA,EAI9C,GAHAyD,EAAgB,IAAM,CACpBW,EAAY,IAAI,gBAAkB,CACnC,EAAE,CAAE,CAAA,EACD,CAACpJ,EAAQ,KAAM,CACjB,MAAMqJ,EAAOF,EACb,OAAOE,EAAOC,GAAqB,aACjBnJ,MAAIoJ,GAAuB,CAAE,MAAO1J,EAAM,cAAe,SAA0BM,EAAG,IAACoD,GAAW,KAAM,CAAE,MAAO1D,EAAM,cAAe,SAA0BM,EAAG,IAAC,MAAO,CAAE,SAAUN,EAAM,QAAQ,CAAE,CAAG,CAAA,EAAG,EAC7NwJ,CACD,EAAG,IACL,CACD,OAAuBlJ,EAAAA,IAAIqJ,GAAmB,CAAE,GAAG3J,EAAO,IAAKoC,CAAY,CAAE,CAC9E,CACH,EACAiH,GAAc,YAAcD,EAC5B,IAAIQ,EAAiB,GACjB,CAACF,GAAuBG,CAAuB,EAAIlG,GAAoByF,CAAY,EACnFU,GAAoB,oBACpBH,GAAoB9C,EAAgB,WACtC,CAAC7G,EAAOoC,IAAiB,CACvB,KAAM,CACJ,cAAAgC,EACA,SAAA2F,EAAW,eACX,iBAAAC,EACA,gBAAAC,EACA,qBAAAC,EAGA,KAAAC,EACA,WAAAC,EACA,MAAAC,EACA,YAAAC,EACA,aAAAC,EACA,kBAAAC,EACA,iBAAAC,EACA,OAAAC,EACA,iBAAAC,EACA,gBAAAC,EAEA,GAAGC,CACJ,EAAG7K,EACEG,EAAU6D,EAAiBoF,EAAchF,CAAa,EACtD,CAAC0G,EAASC,CAAU,EAAI5F,EAAc,SAAC,IAAI,EAC3C,CAAC6F,EAAUC,EAAW,EAAI9F,EAAc,SAAC,IAAI,EAC7C9C,EAAeC,EAAgBF,EAAe8I,GAASH,EAAWG,CAAI,CAAC,EACvE,CAACC,EAAcC,CAAe,EAAIjG,EAAc,SAAC,IAAI,EACrD,CAACkG,EAAkBC,CAAmB,EAAInG,EAAc,SAC5D,IACN,EACU6B,EAAWpE,GAAcwB,CAAa,EACtC,CAACmH,EAAcC,CAAe,EAAIrG,EAAc,SAAC,EAAK,EACtDsG,EAAyBnI,SAAa,EAAK,EACjDoI,EAAAA,UAAgB,IAAM,CACpB,GAAIZ,EAAS,OAAOa,GAAWb,CAAO,CAC5C,EAAO,CAACA,CAAO,CAAC,EACZc,KACA,MAAMC,EAAavF,EAAiB,YACjCwF,GAAe,CACd,KAAM,CAACC,EAAW,GAAGC,CAAS,EAAIhF,EAAU,EAAC,IAAKQ,GAASA,EAAK,IAAI,OAAO,EACrE,CAACyE,CAAQ,EAAID,EAAU,MAAM,EAAE,EAC/BE,EAA6B,SAAS,cAC5C,UAAWC,KAAaL,EAMtB,GALIK,IAAcD,IAClBC,GAAA,MAAAA,EAAW,eAAe,CAAE,MAAO,SAAW,GAC1CA,IAAcJ,GAAaf,IAAUA,EAAS,UAAY,GAC1DmB,IAAcF,GAAYjB,IAAUA,EAAS,UAAYA,EAAS,cACtEmB,GAAA,MAAAA,EAAW,QACP,SAAS,gBAAkBD,GAA4B,MAE9D,EACD,CAAClF,EAAUgE,CAAQ,CACzB,EACUoB,EAAoB9F,EAAiB,YACzC,IAAMuF,EAAW,CAACV,EAAcL,CAAO,CAAC,EACxC,CAACe,EAAYV,EAAcL,CAAO,CACxC,EACIY,EAAAA,UAAgB,IAAM,CAChBH,GACFa,GAER,EAAO,CAACb,EAAca,CAAiB,CAAC,EACpC,KAAM,CAAE,aAAA7H,EAAc,yBAAAsB,CAA0B,EAAG1F,EACnDuL,EAAAA,UAAgB,IAAM,CACpB,GAAIZ,EAAS,CACX,IAAIuB,EAAmB,CAAE,EAAG,EAAG,EAAG,CAAC,EACnC,MAAMC,EAAqB5F,GAAU,SACnC2F,EAAmB,CACjB,EAAG,KAAK,IAAI,KAAK,MAAM3F,EAAM,KAAK,KAAK6F,EAAA1G,EAAyB,UAAzB,YAAA0G,EAAkC,IAAK,EAAE,EAChF,EAAG,KAAK,IAAI,KAAK,MAAM7F,EAAM,KAAK,KAAK8F,EAAA3G,EAAyB,UAAzB,YAAA2G,EAAkC,IAAK,EAAE,CAC5F,CACA,EACcC,EAAmB/F,GAAU,CAC7B2F,EAAiB,GAAK,IAAMA,EAAiB,GAAK,GACpD3F,EAAM,eAAc,EAEfoE,EAAQ,SAASpE,EAAM,MAAM,GAChCnC,EAAa,EAAK,EAGtB,SAAS,oBAAoB,cAAe+H,CAAiB,EAC7DzG,EAAyB,QAAU,IAC7C,EACQ,OAAIA,EAAyB,UAAY,OACvC,SAAS,iBAAiB,cAAeyG,CAAiB,EAC1D,SAAS,iBAAiB,YAAaG,EAAiB,CAAE,QAAS,GAAM,KAAM,EAAI,CAAE,GAEhF,IAAM,CACX,SAAS,oBAAoB,cAAeH,CAAiB,EAC7D,SAAS,oBAAoB,YAAaG,EAAiB,CAAE,QAAS,EAAI,CAAE,CACtF,CACO,CACF,EAAE,CAAC3B,EAASvG,EAAcsB,CAAwB,CAAC,EACpD6F,EAAAA,UAAgB,IAAM,CACpB,MAAMgB,EAAQ,IAAMnI,EAAa,EAAK,EACtC,cAAO,iBAAiB,OAAQmI,CAAK,EACrC,OAAO,iBAAiB,SAAUA,CAAK,EAChC,IAAM,CACX,OAAO,oBAAoB,OAAQA,CAAK,EACxC,OAAO,oBAAoB,SAAUA,CAAK,CAClD,CACA,EAAO,CAACnI,CAAY,CAAC,EACjB,KAAM,CAAC2C,GAAWC,EAAqB,EAAIE,GAAoBC,GAAW,CACxE,MAAMC,EAAeP,EAAQ,EAAG,OAAQQ,GAAS,CAACA,EAAK,QAAQ,EACzDC,EAAcF,EAAa,KAAMC,GAASA,EAAK,IAAI,UAAY,SAAS,aAAa,EACrFE,EAAWC,GAAaJ,EAAcD,EAAQG,CAAW,EAC3DC,GACF,WAAW,IAAMA,EAAS,IAAI,QAAQ,MAAO,CAAA,CAErD,CAAK,EACKiF,GAAkBrG,EAAiB,YACvC,CAAC4E,EAAMhM,EAAO2F,IAAa,CACzB,MAAM+H,EAAmB,CAACnB,EAAuB,SAAW,CAAC5G,GACtC1E,EAAQ,QAAU,QAAUA,EAAQ,QAAUjB,GAC/C0N,KACpBxB,EAAgBF,CAAI,EAChB0B,IAAkBnB,EAAuB,QAAU,IAE1D,EACD,CAACtL,EAAQ,KAAK,CACpB,EACU0M,GAAkBvG,EAAAA,YAAkB,IAAMwE,GAAA,YAAAA,EAAS,QAAS,CAACA,CAAO,CAAC,EACrEgC,GAAsBxG,EAAiB,YAC3C,CAAC4E,EAAMhM,EAAO2F,IAAa,CACzB,MAAM+H,EAAmB,CAACnB,EAAuB,SAAW,CAAC5G,GACtC1E,EAAQ,QAAU,QAAUA,EAAQ,QAAUjB,GAC/C0N,IACpBtB,EAAoBJ,CAAI,CAE3B,EACD,CAAC/K,EAAQ,KAAK,CACpB,EACU4M,GAAiBhD,IAAa,SAAWiD,GAAuBC,GAChEC,GAAqBH,KAAmBC,GAAuB,CACnE,KAAA7C,EACA,WAAAC,EACA,MAAAC,EACA,YAAAC,EACA,aAAAC,EACA,kBAAAC,EACA,iBAAAC,EACA,OAAAC,EACA,iBAAAC,EACA,gBAAAC,CACD,EAAG,GACJ,OAAuBtK,EAAG,IACxBoJ,GACA,CACE,MAAOtF,EACP,QAAA0G,EACA,SAAAE,EACA,iBAAkBC,GAClB,gBAAA0B,GACA,aAAAxB,EACA,YAAa0B,GACb,oBAAAC,GACA,kBAAAV,EACA,iBAAAf,EACA,SAAAtB,EACA,aAAAwB,EACA,UAAArE,GACA,SAA0B5G,EAAAA,IAAI6M,GAAc,CAAE,GAAI5K,GAAM,eAAgB,GAAM,SAA0BjC,EAAG,IACzG8M,GACA,CACE,QAAS,GACT,QAASjN,EAAQ,KACjB,iBAAmBuG,GAAU,CAC3BA,EAAM,eAAc,CACrB,EACD,mBAAoBuB,EAAqB+B,EAAmBtD,GAAU,QACpE6F,EAAApM,EAAQ,UAAR,MAAAoM,EAAiB,MAAM,CAAE,cAAe,EAAM,GAC9C7F,EAAM,eAAc,CAClC,CAAa,EACD,SAA0BpG,EAAG,IAC3B+M,GACA,CACE,QAAS,GACT,4BAA6B,GAC7B,gBAAApD,EACA,qBAAAC,EACA,eAAiBxD,GAAUA,EAAM,eAAgB,EACjD,UAAW,IAAMvG,EAAQ,aAAa,EAAK,EAC3C,SAA0BG,EAAG,IAC3ByM,GACA,CACE,KAAM,UACN,GAAI5M,EAAQ,UACZ,aAAcA,EAAQ,KAAO,OAAS,SACtC,IAAKA,EAAQ,IACb,cAAgBuG,GAAUA,EAAM,eAAgB,EAChD,GAAGmE,EACH,GAAGqC,GACH,SAAU,IAAM1B,EAAgB,EAAI,EACpC,IAAKnJ,EACL,MAAO,CAEL,QAAS,OACT,cAAe,SAEf,QAAS,OACT,GAAGwI,EAAa,KACjB,EACD,UAAW5C,EAAqB4C,EAAa,UAAYnE,GAAU,CACjE,MAAM4G,EAAgB5G,EAAM,SAAWA,EAAM,QAAUA,EAAM,QAG7D,GAFIA,EAAM,MAAQ,OAAOA,EAAM,eAAc,EACzC,CAAC4G,GAAiB5G,EAAM,IAAI,SAAW,GAAGS,GAAsBT,EAAM,GAAG,EACzE,CAAC,UAAW,YAAa,OAAQ,KAAK,EAAE,SAASA,EAAM,GAAG,EAAG,CAE/D,IAAI6G,EADUvG,EAAQ,EAAG,OAAQQ,GAAS,CAACA,EAAK,QAAQ,EAC7B,IAAKA,GAASA,EAAK,IAAI,OAAO,EAIzD,GAHI,CAAC,UAAW,KAAK,EAAE,SAASd,EAAM,GAAG,IACvC6G,EAAiBA,EAAe,MAAO,EAAC,QAAO,GAE7C,CAAC,UAAW,WAAW,EAAE,SAAS7G,EAAM,GAAG,EAAG,CAChD,MAAM8G,EAAiB9G,EAAM,OACvB+G,EAAeF,EAAe,QAAQC,CAAc,EAC1DD,EAAiBA,EAAe,MAAME,EAAe,CAAC,CACvD,CACD,WAAW,IAAM5B,EAAW0B,CAAc,CAAC,EAC3C7G,EAAM,eAAc,CACrB,CACvB,CAAqB,CACF,CACF,CACF,CACF,CACF,CACX,EAAW,CACJ,CACP,CACG,CACH,EACAiD,GAAkB,YAAcG,GAChC,IAAI4D,GAA6B,4BAC7BT,GAA4BpG,EAAgB,WAAC,CAAC7G,EAAOoC,IAAiB,CACxE,KAAM,CAAE,cAAAgC,EAAe,SAAAuJ,EAAU,GAAGC,CAAW,EAAK5N,EAC9CG,EAAU6D,EAAiBoF,EAAchF,CAAa,EACtDyJ,EAAiBhE,EAAwBT,EAAchF,CAAa,EACpE,CAAC0J,EAAgBC,CAAiB,EAAI5I,EAAc,SAAC,IAAI,EACzD,CAAC2F,EAASC,CAAU,EAAI5F,EAAc,SAAC,IAAI,EAC3C9C,EAAeC,EAAgBF,EAAe8I,GAASH,EAAWG,CAAI,CAAC,EACvElE,EAAWpE,GAAcwB,CAAa,EACtC4J,EAA0B1K,SAAa,EAAK,EAC5C2K,EAAsB3K,SAAa,EAAI,EACvC,CAAE,SAAA0H,EAAU,aAAAG,EAAc,iBAAAE,EAAkB,kBAAAe,CAAiB,EAAKyB,EAClE9D,EAAWzD,EAAAA,YAAkB,IAAM,CACvC,GAAInG,EAAQ,SAAWA,EAAQ,WAAa2N,GAAkBhD,GAAWE,GAAYG,GAAgBE,EAAkB,CACrH,MAAM6C,EAAc/N,EAAQ,QAAQ,sBAAqB,EACnDgO,EAAcrD,EAAQ,wBACtBsD,EAAgBjO,EAAQ,UAAU,sBAAqB,EACvDkO,EAAehD,EAAiB,wBACtC,GAAIlL,EAAQ,MAAQ,MAAO,CACzB,MAAMmO,EAAiBD,EAAa,KAAOF,EAAY,KACjDI,EAAOH,EAAc,KAAOE,EAC5BE,EAAYN,EAAY,KAAOK,EAC/BE,EAAkBP,EAAY,MAAQM,EACtCE,GAAe,KAAK,IAAID,EAAiBN,EAAY,KAAK,EAC1DQ,GAAY,OAAO,WAAa/E,EAChCgF,GAAc3P,GAAMsP,EAAM,CAC9B3E,EAMA,KAAK,IAAIA,EAAgB+E,GAAYD,EAAY,CAC3D,CAAS,EACDZ,EAAe,MAAM,SAAWW,EAAkB,KAClDX,EAAe,MAAM,KAAOc,GAAc,IAClD,KAAa,CACL,MAAMN,EAAiBH,EAAY,MAAQE,EAAa,MAClDQ,EAAQ,OAAO,WAAaT,EAAc,MAAQE,EAClDQ,EAAa,OAAO,WAAaZ,EAAY,MAAQW,EACrDJ,EAAkBP,EAAY,MAAQY,EACtCJ,GAAe,KAAK,IAAID,EAAiBN,EAAY,KAAK,EAC1DY,GAAW,OAAO,WAAanF,EAC/BoF,GAAe/P,GAAM4P,EAAO,CAChCjF,EACA,KAAK,IAAIA,EAAgBmF,GAAWL,EAAY,CAC1D,CAAS,EACDZ,EAAe,MAAM,SAAWW,EAAkB,KAClDX,EAAe,MAAM,MAAQkB,GAAe,IAC7C,CACD,MAAMC,EAAQjI,IACRkI,EAAkB,OAAO,YAActF,EAAiB,EACxDuF,EAAcnE,EAAS,aACvBoE,EAAgB,OAAO,iBAAiBtE,CAAO,EAC/CuE,EAAwB,SAASD,EAAc,eAAgB,EAAE,EACjEE,EAAoB,SAASF,EAAc,WAAY,EAAE,EACzDG,EAA2B,SAASH,EAAc,kBAAmB,EAAE,EACvEI,EAAuB,SAASJ,EAAc,cAAe,EAAE,EAC/DK,EAAoBJ,EAAwBC,EAAoBH,EAAcK,EAAuBD,EACrGG,GAAmB,KAAK,IAAIvE,EAAa,aAAe,EAAGsE,CAAiB,EAC5EE,GAAiB,OAAO,iBAAiB3E,CAAQ,EACjD4E,GAAqB,SAASD,GAAe,WAAY,EAAE,EAC3DE,GAAwB,SAASF,GAAe,cAAe,EAAE,EACjEG,GAAyB5B,EAAY,IAAMA,EAAY,OAAS,EAAItE,EACpEmG,GAA4Bb,EAAkBY,GAC9CE,GAAyB7E,EAAa,aAAe,EACrD8E,EAAmB9E,EAAa,UAAY6E,GAC5CE,EAAyBb,EAAwBC,EAAoBW,EACrEE,EAA4BV,EAAoBS,EAEtD,GADoCA,GAA0BJ,GAC7B,CAC/B,MAAMM,EAAanB,EAAM,OAAS,GAAK9D,IAAiB8D,EAAMA,EAAM,OAAS,CAAC,EAAE,IAAI,QACpFnB,EAAe,MAAM,OAAS,MAC9B,MAAMuC,EAAuBvF,EAAQ,aAAeE,EAAS,UAAYA,EAAS,aAC5EsF,EAAmC,KAAK,IAC5CP,GACAC,IACCI,EAAaP,GAAwB,GAAKQ,EAAuBd,CAC5E,EACcgB,EAASL,EAAyBI,EACxCxC,EAAe,MAAM,OAASyC,EAAS,IAC/C,KAAa,CACL,MAAMC,EAAcvB,EAAM,OAAS,GAAK9D,IAAiB8D,EAAM,CAAC,EAAE,IAAI,QACtEnB,EAAe,MAAM,IAAM,MAM3B,MAAMyC,EALgC,KAAK,IACzCT,GACAT,EAAwBrE,EAAS,WAChCwF,EAAcZ,GAAqB,GAAKI,EACnD,EACuDG,EAC/CrC,EAAe,MAAM,OAASyC,EAAS,KACvCvF,EAAS,UAAYkF,EAAyBJ,GAAyB9E,EAAS,SACjF,CACD8C,EAAe,MAAM,OAAS,GAAGlE,CAAc,OAC/CkE,EAAe,MAAM,UAAY4B,GAAmB,KACpD5B,EAAe,MAAM,UAAYoB,EAAkB,KACnDvB,GAAA,MAAAA,IACA,sBAAsB,IAAMK,EAAwB,QAAU,EAAI,CACnE,CACL,EAAK,CACDhH,EACA7G,EAAQ,QACRA,EAAQ,UACR2N,EACAhD,EACAE,EACAG,EACAE,EACAlL,EAAQ,IACRwN,CACJ,CAAG,EACD/E,EAAgB,IAAMmB,EAAQ,EAAI,CAACA,CAAQ,CAAC,EAC5C,KAAM,CAAC0G,EAAeC,CAAgB,EAAIvL,EAAc,SAAA,EACxDyD,EAAgB,IAAM,CAChBkC,GAAS4F,EAAiB,OAAO,iBAAiB5F,CAAO,EAAE,MAAM,CACzE,EAAK,CAACA,CAAO,CAAC,EACZ,MAAM6F,GAA2BrK,EAAiB,YAC/C4E,GAAS,CACJA,GAAQ+C,EAAoB,UAAY,KAC1ClE,IACAqC,GAAA,MAAAA,IACA6B,EAAoB,QAAU,GAEjC,EACD,CAAClE,EAAUqC,CAAiB,CAChC,EACE,OAAuB9L,EAAG,IACxBsQ,GACA,CACE,MAAOxM,EACP,eAAA0J,EACA,wBAAAE,EACA,qBAAsB2C,GACtB,SAA0BrQ,EAAG,IAC3B,MACA,CACE,IAAKyN,EACL,MAAO,CACL,QAAS,OACT,cAAe,SACf,SAAU,QACV,OAAQ0C,CACT,EACD,SAA0BnQ,EAAG,IAC3ByH,EAAU,IACV,CACE,GAAG6F,EACH,IAAKvL,EACL,MAAO,CAGL,UAAW,aAEX,UAAW,OACX,GAAGuL,EAAY,KAChB,CACF,CACF,CACF,CACF,CACF,CACL,CACA,CAAC,EACDX,GAA0B,YAAcS,GACxC,IAAImD,GAAuB,uBACvB7D,GAAuBnG,EAAgB,WAAC,CAAC7G,EAAOoC,IAAiB,CACnE,KAAM,CACJ,cAAAgC,EACA,MAAAiG,EAAQ,QACR,iBAAAI,EAAmBb,EACnB,GAAGgE,CACJ,EAAG5N,EACEgF,EAAclB,GAAeM,CAAa,EAChD,OAAuB9D,EAAG,IACxBwQ,GACA,CACE,GAAG9L,EACH,GAAG4I,EACH,IAAKxL,EACL,MAAAiI,EACA,iBAAAI,EACA,MAAO,CAEL,UAAW,aACX,GAAGmD,EAAY,MAGb,0CAA2C,uCAC3C,yCAA0C,sCAC1C,0CAA2C,uCAC3C,+BAAgC,mCAChC,gCAAiC,mCAEpC,CACF,CACL,CACA,CAAC,EACDZ,GAAqB,YAAc6D,GACnC,GAAI,CAACD,GAAwBG,EAAwB,EAAIpN,GAAoByF,EAAc,CAAE,CAAA,EACzF4H,GAAgB,iBAChBC,GAAiBpK,EAAgB,WACnC,CAAC7G,EAAOoC,IAAiB,CACvB,KAAM,CAAE,cAAAgC,EAAe,MAAA8M,EAAO,GAAGC,CAAa,EAAKnR,EAC7C6N,EAAiBhE,EAAwBmH,GAAe5M,CAAa,EACrEgN,EAAkBL,GAAyBC,GAAe5M,CAAa,EACvE/B,EAAeC,EAAgBF,EAAcyL,EAAe,gBAAgB,EAC5EwD,EAAmB/N,SAAa,CAAC,EACvC,OAAuB8C,EAAI,KAACyC,WAAU,CAAE,SAAU,CAChCvI,EAAG,IACjB,QACA,CACE,wBAAyB,CACvB,OAAQ,2KACT,EACD,MAAA4Q,CACD,CACF,EACe5Q,EAAG,IAACoD,GAAW,KAAM,CAAE,MAAOU,EAAe,SAA0B9D,EAAG,IACxFyH,EAAU,IACV,CACE,6BAA8B,GAC9B,KAAM,eACN,GAAGoJ,EACH,IAAK9O,EACL,MAAO,CAIL,SAAU,WACV,KAAM,EAKN,SAAU,cACV,GAAG8O,EAAc,KAClB,EACD,SAAUlJ,EAAqBkJ,EAAc,SAAWzK,GAAU,CAChE,MAAMsE,EAAWtE,EAAM,cACjB,CAAE,eAAAoH,EAAgB,wBAAAE,CAAyB,EAAGoD,EACpD,GAAIpD,GAAA,MAAAA,EAAyB,SAAWF,EAAgB,CACtD,MAAMwD,EAAa,KAAK,IAAID,EAAiB,QAAUrG,EAAS,SAAS,EACzE,GAAIsG,EAAa,EAAG,CAClB,MAAMpC,EAAkB,OAAO,YAActF,EAAiB,EACxD2H,EAAe,WAAWzD,EAAe,MAAM,SAAS,EACxD0D,EAAY,WAAW1D,EAAe,MAAM,MAAM,EAClD2D,EAAa,KAAK,IAAIF,EAAcC,CAAS,EACnD,GAAIC,EAAavC,EAAiB,CAChC,MAAMwC,EAAaD,EAAaH,EAC1BK,EAAoB,KAAK,IAAIzC,EAAiBwC,CAAU,EACxDE,EAAaF,EAAaC,EAChC7D,EAAe,MAAM,OAAS6D,EAAoB,KAC9C7D,EAAe,MAAM,SAAW,QAClC9C,EAAS,UAAY4G,EAAa,EAAIA,EAAa,EACnD9D,EAAe,MAAM,eAAiB,WAEzC,CACF,CACF,CACDuD,EAAiB,QAAUrG,EAAS,SAChD,CAAW,CACF,CACT,EAAS,CACJ,CAAA,CAAE,CACJ,CACH,EACAiG,GAAe,YAAcD,GAC7B,IAAIa,GAAa,cACb,CAACC,GAA4BC,EAAqB,EAAIpO,GAAoBkO,EAAU,EACpFG,GAAcnL,EAAgB,WAChC,CAAC7G,EAAOoC,IAAiB,CACvB,KAAM,CAAE,cAAAgC,EAAe,GAAG6N,CAAU,EAAKjS,EACnCkS,EAAU7L,KAChB,OAAuB/F,EAAG,IAACwR,GAA4B,CAAE,MAAO1N,EAAe,GAAI8N,EAAS,SAA0B5R,EAAAA,IAAIyH,EAAU,IAAK,CAAE,KAAM,QAAS,kBAAmBmK,EAAS,GAAGD,EAAY,IAAK7P,EAAc,CAAC,CAAE,CAC5N,CACH,EACA4P,GAAY,YAAcH,GAC1B,IAAIM,GAAa,cACbC,GAAcvL,EAAgB,WAChC,CAAC7G,EAAOoC,IAAiB,CACvB,KAAM,CAAE,cAAAgC,EAAe,GAAGiO,CAAU,EAAKrS,EACnCsS,EAAeP,GAAsBI,GAAY/N,CAAa,EACpE,OAAuB9D,MAAIyH,EAAU,IAAK,CAAE,GAAIuK,EAAa,GAAI,GAAGD,EAAY,IAAKjQ,CAAc,CAAA,CACpG,CACH,EACAgQ,GAAY,YAAcD,GAC1B,IAAII,GAAY,aACZ,CAACC,GAA2BC,EAAoB,EAAI9O,GAAoB4O,EAAS,EACjFG,GAAa7L,EAAgB,WAC/B,CAAC7G,EAAOoC,IAAiB,CACvB,KAAM,CACJ,cAAAgC,EACA,MAAAlF,EACA,SAAA2F,EAAW,GACX,UAAW8N,EACX,GAAGC,CACJ,EAAG5S,EACEG,EAAU6D,EAAiBuO,GAAWnO,CAAa,EACnDyJ,EAAiBhE,EAAwB0I,GAAWnO,CAAa,EACjEyO,EAAa1S,EAAQ,QAAUjB,EAC/B,CAAC4T,EAAWC,CAAY,EAAI5N,EAAAA,SAAewN,GAAiB,EAAE,EAC9D,CAACK,EAAWC,CAAY,EAAI9N,EAAc,SAAC,EAAK,EAChD9C,EAAeC,EACnBF,EACC8I,GAAS,OAAA,OAAAqB,EAAAsB,EAAe,kBAAf,YAAAtB,EAAA,KAAAsB,EAAiC3C,EAAMhM,EAAO2F,GAC9D,EACUqO,EAAS7M,KACTY,EAAiB3D,SAAa,OAAO,EACrC6P,EAAe,IAAM,CACpBtO,IACH1E,EAAQ,cAAcjB,CAAK,EAC3BiB,EAAQ,aAAa,EAAK,EAElC,EACI,GAAIjB,IAAU,GACZ,MAAM,IAAI,MACR,uLACR,EAEI,OAAuBoB,EAAG,IACxBkS,GACA,CACE,MAAOpO,EACP,MAAAlF,EACA,SAAA2F,EACA,OAAAqO,EACA,WAAAL,EACA,iBAAkBvM,EAAAA,YAAmB4E,GAAS,CAC5C6H,EAAcK,GAAkBA,KAAkBlI,GAAA,YAAAA,EAAM,cAAe,IAAI,KAAI,CAAE,CAClF,EAAE,EAAE,EACL,SAA0B5K,EAAG,IAC3BoD,GAAW,SACX,CACE,MAAOU,EACP,MAAAlF,EACA,SAAA2F,EACA,UAAAiO,EACA,SAA0BxS,EAAG,IAC3ByH,EAAU,IACV,CACE,KAAM,SACN,kBAAmBmL,EACnB,mBAAoBF,EAAY,GAAK,OACrC,gBAAiBH,GAAcG,EAC/B,aAAcH,EAAa,UAAY,YACvC,gBAAiBhO,GAAY,OAC7B,gBAAiBA,EAAW,GAAK,OACjC,SAAUA,EAAW,OAAS,GAC9B,GAAG+N,EACH,IAAKvQ,EACL,QAAS4F,EAAqB2K,EAAU,QAAS,IAAMK,EAAa,EAAI,CAAC,EACzE,OAAQhL,EAAqB2K,EAAU,OAAQ,IAAMK,EAAa,EAAK,CAAC,EACxE,QAAShL,EAAqB2K,EAAU,QAAS,IAAM,CACjD3L,EAAe,UAAY,SAASkM,EAAY,CACtE,CAAiB,EACD,YAAalL,EAAqB2K,EAAU,YAAa,IAAM,CACzD3L,EAAe,UAAY,SAASkM,EAAY,CACtE,CAAiB,EACD,cAAelL,EAAqB2K,EAAU,cAAgBlM,GAAU,CACtEO,EAAe,QAAUP,EAAM,WACjD,CAAiB,EACD,cAAeuB,EAAqB2K,EAAU,cAAgBlM,GAAU,OACtEO,EAAe,QAAUP,EAAM,YAC3B7B,GACF0H,EAAAsB,EAAe,cAAf,MAAAtB,EAAA,KAAAsB,GACS5G,EAAe,UAAY,SACpCP,EAAM,cAAc,MAAM,CAAE,cAAe,EAAM,CAAA,CAErE,CAAiB,EACD,eAAgBuB,EAAqB2K,EAAU,eAAiBlM,GAAU,OACpEA,EAAM,gBAAkB,SAAS,iBACnC6F,EAAAsB,EAAe,cAAf,MAAAtB,EAAA,KAAAsB,GAEpB,CAAiB,EACD,UAAW5F,EAAqB2K,EAAU,UAAYlM,GAAU,SACxC6F,EAAAsB,EAAe,YAAf,YAAAtB,EAA0B,WAAY,IACvC7F,EAAM,MAAQ,MAC/BlD,GAAe,SAASkD,EAAM,GAAG,GAAGyM,EAAY,EAChDzM,EAAM,MAAQ,KAAKA,EAAM,eAAc,EAC7D,CAAiB,CACF,CACF,CACF,CACF,CACF,CACP,CACG,CACH,EACAgM,GAAW,YAAcH,GACzB,IAAIc,GAAiB,iBACjBC,GAAiBzM,EAAgB,WACnC,CAAC7G,EAAOoC,IAAiB,CACvB,KAAM,CAAE,cAAAgC,EAAe,UAAAkE,EAAW,MAAAC,EAAO,GAAGgL,CAAe,EAAGvT,EACxDG,EAAU6D,EAAiBqP,GAAgBjP,CAAa,EACxDyJ,EAAiBhE,EAAwBwJ,GAAgBjP,CAAa,EACtEoP,EAAcf,GAAqBY,GAAgBjP,CAAa,EAChEqP,EAAuBvP,GAA8BmP,GAAgBjP,CAAa,EAClF,CAACsP,EAAcC,CAAe,EAAIxO,EAAc,SAAC,IAAI,EACrD9C,EAAeC,EACnBF,EACC8I,GAASyI,EAAgBzI,CAAI,EAC9BsI,EAAY,iBACXtI,GAAI,OAAK,OAAAqB,EAAAsB,EAAe,sBAAf,YAAAtB,EAAA,KAAAsB,EAAqC3C,EAAMsI,EAAY,MAAOA,EAAY,UAC1F,EACUI,EAAcF,GAAA,YAAAA,EAAc,YAC5BG,EAAexT,EAAa,QAChC,IAAsBC,EAAG,IAAC,SAAU,CAAE,MAAOkT,EAAY,MAAO,SAAUA,EAAY,SAAU,SAAUI,CAAW,EAAIJ,EAAY,KAAK,EAC1I,CAACA,EAAY,SAAUA,EAAY,MAAOI,CAAW,CAC3D,EACU,CAAE,kBAAAE,EAAmB,qBAAAC,CAAsB,EAAGN,EACpD7K,OAAAA,EAAgB,KACdkL,EAAkBD,CAAY,EACvB,IAAME,EAAqBF,CAAY,GAC7C,CAACC,EAAmBC,EAAsBF,CAAY,CAAC,EACnCzN,EAAI,KAACyC,WAAU,CAAE,SAAU,CAChCvI,EAAAA,IAAIyH,EAAU,KAAM,CAAE,GAAIyL,EAAY,OAAQ,GAAGD,EAAe,IAAKlR,EAAc,EACnGmR,EAAY,YAAcrT,EAAQ,WAAa,CAACA,EAAQ,qBAAuBsJ,GAAqB,aAAC8J,EAAc,SAAUpT,EAAQ,SAAS,EAAI,IACnJ,CAAA,CAAE,CACJ,CACH,EACAmT,GAAe,YAAcD,GAC7B,IAAIW,GAAsB,sBACtBC,GAAsBpN,EAAgB,WACxC,CAAC7G,EAAOoC,IAAiB,CACvB,KAAM,CAAE,cAAAgC,EAAe,GAAG8P,CAAkB,EAAKlU,EAEjD,OADoByS,GAAqBuB,GAAqB5P,CAAa,EACxD,WAA6B9D,EAAG,IAACyH,EAAU,KAAM,CAAE,cAAe,GAAM,GAAGmM,EAAoB,IAAK9R,CAAc,CAAA,EAAI,IAC1I,CACH,EACA6R,GAAoB,YAAcD,GAClC,IAAIG,GAAwB,uBACxBC,GAAuBvN,EAAgB,WAAC,CAAC7G,EAAOoC,IAAiB,CACnE,MAAMyL,EAAiBhE,EAAwBsK,GAAuBnU,EAAM,aAAa,EACnFoR,EAAkBL,GAAyBoD,GAAuBnU,EAAM,aAAa,EACrF,CAACqU,EAAaC,CAAc,EAAInP,EAAc,SAAC,EAAK,EACpD9C,EAAeC,EAAgBF,EAAcgP,EAAgB,oBAAoB,EACvFxI,OAAAA,EAAgB,IAAM,CACpB,GAAIiF,EAAe,UAAYA,EAAe,aAAc,CAC1D,IAAI0G,EAAgB,UAAW,CAC7B,MAAMC,EAAexJ,EAAS,UAAY,EAC1CsJ,EAAeE,CAAY,CACnC,EAEM,MAAMxJ,EAAW6C,EAAe,SAChC,OAAA0G,IACAvJ,EAAS,iBAAiB,SAAUuJ,CAAa,EAC1C,IAAMvJ,EAAS,oBAAoB,SAAUuJ,CAAa,CAClE,CACF,EAAE,CAAC1G,EAAe,SAAUA,EAAe,YAAY,CAAC,EAClDwG,EAA8B/T,EAAG,IACtCmU,GACA,CACE,GAAGzU,EACH,IAAKqC,EACL,aAAc,IAAM,CAClB,KAAM,CAAE,SAAA2I,EAAU,aAAAG,CAAc,EAAG0C,EAC/B7C,GAAYG,IACdH,EAAS,UAAYA,EAAS,UAAYG,EAAa,aAE1D,CACF,CACF,EAAG,IACN,CAAC,EACDiJ,GAAqB,YAAcD,GACnC,IAAIO,GAA0B,yBAC1BC,GAAyB9N,EAAgB,WAAC,CAAC7G,EAAOoC,IAAiB,CACrE,MAAMyL,EAAiBhE,EAAwB6K,GAAyB1U,EAAM,aAAa,EACrFoR,EAAkBL,GAAyB2D,GAAyB1U,EAAM,aAAa,EACvF,CAAC4U,EAAeC,CAAgB,EAAI1P,EAAc,SAAC,EAAK,EACxD9C,EAAeC,EAAgBF,EAAcgP,EAAgB,oBAAoB,EACvFxI,OAAAA,EAAgB,IAAM,CACpB,GAAIiF,EAAe,UAAYA,EAAe,aAAc,CAC1D,IAAI0G,EAAgB,UAAW,CAC7B,MAAMO,EAAY9J,EAAS,aAAeA,EAAS,aAC7C+J,EAAiB,KAAK,KAAK/J,EAAS,SAAS,EAAI8J,EACvDD,EAAiBE,CAAc,CACvC,EAEM,MAAM/J,EAAW6C,EAAe,SAChC,OAAA0G,IACAvJ,EAAS,iBAAiB,SAAUuJ,CAAa,EAC1C,IAAMvJ,EAAS,oBAAoB,SAAUuJ,CAAa,CAClE,CACF,EAAE,CAAC1G,EAAe,SAAUA,EAAe,YAAY,CAAC,EAClD+G,EAAgCtU,EAAG,IACxCmU,GACA,CACE,GAAGzU,EACH,IAAKqC,EACL,aAAc,IAAM,CAClB,KAAM,CAAE,SAAA2I,EAAU,aAAAG,CAAc,EAAG0C,EAC/B7C,GAAYG,IACdH,EAAS,UAAYA,EAAS,UAAYG,EAAa,aAE1D,CACF,CACF,EAAG,IACN,CAAC,EACDwJ,GAAuB,YAAcD,GACrC,IAAID,GAAyB5N,EAAgB,WAAC,CAAC7G,EAAOoC,IAAiB,CACrE,KAAM,CAAE,cAAAgC,EAAe,aAAA4Q,EAAc,GAAGC,CAAoB,EAAKjV,EAC3D6N,EAAiBhE,EAAwB,qBAAsBzF,CAAa,EAC5E8Q,EAAqB5R,SAAa,IAAI,EACtC0D,EAAWpE,GAAcwB,CAAa,EACtC+Q,EAAuB7O,EAAAA,YAAkB,IAAM,CAC/C4O,EAAmB,UAAY,OACjC,OAAO,cAAcA,EAAmB,OAAO,EAC/CA,EAAmB,QAAU,KAEhC,EAAE,CAAE,CAAA,EACLxJ,OAAAA,EAAAA,UAAgB,IACP,IAAMyJ,EAAoB,EAChC,CAACA,CAAoB,CAAC,EACzBvM,EAAgB,IAAM,OACpB,MAAMwM,EAAapO,IAAW,KAAMQ,GAASA,EAAK,IAAI,UAAY,SAAS,aAAa,GACxF+E,EAAA6I,GAAA,YAAAA,EAAY,IAAI,UAAhB,MAAA7I,EAAyB,eAAe,CAAE,MAAO,SAAS,EAC9D,EAAK,CAACvF,CAAQ,CAAC,EACU1G,EAAG,IACxByH,EAAU,IACV,CACE,cAAe,GACf,GAAGkN,EACH,IAAK7S,EACL,MAAO,CAAE,WAAY,EAAG,GAAG6S,EAAqB,KAAO,EACvD,cAAehN,EAAqBgN,EAAqB,cAAe,IAAM,CACxEC,EAAmB,UAAY,OACjCA,EAAmB,QAAU,OAAO,YAAYF,EAAc,EAAE,EAE1E,CAAO,EACD,cAAe/M,EAAqBgN,EAAqB,cAAe,IAAM,QAC5E1I,EAAAsB,EAAe,cAAf,MAAAtB,EAAA,KAAAsB,GACIqH,EAAmB,UAAY,OACjCA,EAAmB,QAAU,OAAO,YAAYF,EAAc,EAAE,EAE1E,CAAO,EACD,eAAgB/M,EAAqBgN,EAAqB,eAAgB,IAAM,CAC9EE,GACR,CAAO,CACF,CACL,CACA,CAAC,EACGE,GAAiB,kBACjBC,GAAkBzO,EAAgB,WACpC,CAAC7G,EAAOoC,IAAiB,CACvB,KAAM,CAAE,cAAAgC,EAAe,GAAGmR,CAAc,EAAKvV,EAC7C,OAAuBM,MAAIyH,EAAU,IAAK,CAAE,cAAe,GAAM,GAAGwN,EAAgB,IAAKnT,CAAY,CAAE,CACxG,CACH,EACAkT,GAAgB,YAAcD,GAC9B,IAAIG,GAAa,cACbC,GAAc5O,EAAgB,WAChC,CAAC7G,EAAOoC,IAAiB,CACvB,KAAM,CAAE,cAAAgC,EAAe,GAAGsR,CAAU,EAAK1V,EACnCgF,EAAclB,GAAeM,CAAa,EAC1CjE,EAAU6D,EAAiBwR,GAAYpR,CAAa,EACpDyJ,EAAiBhE,EAAwB2L,GAAYpR,CAAa,EACxE,OAAOjE,EAAQ,MAAQ0N,EAAe,WAAa,SAA2BvN,EAAAA,IAAIqV,GAAuB,CAAE,GAAG3Q,EAAa,GAAG0Q,EAAY,IAAKtT,CAAY,CAAE,EAAI,IAClK,CACH,EACAqT,GAAY,YAAcD,GAC1B,SAASxN,GAAsB9I,EAAO,CACpC,OAAOA,IAAU,IAAMA,IAAU,MACnC,CACA,IAAIuH,GAAeI,EAAgB,WACjC,CAAC7G,EAAOoC,IAAiB,CACvB,KAAM,CAAE,MAAAlD,EAAO,GAAG0W,CAAW,EAAK5V,EAC5B+B,EAAMuB,SAAa,IAAI,EACvBjB,EAAeC,EAAgBF,EAAcL,CAAG,EAChD8T,EAAYxS,GAAYnE,CAAK,EACnCwM,OAAAA,EAAAA,UAAgB,IAAM,CACpB,MAAMoK,EAAS/T,EAAI,QACbgU,EAAc,OAAO,kBAAkB,UAKvCnQ,EAJa,OAAO,yBACxBmQ,EACA,OACR,EACkC,IAC5B,GAAIF,IAAc3W,GAAS0G,EAAU,CACnC,MAAMc,EAAQ,IAAI,MAAM,SAAU,CAAE,QAAS,EAAI,CAAE,EACnDd,EAAS,KAAKkQ,EAAQ5W,CAAK,EAC3B4W,EAAO,cAAcpP,CAAK,CAC3B,CACP,EAAO,CAACmP,EAAW3W,CAAK,CAAC,EACEoB,EAAAA,IAAI0V,GAAgB,CAAE,QAAS,GAAM,SAA0B1V,MAAI,SAAU,CAAE,GAAGsV,EAAa,IAAKvT,EAAc,aAAcnD,CAAK,CAAE,CAAC,CAAE,CAClK,CACH,EACAuH,GAAa,YAAc,eAC3B,SAASY,GAAmB4O,EAAgB,CAC1C,MAAMC,EAAqBC,GAAeF,CAAc,EAClD/O,EAAY5D,SAAa,EAAE,EAC3B8S,EAAW9S,SAAa,CAAC,EACzB6D,EAAwBb,EAAiB,YAC5C+P,GAAQ,CACP,MAAM/O,EAASJ,EAAU,QAAUmP,EACnCH,EAAmB5O,CAAM,EACxB,SAASgP,EAAapX,EAAO,CAC5BgI,EAAU,QAAUhI,EACpB,OAAO,aAAakX,EAAS,OAAO,EAChClX,IAAU,KAAIkX,EAAS,QAAU,OAAO,WAAW,IAAME,EAAa,EAAE,EAAG,GAAG,EACnF,EAAEhP,CAAM,CACV,EACD,CAAC4O,CAAkB,CACvB,EACQ9O,EAAiBd,EAAAA,YAAkB,IAAM,CAC7CY,EAAU,QAAU,GACpB,OAAO,aAAakP,EAAS,OAAO,CACrC,EAAE,CAAE,CAAA,EACL1K,OAAAA,EAAAA,UAAgB,IACP,IAAM,OAAO,aAAa0K,EAAS,OAAO,EAChD,CAAE,CAAA,EACE,CAAClP,EAAWC,EAAuBC,CAAc,CAC1D,CACA,SAASO,GAAasH,EAAO3H,EAAQG,EAAa,CAEhD,MAAM8O,EADajP,EAAO,OAAS,GAAK,MAAM,KAAKA,CAAM,EAAE,MAAOkP,GAASA,IAASlP,EAAO,CAAC,CAAC,EACvDA,EAAO,CAAC,EAAIA,EAC5CmP,EAAmBhP,EAAcwH,EAAM,QAAQxH,CAAW,EAAI,GACpE,IAAIiP,EAAeC,GAAU1H,EAAO,KAAK,IAAIwH,EAAkB,CAAC,CAAC,EACtCF,EAAiB,SAAW,IAC/BG,EAAeA,EAAa,OAAQE,GAAMA,IAAMnP,CAAW,GACnF,MAAMC,EAAWgP,EAAa,KAC3BlP,GAASA,EAAK,UAAU,YAAa,EAAC,WAAW+O,EAAiB,aAAa,CACpF,EACE,OAAO7O,IAAaD,EAAcC,EAAW,MAC/C,CACA,SAASiP,GAAUE,EAAOC,EAAY,CACpC,OAAOD,EAAM,IAAI,CAACE,EAAGjX,IAAU+W,GAAOC,EAAahX,GAAS+W,EAAM,MAAM,CAAC,CAC3E,CACG,IAACG,GAAQ7S,GACR8S,GAAUrQ,GACVsQ,GAAQ7O,GACR8O,GAAOpO,GACPqO,GAASlO,GACTmO,GAAWhO,GACXiO,GAAWrG,GACXsG,GAAQvF,GACRwF,GAAQpF,GACRqF,GAAO/E,GACPgF,GAAWpE,GACXqE,GAAgB1D,GAChB2D,GAAiBxD,GACjByD,GAAmBlD","x_google_ignoreList":[0,1,2,3,4,5]}
1
+ {"version":3,"file":"index-t6AA12_S.js","sources":["../../../../../node_modules/@radix-ui/number/dist/index.mjs","../../../../../node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-context/dist/index.mjs","../../../../../node_modules/@radix-ui/react-collection/dist/index.mjs","../../../../../node_modules/@radix-ui/react-direction/dist/index.mjs","../../../../../node_modules/@radix-ui/react-use-previous/dist/index.mjs","../../../../../node_modules/@radix-ui/react-select/dist/index.mjs"],"sourcesContent":["// packages/core/number/src/number.ts\nfunction clamp(value, [min, max]) {\n return Math.min(max, Math.max(min, value));\n}\nexport {\n clamp\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/context/src/createContext.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createContext2(rootComponentName, defaultContext) {\n const Context = React.createContext(defaultContext);\n function Provider(props) {\n const { children, ...context } = props;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n }\n function useContext2(consumerName) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n Provider.displayName = rootComponentName + \"Provider\";\n return [Provider, useContext2];\n}\nfunction createContextScope(scopeName, createContextScopeDeps = []) {\n let defaultContexts = [];\n function createContext3(rootComponentName, defaultContext) {\n const BaseContext = React.createContext(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n function Provider(props) {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName][index] || BaseContext;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n }\n function useContext2(consumerName, scope) {\n const Context = scope?.[scopeName][index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n Provider.displayName = rootComponentName + \"Provider\";\n return [Provider, useContext2];\n }\n const createScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n createScope.scopeName = scopeName;\n return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];\n}\nfunction composeContextScopes(...scopes) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n const createScope = () => {\n const scopeHooks = scopes.map((createScope2) => ({\n useScope: createScope2(),\n scopeName: createScope2.scopeName\n }));\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes2, ...currentScope };\n }, {});\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\nexport {\n createContext2 as createContext,\n createContextScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/collection/src/Collection.tsx\nimport React from \"react\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createCollection(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n { collectionRef: { current: null }, itemMap: /* @__PURE__ */ new Map() }\n );\n const CollectionProvider = (props) => {\n const { scope, children } = props;\n const ref = React.useRef(null);\n const itemMap = React.useRef(/* @__PURE__ */ new Map()).current;\n return /* @__PURE__ */ jsx(CollectionProviderImpl, { scope, itemMap, collectionRef: ref, children });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ jsx(Slot, { ref: composedRefs, children });\n }\n );\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n React.useEffect(() => {\n context.itemMap.set(ref, { ref, ...itemData });\n return () => void context.itemMap.delete(ref);\n });\n return /* @__PURE__ */ jsx(Slot, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n }\n );\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useCollection(scope) {\n const context = useCollectionContext(name + \"CollectionConsumer\", scope);\n const getItems = React.useCallback(() => {\n const collectionNode = context.collectionRef.current;\n if (!collectionNode) return [];\n const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));\n const items = Array.from(context.itemMap.values());\n const orderedItems = items.sort(\n (a, b) => orderedNodes.indexOf(a.ref.current) - orderedNodes.indexOf(b.ref.current)\n );\n return orderedItems;\n }, [context.collectionRef, context.itemMap]);\n return getItems;\n }\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n useCollection,\n createCollectionScope\n ];\n}\nexport {\n createCollection\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/direction/src/Direction.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DirectionContext = React.createContext(void 0);\nvar DirectionProvider = (props) => {\n const { dir, children } = props;\n return /* @__PURE__ */ jsx(DirectionContext.Provider, { value: dir, children });\n};\nfunction useDirection(localDir) {\n const globalDir = React.useContext(DirectionContext);\n return localDir || globalDir || \"ltr\";\n}\nvar Provider = DirectionProvider;\nexport {\n DirectionProvider,\n Provider,\n useDirection\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-previous/src/usePrevious.tsx\nimport * as React from \"react\";\nfunction usePrevious(value) {\n const ref = React.useRef({ value, previous: value });\n return React.useMemo(() => {\n if (ref.current.value !== value) {\n ref.current.previous = ref.current.value;\n ref.current.value = value;\n }\n return ref.current.previous;\n }, [value]);\n}\nexport {\n usePrevious\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/select/src/Select.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { clamp } from \"@radix-ui/number\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { VisuallyHidden } from \"@radix-ui/react-visually-hidden\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar OPEN_KEYS = [\" \", \"Enter\", \"ArrowUp\", \"ArrowDown\"];\nvar SELECTION_KEYS = [\" \", \"Enter\"];\nvar SELECT_NAME = \"Select\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(SELECT_NAME);\nvar [createSelectContext, createSelectScope] = createContextScope(SELECT_NAME, [\n createCollectionScope,\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar [SelectProvider, useSelectContext] = createSelectContext(SELECT_NAME);\nvar [SelectNativeOptionsProvider, useSelectNativeOptionsContext] = createSelectContext(SELECT_NAME);\nvar Select = (props) => {\n const {\n __scopeSelect,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n value: valueProp,\n defaultValue,\n onValueChange,\n dir,\n name,\n autoComplete,\n disabled,\n required,\n form\n } = props;\n const popperScope = usePopperScope(__scopeSelect);\n const [trigger, setTrigger] = React.useState(null);\n const [valueNode, setValueNode] = React.useState(null);\n const [valueNodeHasChildren, setValueNodeHasChildren] = React.useState(false);\n const direction = useDirection(dir);\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange\n });\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange\n });\n const triggerPointerDownPosRef = React.useRef(null);\n const isFormControl = trigger ? form || !!trigger.closest(\"form\") : true;\n const [nativeOptionsSet, setNativeOptionsSet] = React.useState(/* @__PURE__ */ new Set());\n const nativeSelectKey = Array.from(nativeOptionsSet).map((option) => option.props.value).join(\";\");\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsxs(\n SelectProvider,\n {\n required,\n scope: __scopeSelect,\n trigger,\n onTriggerChange: setTrigger,\n valueNode,\n onValueNodeChange: setValueNode,\n valueNodeHasChildren,\n onValueNodeHasChildrenChange: setValueNodeHasChildren,\n contentId: useId(),\n value,\n onValueChange: setValue,\n open,\n onOpenChange: setOpen,\n dir: direction,\n triggerPointerDownPosRef,\n disabled,\n children: [\n /* @__PURE__ */ jsx(Collection.Provider, { scope: __scopeSelect, children: /* @__PURE__ */ jsx(\n SelectNativeOptionsProvider,\n {\n scope: props.__scopeSelect,\n onNativeOptionAdd: React.useCallback((option) => {\n setNativeOptionsSet((prev) => new Set(prev).add(option));\n }, []),\n onNativeOptionRemove: React.useCallback((option) => {\n setNativeOptionsSet((prev) => {\n const optionsSet = new Set(prev);\n optionsSet.delete(option);\n return optionsSet;\n });\n }, []),\n children\n }\n ) }),\n isFormControl ? /* @__PURE__ */ jsxs(\n BubbleSelect,\n {\n \"aria-hidden\": true,\n required,\n tabIndex: -1,\n name,\n autoComplete,\n value,\n onChange: (event) => setValue(event.target.value),\n disabled,\n form,\n children: [\n value === void 0 ? /* @__PURE__ */ jsx(\"option\", { value: \"\" }) : null,\n Array.from(nativeOptionsSet)\n ]\n },\n nativeSelectKey\n ) : null\n ]\n }\n ) });\n};\nSelect.displayName = SELECT_NAME;\nvar TRIGGER_NAME = \"SelectTrigger\";\nvar SelectTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, disabled = false, ...triggerProps } = props;\n const popperScope = usePopperScope(__scopeSelect);\n const context = useSelectContext(TRIGGER_NAME, __scopeSelect);\n const isDisabled = context.disabled || disabled;\n const composedRefs = useComposedRefs(forwardedRef, context.onTriggerChange);\n const getItems = useCollection(__scopeSelect);\n const pointerTypeRef = React.useRef(\"touch\");\n const [searchRef, handleTypeaheadSearch, resetTypeahead] = useTypeaheadSearch((search) => {\n const enabledItems = getItems().filter((item) => !item.disabled);\n const currentItem = enabledItems.find((item) => item.value === context.value);\n const nextItem = findNextItem(enabledItems, search, currentItem);\n if (nextItem !== void 0) {\n context.onValueChange(nextItem.value);\n }\n });\n const handleOpen = (pointerEvent) => {\n if (!isDisabled) {\n context.onOpenChange(true);\n resetTypeahead();\n }\n if (pointerEvent) {\n context.triggerPointerDownPosRef.current = {\n x: Math.round(pointerEvent.pageX),\n y: Math.round(pointerEvent.pageY)\n };\n }\n };\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"combobox\",\n \"aria-controls\": context.contentId,\n \"aria-expanded\": context.open,\n \"aria-required\": context.required,\n \"aria-autocomplete\": \"none\",\n dir: context.dir,\n \"data-state\": context.open ? \"open\" : \"closed\",\n disabled: isDisabled,\n \"data-disabled\": isDisabled ? \"\" : void 0,\n \"data-placeholder\": shouldShowPlaceholder(context.value) ? \"\" : void 0,\n ...triggerProps,\n ref: composedRefs,\n onClick: composeEventHandlers(triggerProps.onClick, (event) => {\n event.currentTarget.focus();\n if (pointerTypeRef.current !== \"mouse\") {\n handleOpen(event);\n }\n }),\n onPointerDown: composeEventHandlers(triggerProps.onPointerDown, (event) => {\n pointerTypeRef.current = event.pointerType;\n const target = event.target;\n if (target.hasPointerCapture(event.pointerId)) {\n target.releasePointerCapture(event.pointerId);\n }\n if (event.button === 0 && event.ctrlKey === false && event.pointerType === \"mouse\") {\n handleOpen(event);\n event.preventDefault();\n }\n }),\n onKeyDown: composeEventHandlers(triggerProps.onKeyDown, (event) => {\n const isTypingAhead = searchRef.current !== \"\";\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n if (!isModifierKey && event.key.length === 1) handleTypeaheadSearch(event.key);\n if (isTypingAhead && event.key === \" \") return;\n if (OPEN_KEYS.includes(event.key)) {\n handleOpen();\n event.preventDefault();\n }\n })\n }\n ) });\n }\n);\nSelectTrigger.displayName = TRIGGER_NAME;\nvar VALUE_NAME = \"SelectValue\";\nvar SelectValue = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, className, style, children, placeholder = \"\", ...valueProps } = props;\n const context = useSelectContext(VALUE_NAME, __scopeSelect);\n const { onValueNodeHasChildrenChange } = context;\n const hasChildren = children !== void 0;\n const composedRefs = useComposedRefs(forwardedRef, context.onValueNodeChange);\n useLayoutEffect(() => {\n onValueNodeHasChildrenChange(hasChildren);\n }, [onValueNodeHasChildrenChange, hasChildren]);\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n ...valueProps,\n ref: composedRefs,\n style: { pointerEvents: \"none\" },\n children: shouldShowPlaceholder(context.value) ? /* @__PURE__ */ jsx(Fragment, { children: placeholder }) : children\n }\n );\n }\n);\nSelectValue.displayName = VALUE_NAME;\nvar ICON_NAME = \"SelectIcon\";\nvar SelectIcon = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, children, ...iconProps } = props;\n return /* @__PURE__ */ jsx(Primitive.span, { \"aria-hidden\": true, ...iconProps, ref: forwardedRef, children: children || \"\\u25BC\" });\n }\n);\nSelectIcon.displayName = ICON_NAME;\nvar PORTAL_NAME = \"SelectPortal\";\nvar SelectPortal = (props) => {\n return /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, ...props });\n};\nSelectPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"SelectContent\";\nvar SelectContent = React.forwardRef(\n (props, forwardedRef) => {\n const context = useSelectContext(CONTENT_NAME, props.__scopeSelect);\n const [fragment, setFragment] = React.useState();\n useLayoutEffect(() => {\n setFragment(new DocumentFragment());\n }, []);\n if (!context.open) {\n const frag = fragment;\n return frag ? ReactDOM.createPortal(\n /* @__PURE__ */ jsx(SelectContentProvider, { scope: props.__scopeSelect, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeSelect, children: /* @__PURE__ */ jsx(\"div\", { children: props.children }) }) }),\n frag\n ) : null;\n }\n return /* @__PURE__ */ jsx(SelectContentImpl, { ...props, ref: forwardedRef });\n }\n);\nSelectContent.displayName = CONTENT_NAME;\nvar CONTENT_MARGIN = 10;\nvar [SelectContentProvider, useSelectContentContext] = createSelectContext(CONTENT_NAME);\nvar CONTENT_IMPL_NAME = \"SelectContentImpl\";\nvar SelectContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeSelect,\n position = \"item-aligned\",\n onCloseAutoFocus,\n onEscapeKeyDown,\n onPointerDownOutside,\n //\n // PopperContent props\n side,\n sideOffset,\n align,\n alignOffset,\n arrowPadding,\n collisionBoundary,\n collisionPadding,\n sticky,\n hideWhenDetached,\n avoidCollisions,\n //\n ...contentProps\n } = props;\n const context = useSelectContext(CONTENT_NAME, __scopeSelect);\n const [content, setContent] = React.useState(null);\n const [viewport, setViewport] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n const [selectedItem, setSelectedItem] = React.useState(null);\n const [selectedItemText, setSelectedItemText] = React.useState(\n null\n );\n const getItems = useCollection(__scopeSelect);\n const [isPositioned, setIsPositioned] = React.useState(false);\n const firstValidItemFoundRef = React.useRef(false);\n React.useEffect(() => {\n if (content) return hideOthers(content);\n }, [content]);\n useFocusGuards();\n const focusFirst = React.useCallback(\n (candidates) => {\n const [firstItem, ...restItems] = getItems().map((item) => item.ref.current);\n const [lastItem] = restItems.slice(-1);\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate?.scrollIntoView({ block: \"nearest\" });\n if (candidate === firstItem && viewport) viewport.scrollTop = 0;\n if (candidate === lastItem && viewport) viewport.scrollTop = viewport.scrollHeight;\n candidate?.focus();\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n },\n [getItems, viewport]\n );\n const focusSelectedItem = React.useCallback(\n () => focusFirst([selectedItem, content]),\n [focusFirst, selectedItem, content]\n );\n React.useEffect(() => {\n if (isPositioned) {\n focusSelectedItem();\n }\n }, [isPositioned, focusSelectedItem]);\n const { onOpenChange, triggerPointerDownPosRef } = context;\n React.useEffect(() => {\n if (content) {\n let pointerMoveDelta = { x: 0, y: 0 };\n const handlePointerMove = (event) => {\n pointerMoveDelta = {\n x: Math.abs(Math.round(event.pageX) - (triggerPointerDownPosRef.current?.x ?? 0)),\n y: Math.abs(Math.round(event.pageY) - (triggerPointerDownPosRef.current?.y ?? 0))\n };\n };\n const handlePointerUp = (event) => {\n if (pointerMoveDelta.x <= 10 && pointerMoveDelta.y <= 10) {\n event.preventDefault();\n } else {\n if (!content.contains(event.target)) {\n onOpenChange(false);\n }\n }\n document.removeEventListener(\"pointermove\", handlePointerMove);\n triggerPointerDownPosRef.current = null;\n };\n if (triggerPointerDownPosRef.current !== null) {\n document.addEventListener(\"pointermove\", handlePointerMove);\n document.addEventListener(\"pointerup\", handlePointerUp, { capture: true, once: true });\n }\n return () => {\n document.removeEventListener(\"pointermove\", handlePointerMove);\n document.removeEventListener(\"pointerup\", handlePointerUp, { capture: true });\n };\n }\n }, [content, onOpenChange, triggerPointerDownPosRef]);\n React.useEffect(() => {\n const close = () => onOpenChange(false);\n window.addEventListener(\"blur\", close);\n window.addEventListener(\"resize\", close);\n return () => {\n window.removeEventListener(\"blur\", close);\n window.removeEventListener(\"resize\", close);\n };\n }, [onOpenChange]);\n const [searchRef, handleTypeaheadSearch] = useTypeaheadSearch((search) => {\n const enabledItems = getItems().filter((item) => !item.disabled);\n const currentItem = enabledItems.find((item) => item.ref.current === document.activeElement);\n const nextItem = findNextItem(enabledItems, search, currentItem);\n if (nextItem) {\n setTimeout(() => nextItem.ref.current.focus());\n }\n });\n const itemRefCallback = React.useCallback(\n (node, value, disabled) => {\n const isFirstValidItem = !firstValidItemFoundRef.current && !disabled;\n const isSelectedItem = context.value !== void 0 && context.value === value;\n if (isSelectedItem || isFirstValidItem) {\n setSelectedItem(node);\n if (isFirstValidItem) firstValidItemFoundRef.current = true;\n }\n },\n [context.value]\n );\n const handleItemLeave = React.useCallback(() => content?.focus(), [content]);\n const itemTextRefCallback = React.useCallback(\n (node, value, disabled) => {\n const isFirstValidItem = !firstValidItemFoundRef.current && !disabled;\n const isSelectedItem = context.value !== void 0 && context.value === value;\n if (isSelectedItem || isFirstValidItem) {\n setSelectedItemText(node);\n }\n },\n [context.value]\n );\n const SelectPosition = position === \"popper\" ? SelectPopperPosition : SelectItemAlignedPosition;\n const popperContentProps = SelectPosition === SelectPopperPosition ? {\n side,\n sideOffset,\n align,\n alignOffset,\n arrowPadding,\n collisionBoundary,\n collisionPadding,\n sticky,\n hideWhenDetached,\n avoidCollisions\n } : {};\n return /* @__PURE__ */ jsx(\n SelectContentProvider,\n {\n scope: __scopeSelect,\n content,\n viewport,\n onViewportChange: setViewport,\n itemRefCallback,\n selectedItem,\n onItemLeave: handleItemLeave,\n itemTextRefCallback,\n focusSelectedItem,\n selectedItemText,\n position,\n isPositioned,\n searchRef,\n children: /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, children: /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n trapped: context.open,\n onMountAutoFocus: (event) => {\n event.preventDefault();\n },\n onUnmountAutoFocus: composeEventHandlers(onCloseAutoFocus, (event) => {\n context.trigger?.focus({ preventScroll: true });\n event.preventDefault();\n }),\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents: true,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside: (event) => event.preventDefault(),\n onDismiss: () => context.onOpenChange(false),\n children: /* @__PURE__ */ jsx(\n SelectPosition,\n {\n role: \"listbox\",\n id: context.contentId,\n \"data-state\": context.open ? \"open\" : \"closed\",\n dir: context.dir,\n onContextMenu: (event) => event.preventDefault(),\n ...contentProps,\n ...popperContentProps,\n onPlaced: () => setIsPositioned(true),\n ref: composedRefs,\n style: {\n // flex layout so we can place the scroll buttons properly\n display: \"flex\",\n flexDirection: \"column\",\n // reset the outline by default as the content MAY get focused\n outline: \"none\",\n ...contentProps.style\n },\n onKeyDown: composeEventHandlers(contentProps.onKeyDown, (event) => {\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n if (event.key === \"Tab\") event.preventDefault();\n if (!isModifierKey && event.key.length === 1) handleTypeaheadSearch(event.key);\n if ([\"ArrowUp\", \"ArrowDown\", \"Home\", \"End\"].includes(event.key)) {\n const items = getItems().filter((item) => !item.disabled);\n let candidateNodes = items.map((item) => item.ref.current);\n if ([\"ArrowUp\", \"End\"].includes(event.key)) {\n candidateNodes = candidateNodes.slice().reverse();\n }\n if ([\"ArrowUp\", \"ArrowDown\"].includes(event.key)) {\n const currentElement = event.target;\n const currentIndex = candidateNodes.indexOf(currentElement);\n candidateNodes = candidateNodes.slice(currentIndex + 1);\n }\n setTimeout(() => focusFirst(candidateNodes));\n event.preventDefault();\n }\n })\n }\n )\n }\n )\n }\n ) })\n }\n );\n }\n);\nSelectContentImpl.displayName = CONTENT_IMPL_NAME;\nvar ITEM_ALIGNED_POSITION_NAME = \"SelectItemAlignedPosition\";\nvar SelectItemAlignedPosition = React.forwardRef((props, forwardedRef) => {\n const { __scopeSelect, onPlaced, ...popperProps } = props;\n const context = useSelectContext(CONTENT_NAME, __scopeSelect);\n const contentContext = useSelectContentContext(CONTENT_NAME, __scopeSelect);\n const [contentWrapper, setContentWrapper] = React.useState(null);\n const [content, setContent] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n const getItems = useCollection(__scopeSelect);\n const shouldExpandOnScrollRef = React.useRef(false);\n const shouldRepositionRef = React.useRef(true);\n const { viewport, selectedItem, selectedItemText, focusSelectedItem } = contentContext;\n const position = React.useCallback(() => {\n if (context.trigger && context.valueNode && contentWrapper && content && viewport && selectedItem && selectedItemText) {\n const triggerRect = context.trigger.getBoundingClientRect();\n const contentRect = content.getBoundingClientRect();\n const valueNodeRect = context.valueNode.getBoundingClientRect();\n const itemTextRect = selectedItemText.getBoundingClientRect();\n if (context.dir !== \"rtl\") {\n const itemTextOffset = itemTextRect.left - contentRect.left;\n const left = valueNodeRect.left - itemTextOffset;\n const leftDelta = triggerRect.left - left;\n const minContentWidth = triggerRect.width + leftDelta;\n const contentWidth = Math.max(minContentWidth, contentRect.width);\n const rightEdge = window.innerWidth - CONTENT_MARGIN;\n const clampedLeft = clamp(left, [\n CONTENT_MARGIN,\n // Prevents the content from going off the starting edge of the\n // viewport. It may still go off the ending edge, but this can be\n // controlled by the user since they may want to manage overflow in a\n // specific way.\n // https://github.com/radix-ui/primitives/issues/2049\n Math.max(CONTENT_MARGIN, rightEdge - contentWidth)\n ]);\n contentWrapper.style.minWidth = minContentWidth + \"px\";\n contentWrapper.style.left = clampedLeft + \"px\";\n } else {\n const itemTextOffset = contentRect.right - itemTextRect.right;\n const right = window.innerWidth - valueNodeRect.right - itemTextOffset;\n const rightDelta = window.innerWidth - triggerRect.right - right;\n const minContentWidth = triggerRect.width + rightDelta;\n const contentWidth = Math.max(minContentWidth, contentRect.width);\n const leftEdge = window.innerWidth - CONTENT_MARGIN;\n const clampedRight = clamp(right, [\n CONTENT_MARGIN,\n Math.max(CONTENT_MARGIN, leftEdge - contentWidth)\n ]);\n contentWrapper.style.minWidth = minContentWidth + \"px\";\n contentWrapper.style.right = clampedRight + \"px\";\n }\n const items = getItems();\n const availableHeight = window.innerHeight - CONTENT_MARGIN * 2;\n const itemsHeight = viewport.scrollHeight;\n const contentStyles = window.getComputedStyle(content);\n const contentBorderTopWidth = parseInt(contentStyles.borderTopWidth, 10);\n const contentPaddingTop = parseInt(contentStyles.paddingTop, 10);\n const contentBorderBottomWidth = parseInt(contentStyles.borderBottomWidth, 10);\n const contentPaddingBottom = parseInt(contentStyles.paddingBottom, 10);\n const fullContentHeight = contentBorderTopWidth + contentPaddingTop + itemsHeight + contentPaddingBottom + contentBorderBottomWidth;\n const minContentHeight = Math.min(selectedItem.offsetHeight * 5, fullContentHeight);\n const viewportStyles = window.getComputedStyle(viewport);\n const viewportPaddingTop = parseInt(viewportStyles.paddingTop, 10);\n const viewportPaddingBottom = parseInt(viewportStyles.paddingBottom, 10);\n const topEdgeToTriggerMiddle = triggerRect.top + triggerRect.height / 2 - CONTENT_MARGIN;\n const triggerMiddleToBottomEdge = availableHeight - topEdgeToTriggerMiddle;\n const selectedItemHalfHeight = selectedItem.offsetHeight / 2;\n const itemOffsetMiddle = selectedItem.offsetTop + selectedItemHalfHeight;\n const contentTopToItemMiddle = contentBorderTopWidth + contentPaddingTop + itemOffsetMiddle;\n const itemMiddleToContentBottom = fullContentHeight - contentTopToItemMiddle;\n const willAlignWithoutTopOverflow = contentTopToItemMiddle <= topEdgeToTriggerMiddle;\n if (willAlignWithoutTopOverflow) {\n const isLastItem = items.length > 0 && selectedItem === items[items.length - 1].ref.current;\n contentWrapper.style.bottom = \"0px\";\n const viewportOffsetBottom = content.clientHeight - viewport.offsetTop - viewport.offsetHeight;\n const clampedTriggerMiddleToBottomEdge = Math.max(\n triggerMiddleToBottomEdge,\n selectedItemHalfHeight + // viewport might have padding bottom, include it to avoid a scrollable viewport\n (isLastItem ? viewportPaddingBottom : 0) + viewportOffsetBottom + contentBorderBottomWidth\n );\n const height = contentTopToItemMiddle + clampedTriggerMiddleToBottomEdge;\n contentWrapper.style.height = height + \"px\";\n } else {\n const isFirstItem = items.length > 0 && selectedItem === items[0].ref.current;\n contentWrapper.style.top = \"0px\";\n const clampedTopEdgeToTriggerMiddle = Math.max(\n topEdgeToTriggerMiddle,\n contentBorderTopWidth + viewport.offsetTop + // viewport might have padding top, include it to avoid a scrollable viewport\n (isFirstItem ? viewportPaddingTop : 0) + selectedItemHalfHeight\n );\n const height = clampedTopEdgeToTriggerMiddle + itemMiddleToContentBottom;\n contentWrapper.style.height = height + \"px\";\n viewport.scrollTop = contentTopToItemMiddle - topEdgeToTriggerMiddle + viewport.offsetTop;\n }\n contentWrapper.style.margin = `${CONTENT_MARGIN}px 0`;\n contentWrapper.style.minHeight = minContentHeight + \"px\";\n contentWrapper.style.maxHeight = availableHeight + \"px\";\n onPlaced?.();\n requestAnimationFrame(() => shouldExpandOnScrollRef.current = true);\n }\n }, [\n getItems,\n context.trigger,\n context.valueNode,\n contentWrapper,\n content,\n viewport,\n selectedItem,\n selectedItemText,\n context.dir,\n onPlaced\n ]);\n useLayoutEffect(() => position(), [position]);\n const [contentZIndex, setContentZIndex] = React.useState();\n useLayoutEffect(() => {\n if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n }, [content]);\n const handleScrollButtonChange = React.useCallback(\n (node) => {\n if (node && shouldRepositionRef.current === true) {\n position();\n focusSelectedItem?.();\n shouldRepositionRef.current = false;\n }\n },\n [position, focusSelectedItem]\n );\n return /* @__PURE__ */ jsx(\n SelectViewportProvider,\n {\n scope: __scopeSelect,\n contentWrapper,\n shouldExpandOnScrollRef,\n onScrollButtonChange: handleScrollButtonChange,\n children: /* @__PURE__ */ jsx(\n \"div\",\n {\n ref: setContentWrapper,\n style: {\n display: \"flex\",\n flexDirection: \"column\",\n position: \"fixed\",\n zIndex: contentZIndex\n },\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...popperProps,\n ref: composedRefs,\n style: {\n // When we get the height of the content, it includes borders. If we were to set\n // the height without having `boxSizing: 'border-box'` it would be too big.\n boxSizing: \"border-box\",\n // We need to ensure the content doesn't get taller than the wrapper\n maxHeight: \"100%\",\n ...popperProps.style\n }\n }\n )\n }\n )\n }\n );\n});\nSelectItemAlignedPosition.displayName = ITEM_ALIGNED_POSITION_NAME;\nvar POPPER_POSITION_NAME = \"SelectPopperPosition\";\nvar SelectPopperPosition = React.forwardRef((props, forwardedRef) => {\n const {\n __scopeSelect,\n align = \"start\",\n collisionPadding = CONTENT_MARGIN,\n ...popperProps\n } = props;\n const popperScope = usePopperScope(__scopeSelect);\n return /* @__PURE__ */ jsx(\n PopperPrimitive.Content,\n {\n ...popperScope,\n ...popperProps,\n ref: forwardedRef,\n align,\n collisionPadding,\n style: {\n // Ensure border-box for floating-ui calculations\n boxSizing: \"border-box\",\n ...popperProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-select-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-select-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-select-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-select-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-select-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n );\n});\nSelectPopperPosition.displayName = POPPER_POSITION_NAME;\nvar [SelectViewportProvider, useSelectViewportContext] = createSelectContext(CONTENT_NAME, {});\nvar VIEWPORT_NAME = \"SelectViewport\";\nvar SelectViewport = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, nonce, ...viewportProps } = props;\n const contentContext = useSelectContentContext(VIEWPORT_NAME, __scopeSelect);\n const viewportContext = useSelectViewportContext(VIEWPORT_NAME, __scopeSelect);\n const composedRefs = useComposedRefs(forwardedRef, contentContext.onViewportChange);\n const prevScrollTopRef = React.useRef(0);\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\n \"style\",\n {\n dangerouslySetInnerHTML: {\n __html: `[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}`\n },\n nonce\n }\n ),\n /* @__PURE__ */ jsx(Collection.Slot, { scope: __scopeSelect, children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-radix-select-viewport\": \"\",\n role: \"presentation\",\n ...viewportProps,\n ref: composedRefs,\n style: {\n // we use position: 'relative' here on the `viewport` so that when we call\n // `selectedItem.offsetTop` in calculations, the offset is relative to the viewport\n // (independent of the scrollUpButton).\n position: \"relative\",\n flex: 1,\n // Viewport should only be scrollable in the vertical direction.\n // This won't work in vertical writing modes, so we'll need to\n // revisit this if/when that is supported\n // https://developer.chrome.com/blog/vertical-form-controls\n overflow: \"hidden auto\",\n ...viewportProps.style\n },\n onScroll: composeEventHandlers(viewportProps.onScroll, (event) => {\n const viewport = event.currentTarget;\n const { contentWrapper, shouldExpandOnScrollRef } = viewportContext;\n if (shouldExpandOnScrollRef?.current && contentWrapper) {\n const scrolledBy = Math.abs(prevScrollTopRef.current - viewport.scrollTop);\n if (scrolledBy > 0) {\n const availableHeight = window.innerHeight - CONTENT_MARGIN * 2;\n const cssMinHeight = parseFloat(contentWrapper.style.minHeight);\n const cssHeight = parseFloat(contentWrapper.style.height);\n const prevHeight = Math.max(cssMinHeight, cssHeight);\n if (prevHeight < availableHeight) {\n const nextHeight = prevHeight + scrolledBy;\n const clampedNextHeight = Math.min(availableHeight, nextHeight);\n const heightDiff = nextHeight - clampedNextHeight;\n contentWrapper.style.height = clampedNextHeight + \"px\";\n if (contentWrapper.style.bottom === \"0px\") {\n viewport.scrollTop = heightDiff > 0 ? heightDiff : 0;\n contentWrapper.style.justifyContent = \"flex-end\";\n }\n }\n }\n }\n prevScrollTopRef.current = viewport.scrollTop;\n })\n }\n ) })\n ] });\n }\n);\nSelectViewport.displayName = VIEWPORT_NAME;\nvar GROUP_NAME = \"SelectGroup\";\nvar [SelectGroupContextProvider, useSelectGroupContext] = createSelectContext(GROUP_NAME);\nvar SelectGroup = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...groupProps } = props;\n const groupId = useId();\n return /* @__PURE__ */ jsx(SelectGroupContextProvider, { scope: __scopeSelect, id: groupId, children: /* @__PURE__ */ jsx(Primitive.div, { role: \"group\", \"aria-labelledby\": groupId, ...groupProps, ref: forwardedRef }) });\n }\n);\nSelectGroup.displayName = GROUP_NAME;\nvar LABEL_NAME = \"SelectLabel\";\nvar SelectLabel = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...labelProps } = props;\n const groupContext = useSelectGroupContext(LABEL_NAME, __scopeSelect);\n return /* @__PURE__ */ jsx(Primitive.div, { id: groupContext.id, ...labelProps, ref: forwardedRef });\n }\n);\nSelectLabel.displayName = LABEL_NAME;\nvar ITEM_NAME = \"SelectItem\";\nvar [SelectItemContextProvider, useSelectItemContext] = createSelectContext(ITEM_NAME);\nvar SelectItem = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeSelect,\n value,\n disabled = false,\n textValue: textValueProp,\n ...itemProps\n } = props;\n const context = useSelectContext(ITEM_NAME, __scopeSelect);\n const contentContext = useSelectContentContext(ITEM_NAME, __scopeSelect);\n const isSelected = context.value === value;\n const [textValue, setTextValue] = React.useState(textValueProp ?? \"\");\n const [isFocused, setIsFocused] = React.useState(false);\n const composedRefs = useComposedRefs(\n forwardedRef,\n (node) => contentContext.itemRefCallback?.(node, value, disabled)\n );\n const textId = useId();\n const pointerTypeRef = React.useRef(\"touch\");\n const handleSelect = () => {\n if (!disabled) {\n context.onValueChange(value);\n context.onOpenChange(false);\n }\n };\n if (value === \"\") {\n throw new Error(\n \"A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.\"\n );\n }\n return /* @__PURE__ */ jsx(\n SelectItemContextProvider,\n {\n scope: __scopeSelect,\n value,\n disabled,\n textId,\n isSelected,\n onItemTextChange: React.useCallback((node) => {\n setTextValue((prevTextValue) => prevTextValue || (node?.textContent ?? \"\").trim());\n }, []),\n children: /* @__PURE__ */ jsx(\n Collection.ItemSlot,\n {\n scope: __scopeSelect,\n value,\n disabled,\n textValue,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"option\",\n \"aria-labelledby\": textId,\n \"data-highlighted\": isFocused ? \"\" : void 0,\n \"aria-selected\": isSelected && isFocused,\n \"data-state\": isSelected ? \"checked\" : \"unchecked\",\n \"aria-disabled\": disabled || void 0,\n \"data-disabled\": disabled ? \"\" : void 0,\n tabIndex: disabled ? void 0 : -1,\n ...itemProps,\n ref: composedRefs,\n onFocus: composeEventHandlers(itemProps.onFocus, () => setIsFocused(true)),\n onBlur: composeEventHandlers(itemProps.onBlur, () => setIsFocused(false)),\n onClick: composeEventHandlers(itemProps.onClick, () => {\n if (pointerTypeRef.current !== \"mouse\") handleSelect();\n }),\n onPointerUp: composeEventHandlers(itemProps.onPointerUp, () => {\n if (pointerTypeRef.current === \"mouse\") handleSelect();\n }),\n onPointerDown: composeEventHandlers(itemProps.onPointerDown, (event) => {\n pointerTypeRef.current = event.pointerType;\n }),\n onPointerMove: composeEventHandlers(itemProps.onPointerMove, (event) => {\n pointerTypeRef.current = event.pointerType;\n if (disabled) {\n contentContext.onItemLeave?.();\n } else if (pointerTypeRef.current === \"mouse\") {\n event.currentTarget.focus({ preventScroll: true });\n }\n }),\n onPointerLeave: composeEventHandlers(itemProps.onPointerLeave, (event) => {\n if (event.currentTarget === document.activeElement) {\n contentContext.onItemLeave?.();\n }\n }),\n onKeyDown: composeEventHandlers(itemProps.onKeyDown, (event) => {\n const isTypingAhead = contentContext.searchRef?.current !== \"\";\n if (isTypingAhead && event.key === \" \") return;\n if (SELECTION_KEYS.includes(event.key)) handleSelect();\n if (event.key === \" \") event.preventDefault();\n })\n }\n )\n }\n )\n }\n );\n }\n);\nSelectItem.displayName = ITEM_NAME;\nvar ITEM_TEXT_NAME = \"SelectItemText\";\nvar SelectItemText = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, className, style, ...itemTextProps } = props;\n const context = useSelectContext(ITEM_TEXT_NAME, __scopeSelect);\n const contentContext = useSelectContentContext(ITEM_TEXT_NAME, __scopeSelect);\n const itemContext = useSelectItemContext(ITEM_TEXT_NAME, __scopeSelect);\n const nativeOptionsContext = useSelectNativeOptionsContext(ITEM_TEXT_NAME, __scopeSelect);\n const [itemTextNode, setItemTextNode] = React.useState(null);\n const composedRefs = useComposedRefs(\n forwardedRef,\n (node) => setItemTextNode(node),\n itemContext.onItemTextChange,\n (node) => contentContext.itemTextRefCallback?.(node, itemContext.value, itemContext.disabled)\n );\n const textContent = itemTextNode?.textContent;\n const nativeOption = React.useMemo(\n () => /* @__PURE__ */ jsx(\"option\", { value: itemContext.value, disabled: itemContext.disabled, children: textContent }, itemContext.value),\n [itemContext.disabled, itemContext.value, textContent]\n );\n const { onNativeOptionAdd, onNativeOptionRemove } = nativeOptionsContext;\n useLayoutEffect(() => {\n onNativeOptionAdd(nativeOption);\n return () => onNativeOptionRemove(nativeOption);\n }, [onNativeOptionAdd, onNativeOptionRemove, nativeOption]);\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(Primitive.span, { id: itemContext.textId, ...itemTextProps, ref: composedRefs }),\n itemContext.isSelected && context.valueNode && !context.valueNodeHasChildren ? ReactDOM.createPortal(itemTextProps.children, context.valueNode) : null\n ] });\n }\n);\nSelectItemText.displayName = ITEM_TEXT_NAME;\nvar ITEM_INDICATOR_NAME = \"SelectItemIndicator\";\nvar SelectItemIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...itemIndicatorProps } = props;\n const itemContext = useSelectItemContext(ITEM_INDICATOR_NAME, __scopeSelect);\n return itemContext.isSelected ? /* @__PURE__ */ jsx(Primitive.span, { \"aria-hidden\": true, ...itemIndicatorProps, ref: forwardedRef }) : null;\n }\n);\nSelectItemIndicator.displayName = ITEM_INDICATOR_NAME;\nvar SCROLL_UP_BUTTON_NAME = \"SelectScrollUpButton\";\nvar SelectScrollUpButton = React.forwardRef((props, forwardedRef) => {\n const contentContext = useSelectContentContext(SCROLL_UP_BUTTON_NAME, props.__scopeSelect);\n const viewportContext = useSelectViewportContext(SCROLL_UP_BUTTON_NAME, props.__scopeSelect);\n const [canScrollUp, setCanScrollUp] = React.useState(false);\n const composedRefs = useComposedRefs(forwardedRef, viewportContext.onScrollButtonChange);\n useLayoutEffect(() => {\n if (contentContext.viewport && contentContext.isPositioned) {\n let handleScroll2 = function() {\n const canScrollUp2 = viewport.scrollTop > 0;\n setCanScrollUp(canScrollUp2);\n };\n var handleScroll = handleScroll2;\n const viewport = contentContext.viewport;\n handleScroll2();\n viewport.addEventListener(\"scroll\", handleScroll2);\n return () => viewport.removeEventListener(\"scroll\", handleScroll2);\n }\n }, [contentContext.viewport, contentContext.isPositioned]);\n return canScrollUp ? /* @__PURE__ */ jsx(\n SelectScrollButtonImpl,\n {\n ...props,\n ref: composedRefs,\n onAutoScroll: () => {\n const { viewport, selectedItem } = contentContext;\n if (viewport && selectedItem) {\n viewport.scrollTop = viewport.scrollTop - selectedItem.offsetHeight;\n }\n }\n }\n ) : null;\n});\nSelectScrollUpButton.displayName = SCROLL_UP_BUTTON_NAME;\nvar SCROLL_DOWN_BUTTON_NAME = \"SelectScrollDownButton\";\nvar SelectScrollDownButton = React.forwardRef((props, forwardedRef) => {\n const contentContext = useSelectContentContext(SCROLL_DOWN_BUTTON_NAME, props.__scopeSelect);\n const viewportContext = useSelectViewportContext(SCROLL_DOWN_BUTTON_NAME, props.__scopeSelect);\n const [canScrollDown, setCanScrollDown] = React.useState(false);\n const composedRefs = useComposedRefs(forwardedRef, viewportContext.onScrollButtonChange);\n useLayoutEffect(() => {\n if (contentContext.viewport && contentContext.isPositioned) {\n let handleScroll2 = function() {\n const maxScroll = viewport.scrollHeight - viewport.clientHeight;\n const canScrollDown2 = Math.ceil(viewport.scrollTop) < maxScroll;\n setCanScrollDown(canScrollDown2);\n };\n var handleScroll = handleScroll2;\n const viewport = contentContext.viewport;\n handleScroll2();\n viewport.addEventListener(\"scroll\", handleScroll2);\n return () => viewport.removeEventListener(\"scroll\", handleScroll2);\n }\n }, [contentContext.viewport, contentContext.isPositioned]);\n return canScrollDown ? /* @__PURE__ */ jsx(\n SelectScrollButtonImpl,\n {\n ...props,\n ref: composedRefs,\n onAutoScroll: () => {\n const { viewport, selectedItem } = contentContext;\n if (viewport && selectedItem) {\n viewport.scrollTop = viewport.scrollTop + selectedItem.offsetHeight;\n }\n }\n }\n ) : null;\n});\nSelectScrollDownButton.displayName = SCROLL_DOWN_BUTTON_NAME;\nvar SelectScrollButtonImpl = React.forwardRef((props, forwardedRef) => {\n const { __scopeSelect, onAutoScroll, ...scrollIndicatorProps } = props;\n const contentContext = useSelectContentContext(\"SelectScrollButton\", __scopeSelect);\n const autoScrollTimerRef = React.useRef(null);\n const getItems = useCollection(__scopeSelect);\n const clearAutoScrollTimer = React.useCallback(() => {\n if (autoScrollTimerRef.current !== null) {\n window.clearInterval(autoScrollTimerRef.current);\n autoScrollTimerRef.current = null;\n }\n }, []);\n React.useEffect(() => {\n return () => clearAutoScrollTimer();\n }, [clearAutoScrollTimer]);\n useLayoutEffect(() => {\n const activeItem = getItems().find((item) => item.ref.current === document.activeElement);\n activeItem?.ref.current?.scrollIntoView({ block: \"nearest\" });\n }, [getItems]);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"aria-hidden\": true,\n ...scrollIndicatorProps,\n ref: forwardedRef,\n style: { flexShrink: 0, ...scrollIndicatorProps.style },\n onPointerDown: composeEventHandlers(scrollIndicatorProps.onPointerDown, () => {\n if (autoScrollTimerRef.current === null) {\n autoScrollTimerRef.current = window.setInterval(onAutoScroll, 50);\n }\n }),\n onPointerMove: composeEventHandlers(scrollIndicatorProps.onPointerMove, () => {\n contentContext.onItemLeave?.();\n if (autoScrollTimerRef.current === null) {\n autoScrollTimerRef.current = window.setInterval(onAutoScroll, 50);\n }\n }),\n onPointerLeave: composeEventHandlers(scrollIndicatorProps.onPointerLeave, () => {\n clearAutoScrollTimer();\n })\n }\n );\n});\nvar SEPARATOR_NAME = \"SelectSeparator\";\nvar SelectSeparator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...separatorProps } = props;\n return /* @__PURE__ */ jsx(Primitive.div, { \"aria-hidden\": true, ...separatorProps, ref: forwardedRef });\n }\n);\nSelectSeparator.displayName = SEPARATOR_NAME;\nvar ARROW_NAME = \"SelectArrow\";\nvar SelectArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeSelect);\n const context = useSelectContext(ARROW_NAME, __scopeSelect);\n const contentContext = useSelectContentContext(ARROW_NAME, __scopeSelect);\n return context.open && contentContext.position === \"popper\" ? /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef }) : null;\n }\n);\nSelectArrow.displayName = ARROW_NAME;\nfunction shouldShowPlaceholder(value) {\n return value === \"\" || value === void 0;\n}\nvar BubbleSelect = React.forwardRef(\n (props, forwardedRef) => {\n const { value, ...selectProps } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const prevValue = usePrevious(value);\n React.useEffect(() => {\n const select = ref.current;\n const selectProto = window.HTMLSelectElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n selectProto,\n \"value\"\n );\n const setValue = descriptor.set;\n if (prevValue !== value && setValue) {\n const event = new Event(\"change\", { bubbles: true });\n setValue.call(select, value);\n select.dispatchEvent(event);\n }\n }, [prevValue, value]);\n return /* @__PURE__ */ jsx(VisuallyHidden, { asChild: true, children: /* @__PURE__ */ jsx(\"select\", { ...selectProps, ref: composedRefs, defaultValue: value }) });\n }\n);\nBubbleSelect.displayName = \"BubbleSelect\";\nfunction useTypeaheadSearch(onSearchChange) {\n const handleSearchChange = useCallbackRef(onSearchChange);\n const searchRef = React.useRef(\"\");\n const timerRef = React.useRef(0);\n const handleTypeaheadSearch = React.useCallback(\n (key) => {\n const search = searchRef.current + key;\n handleSearchChange(search);\n (function updateSearch(value) {\n searchRef.current = value;\n window.clearTimeout(timerRef.current);\n if (value !== \"\") timerRef.current = window.setTimeout(() => updateSearch(\"\"), 1e3);\n })(search);\n },\n [handleSearchChange]\n );\n const resetTypeahead = React.useCallback(() => {\n searchRef.current = \"\";\n window.clearTimeout(timerRef.current);\n }, []);\n React.useEffect(() => {\n return () => window.clearTimeout(timerRef.current);\n }, []);\n return [searchRef, handleTypeaheadSearch, resetTypeahead];\n}\nfunction findNextItem(items, search, currentItem) {\n const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n const normalizedSearch = isRepeated ? search[0] : search;\n const currentItemIndex = currentItem ? items.indexOf(currentItem) : -1;\n let wrappedItems = wrapArray(items, Math.max(currentItemIndex, 0));\n const excludeCurrentItem = normalizedSearch.length === 1;\n if (excludeCurrentItem) wrappedItems = wrappedItems.filter((v) => v !== currentItem);\n const nextItem = wrappedItems.find(\n (item) => item.textValue.toLowerCase().startsWith(normalizedSearch.toLowerCase())\n );\n return nextItem !== currentItem ? nextItem : void 0;\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nvar Root2 = Select;\nvar Trigger = SelectTrigger;\nvar Value = SelectValue;\nvar Icon = SelectIcon;\nvar Portal = SelectPortal;\nvar Content2 = SelectContent;\nvar Viewport = SelectViewport;\nvar Group = SelectGroup;\nvar Label = SelectLabel;\nvar Item = SelectItem;\nvar ItemText = SelectItemText;\nvar ItemIndicator = SelectItemIndicator;\nvar ScrollUpButton = SelectScrollUpButton;\nvar ScrollDownButton = SelectScrollDownButton;\nvar Separator = SelectSeparator;\nvar Arrow2 = SelectArrow;\nexport {\n Arrow2 as Arrow,\n Content2 as Content,\n Group,\n Icon,\n Item,\n ItemIndicator,\n ItemText,\n Label,\n Portal,\n Root2 as Root,\n ScrollDownButton,\n ScrollUpButton,\n Select,\n SelectArrow,\n SelectContent,\n SelectGroup,\n SelectIcon,\n SelectItem,\n SelectItemIndicator,\n SelectItemText,\n SelectLabel,\n SelectPortal,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n SelectViewport,\n Separator,\n Trigger,\n Value,\n Viewport,\n createSelectScope\n};\n//# sourceMappingURL=index.mjs.map\n"],"names":["clamp","value","min","max","createContextScope","scopeName","createContextScopeDeps","defaultContexts","createContext3","rootComponentName","defaultContext","BaseContext","React.createContext","index","Provider","props","scope","children","context","Context","React.useMemo","jsx","useContext2","consumerName","React.useContext","createScope","scopeContexts","contexts","composeContextScopes","scopes","baseScope","scopeHooks","createScope2","overrideScopes","nextScopes","nextScopes2","useScope","currentScope","createCollection","name","PROVIDER_NAME","createCollectionContext","createCollectionScope","CollectionProviderImpl","useCollectionContext","CollectionProvider","ref","React","itemMap","COLLECTION_SLOT_NAME","CollectionSlot","forwardedRef","composedRefs","useComposedRefs","Slot","ITEM_SLOT_NAME","ITEM_DATA_ATTR","CollectionItemSlot","itemData","useCollection","collectionNode","orderedNodes","a","b","DirectionContext","useDirection","localDir","globalDir","usePrevious","React.useRef","OPEN_KEYS","SELECTION_KEYS","SELECT_NAME","Collection","createSelectContext","createSelectScope","createPopperScope","usePopperScope","SelectProvider","useSelectContext","SelectNativeOptionsProvider","useSelectNativeOptionsContext","Select","__scopeSelect","openProp","defaultOpen","onOpenChange","valueProp","defaultValue","onValueChange","dir","autoComplete","disabled","required","form","popperScope","trigger","setTrigger","React.useState","valueNode","setValueNode","valueNodeHasChildren","setValueNodeHasChildren","direction","open","setOpen","useControllableState","setValue","triggerPointerDownPosRef","isFormControl","nativeOptionsSet","setNativeOptionsSet","nativeSelectKey","option","PopperPrimitive.Root","jsxs","useId","React.useCallback","prev","optionsSet","BubbleSelect","event","TRIGGER_NAME","SelectTrigger","React.forwardRef","triggerProps","isDisabled","getItems","pointerTypeRef","searchRef","handleTypeaheadSearch","resetTypeahead","useTypeaheadSearch","search","enabledItems","item","currentItem","nextItem","findNextItem","handleOpen","pointerEvent","PopperPrimitive.Anchor","Primitive","shouldShowPlaceholder","composeEventHandlers","target","isTypingAhead","VALUE_NAME","SelectValue","className","style","placeholder","valueProps","onValueNodeHasChildrenChange","hasChildren","useLayoutEffect","Fragment","ICON_NAME","SelectIcon","iconProps","PORTAL_NAME","SelectPortal","PortalPrimitive","CONTENT_NAME","SelectContent","fragment","setFragment","frag","ReactDOM.createPortal","SelectContentProvider","SelectContentImpl","CONTENT_MARGIN","useSelectContentContext","CONTENT_IMPL_NAME","position","onCloseAutoFocus","onEscapeKeyDown","onPointerDownOutside","side","sideOffset","align","alignOffset","arrowPadding","collisionBoundary","collisionPadding","sticky","hideWhenDetached","avoidCollisions","contentProps","content","setContent","viewport","setViewport","node","selectedItem","setSelectedItem","selectedItemText","setSelectedItemText","isPositioned","setIsPositioned","firstValidItemFoundRef","React.useEffect","hideOthers","useFocusGuards","focusFirst","candidates","firstItem","restItems","lastItem","PREVIOUSLY_FOCUSED_ELEMENT","candidate","focusSelectedItem","pointerMoveDelta","handlePointerMove","_a","_b","handlePointerUp","close","itemRefCallback","isFirstValidItem","handleItemLeave","itemTextRefCallback","SelectPosition","SelectPopperPosition","SelectItemAlignedPosition","popperContentProps","RemoveScroll","FocusScope","DismissableLayer","isModifierKey","candidateNodes","currentElement","currentIndex","ITEM_ALIGNED_POSITION_NAME","onPlaced","popperProps","contentContext","contentWrapper","setContentWrapper","shouldExpandOnScrollRef","shouldRepositionRef","triggerRect","contentRect","valueNodeRect","itemTextRect","itemTextOffset","left","leftDelta","minContentWidth","contentWidth","rightEdge","clampedLeft","right","rightDelta","leftEdge","clampedRight","items","availableHeight","itemsHeight","contentStyles","contentBorderTopWidth","contentPaddingTop","contentBorderBottomWidth","contentPaddingBottom","fullContentHeight","minContentHeight","viewportStyles","viewportPaddingTop","viewportPaddingBottom","topEdgeToTriggerMiddle","triggerMiddleToBottomEdge","selectedItemHalfHeight","itemOffsetMiddle","contentTopToItemMiddle","itemMiddleToContentBottom","isLastItem","viewportOffsetBottom","clampedTriggerMiddleToBottomEdge","height","isFirstItem","contentZIndex","setContentZIndex","handleScrollButtonChange","SelectViewportProvider","POPPER_POSITION_NAME","PopperPrimitive.Content","useSelectViewportContext","VIEWPORT_NAME","SelectViewport","nonce","viewportProps","viewportContext","prevScrollTopRef","scrolledBy","cssMinHeight","cssHeight","prevHeight","nextHeight","clampedNextHeight","heightDiff","GROUP_NAME","SelectGroupContextProvider","useSelectGroupContext","SelectGroup","groupProps","groupId","LABEL_NAME","SelectLabel","labelProps","groupContext","ITEM_NAME","SelectItemContextProvider","useSelectItemContext","SelectItem","textValueProp","itemProps","isSelected","textValue","setTextValue","isFocused","setIsFocused","textId","handleSelect","prevTextValue","ITEM_TEXT_NAME","SelectItemText","itemTextProps","itemContext","nativeOptionsContext","itemTextNode","setItemTextNode","textContent","nativeOption","onNativeOptionAdd","onNativeOptionRemove","ITEM_INDICATOR_NAME","SelectItemIndicator","itemIndicatorProps","SCROLL_UP_BUTTON_NAME","SelectScrollUpButton","canScrollUp","setCanScrollUp","handleScroll2","canScrollUp2","SelectScrollButtonImpl","SCROLL_DOWN_BUTTON_NAME","SelectScrollDownButton","canScrollDown","setCanScrollDown","maxScroll","canScrollDown2","onAutoScroll","scrollIndicatorProps","autoScrollTimerRef","clearAutoScrollTimer","activeItem","SEPARATOR_NAME","SelectSeparator","separatorProps","ARROW_NAME","SelectArrow","arrowProps","PopperPrimitive.Arrow","selectProps","prevValue","select","selectProto","VisuallyHidden","onSearchChange","handleSearchChange","useCallbackRef","timerRef","key","updateSearch","normalizedSearch","char","currentItemIndex","wrappedItems","wrapArray","v","array","startIndex","_","Root2","Trigger","Value","Icon","Portal","Content2","Viewport","Group","Label","Item","ItemText","ItemIndicator","ScrollUpButton","ScrollDownButton"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5]}
@@ -1,2 +1,2 @@
1
- import{j as r,r as n}from"./index-CGzylDPY.js";import{b as f}from"./index-BOQWfIQC.js";import{a as d}from"./misc-BtjCSy-T.js";function p({className:s,children:t="Loading"}){const{reducedMotion:e}=f();return e==="reduce"?r.jsx("div",{className:"animate-pulse",children:t}):r.jsxs("div",{className:d("flex items-center gap-2 font-mono text-sm font-medium uppercase",s),role:"status",children:[r.jsx("div",{"aria-hidden":"true",children:r.jsx(u,{})}),t,r.jsx("div",{"aria-hidden":"true",children:r.jsx(u,{})})]})}const o="█<▓█ ▒░/▒░ █░>▒▓/ █▒▒ ▓▒▓/█<░▒ ▓/░>",i=()=>o[Math.floor(Math.random()*o.length)];function u(){const[s,t]=n.useState(o[0]),[e,c]=n.useState(o[1]);return m(()=>{t(i()),c(i())},80),r.jsxs("span",{children:[s,e]})}function m(s,t=1e3){const e=n.useRef(null);n.useEffect(()=>{e.current=s},[s]),n.useEffect(()=>{function c(){var a;(a=e.current)==null||a.call(e)}if(t!==null){const a=setInterval(c,t);return()=>clearInterval(a)}},[t])}export{p as L};
2
- //# sourceMappingURL=loading-C2wPVvQw.js.map
1
+ import{j as r,r as n}from"./index-CGzylDPY.js";import{b as f}from"./index-9OWT3nC-.js";import{a as d}from"./misc-DoGPlBur.js";function p({className:s,children:t="Loading"}){const{reducedMotion:e}=f();return e==="reduce"?r.jsx("div",{className:"animate-pulse",children:t}):r.jsxs("div",{className:d("flex items-center gap-2 font-mono text-sm font-medium uppercase",s),role:"status",children:[r.jsx("div",{"aria-hidden":"true",children:r.jsx(u,{})}),t,r.jsx("div",{"aria-hidden":"true",children:r.jsx(u,{})})]})}const o="█<▓█ ▒░/▒░ █░>▒▓/ █▒▒ ▓▒▓/█<░▒ ▓/░>",i=()=>o[Math.floor(Math.random()*o.length)];function u(){const[s,t]=n.useState(o[0]),[e,c]=n.useState(o[1]);return m(()=>{t(i()),c(i())},80),r.jsxs("span",{children:[s,e]})}function m(s,t=1e3){const e=n.useRef(null);n.useEffect(()=>{e.current=s},[s]),n.useEffect(()=>{function c(){var a;(a=e.current)==null||a.call(e)}if(t!==null){const a=setInterval(c,t);return()=>clearInterval(a)}},[t])}export{p as L};
2
+ //# sourceMappingURL=loading-DsHhjqzj.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loading-C2wPVvQw.js","sources":["../../../app/components/loading.tsx"],"sourcesContent":["// originally this was based on baffle-react, but it was unnecessarily bloated\n// and very out-dated. I've replaced it with a simple Characters component that\n// does the same thing we were using baffle-react for\nimport { useEffect, useRef, useState } from 'react'\nimport { useHints } from '#app/utils/client-hints.tsx'\nimport { cn } from '#app/utils/misc.tsx'\n\nexport function Loading({\n\tclassName,\n\tchildren = 'Loading',\n}: {\n\tclassName?: string\n\tchildren?: React.ReactNode\n}) {\n\tconst { reducedMotion } = useHints()\n\tif (reducedMotion === 'reduce') {\n\t\treturn <div className=\"animate-pulse\">{children}</div>\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'flex items-center gap-2 font-mono text-sm font-medium uppercase',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\trole=\"status\"\n\t\t>\n\t\t\t<div aria-hidden=\"true\">\n\t\t\t\t<Characters />\n\t\t\t</div>\n\t\t\t{children}\n\t\t\t<div aria-hidden=\"true\">\n\t\t\t\t<Characters />\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\nconst characters = '█<▓█ ▒░/▒░ █░>▒▓/ █▒▒ ▓▒▓/█<░▒ ▓/░>'\nconst randomCharacter = () =>\n\tcharacters[Math.floor(Math.random() * characters.length)]\nexport function Characters() {\n\tconst [char1, setChar1] = useState(characters[0])\n\tconst [char2, setChar2] = useState(characters[1])\n\n\tuseInterval(() => {\n\t\tsetChar1(randomCharacter())\n\t\tsetChar2(randomCharacter())\n\t}, 80)\n\n\treturn (\n\t\t<span>\n\t\t\t{char1}\n\t\t\t{char2}\n\t\t</span>\n\t)\n}\n\nfunction useInterval(callback: () => void, delay: number | null = 1000) {\n\tconst savedCallback = useRef<() => void>(null)\n\n\t// Remember the latest function.\n\tuseEffect(() => {\n\t\tsavedCallback.current = callback\n\t}, [callback])\n\n\t// Set up the interval.\n\tuseEffect(() => {\n\t\tfunction tick() {\n\t\t\tsavedCallback.current?.()\n\t\t}\n\t\tif (delay !== null) {\n\t\t\tconst id = setInterval(tick, delay)\n\t\t\treturn () => clearInterval(id)\n\t\t}\n\t}, [delay])\n}\n"],"names":["Loading","className","children","reducedMotion","useHints","jsx","jsxs","cn","Characters","characters","randomCharacter","char1","setChar1","useState","char2","setChar2","useInterval","callback","delay","savedCallback","useRef","useEffect","tick","_a","id"],"mappings":"8HAOO,SAASA,EAAQ,CACvB,UAAAC,EACA,SAAAC,EAAW,SACZ,EAGG,CACI,KAAA,CAAE,cAAAC,GAAkBC,IAC1B,OAAID,IAAkB,SACbE,EAAAA,IAAA,MAAA,CAAI,UAAU,gBAAiB,SAAAH,CAAS,CAAA,EAIhDI,EAAA,KAAC,MAAA,CACA,UAAWC,EACV,kEACAN,CACD,EACA,KAAK,SAEL,SAAA,CAAAI,MAAC,MAAI,CAAA,cAAY,OAChB,SAAAA,MAACG,GAAW,CAAA,EACb,EACCN,QACA,MAAI,CAAA,cAAY,OAChB,SAAAG,MAACG,GAAW,CAAA,EACb,CAAA,CAAA,CAAA,CAGH,CAEA,MAAMC,EAAa,sCACbC,EAAkB,IACvBD,EAAW,KAAK,MAAM,KAAK,SAAWA,EAAW,MAAM,CAAC,EAClD,SAASD,GAAa,CAC5B,KAAM,CAACG,EAAOC,CAAQ,EAAIC,EAAS,SAAAJ,EAAW,CAAC,CAAC,EAC1C,CAACK,EAAOC,CAAQ,EAAIF,EAAS,SAAAJ,EAAW,CAAC,CAAC,EAEhD,OAAAO,EAAY,IAAM,CACjBJ,EAASF,GAAiB,EAC1BK,EAASL,GAAiB,GACxB,EAAE,SAGH,OACC,CAAA,SAAA,CAAAC,EACAG,CACF,CAAA,CAAA,CAEF,CAEA,SAASE,EAAYC,EAAsBC,EAAuB,IAAM,CACjE,MAAAC,EAAgBC,SAAmB,IAAI,EAG7CC,EAAAA,UAAU,IAAM,CACfF,EAAc,QAAUF,CAAA,EACtB,CAACA,CAAQ,CAAC,EAGbI,EAAAA,UAAU,IAAM,CACf,SAASC,GAAO,QACfC,EAAAJ,EAAc,UAAd,MAAAI,EAAA,KAAAJ,EACD,CACA,GAAID,IAAU,KAAM,CACb,MAAAM,EAAK,YAAYF,EAAMJ,CAAK,EAC3B,MAAA,IAAM,cAAcM,CAAE,CAC9B,CAAA,EACE,CAACN,CAAK,CAAC,CACX"}
1
+ {"version":3,"file":"loading-DsHhjqzj.js","sources":["../../../app/components/loading.tsx"],"sourcesContent":["// originally this was based on baffle-react, but it was unnecessarily bloated\n// and very out-dated. I've replaced it with a simple Characters component that\n// does the same thing we were using baffle-react for\nimport { useEffect, useRef, useState } from 'react'\nimport { useHints } from '#app/utils/client-hints.tsx'\nimport { cn } from '#app/utils/misc.tsx'\n\nexport function Loading({\n\tclassName,\n\tchildren = 'Loading',\n}: {\n\tclassName?: string\n\tchildren?: React.ReactNode\n}) {\n\tconst { reducedMotion } = useHints()\n\tif (reducedMotion === 'reduce') {\n\t\treturn <div className=\"animate-pulse\">{children}</div>\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'flex items-center gap-2 font-mono text-sm font-medium uppercase',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\trole=\"status\"\n\t\t>\n\t\t\t<div aria-hidden=\"true\">\n\t\t\t\t<Characters />\n\t\t\t</div>\n\t\t\t{children}\n\t\t\t<div aria-hidden=\"true\">\n\t\t\t\t<Characters />\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\nconst characters = '█<▓█ ▒░/▒░ █░>▒▓/ █▒▒ ▓▒▓/█<░▒ ▓/░>'\nconst randomCharacter = () =>\n\tcharacters[Math.floor(Math.random() * characters.length)]\nexport function Characters() {\n\tconst [char1, setChar1] = useState(characters[0])\n\tconst [char2, setChar2] = useState(characters[1])\n\n\tuseInterval(() => {\n\t\tsetChar1(randomCharacter())\n\t\tsetChar2(randomCharacter())\n\t}, 80)\n\n\treturn (\n\t\t<span>\n\t\t\t{char1}\n\t\t\t{char2}\n\t\t</span>\n\t)\n}\n\nfunction useInterval(callback: () => void, delay: number | null = 1000) {\n\tconst savedCallback = useRef<() => void>(null)\n\n\t// Remember the latest function.\n\tuseEffect(() => {\n\t\tsavedCallback.current = callback\n\t}, [callback])\n\n\t// Set up the interval.\n\tuseEffect(() => {\n\t\tfunction tick() {\n\t\t\tsavedCallback.current?.()\n\t\t}\n\t\tif (delay !== null) {\n\t\t\tconst id = setInterval(tick, delay)\n\t\t\treturn () => clearInterval(id)\n\t\t}\n\t}, [delay])\n}\n"],"names":["Loading","className","children","reducedMotion","useHints","jsx","jsxs","cn","Characters","characters","randomCharacter","char1","setChar1","useState","char2","setChar2","useInterval","callback","delay","savedCallback","useRef","useEffect","tick","_a","id"],"mappings":"8HAOO,SAASA,EAAQ,CACvB,UAAAC,EACA,SAAAC,EAAW,SACZ,EAGG,CACI,KAAA,CAAE,cAAAC,GAAkBC,IAC1B,OAAID,IAAkB,SACbE,EAAAA,IAAA,MAAA,CAAI,UAAU,gBAAiB,SAAAH,CAAS,CAAA,EAIhDI,EAAA,KAAC,MAAA,CACA,UAAWC,EACV,kEACAN,CACD,EACA,KAAK,SAEL,SAAA,CAAAI,MAAC,MAAI,CAAA,cAAY,OAChB,SAAAA,MAACG,GAAW,CAAA,EACb,EACCN,QACA,MAAI,CAAA,cAAY,OAChB,SAAAG,MAACG,GAAW,CAAA,EACb,CAAA,CAAA,CAAA,CAGH,CAEA,MAAMC,EAAa,sCACbC,EAAkB,IACvBD,EAAW,KAAK,MAAM,KAAK,SAAWA,EAAW,MAAM,CAAC,EAClD,SAASD,GAAa,CAC5B,KAAM,CAACG,EAAOC,CAAQ,EAAIC,EAAS,SAAAJ,EAAW,CAAC,CAAC,EAC1C,CAACK,EAAOC,CAAQ,EAAIF,EAAS,SAAAJ,EAAW,CAAC,CAAC,EAEhD,OAAAO,EAAY,IAAM,CACjBJ,EAASF,GAAiB,EAC1BK,EAASL,GAAiB,GACxB,EAAE,SAGH,OACC,CAAA,SAAA,CAAAC,EACAG,CACF,CAAA,CAAA,CAEF,CAEA,SAASE,EAAYC,EAAsBC,EAAuB,IAAM,CACjE,MAAAC,EAAgBC,SAAmB,IAAI,EAG7CC,EAAAA,UAAU,IAAM,CACfF,EAAc,QAAUF,CAAA,EACtB,CAACA,CAAQ,CAAC,EAGbI,EAAAA,UAAU,IAAM,CACf,SAASC,GAAO,QACfC,EAAAJ,EAAc,UAAd,MAAAI,EAAA,KAAAJ,EACD,CACA,GAAID,IAAU,KAAM,CACb,MAAAM,EAAK,YAAYF,EAAMJ,CAAK,EAC3B,MAAA,IAAM,cAAcM,CAAE,CAC9B,CAAA,EACE,CAACN,CAAK,CAAC,CACX"}
@@ -1,2 +1,2 @@
1
- import{r as i,e as g,d as v,j as e}from"./index-CGzylDPY.js";import{u as j}from"./use-event-source-AZJtQsFX.js";import{a as y,B as R}from"./button-BS845Tjo.js";import{L as b}from"./loading-C2wPVvQw.js";import{L as C}from"./product-gqq_YQBW.js";import{u as N}from"./workshop-config-oL_FWDKq.js";import{z as t}from"./index-BOQWfIQC.js";import{a as S}from"./components-DrvY4pal.js";import"./misc-BtjCSy-T.js";import"./tooltip-Bp9KHnLy.js";import"./pe-DXT2FOp1.js";const s={USER_CODE_RECEIVED:"USER_CODE_RECEIVED",AUTH_RESOLVED:"AUTH_RESOLVED",AUTH_REJECTED:"AUTH_REJECTED"},k=t.object({type:t.literal(s.USER_CODE_RECEIVED),code:t.string(),url:t.string()}),_=t.object({type:t.literal(s.AUTH_RESOLVED)}),w=t.object({type:t.literal(s.AUTH_REJECTED),error:t.string().optional().default("Unknown error")}),D=t.union([k,_,w]),P={getSitemapEntries:()=>null};function W(){var m;const{product:{displayName:a}}=N(),l=S(),[f,x]=i.useState(!1),[c,p]=i.useState(null),[o,h]=i.useState(null),d=g(),u=v(),n=j("/login-sse");return i.useEffect(()=>{if(!n)return;const E=JSON.parse(n),r=D.safeParse(E);if(!r.success){console.error(r.error.flatten());return}switch(r.data.type){case s.USER_CODE_RECEIVED:{h(r.data);break}case s.AUTH_RESOLVED:{u.revalidate(),d("/");break}case s.AUTH_REJECTED:{p(r.data.error);break}}},[n,d,u]),e.jsx("main",{className:"flex h-full w-full flex-grow flex-col items-center justify-center p-10",children:e.jsxs("div",{className:"flex flex-col items-center",children:[e.jsx(C,{className:"h-16 w-16"}),e.jsxs("h1",{className:"pt-5 text-2xl font-semibold md:text-3xl",children:["Login to ",a]}),e.jsxs("div",{className:"flex w-full flex-col items-center pt-5",children:[o?e.jsxs("div",{className:"flex w-full max-w-md flex-col items-center gap-3",children:[e.jsxs("div",{className:"my-2 flex w-full flex-col items-center gap-2",children:[e.jsx("p",{className:"text-lg",children:"Your verification code is: "}),e.jsx("div",{className:"mb-3 w-full bg-gray-100 px-5 py-3 text-center text-lg font-bold dark:bg-black/40",children:e.jsx("code",{children:o.code})}),e.jsxs("p",{className:"text-base",children:["You'll use this to verify your device on ",a,". Click verify code below to open the verification page."]})]}),e.jsx(y,{varient:"primary",to:o.url,target:"_blank",rel:"noreferrer",onClick:()=>x(!0),children:"Verify Auth Code"}),f?e.jsxs("div",{className:"justify-center pt-5 text-center opacity-60",children:[e.jsx(b,{className:"justify-center",children:"Waiting for confirmation"}),e.jsxs("p",{className:"pt-2",children:["Please open"," ",e.jsx("a",{href:o.url,target:"_blank",className:"underline",children:"your auth page"})," ","in a new tab to continue."]})]}):null]}):e.jsxs("div",{className:"flex flex-col items-center gap-8",children:[e.jsxs("div",{className:"flex max-w-lg flex-col gap-2 gap-3 pt-3 text-base text-gray-700 dark:text-gray-300",children:[e.jsxs("p",{children:["If you have access to this workshop on ",a,", you'll be able to watch videos, track progress, run tests, view the diffs, and more!"]}),e.jsxs("p",{children:["First you need to authenticate your device by requesting an access code and verifying on ",a,"."]})]}),e.jsx(l.Form,{method:"POST",children:e.jsx(R,{varient:"primary",type:"submit",children:l.state==="idle"&&((m=l.data)==null?void 0:m.status)!=="pending"?"Retrieve Auth Code":"Retrieving Auth Code..."})})]}),c?e.jsxs("div",{className:"mt-4 text-red-500",children:["There was an error: ",e.jsx("pre",{children:c})]}):null]})]})})}export{W as default,P as handle};
2
- //# sourceMappingURL=login-DoU7gifi.js.map
1
+ import{r as i,e as g,d as v,j as e}from"./index-CGzylDPY.js";import{u as j}from"./use-event-source-AZJtQsFX.js";import{a as y,B as R}from"./button-Hft_V1bH.js";import{L as b}from"./loading-DsHhjqzj.js";import{L as C}from"./product-CVL4Z9c0.js";import{u as N}from"./workshop-config-oL_FWDKq.js";import{z as t}from"./index-9OWT3nC-.js";import{a as S}from"./components-DrvY4pal.js";import"./misc-DoGPlBur.js";import"./tooltip-DT9kZxPw.js";import"./pe-DXT2FOp1.js";const s={USER_CODE_RECEIVED:"USER_CODE_RECEIVED",AUTH_RESOLVED:"AUTH_RESOLVED",AUTH_REJECTED:"AUTH_REJECTED"},k=t.object({type:t.literal(s.USER_CODE_RECEIVED),code:t.string(),url:t.string()}),_=t.object({type:t.literal(s.AUTH_RESOLVED)}),w=t.object({type:t.literal(s.AUTH_REJECTED),error:t.string().optional().default("Unknown error")}),D=t.union([k,_,w]),P={getSitemapEntries:()=>null};function W(){var m;const{product:{displayName:a}}=N(),l=S(),[f,x]=i.useState(!1),[c,p]=i.useState(null),[o,h]=i.useState(null),d=g(),u=v(),n=j("/login-sse");return i.useEffect(()=>{if(!n)return;const E=JSON.parse(n),r=D.safeParse(E);if(!r.success){console.error(r.error.flatten());return}switch(r.data.type){case s.USER_CODE_RECEIVED:{h(r.data);break}case s.AUTH_RESOLVED:{u.revalidate(),d("/");break}case s.AUTH_REJECTED:{p(r.data.error);break}}},[n,d,u]),e.jsx("main",{className:"flex h-full w-full flex-grow flex-col items-center justify-center p-10",children:e.jsxs("div",{className:"flex flex-col items-center",children:[e.jsx(C,{className:"h-16 w-16"}),e.jsxs("h1",{className:"pt-5 text-2xl font-semibold md:text-3xl",children:["Login to ",a]}),e.jsxs("div",{className:"flex w-full flex-col items-center pt-5",children:[o?e.jsxs("div",{className:"flex w-full max-w-md flex-col items-center gap-3",children:[e.jsxs("div",{className:"my-2 flex w-full flex-col items-center gap-2",children:[e.jsx("p",{className:"text-lg",children:"Your verification code is: "}),e.jsx("div",{className:"mb-3 w-full bg-gray-100 px-5 py-3 text-center text-lg font-bold dark:bg-black/40",children:e.jsx("code",{children:o.code})}),e.jsxs("p",{className:"text-base",children:["You'll use this to verify your device on ",a,". Click verify code below to open the verification page."]})]}),e.jsx(y,{varient:"primary",to:o.url,target:"_blank",rel:"noreferrer",onClick:()=>x(!0),children:"Verify Auth Code"}),f?e.jsxs("div",{className:"justify-center pt-5 text-center opacity-60",children:[e.jsx(b,{className:"justify-center",children:"Waiting for confirmation"}),e.jsxs("p",{className:"pt-2",children:["Please open"," ",e.jsx("a",{href:o.url,target:"_blank",className:"underline",children:"your auth page"})," ","in a new tab to continue."]})]}):null]}):e.jsxs("div",{className:"flex flex-col items-center gap-8",children:[e.jsxs("div",{className:"flex max-w-lg flex-col gap-2 gap-3 pt-3 text-base text-gray-700 dark:text-gray-300",children:[e.jsxs("p",{children:["If you have access to this workshop on ",a,", you'll be able to watch videos, track progress, run tests, view the diffs, and more!"]}),e.jsxs("p",{children:["First you need to authenticate your device by requesting an access code and verifying on ",a,"."]})]}),e.jsx(l.Form,{method:"POST",children:e.jsx(R,{varient:"primary",type:"submit",children:l.state==="idle"&&((m=l.data)==null?void 0:m.status)!=="pending"?"Retrieve Auth Code":"Retrieving Auth Code..."})})]}),c?e.jsxs("div",{className:"mt-4 text-red-500",children:["There was an error: ",e.jsx("pre",{children:c})]}):null]})]})})}export{W as default,P as handle};
2
+ //# sourceMappingURL=login-DJlKIofe.js.map