@satoshibits/react-json-schema-builder 1.0.0 → 1.0.1

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 (285) hide show
  1. package/README.md +142 -37
  2. package/dist/index.cjs100.js.map +1 -1
  3. package/dist/index.cjs101.js.map +1 -1
  4. package/dist/index.cjs102.js.map +1 -1
  5. package/dist/index.cjs103.js.map +1 -1
  6. package/dist/index.cjs104.js.map +1 -1
  7. package/dist/index.cjs105.js.map +1 -1
  8. package/dist/index.cjs106.js.map +1 -1
  9. package/dist/index.cjs107.js.map +1 -1
  10. package/dist/index.cjs108.js.map +1 -1
  11. package/dist/index.cjs109.js.map +1 -1
  12. package/dist/index.cjs11.js +1 -1
  13. package/dist/index.cjs12.js +1 -1
  14. package/dist/index.cjs13.js +1 -1
  15. package/dist/index.cjs14.js +1 -1
  16. package/dist/index.cjs15.js +1 -1
  17. package/dist/index.cjs16.js +1 -1
  18. package/dist/index.cjs17.js +1 -1
  19. package/dist/index.cjs18.js +1 -1
  20. package/dist/index.cjs20.js +1 -1
  21. package/dist/index.cjs21.js +1 -1
  22. package/dist/index.cjs22.js +1 -6
  23. package/dist/index.cjs22.js.map +1 -1
  24. package/dist/index.cjs23.js +1 -1
  25. package/dist/index.cjs23.js.map +1 -1
  26. package/dist/index.cjs24.js +1 -1
  27. package/dist/index.cjs24.js.map +1 -1
  28. package/dist/index.cjs25.js +1 -1
  29. package/dist/index.cjs25.js.map +1 -1
  30. package/dist/index.cjs26.js +1 -1
  31. package/dist/index.cjs26.js.map +1 -1
  32. package/dist/index.cjs27.js +6 -1
  33. package/dist/index.cjs27.js.map +1 -1
  34. package/dist/index.cjs28.js +1 -1
  35. package/dist/index.cjs28.js.map +1 -1
  36. package/dist/index.cjs29.js +1 -1
  37. package/dist/index.cjs29.js.map +1 -1
  38. package/dist/index.cjs3.js +1 -1
  39. package/dist/index.cjs3.js.map +1 -1
  40. package/dist/index.cjs30.js.map +1 -1
  41. package/dist/index.cjs31.js +1 -1
  42. package/dist/index.cjs31.js.map +1 -1
  43. package/dist/index.cjs33.js +4 -4
  44. package/dist/index.cjs33.js.map +1 -1
  45. package/dist/index.cjs34.js +12 -13
  46. package/dist/index.cjs34.js.map +1 -1
  47. package/dist/index.cjs35.js +1 -1
  48. package/dist/index.cjs35.js.map +1 -1
  49. package/dist/index.cjs38.js +1 -1
  50. package/dist/index.cjs38.js.map +1 -1
  51. package/dist/index.cjs40.js +1 -1
  52. package/dist/index.cjs40.js.map +1 -1
  53. package/dist/index.cjs41.js +1 -1
  54. package/dist/index.cjs41.js.map +1 -1
  55. package/dist/index.cjs42.js +6 -1
  56. package/dist/index.cjs42.js.map +1 -1
  57. package/dist/index.cjs43.js +6 -1
  58. package/dist/index.cjs43.js.map +1 -1
  59. package/dist/index.cjs44.js +6 -1
  60. package/dist/index.cjs44.js.map +1 -1
  61. package/dist/index.cjs45.js +1 -1
  62. package/dist/index.cjs45.js.map +1 -1
  63. package/dist/index.cjs46.js +1 -1
  64. package/dist/index.cjs46.js.map +1 -1
  65. package/dist/index.cjs47.js +1 -1
  66. package/dist/index.cjs47.js.map +1 -1
  67. package/dist/index.cjs48.js +1 -6
  68. package/dist/index.cjs48.js.map +1 -1
  69. package/dist/index.cjs49.js +1 -6
  70. package/dist/index.cjs49.js.map +1 -1
  71. package/dist/index.cjs5.js +1 -1
  72. package/dist/index.cjs50.js +1 -6
  73. package/dist/index.cjs50.js.map +1 -1
  74. package/dist/index.cjs51.js +1 -1
  75. package/dist/index.cjs51.js.map +1 -1
  76. package/dist/index.cjs52.js.map +1 -1
  77. package/dist/index.cjs55.js.map +1 -1
  78. package/dist/index.cjs56.js.map +1 -1
  79. package/dist/index.cjs57.js.map +1 -1
  80. package/dist/index.cjs58.js.map +1 -1
  81. package/dist/index.cjs6.js +1 -1
  82. package/dist/index.cjs61.js +1 -1
  83. package/dist/index.cjs61.js.map +1 -1
  84. package/dist/index.cjs62.js +1 -1
  85. package/dist/index.cjs62.js.map +1 -1
  86. package/dist/index.cjs63.js +1 -1
  87. package/dist/index.cjs63.js.map +1 -1
  88. package/dist/index.cjs65.js +1 -1
  89. package/dist/index.cjs65.js.map +1 -1
  90. package/dist/index.cjs66.js +1 -1
  91. package/dist/index.cjs66.js.map +1 -1
  92. package/dist/index.cjs67.js +1 -1
  93. package/dist/index.cjs67.js.map +1 -1
  94. package/dist/index.cjs68.js +1 -1
  95. package/dist/index.cjs68.js.map +1 -1
  96. package/dist/index.cjs69.js +1 -1
  97. package/dist/index.cjs69.js.map +1 -1
  98. package/dist/index.cjs7.js +1 -1
  99. package/dist/index.cjs70.js +1 -1
  100. package/dist/index.cjs70.js.map +1 -1
  101. package/dist/index.cjs71.js +1 -1
  102. package/dist/index.cjs71.js.map +1 -1
  103. package/dist/index.cjs72.js +1 -1
  104. package/dist/index.cjs72.js.map +1 -1
  105. package/dist/index.cjs73.js +1 -1
  106. package/dist/index.cjs73.js.map +1 -1
  107. package/dist/index.cjs74.js +1 -1
  108. package/dist/index.cjs74.js.map +1 -1
  109. package/dist/index.cjs75.js +1 -1
  110. package/dist/index.cjs75.js.map +1 -1
  111. package/dist/index.cjs76.js +1 -1
  112. package/dist/index.cjs76.js.map +1 -1
  113. package/dist/index.cjs77.js +1 -1
  114. package/dist/index.cjs77.js.map +1 -1
  115. package/dist/index.cjs78.js +1 -1
  116. package/dist/index.cjs78.js.map +1 -1
  117. package/dist/index.cjs79.js +1 -1
  118. package/dist/index.cjs79.js.map +1 -1
  119. package/dist/index.cjs8.js +1 -1
  120. package/dist/index.cjs80.js +1 -1
  121. package/dist/index.cjs80.js.map +1 -1
  122. package/dist/index.cjs81.js +1 -1
  123. package/dist/index.cjs81.js.map +1 -1
  124. package/dist/index.cjs82.js +1 -1
  125. package/dist/index.cjs82.js.map +1 -1
  126. package/dist/index.cjs83.js +1 -1
  127. package/dist/index.cjs83.js.map +1 -1
  128. package/dist/index.cjs84.js +1 -1
  129. package/dist/index.cjs84.js.map +1 -1
  130. package/dist/index.cjs85.js +1 -1
  131. package/dist/index.cjs85.js.map +1 -1
  132. package/dist/index.cjs86.js.map +1 -1
  133. package/dist/index.cjs87.js +1 -1
  134. package/dist/index.cjs87.js.map +1 -1
  135. package/dist/index.cjs90.js.map +1 -1
  136. package/dist/index.cjs91.js.map +1 -1
  137. package/dist/index.cjs92.js.map +1 -1
  138. package/dist/index.cjs93.js.map +1 -1
  139. package/dist/index.cjs94.js.map +1 -1
  140. package/dist/index.cjs95.js.map +1 -1
  141. package/dist/index.cjs96.js.map +1 -1
  142. package/dist/index.es100.js.map +1 -1
  143. package/dist/index.es101.js.map +1 -1
  144. package/dist/index.es102.js.map +1 -1
  145. package/dist/index.es103.js.map +1 -1
  146. package/dist/index.es104.js.map +1 -1
  147. package/dist/index.es105.js.map +1 -1
  148. package/dist/index.es106.js.map +1 -1
  149. package/dist/index.es107.js.map +1 -1
  150. package/dist/index.es108.js.map +1 -1
  151. package/dist/index.es109.js.map +1 -1
  152. package/dist/index.es11.js +1 -1
  153. package/dist/index.es12.js +2 -2
  154. package/dist/index.es13.js +1 -1
  155. package/dist/index.es14.js +5 -5
  156. package/dist/index.es15.js +1 -1
  157. package/dist/index.es16.js +5 -5
  158. package/dist/index.es17.js +1 -1
  159. package/dist/index.es18.js +1 -1
  160. package/dist/index.es20.js +1 -1
  161. package/dist/index.es21.js +7 -7
  162. package/dist/index.es22.js +6 -13
  163. package/dist/index.es22.js.map +1 -1
  164. package/dist/index.es23.js +6 -9
  165. package/dist/index.es23.js.map +1 -1
  166. package/dist/index.es24.js +9 -6
  167. package/dist/index.es24.js.map +1 -1
  168. package/dist/index.es25.js +6 -12
  169. package/dist/index.es25.js.map +1 -1
  170. package/dist/index.es26.js +13 -4
  171. package/dist/index.es26.js.map +1 -1
  172. package/dist/index.es27.js +10 -19
  173. package/dist/index.es27.js.map +1 -1
  174. package/dist/index.es28.js +17 -21
  175. package/dist/index.es28.js.map +1 -1
  176. package/dist/index.es29.js +22 -5
  177. package/dist/index.es29.js.map +1 -1
  178. package/dist/index.es3.js +212 -185
  179. package/dist/index.es3.js.map +1 -1
  180. package/dist/index.es30.js.map +1 -1
  181. package/dist/index.es31.js +3 -3
  182. package/dist/index.es31.js.map +1 -1
  183. package/dist/index.es33.js +17 -24
  184. package/dist/index.es33.js.map +1 -1
  185. package/dist/index.es34.js +527 -331
  186. package/dist/index.es34.js.map +1 -1
  187. package/dist/index.es35.js +1 -1
  188. package/dist/index.es35.js.map +1 -1
  189. package/dist/index.es38.js +1 -1
  190. package/dist/index.es38.js.map +1 -1
  191. package/dist/index.es40.js +6 -6
  192. package/dist/index.es40.js.map +1 -1
  193. package/dist/index.es41.js +815 -97
  194. package/dist/index.es41.js.map +1 -1
  195. package/dist/index.es42.js +10 -56
  196. package/dist/index.es42.js.map +1 -1
  197. package/dist/index.es43.js +10 -24
  198. package/dist/index.es43.js.map +1 -1
  199. package/dist/index.es44.js +10 -45
  200. package/dist/index.es44.js.map +1 -1
  201. package/dist/index.es45.js +97 -69
  202. package/dist/index.es45.js.map +1 -1
  203. package/dist/index.es46.js +52 -56
  204. package/dist/index.es46.js.map +1 -1
  205. package/dist/index.es47.js +19 -827
  206. package/dist/index.es47.js.map +1 -1
  207. package/dist/index.es48.js +45 -10
  208. package/dist/index.es48.js.map +1 -1
  209. package/dist/index.es49.js +86 -10
  210. package/dist/index.es49.js.map +1 -1
  211. package/dist/index.es5.js +3 -3
  212. package/dist/index.es50.js +60 -10
  213. package/dist/index.es50.js.map +1 -1
  214. package/dist/index.es51.js +2 -2
  215. package/dist/index.es51.js.map +1 -1
  216. package/dist/index.es52.js.map +1 -1
  217. package/dist/index.es55.js.map +1 -1
  218. package/dist/index.es56.js.map +1 -1
  219. package/dist/index.es57.js.map +1 -1
  220. package/dist/index.es58.js.map +1 -1
  221. package/dist/index.es6.js +3 -3
  222. package/dist/index.es61.js +11 -11
  223. package/dist/index.es61.js.map +1 -1
  224. package/dist/index.es62.js +1 -1
  225. package/dist/index.es62.js.map +1 -1
  226. package/dist/index.es63.js +26 -3
  227. package/dist/index.es63.js.map +1 -1
  228. package/dist/index.es65.js +62 -42
  229. package/dist/index.es65.js.map +1 -1
  230. package/dist/index.es66.js +28 -25
  231. package/dist/index.es66.js.map +1 -1
  232. package/dist/index.es67.js +4 -64
  233. package/dist/index.es67.js.map +1 -1
  234. package/dist/index.es68.js +24 -7
  235. package/dist/index.es68.js.map +1 -1
  236. package/dist/index.es69.js +31 -123
  237. package/dist/index.es69.js.map +1 -1
  238. package/dist/index.es7.js +3 -3
  239. package/dist/index.es70.js +3 -14
  240. package/dist/index.es70.js.map +1 -1
  241. package/dist/index.es71.js +41 -129
  242. package/dist/index.es71.js.map +1 -1
  243. package/dist/index.es72.js +7 -10
  244. package/dist/index.es72.js.map +1 -1
  245. package/dist/index.es73.js +112 -203
  246. package/dist/index.es73.js.map +1 -1
  247. package/dist/index.es74.js +15 -13
  248. package/dist/index.es74.js.map +1 -1
  249. package/dist/index.es75.js +132 -31
  250. package/dist/index.es75.js.map +1 -1
  251. package/dist/index.es76.js +10 -7
  252. package/dist/index.es76.js.map +1 -1
  253. package/dist/index.es77.js +212 -26
  254. package/dist/index.es77.js.map +1 -1
  255. package/dist/index.es78.js +13 -4
  256. package/dist/index.es78.js.map +1 -1
  257. package/dist/index.es79.js +7 -5
  258. package/dist/index.es79.js.map +1 -1
  259. package/dist/index.es8.js +3 -3
  260. package/dist/index.es80.js +3 -27
  261. package/dist/index.es80.js.map +1 -1
  262. package/dist/index.es81.js +28 -50
  263. package/dist/index.es81.js.map +1 -1
  264. package/dist/index.es82.js +50 -9
  265. package/dist/index.es82.js.map +1 -1
  266. package/dist/index.es83.js +9 -25
  267. package/dist/index.es83.js.map +1 -1
  268. package/dist/index.es84.js +2 -2
  269. package/dist/index.es84.js.map +1 -1
  270. package/dist/index.es85.js +1 -1
  271. package/dist/index.es85.js.map +1 -1
  272. package/dist/index.es86.js.map +1 -1
  273. package/dist/index.es87.js +1 -1
  274. package/dist/index.es87.js.map +1 -1
  275. package/dist/index.es90.js.map +1 -1
  276. package/dist/index.es91.js.map +1 -1
  277. package/dist/index.es92.js.map +1 -1
  278. package/dist/index.es93.js.map +1 -1
  279. package/dist/index.es94.js.map +1 -1
  280. package/dist/index.es95.js.map +1 -1
  281. package/dist/index.es96.js.map +1 -1
  282. package/dist/packages/builder/schema-builder.d.ts +20 -1
  283. package/dist/packages/builder/schema-builder.d.ts.map +1 -1
  284. package/dist/style.css +0 -3
  285. package/package.json +5 -3
@@ -1,117 +1,835 @@
1
- import { j as a } from "./index.es9.js";
2
- import { Root as n, Content as i, Close as l, Title as r, Description as d, Portal as c, Overlay as g } from "./index.es61.js";
3
- import { cn as o } from "./index.es29.js";
4
- import f from "./index.es30.js";
5
- function b({
6
- ...t
7
- }) {
8
- return /* @__PURE__ */ a.jsx(n, { "data-slot": "dialog", ...t });
9
- }
10
- function u({
11
- ...t
12
- }) {
13
- return /* @__PURE__ */ a.jsx(c, { "data-slot": "dialog-portal", ...t });
14
- }
15
- function m({
16
- className: t,
17
- ...e
18
- }) {
19
- return /* @__PURE__ */ a.jsx(
20
- g,
1
+ import * as t from "react";
2
+ import * as Re from "react-dom";
3
+ import { clamp as Te } from "./index.es70.js";
4
+ import { composeEventHandlers as R } from "./index.es64.js";
5
+ import { createCollection as et } from "./index.es71.js";
6
+ import { useComposedRefs as L } from "./index.es63.js";
7
+ import { createContextScope as tt } from "./index.es65.js";
8
+ import { useDirection as ot } from "./index.es72.js";
9
+ import { DismissableLayer as nt } from "./index.es73.js";
10
+ import { useFocusGuards as rt } from "./index.es74.js";
11
+ import { FocusScope as st } from "./index.es75.js";
12
+ import { useId as ye } from "./index.es76.js";
13
+ import { createPopperScope as Ee, Root as lt, Anchor as ct, Content as it, Arrow as at } from "./index.es77.js";
14
+ import { Portal as dt } from "./index.es78.js";
15
+ import { Primitive as M } from "./index.es69.js";
16
+ import { Slot as ut } from "./index.es38.js";
17
+ import { useCallbackRef as pt } from "./index.es79.js";
18
+ import { useControllableState as Pe } from "./index.es66.js";
19
+ import { useLayoutEffect as z } from "./index.es80.js";
20
+ import { usePrevious as ft } from "./index.es67.js";
21
+ import { VisuallyHidden as mt } from "./index.es81.js";
22
+ import { hideOthers as ht } from "./index.es82.js";
23
+ import vt from "./index.es83.js";
24
+ import { j as d } from "./index.es9.js";
25
+ var gt = [" ", "Enter", "ArrowUp", "ArrowDown"], St = [" ", "Enter"], re = "Select", [ie, ae, xt] = et(re), [ee, lo] = tt(re, [
26
+ xt,
27
+ Ee
28
+ ]), de = Ee(), [wt, Y] = ee(re), [Ct, yt] = ee(re), be = (o) => {
29
+ const {
30
+ __scopeSelect: i,
31
+ children: e,
32
+ open: c,
33
+ defaultOpen: r,
34
+ onOpenChange: u,
35
+ value: n,
36
+ defaultValue: s,
37
+ onValueChange: l,
38
+ dir: f,
39
+ name: g,
40
+ autoComplete: w,
41
+ disabled: E,
42
+ required: T,
43
+ form: y
44
+ } = o, a = de(i), [h, S] = t.useState(null), [m, v] = t.useState(null), [W, O] = t.useState(!1), te = ot(f), [b = !1, D] = Pe({
45
+ prop: c,
46
+ defaultProp: r,
47
+ onChange: u
48
+ }), [U, X] = Pe({
49
+ prop: n,
50
+ defaultProp: s,
51
+ onChange: l
52
+ }), k = t.useRef(null), V = h ? y || !!h.closest("form") : !0, [K, B] = t.useState(/* @__PURE__ */ new Set()), H = Array.from(K).map((N) => N.props.value).join(";");
53
+ return /* @__PURE__ */ d.jsx(lt, { ...a, children: /* @__PURE__ */ d.jsxs(
54
+ wt,
21
55
  {
22
- "data-slot": "dialog-overlay",
23
- className: o(
24
- "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80",
25
- t
26
- ),
27
- ...e
56
+ required: T,
57
+ scope: i,
58
+ trigger: h,
59
+ onTriggerChange: S,
60
+ valueNode: m,
61
+ onValueNodeChange: v,
62
+ valueNodeHasChildren: W,
63
+ onValueNodeHasChildrenChange: O,
64
+ contentId: ye(),
65
+ value: U,
66
+ onValueChange: X,
67
+ open: b,
68
+ onOpenChange: D,
69
+ dir: te,
70
+ triggerPointerDownPosRef: k,
71
+ disabled: E,
72
+ children: [
73
+ /* @__PURE__ */ d.jsx(ie.Provider, { scope: i, children: /* @__PURE__ */ d.jsx(
74
+ Ct,
75
+ {
76
+ scope: o.__scopeSelect,
77
+ onNativeOptionAdd: t.useCallback((N) => {
78
+ B((j) => new Set(j).add(N));
79
+ }, []),
80
+ onNativeOptionRemove: t.useCallback((N) => {
81
+ B((j) => {
82
+ const F = new Set(j);
83
+ return F.delete(N), F;
84
+ });
85
+ }, []),
86
+ children: e
87
+ }
88
+ ) }),
89
+ V ? /* @__PURE__ */ d.jsxs(
90
+ $e,
91
+ {
92
+ "aria-hidden": !0,
93
+ required: T,
94
+ tabIndex: -1,
95
+ name: g,
96
+ autoComplete: w,
97
+ value: U,
98
+ onChange: (N) => X(N.target.value),
99
+ disabled: E,
100
+ form: y,
101
+ children: [
102
+ U === void 0 ? /* @__PURE__ */ d.jsx("option", { value: "" }) : null,
103
+ Array.from(K)
104
+ ]
105
+ },
106
+ H
107
+ ) : null
108
+ ]
28
109
  }
29
- );
30
- }
31
- function h({
32
- className: t,
33
- children: e,
34
- ...s
35
- }) {
36
- return /* @__PURE__ */ a.jsxs(u, { "data-slot": "dialog-portal", children: [
37
- /* @__PURE__ */ a.jsx(m, {}),
38
- /* @__PURE__ */ a.jsxs(
39
- i,
110
+ ) });
111
+ };
112
+ be.displayName = re;
113
+ var Ne = "SelectTrigger", _e = t.forwardRef(
114
+ (o, i) => {
115
+ const { __scopeSelect: e, disabled: c = !1, ...r } = o, u = de(e), n = Y(Ne, e), s = n.disabled || c, l = L(i, n.onTriggerChange), f = ae(e), g = t.useRef("touch"), [w, E, T] = Je((a) => {
116
+ const h = f().filter((v) => !v.disabled), S = h.find((v) => v.value === n.value), m = Qe(h, a, S);
117
+ m !== void 0 && n.onValueChange(m.value);
118
+ }), y = (a) => {
119
+ s || (n.onOpenChange(!0), T()), a && (n.triggerPointerDownPosRef.current = {
120
+ x: Math.round(a.pageX),
121
+ y: Math.round(a.pageY)
122
+ });
123
+ };
124
+ return /* @__PURE__ */ d.jsx(ct, { asChild: !0, ...u, children: /* @__PURE__ */ d.jsx(
125
+ M.button,
126
+ {
127
+ type: "button",
128
+ role: "combobox",
129
+ "aria-controls": n.contentId,
130
+ "aria-expanded": n.open,
131
+ "aria-required": n.required,
132
+ "aria-autocomplete": "none",
133
+ dir: n.dir,
134
+ "data-state": n.open ? "open" : "closed",
135
+ disabled: s,
136
+ "data-disabled": s ? "" : void 0,
137
+ "data-placeholder": Ze(n.value) ? "" : void 0,
138
+ ...r,
139
+ ref: l,
140
+ onClick: R(r.onClick, (a) => {
141
+ a.currentTarget.focus(), g.current !== "mouse" && y(a);
142
+ }),
143
+ onPointerDown: R(r.onPointerDown, (a) => {
144
+ g.current = a.pointerType;
145
+ const h = a.target;
146
+ h.hasPointerCapture(a.pointerId) && h.releasePointerCapture(a.pointerId), a.button === 0 && a.ctrlKey === !1 && a.pointerType === "mouse" && (y(a), a.preventDefault());
147
+ }),
148
+ onKeyDown: R(r.onKeyDown, (a) => {
149
+ const h = w.current !== "";
150
+ !(a.ctrlKey || a.altKey || a.metaKey) && a.key.length === 1 && E(a.key), !(h && a.key === " ") && gt.includes(a.key) && (y(), a.preventDefault());
151
+ })
152
+ }
153
+ ) });
154
+ }
155
+ );
156
+ _e.displayName = Ne;
157
+ var Me = "SelectValue", Oe = t.forwardRef(
158
+ (o, i) => {
159
+ const { __scopeSelect: e, className: c, style: r, children: u, placeholder: n = "", ...s } = o, l = Y(Me, e), { onValueNodeHasChildrenChange: f } = l, g = u !== void 0, w = L(i, l.onValueNodeChange);
160
+ return z(() => {
161
+ f(g);
162
+ }, [f, g]), /* @__PURE__ */ d.jsx(
163
+ M.span,
40
164
  {
41
- "data-slot": "dialog-content",
42
- className: o(
43
- "bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",
44
- t
45
- ),
46
165
  ...s,
47
- children: [
48
- e,
49
- /* @__PURE__ */ a.jsxs(l, { className: "ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", children: [
50
- /* @__PURE__ */ a.jsx(f, {}),
51
- /* @__PURE__ */ a.jsx("span", { className: "sr-only", children: "Close" })
52
- ] })
53
- ]
166
+ ref: w,
167
+ style: { pointerEvents: "none" },
168
+ children: Ze(l.value) ? /* @__PURE__ */ d.jsx(d.Fragment, { children: n }) : u
54
169
  }
55
- )
56
- ] });
57
- }
58
- function D({ className: t, ...e }) {
59
- return /* @__PURE__ */ a.jsx(
60
- "div",
61
- {
62
- "data-slot": "dialog-header",
63
- className: o("flex flex-col gap-2 text-center sm:text-left", t),
64
- ...e
170
+ );
171
+ }
172
+ );
173
+ Oe.displayName = Me;
174
+ var It = "SelectIcon", Ae = t.forwardRef(
175
+ (o, i) => {
176
+ const { __scopeSelect: e, children: c, ...r } = o;
177
+ return /* @__PURE__ */ d.jsx(M.span, { "aria-hidden": !0, ...r, ref: i, children: c || "▼" });
178
+ }
179
+ );
180
+ Ae.displayName = It;
181
+ var Tt = "SelectPortal", De = (o) => /* @__PURE__ */ d.jsx(dt, { asChild: !0, ...o });
182
+ De.displayName = Tt;
183
+ var J = "SelectContent", je = t.forwardRef(
184
+ (o, i) => {
185
+ const e = Y(J, o.__scopeSelect), [c, r] = t.useState();
186
+ if (z(() => {
187
+ r(new DocumentFragment());
188
+ }, []), !e.open) {
189
+ const u = c;
190
+ return u ? Re.createPortal(
191
+ /* @__PURE__ */ d.jsx(Le, { scope: o.__scopeSelect, children: /* @__PURE__ */ d.jsx(ie.Slot, { scope: o.__scopeSelect, children: /* @__PURE__ */ d.jsx("div", { children: o.children }) }) }),
192
+ u
193
+ ) : null;
194
+ }
195
+ return /* @__PURE__ */ d.jsx(ke, { ...o, ref: i });
196
+ }
197
+ );
198
+ je.displayName = J;
199
+ var A = 10, [Le, q] = ee(J), Pt = "SelectContentImpl", ke = t.forwardRef(
200
+ (o, i) => {
201
+ const {
202
+ __scopeSelect: e,
203
+ position: c = "item-aligned",
204
+ onCloseAutoFocus: r,
205
+ onEscapeKeyDown: u,
206
+ onPointerDownOutside: n,
207
+ //
208
+ // PopperContent props
209
+ side: s,
210
+ sideOffset: l,
211
+ align: f,
212
+ alignOffset: g,
213
+ arrowPadding: w,
214
+ collisionBoundary: E,
215
+ collisionPadding: T,
216
+ sticky: y,
217
+ hideWhenDetached: a,
218
+ avoidCollisions: h,
219
+ //
220
+ ...S
221
+ } = o, m = Y(J, e), [v, W] = t.useState(null), [O, te] = t.useState(null), b = L(i, (p) => W(p)), [D, U] = t.useState(null), [X, k] = t.useState(
222
+ null
223
+ ), V = ae(e), [K, B] = t.useState(!1), H = t.useRef(!1);
224
+ t.useEffect(() => {
225
+ if (v) return ht(v);
226
+ }, [v]), rt();
227
+ const N = t.useCallback(
228
+ (p) => {
229
+ const [I, ..._] = V().map((P) => P.ref.current), [x] = _.slice(-1), C = document.activeElement;
230
+ for (const P of p)
231
+ if (P === C || (P?.scrollIntoView({ block: "nearest" }), P === I && O && (O.scrollTop = 0), P === x && O && (O.scrollTop = O.scrollHeight), P?.focus(), document.activeElement !== C)) return;
232
+ },
233
+ [V, O]
234
+ ), j = t.useCallback(
235
+ () => N([D, v]),
236
+ [N, D, v]
237
+ );
238
+ t.useEffect(() => {
239
+ K && j();
240
+ }, [K, j]);
241
+ const { onOpenChange: F, triggerPointerDownPosRef: G } = m;
242
+ t.useEffect(() => {
243
+ if (v) {
244
+ let p = { x: 0, y: 0 };
245
+ const I = (x) => {
246
+ p = {
247
+ x: Math.abs(Math.round(x.pageX) - (G.current?.x ?? 0)),
248
+ y: Math.abs(Math.round(x.pageY) - (G.current?.y ?? 0))
249
+ };
250
+ }, _ = (x) => {
251
+ p.x <= 10 && p.y <= 10 ? x.preventDefault() : v.contains(x.target) || F(!1), document.removeEventListener("pointermove", I), G.current = null;
252
+ };
253
+ return G.current !== null && (document.addEventListener("pointermove", I), document.addEventListener("pointerup", _, { capture: !0, once: !0 })), () => {
254
+ document.removeEventListener("pointermove", I), document.removeEventListener("pointerup", _, { capture: !0 });
255
+ };
256
+ }
257
+ }, [v, F, G]), t.useEffect(() => {
258
+ const p = () => F(!1);
259
+ return window.addEventListener("blur", p), window.addEventListener("resize", p), () => {
260
+ window.removeEventListener("blur", p), window.removeEventListener("resize", p);
261
+ };
262
+ }, [F]);
263
+ const [ue, se] = Je((p) => {
264
+ const I = V().filter((C) => !C.disabled), _ = I.find((C) => C.ref.current === document.activeElement), x = Qe(I, p, _);
265
+ x && setTimeout(() => x.ref.current.focus());
266
+ }), pe = t.useCallback(
267
+ (p, I, _) => {
268
+ const x = !H.current && !_;
269
+ (m.value !== void 0 && m.value === I || x) && (U(p), x && (H.current = !0));
270
+ },
271
+ [m.value]
272
+ ), fe = t.useCallback(() => v?.focus(), [v]), Q = t.useCallback(
273
+ (p, I, _) => {
274
+ const x = !H.current && !_;
275
+ (m.value !== void 0 && m.value === I || x) && k(p);
276
+ },
277
+ [m.value]
278
+ ), le = c === "popper" ? ge : Ve, oe = le === ge ? {
279
+ side: s,
280
+ sideOffset: l,
281
+ align: f,
282
+ alignOffset: g,
283
+ arrowPadding: w,
284
+ collisionBoundary: E,
285
+ collisionPadding: T,
286
+ sticky: y,
287
+ hideWhenDetached: a,
288
+ avoidCollisions: h
289
+ } : {};
290
+ return /* @__PURE__ */ d.jsx(
291
+ Le,
292
+ {
293
+ scope: e,
294
+ content: v,
295
+ viewport: O,
296
+ onViewportChange: te,
297
+ itemRefCallback: pe,
298
+ selectedItem: D,
299
+ onItemLeave: fe,
300
+ itemTextRefCallback: Q,
301
+ focusSelectedItem: j,
302
+ selectedItemText: X,
303
+ position: c,
304
+ isPositioned: K,
305
+ searchRef: ue,
306
+ children: /* @__PURE__ */ d.jsx(vt, { as: ut, allowPinchZoom: !0, children: /* @__PURE__ */ d.jsx(
307
+ st,
308
+ {
309
+ asChild: !0,
310
+ trapped: m.open,
311
+ onMountAutoFocus: (p) => {
312
+ p.preventDefault();
313
+ },
314
+ onUnmountAutoFocus: R(r, (p) => {
315
+ m.trigger?.focus({ preventScroll: !0 }), p.preventDefault();
316
+ }),
317
+ children: /* @__PURE__ */ d.jsx(
318
+ nt,
319
+ {
320
+ asChild: !0,
321
+ disableOutsidePointerEvents: !0,
322
+ onEscapeKeyDown: u,
323
+ onPointerDownOutside: n,
324
+ onFocusOutside: (p) => p.preventDefault(),
325
+ onDismiss: () => m.onOpenChange(!1),
326
+ children: /* @__PURE__ */ d.jsx(
327
+ le,
328
+ {
329
+ role: "listbox",
330
+ id: m.contentId,
331
+ "data-state": m.open ? "open" : "closed",
332
+ dir: m.dir,
333
+ onContextMenu: (p) => p.preventDefault(),
334
+ ...S,
335
+ ...oe,
336
+ onPlaced: () => B(!0),
337
+ ref: b,
338
+ style: {
339
+ // flex layout so we can place the scroll buttons properly
340
+ display: "flex",
341
+ flexDirection: "column",
342
+ // reset the outline by default as the content MAY get focused
343
+ outline: "none",
344
+ ...S.style
345
+ },
346
+ onKeyDown: R(S.onKeyDown, (p) => {
347
+ const I = p.ctrlKey || p.altKey || p.metaKey;
348
+ if (p.key === "Tab" && p.preventDefault(), !I && p.key.length === 1 && se(p.key), ["ArrowUp", "ArrowDown", "Home", "End"].includes(p.key)) {
349
+ let x = V().filter((C) => !C.disabled).map((C) => C.ref.current);
350
+ if (["ArrowUp", "End"].includes(p.key) && (x = x.slice().reverse()), ["ArrowUp", "ArrowDown"].includes(p.key)) {
351
+ const C = p.target, P = x.indexOf(C);
352
+ x = x.slice(P + 1);
353
+ }
354
+ setTimeout(() => N(x)), p.preventDefault();
355
+ }
356
+ })
357
+ }
358
+ )
359
+ }
360
+ )
361
+ }
362
+ ) })
363
+ }
364
+ );
365
+ }
366
+ );
367
+ ke.displayName = Pt;
368
+ var Rt = "SelectItemAlignedPosition", Ve = t.forwardRef((o, i) => {
369
+ const { __scopeSelect: e, onPlaced: c, ...r } = o, u = Y(J, e), n = q(J, e), [s, l] = t.useState(null), [f, g] = t.useState(null), w = L(i, (b) => g(b)), E = ae(e), T = t.useRef(!1), y = t.useRef(!0), { viewport: a, selectedItem: h, selectedItemText: S, focusSelectedItem: m } = n, v = t.useCallback(() => {
370
+ if (u.trigger && u.valueNode && s && f && a && h && S) {
371
+ const b = u.trigger.getBoundingClientRect(), D = f.getBoundingClientRect(), U = u.valueNode.getBoundingClientRect(), X = S.getBoundingClientRect();
372
+ if (u.dir !== "rtl") {
373
+ const C = X.left - D.left, P = U.left - C, Z = b.left - P, $ = b.width + Z, me = Math.max($, D.width), he = window.innerWidth - A, ve = Te(P, [
374
+ A,
375
+ // Prevents the content from going off the starting edge of the
376
+ // viewport. It may still go off the ending edge, but this can be
377
+ // controlled by the user since they may want to manage overflow in a
378
+ // specific way.
379
+ // https://github.com/radix-ui/primitives/issues/2049
380
+ Math.max(A, he - me)
381
+ ]);
382
+ s.style.minWidth = $ + "px", s.style.left = ve + "px";
383
+ } else {
384
+ const C = D.right - X.right, P = window.innerWidth - U.right - C, Z = window.innerWidth - b.right - P, $ = b.width + Z, me = Math.max($, D.width), he = window.innerWidth - A, ve = Te(P, [
385
+ A,
386
+ Math.max(A, he - me)
387
+ ]);
388
+ s.style.minWidth = $ + "px", s.style.right = ve + "px";
389
+ }
390
+ const k = E(), V = window.innerHeight - A * 2, K = a.scrollHeight, B = window.getComputedStyle(f), H = parseInt(B.borderTopWidth, 10), N = parseInt(B.paddingTop, 10), j = parseInt(B.borderBottomWidth, 10), F = parseInt(B.paddingBottom, 10), G = H + N + K + F + j, ue = Math.min(h.offsetHeight * 5, G), se = window.getComputedStyle(a), pe = parseInt(se.paddingTop, 10), fe = parseInt(se.paddingBottom, 10), Q = b.top + b.height / 2 - A, le = V - Q, oe = h.offsetHeight / 2, p = h.offsetTop + oe, I = H + N + p, _ = G - I;
391
+ if (I <= Q) {
392
+ const C = k.length > 0 && h === k[k.length - 1].ref.current;
393
+ s.style.bottom = "0px";
394
+ const P = f.clientHeight - a.offsetTop - a.offsetHeight, Z = Math.max(
395
+ le,
396
+ oe + // viewport might have padding bottom, include it to avoid a scrollable viewport
397
+ (C ? fe : 0) + P + j
398
+ ), $ = I + Z;
399
+ s.style.height = $ + "px";
400
+ } else {
401
+ const C = k.length > 0 && h === k[0].ref.current;
402
+ s.style.top = "0px";
403
+ const Z = Math.max(
404
+ Q,
405
+ H + a.offsetTop + // viewport might have padding top, include it to avoid a scrollable viewport
406
+ (C ? pe : 0) + oe
407
+ ) + _;
408
+ s.style.height = Z + "px", a.scrollTop = I - Q + a.offsetTop;
409
+ }
410
+ s.style.margin = `${A}px 0`, s.style.minHeight = ue + "px", s.style.maxHeight = V + "px", c?.(), requestAnimationFrame(() => T.current = !0);
65
411
  }
412
+ }, [
413
+ E,
414
+ u.trigger,
415
+ u.valueNode,
416
+ s,
417
+ f,
418
+ a,
419
+ h,
420
+ S,
421
+ u.dir,
422
+ c
423
+ ]);
424
+ z(() => v(), [v]);
425
+ const [W, O] = t.useState();
426
+ z(() => {
427
+ f && O(window.getComputedStyle(f).zIndex);
428
+ }, [f]);
429
+ const te = t.useCallback(
430
+ (b) => {
431
+ b && y.current === !0 && (v(), m?.(), y.current = !1);
432
+ },
433
+ [v, m]
66
434
  );
67
- }
68
- function y({ className: t, ...e }) {
69
- return /* @__PURE__ */ a.jsx(
70
- "div",
435
+ return /* @__PURE__ */ d.jsx(
436
+ bt,
71
437
  {
72
- "data-slot": "dialog-footer",
73
- className: o(
74
- "flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",
75
- t
76
- ),
77
- ...e
438
+ scope: e,
439
+ contentWrapper: s,
440
+ shouldExpandOnScrollRef: T,
441
+ onScrollButtonChange: te,
442
+ children: /* @__PURE__ */ d.jsx(
443
+ "div",
444
+ {
445
+ ref: l,
446
+ style: {
447
+ display: "flex",
448
+ flexDirection: "column",
449
+ position: "fixed",
450
+ zIndex: W
451
+ },
452
+ children: /* @__PURE__ */ d.jsx(
453
+ M.div,
454
+ {
455
+ ...r,
456
+ ref: w,
457
+ style: {
458
+ // When we get the height of the content, it includes borders. If we were to set
459
+ // the height without having `boxSizing: 'border-box'` it would be too big.
460
+ boxSizing: "border-box",
461
+ // We need to ensure the content doesn't get taller than the wrapper
462
+ maxHeight: "100%",
463
+ ...r.style
464
+ }
465
+ }
466
+ )
467
+ }
468
+ )
78
469
  }
79
470
  );
80
- }
81
- function N({
82
- className: t,
83
- ...e
84
- }) {
85
- return /* @__PURE__ */ a.jsx(
86
- r,
471
+ });
472
+ Ve.displayName = Rt;
473
+ var Et = "SelectPopperPosition", ge = t.forwardRef((o, i) => {
474
+ const {
475
+ __scopeSelect: e,
476
+ align: c = "start",
477
+ collisionPadding: r = A,
478
+ ...u
479
+ } = o, n = de(e);
480
+ return /* @__PURE__ */ d.jsx(
481
+ it,
87
482
  {
88
- "data-slot": "dialog-title",
89
- className: o("text-lg leading-none font-semibold", t),
90
- ...e
483
+ ...n,
484
+ ...u,
485
+ ref: i,
486
+ align: c,
487
+ collisionPadding: r,
488
+ style: {
489
+ // Ensure border-box for floating-ui calculations
490
+ boxSizing: "border-box",
491
+ ...u.style,
492
+ "--radix-select-content-transform-origin": "var(--radix-popper-transform-origin)",
493
+ "--radix-select-content-available-width": "var(--radix-popper-available-width)",
494
+ "--radix-select-content-available-height": "var(--radix-popper-available-height)",
495
+ "--radix-select-trigger-width": "var(--radix-popper-anchor-width)",
496
+ "--radix-select-trigger-height": "var(--radix-popper-anchor-height)"
497
+ }
91
498
  }
92
499
  );
93
- }
94
- function z({
95
- className: t,
96
- ...e
97
- }) {
98
- return /* @__PURE__ */ a.jsx(
99
- d,
500
+ });
501
+ ge.displayName = Et;
502
+ var [bt, Ie] = ee(J, {}), Se = "SelectViewport", Be = t.forwardRef(
503
+ (o, i) => {
504
+ const { __scopeSelect: e, nonce: c, ...r } = o, u = q(Se, e), n = Ie(Se, e), s = L(i, u.onViewportChange), l = t.useRef(0);
505
+ return /* @__PURE__ */ d.jsxs(d.Fragment, { children: [
506
+ /* @__PURE__ */ d.jsx(
507
+ "style",
508
+ {
509
+ dangerouslySetInnerHTML: {
510
+ __html: "[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"
511
+ },
512
+ nonce: c
513
+ }
514
+ ),
515
+ /* @__PURE__ */ d.jsx(ie.Slot, { scope: e, children: /* @__PURE__ */ d.jsx(
516
+ M.div,
517
+ {
518
+ "data-radix-select-viewport": "",
519
+ role: "presentation",
520
+ ...r,
521
+ ref: s,
522
+ style: {
523
+ // we use position: 'relative' here on the `viewport` so that when we call
524
+ // `selectedItem.offsetTop` in calculations, the offset is relative to the viewport
525
+ // (independent of the scrollUpButton).
526
+ position: "relative",
527
+ flex: 1,
528
+ // Viewport should only be scrollable in the vertical direction.
529
+ // This won't work in vertical writing modes, so we'll need to
530
+ // revisit this if/when that is supported
531
+ // https://developer.chrome.com/blog/vertical-form-controls
532
+ overflow: "hidden auto",
533
+ ...r.style
534
+ },
535
+ onScroll: R(r.onScroll, (f) => {
536
+ const g = f.currentTarget, { contentWrapper: w, shouldExpandOnScrollRef: E } = n;
537
+ if (E?.current && w) {
538
+ const T = Math.abs(l.current - g.scrollTop);
539
+ if (T > 0) {
540
+ const y = window.innerHeight - A * 2, a = parseFloat(w.style.minHeight), h = parseFloat(w.style.height), S = Math.max(a, h);
541
+ if (S < y) {
542
+ const m = S + T, v = Math.min(y, m), W = m - v;
543
+ w.style.height = v + "px", w.style.bottom === "0px" && (g.scrollTop = W > 0 ? W : 0, w.style.justifyContent = "flex-end");
544
+ }
545
+ }
546
+ }
547
+ l.current = g.scrollTop;
548
+ })
549
+ }
550
+ ) })
551
+ ] });
552
+ }
553
+ );
554
+ Be.displayName = Se;
555
+ var He = "SelectGroup", [Nt, _t] = ee(He), Mt = t.forwardRef(
556
+ (o, i) => {
557
+ const { __scopeSelect: e, ...c } = o, r = ye();
558
+ return /* @__PURE__ */ d.jsx(Nt, { scope: e, id: r, children: /* @__PURE__ */ d.jsx(M.div, { role: "group", "aria-labelledby": r, ...c, ref: i }) });
559
+ }
560
+ );
561
+ Mt.displayName = He;
562
+ var Fe = "SelectLabel", Ot = t.forwardRef(
563
+ (o, i) => {
564
+ const { __scopeSelect: e, ...c } = o, r = _t(Fe, e);
565
+ return /* @__PURE__ */ d.jsx(M.div, { id: r.id, ...c, ref: i });
566
+ }
567
+ );
568
+ Ot.displayName = Fe;
569
+ var ce = "SelectItem", [At, We] = ee(ce), Ue = t.forwardRef(
570
+ (o, i) => {
571
+ const {
572
+ __scopeSelect: e,
573
+ value: c,
574
+ disabled: r = !1,
575
+ textValue: u,
576
+ ...n
577
+ } = o, s = Y(ce, e), l = q(ce, e), f = s.value === c, [g, w] = t.useState(u ?? ""), [E, T] = t.useState(!1), y = L(
578
+ i,
579
+ (m) => l.itemRefCallback?.(m, c, r)
580
+ ), a = ye(), h = t.useRef("touch"), S = () => {
581
+ r || (s.onValueChange(c), s.onOpenChange(!1));
582
+ };
583
+ if (c === "")
584
+ throw new Error(
585
+ "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."
586
+ );
587
+ return /* @__PURE__ */ d.jsx(
588
+ At,
589
+ {
590
+ scope: e,
591
+ value: c,
592
+ disabled: r,
593
+ textId: a,
594
+ isSelected: f,
595
+ onItemTextChange: t.useCallback((m) => {
596
+ w((v) => v || (m?.textContent ?? "").trim());
597
+ }, []),
598
+ children: /* @__PURE__ */ d.jsx(
599
+ ie.ItemSlot,
600
+ {
601
+ scope: e,
602
+ value: c,
603
+ disabled: r,
604
+ textValue: g,
605
+ children: /* @__PURE__ */ d.jsx(
606
+ M.div,
607
+ {
608
+ role: "option",
609
+ "aria-labelledby": a,
610
+ "data-highlighted": E ? "" : void 0,
611
+ "aria-selected": f && E,
612
+ "data-state": f ? "checked" : "unchecked",
613
+ "aria-disabled": r || void 0,
614
+ "data-disabled": r ? "" : void 0,
615
+ tabIndex: r ? void 0 : -1,
616
+ ...n,
617
+ ref: y,
618
+ onFocus: R(n.onFocus, () => T(!0)),
619
+ onBlur: R(n.onBlur, () => T(!1)),
620
+ onClick: R(n.onClick, () => {
621
+ h.current !== "mouse" && S();
622
+ }),
623
+ onPointerUp: R(n.onPointerUp, () => {
624
+ h.current === "mouse" && S();
625
+ }),
626
+ onPointerDown: R(n.onPointerDown, (m) => {
627
+ h.current = m.pointerType;
628
+ }),
629
+ onPointerMove: R(n.onPointerMove, (m) => {
630
+ h.current = m.pointerType, r ? l.onItemLeave?.() : h.current === "mouse" && m.currentTarget.focus({ preventScroll: !0 });
631
+ }),
632
+ onPointerLeave: R(n.onPointerLeave, (m) => {
633
+ m.currentTarget === document.activeElement && l.onItemLeave?.();
634
+ }),
635
+ onKeyDown: R(n.onKeyDown, (m) => {
636
+ l.searchRef?.current !== "" && m.key === " " || (St.includes(m.key) && S(), m.key === " " && m.preventDefault());
637
+ })
638
+ }
639
+ )
640
+ }
641
+ )
642
+ }
643
+ );
644
+ }
645
+ );
646
+ Ue.displayName = ce;
647
+ var ne = "SelectItemText", Ke = t.forwardRef(
648
+ (o, i) => {
649
+ const { __scopeSelect: e, className: c, style: r, ...u } = o, n = Y(ne, e), s = q(ne, e), l = We(ne, e), f = yt(ne, e), [g, w] = t.useState(null), E = L(
650
+ i,
651
+ (S) => w(S),
652
+ l.onItemTextChange,
653
+ (S) => s.itemTextRefCallback?.(S, l.value, l.disabled)
654
+ ), T = g?.textContent, y = t.useMemo(
655
+ () => /* @__PURE__ */ d.jsx("option", { value: l.value, disabled: l.disabled, children: T }, l.value),
656
+ [l.disabled, l.value, T]
657
+ ), { onNativeOptionAdd: a, onNativeOptionRemove: h } = f;
658
+ return z(() => (a(y), () => h(y)), [a, h, y]), /* @__PURE__ */ d.jsxs(d.Fragment, { children: [
659
+ /* @__PURE__ */ d.jsx(M.span, { id: l.textId, ...u, ref: E }),
660
+ l.isSelected && n.valueNode && !n.valueNodeHasChildren ? Re.createPortal(u.children, n.valueNode) : null
661
+ ] });
662
+ }
663
+ );
664
+ Ke.displayName = ne;
665
+ var Ge = "SelectItemIndicator", ze = t.forwardRef(
666
+ (o, i) => {
667
+ const { __scopeSelect: e, ...c } = o;
668
+ return We(Ge, e).isSelected ? /* @__PURE__ */ d.jsx(M.span, { "aria-hidden": !0, ...c, ref: i }) : null;
669
+ }
670
+ );
671
+ ze.displayName = Ge;
672
+ var xe = "SelectScrollUpButton", Ye = t.forwardRef((o, i) => {
673
+ const e = q(xe, o.__scopeSelect), c = Ie(xe, o.__scopeSelect), [r, u] = t.useState(!1), n = L(i, c.onScrollButtonChange);
674
+ return z(() => {
675
+ if (e.viewport && e.isPositioned) {
676
+ let s = function() {
677
+ const f = l.scrollTop > 0;
678
+ u(f);
679
+ };
680
+ const l = e.viewport;
681
+ return s(), l.addEventListener("scroll", s), () => l.removeEventListener("scroll", s);
682
+ }
683
+ }, [e.viewport, e.isPositioned]), r ? /* @__PURE__ */ d.jsx(
684
+ Xe,
685
+ {
686
+ ...o,
687
+ ref: n,
688
+ onAutoScroll: () => {
689
+ const { viewport: s, selectedItem: l } = e;
690
+ s && l && (s.scrollTop = s.scrollTop - l.offsetHeight);
691
+ }
692
+ }
693
+ ) : null;
694
+ });
695
+ Ye.displayName = xe;
696
+ var we = "SelectScrollDownButton", qe = t.forwardRef((o, i) => {
697
+ const e = q(we, o.__scopeSelect), c = Ie(we, o.__scopeSelect), [r, u] = t.useState(!1), n = L(i, c.onScrollButtonChange);
698
+ return z(() => {
699
+ if (e.viewport && e.isPositioned) {
700
+ let s = function() {
701
+ const f = l.scrollHeight - l.clientHeight, g = Math.ceil(l.scrollTop) < f;
702
+ u(g);
703
+ };
704
+ const l = e.viewport;
705
+ return s(), l.addEventListener("scroll", s), () => l.removeEventListener("scroll", s);
706
+ }
707
+ }, [e.viewport, e.isPositioned]), r ? /* @__PURE__ */ d.jsx(
708
+ Xe,
709
+ {
710
+ ...o,
711
+ ref: n,
712
+ onAutoScroll: () => {
713
+ const { viewport: s, selectedItem: l } = e;
714
+ s && l && (s.scrollTop = s.scrollTop + l.offsetHeight);
715
+ }
716
+ }
717
+ ) : null;
718
+ });
719
+ qe.displayName = we;
720
+ var Xe = t.forwardRef((o, i) => {
721
+ const { __scopeSelect: e, onAutoScroll: c, ...r } = o, u = q("SelectScrollButton", e), n = t.useRef(null), s = ae(e), l = t.useCallback(() => {
722
+ n.current !== null && (window.clearInterval(n.current), n.current = null);
723
+ }, []);
724
+ return t.useEffect(() => () => l(), [l]), z(() => {
725
+ s().find((g) => g.ref.current === document.activeElement)?.ref.current?.scrollIntoView({ block: "nearest" });
726
+ }, [s]), /* @__PURE__ */ d.jsx(
727
+ M.div,
100
728
  {
101
- "data-slot": "dialog-description",
102
- className: o("text-muted-foreground text-sm", t),
103
- ...e
729
+ "aria-hidden": !0,
730
+ ...r,
731
+ ref: i,
732
+ style: { flexShrink: 0, ...r.style },
733
+ onPointerDown: R(r.onPointerDown, () => {
734
+ n.current === null && (n.current = window.setInterval(c, 50));
735
+ }),
736
+ onPointerMove: R(r.onPointerMove, () => {
737
+ u.onItemLeave?.(), n.current === null && (n.current = window.setInterval(c, 50));
738
+ }),
739
+ onPointerLeave: R(r.onPointerLeave, () => {
740
+ l();
741
+ })
104
742
  }
105
743
  );
744
+ }), Dt = "SelectSeparator", jt = t.forwardRef(
745
+ (o, i) => {
746
+ const { __scopeSelect: e, ...c } = o;
747
+ return /* @__PURE__ */ d.jsx(M.div, { "aria-hidden": !0, ...c, ref: i });
748
+ }
749
+ );
750
+ jt.displayName = Dt;
751
+ var Ce = "SelectArrow", Lt = t.forwardRef(
752
+ (o, i) => {
753
+ const { __scopeSelect: e, ...c } = o, r = de(e), u = Y(Ce, e), n = q(Ce, e);
754
+ return u.open && n.position === "popper" ? /* @__PURE__ */ d.jsx(at, { ...r, ...c, ref: i }) : null;
755
+ }
756
+ );
757
+ Lt.displayName = Ce;
758
+ function Ze(o) {
759
+ return o === "" || o === void 0;
760
+ }
761
+ var $e = t.forwardRef(
762
+ (o, i) => {
763
+ const { value: e, ...c } = o, r = t.useRef(null), u = L(i, r), n = ft(e);
764
+ return t.useEffect(() => {
765
+ const s = r.current, l = window.HTMLSelectElement.prototype, g = Object.getOwnPropertyDescriptor(
766
+ l,
767
+ "value"
768
+ ).set;
769
+ if (n !== e && g) {
770
+ const w = new Event("change", { bubbles: !0 });
771
+ g.call(s, e), s.dispatchEvent(w);
772
+ }
773
+ }, [n, e]), /* @__PURE__ */ d.jsx(mt, { asChild: !0, children: /* @__PURE__ */ d.jsx("select", { ...c, ref: u, defaultValue: e }) });
774
+ }
775
+ );
776
+ $e.displayName = "BubbleSelect";
777
+ function Je(o) {
778
+ const i = pt(o), e = t.useRef(""), c = t.useRef(0), r = t.useCallback(
779
+ (n) => {
780
+ const s = e.current + n;
781
+ i(s), function l(f) {
782
+ e.current = f, window.clearTimeout(c.current), f !== "" && (c.current = window.setTimeout(() => l(""), 1e3));
783
+ }(s);
784
+ },
785
+ [i]
786
+ ), u = t.useCallback(() => {
787
+ e.current = "", window.clearTimeout(c.current);
788
+ }, []);
789
+ return t.useEffect(() => () => window.clearTimeout(c.current), []), [e, r, u];
790
+ }
791
+ function Qe(o, i, e) {
792
+ const r = i.length > 1 && Array.from(i).every((f) => f === i[0]) ? i[0] : i, u = e ? o.indexOf(e) : -1;
793
+ let n = kt(o, Math.max(u, 0));
794
+ r.length === 1 && (n = n.filter((f) => f !== e));
795
+ const l = n.find(
796
+ (f) => f.textValue.toLowerCase().startsWith(r.toLowerCase())
797
+ );
798
+ return l !== e ? l : void 0;
799
+ }
800
+ function kt(o, i) {
801
+ return o.map((e, c) => o[(i + c) % o.length]);
106
802
  }
803
+ var co = be, io = _e, ao = Oe, uo = Ae, po = De, fo = je, mo = Be, ho = Ue, vo = Ke, go = ze, So = Ye, xo = qe;
107
804
  export {
108
- b as Dialog,
109
- h as DialogContent,
110
- z as DialogDescription,
111
- y as DialogFooter,
112
- D as DialogHeader,
113
- m as DialogOverlay,
114
- u as DialogPortal,
115
- N as DialogTitle
805
+ fo as Content,
806
+ uo as Icon,
807
+ ho as Item,
808
+ go as ItemIndicator,
809
+ vo as ItemText,
810
+ po as Portal,
811
+ co as Root,
812
+ xo as ScrollDownButton,
813
+ So as ScrollUpButton,
814
+ be as Select,
815
+ Lt as SelectArrow,
816
+ je as SelectContent,
817
+ Mt as SelectGroup,
818
+ Ae as SelectIcon,
819
+ Ue as SelectItem,
820
+ ze as SelectItemIndicator,
821
+ Ke as SelectItemText,
822
+ Ot as SelectLabel,
823
+ De as SelectPortal,
824
+ qe as SelectScrollDownButton,
825
+ Ye as SelectScrollUpButton,
826
+ jt as SelectSeparator,
827
+ _e as SelectTrigger,
828
+ Oe as SelectValue,
829
+ Be as SelectViewport,
830
+ io as Trigger,
831
+ ao as Value,
832
+ mo as Viewport,
833
+ lo as createSelectScope
116
834
  };
117
835
  //# sourceMappingURL=index.es41.js.map