@drjoshcsimmons/scl 0.2.5 → 0.2.7

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/dist/index100.js +13 -217
  2. package/dist/index101.js +6 -14
  3. package/dist/index102.js +24 -47
  4. package/dist/index103.js +53 -48
  5. package/dist/index104.js +30 -9
  6. package/dist/index105.js +216 -45
  7. package/dist/index106.js +8 -649
  8. package/dist/index107.js +30 -15
  9. package/dist/index108.js +180 -3
  10. package/dist/index109.js +649 -8
  11. package/dist/index11.js +2 -2
  12. package/dist/index110.js +30 -30
  13. package/dist/index111.js +1 -1
  14. package/dist/index112.js +47 -29
  15. package/dist/index113.js +6 -48
  16. package/dist/index114.js +48 -6
  17. package/dist/index115.js +1 -1
  18. package/dist/index116.js +1 -1
  19. package/dist/index117.js +21 -206
  20. package/dist/index118.js +9 -22
  21. package/dist/index119.js +38 -400
  22. package/dist/index12.js +1 -1
  23. package/dist/index120.js +11 -14
  24. package/dist/index121.js +206 -9
  25. package/dist/index122.js +21 -37
  26. package/dist/index123.js +399 -17
  27. package/dist/index124.js +1 -1
  28. package/dist/index13.js +2 -2
  29. package/dist/index134.js +1 -1
  30. package/dist/index136.js +4 -4
  31. package/dist/index14.js +2 -2
  32. package/dist/index141.js +69 -65
  33. package/dist/index142.js +8 -68
  34. package/dist/index143.js +14 -9
  35. package/dist/index144.js +66 -14
  36. package/dist/index145.js +64 -65
  37. package/dist/index15.js +2 -2
  38. package/dist/index17.js +3 -3
  39. package/dist/index18.js +2 -2
  40. package/dist/index20.js +1 -1
  41. package/dist/index21.js +1 -1
  42. package/dist/index22.js +1 -1
  43. package/dist/index23.js +2 -2
  44. package/dist/index24.js +1 -1
  45. package/dist/index25.js +4 -4
  46. package/dist/index26.js +1 -1
  47. package/dist/index27.js +3 -3
  48. package/dist/index29.js +1 -1
  49. package/dist/index33.js +1 -1
  50. package/dist/index36.js +2 -2
  51. package/dist/index37.js +1 -1
  52. package/dist/index4.js +2 -2
  53. package/dist/index45.js +220 -108
  54. package/dist/index46.js +11 -33
  55. package/dist/index47.js +33 -249
  56. package/dist/index48.js +73 -9
  57. package/dist/index49.js +116 -64
  58. package/dist/index5.js +1 -1
  59. package/dist/index50.js +507 -214
  60. package/dist/index51.js +260 -11
  61. package/dist/index52.js +12 -60
  62. package/dist/index53.js +60 -12
  63. package/dist/index54.js +1 -1
  64. package/dist/index55.js +12 -118
  65. package/dist/index56.js +9 -82
  66. package/dist/index57.js +298 -229
  67. package/dist/index58.js +12 -236
  68. package/dist/index59.js +82 -11
  69. package/dist/index6.js +1 -1
  70. package/dist/index60.js +7 -7
  71. package/dist/index61.js +425 -244
  72. package/dist/index62.js +221 -232
  73. package/dist/index63.js +225 -12
  74. package/dist/index64.js +11 -225
  75. package/dist/index65.js +1 -1
  76. package/dist/index66.js +333 -28
  77. package/dist/index67.js +153 -302
  78. package/dist/index68.js +22 -12
  79. package/dist/index69.js +811 -481
  80. package/dist/index7.js +1 -1
  81. package/dist/index70.js +9 -860
  82. package/dist/index71.js +31 -9
  83. package/dist/index72.js +241 -323
  84. package/dist/index73.js +210 -409
  85. package/dist/index74.js +98 -141
  86. package/dist/index75.js +238 -19
  87. package/dist/index76.js +64 -23
  88. package/dist/index77.js +42 -64
  89. package/dist/index78.js +25 -5
  90. package/dist/index79.js +6 -51
  91. package/dist/index8.js +1 -1
  92. package/dist/index80.js +51 -5
  93. package/dist/index81.js +33 -24
  94. package/dist/index82.js +10 -68
  95. package/dist/index83.js +7 -33
  96. package/dist/index84.js +54 -8
  97. package/dist/index85.js +10 -54
  98. package/dist/index86.js +4 -11
  99. package/dist/index87.js +30 -4
  100. package/dist/index88.js +13 -30
  101. package/dist/index89.js +8 -12
  102. package/dist/index9.js +2 -2
  103. package/dist/index90.js +66 -43
  104. package/dist/index91.js +3 -10
  105. package/dist/index92.js +124 -7
  106. package/dist/index93.js +134 -29
  107. package/dist/index94.js +14 -55
  108. package/dist/index95.js +15 -30
  109. package/dist/index96.js +9 -181
  110. package/dist/index97.js +47 -122
  111. package/dist/index98.js +46 -13
  112. package/dist/index99.js +29 -134
  113. package/package.json +5 -3
package/dist/index50.js CHANGED
@@ -1,239 +1,532 @@
1
- import s from "react";
2
- import { createContextScope as X } from "./index77.js";
3
- import { createCollection as Z } from "./index90.js";
4
- import { useComposedRefs as $ } from "./index76.js";
5
- import { composeEventHandlers as ee } from "./index78.js";
6
- import { useControllableState as M } from "./index79.js";
7
- import { Primitive as V } from "./index83.js";
8
- import { createCollapsibleScope as H, Content as oe, Root as re, Trigger as te } from "./index55.js";
9
- import { useId as ne } from "./index91.js";
10
- import { useDirection as ce } from "./index92.js";
11
- import { jsx as n } from "react/jsx-runtime";
12
- var d = "Accordion", ie = ["Home", "End", "ArrowDown", "ArrowUp", "ArrowLeft", "ArrowRight"], [E, ae, le] = Z(d), [b] = X(d, [
13
- le,
14
- H
15
- ]), S = H(), K = s.forwardRef(
16
- (o, c) => {
17
- const { type: e, ...t } = o, i = t, r = t;
18
- return /* @__PURE__ */ n(E.Provider, { scope: o.__scopeAccordion, children: e === "multiple" ? /* @__PURE__ */ n(fe, { ...r, ref: c }) : /* @__PURE__ */ n(pe, { ...i, ref: c }) });
19
- }
20
- );
21
- K.displayName = d;
22
- var [L, se] = b(d), [z, de] = b(
23
- d,
24
- { collapsible: !1 }
25
- ), pe = s.forwardRef(
26
- (o, c) => {
1
+ import * as c from "react";
2
+ import { Primitive as L } from "./index81.js";
3
+ import { Presence as I } from "./index90.js";
4
+ import { createContextScope as te } from "./index76.js";
5
+ import { useComposedRefs as A } from "./index78.js";
6
+ import { useCallbackRef as C } from "./index85.js";
7
+ import { useDirection as ne } from "./index83.js";
8
+ import { useLayoutEffect as le } from "./index86.js";
9
+ import { clamp as ce } from "./index91.js";
10
+ import { composeEventHandlers as R } from "./index79.js";
11
+ import { jsx as b, jsxs as ie, Fragment as se } from "react/jsx-runtime";
12
+ function ae(e, t) {
13
+ return c.useReducer((r, l) => t[r][l] ?? r, e);
14
+ }
15
+ var V = "ScrollArea", [j] = te(V), [de, v] = j(V), q = c.forwardRef(
16
+ (e, t) => {
27
17
  const {
28
- value: e,
29
- defaultValue: t,
30
- onValueChange: i = () => {
31
- },
32
- collapsible: r = !1,
33
- ...l
34
- } = o, [a, p] = M({
35
- prop: e,
36
- defaultProp: t ?? "",
37
- onChange: i,
38
- caller: d
39
- });
40
- return /* @__PURE__ */ n(
41
- L,
18
+ __scopeScrollArea: r,
19
+ type: l = "hover",
20
+ dir: o,
21
+ scrollHideDelay: n = 600,
22
+ ...i
23
+ } = e, [s, a] = c.useState(null), [f, d] = c.useState(null), [h, u] = c.useState(null), [S, p] = c.useState(null), [y, M] = c.useState(null), [P, _] = c.useState(0), [U, D] = c.useState(0), [W, x] = c.useState(!1), [H, z] = c.useState(!1), m = A(t, (E) => a(E)), w = ne(o);
24
+ return /* @__PURE__ */ b(
25
+ de,
42
26
  {
43
- scope: o.__scopeAccordion,
44
- value: s.useMemo(() => a ? [a] : [], [a]),
45
- onItemOpen: p,
46
- onItemClose: s.useCallback(() => r && p(""), [r, p]),
47
- children: /* @__PURE__ */ n(z, { scope: o.__scopeAccordion, collapsible: r, children: /* @__PURE__ */ n(G, { ...l, ref: c }) })
27
+ scope: r,
28
+ type: l,
29
+ dir: w,
30
+ scrollHideDelay: n,
31
+ scrollArea: s,
32
+ viewport: f,
33
+ onViewportChange: d,
34
+ content: h,
35
+ onContentChange: u,
36
+ scrollbarX: S,
37
+ onScrollbarXChange: p,
38
+ scrollbarXEnabled: W,
39
+ onScrollbarXEnabledChange: x,
40
+ scrollbarY: y,
41
+ onScrollbarYChange: M,
42
+ scrollbarYEnabled: H,
43
+ onScrollbarYEnabledChange: z,
44
+ onCornerWidthChange: _,
45
+ onCornerHeightChange: D,
46
+ children: /* @__PURE__ */ b(
47
+ L.div,
48
+ {
49
+ dir: w,
50
+ ...i,
51
+ ref: m,
52
+ style: {
53
+ position: "relative",
54
+ // Pass corner sizes as CSS vars to reduce re-renders of context consumers
55
+ "--radix-scroll-area-corner-width": P + "px",
56
+ "--radix-scroll-area-corner-height": U + "px",
57
+ ...e.style
58
+ }
59
+ }
60
+ )
48
61
  }
49
62
  );
50
63
  }
51
- ), fe = s.forwardRef((o, c) => {
52
- const {
53
- value: e,
54
- defaultValue: t,
55
- onValueChange: i = () => {
56
- },
57
- ...r
58
- } = o, [l, a] = M({
59
- prop: e,
60
- defaultProp: t ?? [],
61
- onChange: i,
62
- caller: d
63
- }), p = s.useCallback(
64
- (v) => a((u = []) => [...u, v]),
65
- [a]
66
- ), m = s.useCallback(
67
- (v) => a((u = []) => u.filter((h) => h !== v)),
68
- [a]
69
- );
70
- return /* @__PURE__ */ n(
71
- L,
64
+ );
65
+ q.displayName = V;
66
+ var $ = "ScrollAreaViewport", G = c.forwardRef(
67
+ (e, t) => {
68
+ const { __scopeScrollArea: r, children: l, nonce: o, ...n } = e, i = v($, r), s = c.useRef(null), a = A(t, s, i.onViewportChange);
69
+ return /* @__PURE__ */ ie(se, { children: [
70
+ /* @__PURE__ */ b(
71
+ "style",
72
+ {
73
+ dangerouslySetInnerHTML: {
74
+ __html: "[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"
75
+ },
76
+ nonce: o
77
+ }
78
+ ),
79
+ /* @__PURE__ */ b(
80
+ L.div,
81
+ {
82
+ "data-radix-scroll-area-viewport": "",
83
+ ...n,
84
+ ref: a,
85
+ style: {
86
+ /**
87
+ * We don't support `visible` because the intention is to have at least one scrollbar
88
+ * if this component is used and `visible` will behave like `auto` in that case
89
+ * https://developer.mozilla.org/en-US/docs/Web/CSS/overflow#description
90
+ *
91
+ * We don't handle `auto` because the intention is for the native implementation
92
+ * to be hidden if using this component. We just want to ensure the node is scrollable
93
+ * so could have used either `scroll` or `auto` here. We picked `scroll` to prevent
94
+ * the browser from having to work out whether to render native scrollbars or not,
95
+ * we tell it to with the intention of hiding them in CSS.
96
+ */
97
+ overflowX: i.scrollbarXEnabled ? "scroll" : "hidden",
98
+ overflowY: i.scrollbarYEnabled ? "scroll" : "hidden",
99
+ ...e.style
100
+ },
101
+ children: /* @__PURE__ */ b("div", { ref: i.onContentChange, style: { minWidth: "100%", display: "table" }, children: l })
102
+ }
103
+ )
104
+ ] });
105
+ }
106
+ );
107
+ G.displayName = $;
108
+ var g = "ScrollAreaScrollbar", ue = c.forwardRef(
109
+ (e, t) => {
110
+ const { forceMount: r, ...l } = e, o = v(g, e.__scopeScrollArea), { onScrollbarXEnabledChange: n, onScrollbarYEnabledChange: i } = o, s = e.orientation === "horizontal";
111
+ return c.useEffect(() => (s ? n(!0) : i(!0), () => {
112
+ s ? n(!1) : i(!1);
113
+ }), [s, n, i]), o.type === "hover" ? /* @__PURE__ */ b(fe, { ...l, ref: t, forceMount: r }) : o.type === "scroll" ? /* @__PURE__ */ b(he, { ...l, ref: t, forceMount: r }) : o.type === "auto" ? /* @__PURE__ */ b(J, { ...l, ref: t, forceMount: r }) : o.type === "always" ? /* @__PURE__ */ b(k, { ...l, ref: t }) : null;
114
+ }
115
+ );
116
+ ue.displayName = g;
117
+ var fe = c.forwardRef((e, t) => {
118
+ const { forceMount: r, ...l } = e, o = v(g, e.__scopeScrollArea), [n, i] = c.useState(!1);
119
+ return c.useEffect(() => {
120
+ const s = o.scrollArea;
121
+ let a = 0;
122
+ if (s) {
123
+ const f = () => {
124
+ window.clearTimeout(a), i(!0);
125
+ }, d = () => {
126
+ a = window.setTimeout(() => i(!1), o.scrollHideDelay);
127
+ };
128
+ return s.addEventListener("pointerenter", f), s.addEventListener("pointerleave", d), () => {
129
+ window.clearTimeout(a), s.removeEventListener("pointerenter", f), s.removeEventListener("pointerleave", d);
130
+ };
131
+ }
132
+ }, [o.scrollArea, o.scrollHideDelay]), /* @__PURE__ */ b(I, { present: r || n, children: /* @__PURE__ */ b(
133
+ J,
72
134
  {
73
- scope: o.__scopeAccordion,
74
- value: l,
75
- onItemOpen: p,
76
- onItemClose: m,
77
- children: /* @__PURE__ */ n(z, { scope: o.__scopeAccordion, collapsible: !0, children: /* @__PURE__ */ n(G, { ...r, ref: c }) })
135
+ "data-state": n ? "visible" : "hidden",
136
+ ...l,
137
+ ref: t
78
138
  }
79
- );
80
- }), [ue, I] = b(d), G = s.forwardRef(
81
- (o, c) => {
82
- const { __scopeAccordion: e, disabled: t, dir: i, orientation: r = "vertical", ...l } = o, a = s.useRef(null), p = $(a, c), m = ae(e), u = ce(i) === "ltr", h = ee(o.onKeyDown, (C) => {
83
- var O;
84
- if (!ie.includes(C.key)) return;
85
- const Q = C.target, x = m().filter((N) => {
86
- var T;
87
- return !((T = N.ref.current) != null && T.disabled);
88
- }), A = x.findIndex((N) => N.ref.current === Q), D = x.length;
89
- if (A === -1) return;
90
- C.preventDefault();
91
- let f = A;
92
- const _ = 0, w = D - 1, R = () => {
93
- f = A + 1, f > w && (f = _);
94
- }, P = () => {
95
- f = A - 1, f < _ && (f = w);
139
+ ) });
140
+ }), he = c.forwardRef((e, t) => {
141
+ const { forceMount: r, ...l } = e, o = v(g, e.__scopeScrollArea), n = e.orientation === "horizontal", i = Y(() => a("SCROLL_END"), 100), [s, a] = ae("hidden", {
142
+ hidden: {
143
+ SCROLL: "scrolling"
144
+ },
145
+ scrolling: {
146
+ SCROLL_END: "idle",
147
+ POINTER_ENTER: "interacting"
148
+ },
149
+ interacting: {
150
+ SCROLL: "interacting",
151
+ POINTER_LEAVE: "idle"
152
+ },
153
+ idle: {
154
+ HIDE: "hidden",
155
+ SCROLL: "scrolling",
156
+ POINTER_ENTER: "interacting"
157
+ }
158
+ });
159
+ return c.useEffect(() => {
160
+ if (s === "idle") {
161
+ const f = window.setTimeout(() => a("HIDE"), o.scrollHideDelay);
162
+ return () => window.clearTimeout(f);
163
+ }
164
+ }, [s, o.scrollHideDelay, a]), c.useEffect(() => {
165
+ const f = o.viewport, d = n ? "scrollLeft" : "scrollTop";
166
+ if (f) {
167
+ let h = f[d];
168
+ const u = () => {
169
+ const S = f[d];
170
+ h !== S && (a("SCROLL"), i()), h = S;
96
171
  };
97
- switch (C.key) {
98
- case "Home":
99
- f = _;
100
- break;
101
- case "End":
102
- f = w;
103
- break;
104
- case "ArrowRight":
105
- r === "horizontal" && (u ? R() : P());
106
- break;
107
- case "ArrowDown":
108
- r === "vertical" && R();
109
- break;
110
- case "ArrowLeft":
111
- r === "horizontal" && (u ? P() : R());
112
- break;
113
- case "ArrowUp":
114
- r === "vertical" && P();
115
- break;
172
+ return f.addEventListener("scroll", u), () => f.removeEventListener("scroll", u);
173
+ }
174
+ }, [o.viewport, n, a, i]), /* @__PURE__ */ b(I, { present: r || s !== "hidden", children: /* @__PURE__ */ b(
175
+ k,
176
+ {
177
+ "data-state": s === "hidden" ? "hidden" : "visible",
178
+ ...l,
179
+ ref: t,
180
+ onPointerEnter: R(e.onPointerEnter, () => a("POINTER_ENTER")),
181
+ onPointerLeave: R(e.onPointerLeave, () => a("POINTER_LEAVE"))
182
+ }
183
+ ) });
184
+ }), J = c.forwardRef((e, t) => {
185
+ const r = v(g, e.__scopeScrollArea), { forceMount: l, ...o } = e, [n, i] = c.useState(!1), s = e.orientation === "horizontal", a = Y(() => {
186
+ if (r.viewport) {
187
+ const f = r.viewport.offsetWidth < r.viewport.scrollWidth, d = r.viewport.offsetHeight < r.viewport.scrollHeight;
188
+ i(s ? f : d);
189
+ }
190
+ }, 10);
191
+ return T(r.viewport, a), T(r.content, a), /* @__PURE__ */ b(I, { present: l || n, children: /* @__PURE__ */ b(
192
+ k,
193
+ {
194
+ "data-state": n ? "visible" : "hidden",
195
+ ...o,
196
+ ref: t
197
+ }
198
+ ) });
199
+ }), k = c.forwardRef((e, t) => {
200
+ const { orientation: r = "vertical", ...l } = e, o = v(g, e.__scopeScrollArea), n = c.useRef(null), i = c.useRef(0), [s, a] = c.useState({
201
+ content: 0,
202
+ viewport: 0,
203
+ scrollbar: { size: 0, paddingStart: 0, paddingEnd: 0 }
204
+ }), f = ee(s.viewport, s.content), d = {
205
+ ...l,
206
+ sizes: s,
207
+ onSizesChange: a,
208
+ hasThumb: f > 0 && f < 1,
209
+ onThumbChange: (u) => n.current = u,
210
+ onThumbPointerUp: () => i.current = 0,
211
+ onThumbPointerDown: (u) => i.current = u
212
+ };
213
+ function h(u, S) {
214
+ return ge(u, i.current, s, S);
215
+ }
216
+ return r === "horizontal" ? /* @__PURE__ */ b(
217
+ be,
218
+ {
219
+ ...d,
220
+ ref: t,
221
+ onThumbPositionChange: () => {
222
+ if (o.viewport && n.current) {
223
+ const u = o.viewport.scrollLeft, S = F(u, s, o.dir);
224
+ n.current.style.transform = `translate3d(${S}px, 0, 0)`;
225
+ }
226
+ },
227
+ onWheelScroll: (u) => {
228
+ o.viewport && (o.viewport.scrollLeft = u);
229
+ },
230
+ onDragScroll: (u) => {
231
+ o.viewport && (o.viewport.scrollLeft = h(u, o.dir));
116
232
  }
117
- const W = f % D;
118
- (O = x[W].ref.current) == null || O.focus();
119
- });
120
- return /* @__PURE__ */ n(
121
- ue,
122
- {
123
- scope: e,
124
- disabled: t,
125
- direction: i,
126
- orientation: r,
127
- children: /* @__PURE__ */ n(E.Slot, { scope: e, children: /* @__PURE__ */ n(
128
- V.div,
129
- {
130
- ...l,
131
- "data-orientation": r,
132
- ref: p,
133
- onKeyDown: t ? void 0 : h
233
+ }
234
+ ) : r === "vertical" ? /* @__PURE__ */ b(
235
+ Se,
236
+ {
237
+ ...d,
238
+ ref: t,
239
+ onThumbPositionChange: () => {
240
+ if (o.viewport && n.current) {
241
+ const u = o.viewport.scrollTop, S = F(u, s);
242
+ n.current.style.transform = `translate3d(0, ${S}px, 0)`;
243
+ }
244
+ },
245
+ onWheelScroll: (u) => {
246
+ o.viewport && (o.viewport.scrollTop = u);
247
+ },
248
+ onDragScroll: (u) => {
249
+ o.viewport && (o.viewport.scrollTop = h(u));
250
+ }
251
+ }
252
+ ) : null;
253
+ }), be = c.forwardRef((e, t) => {
254
+ const { sizes: r, onSizesChange: l, ...o } = e, n = v(g, e.__scopeScrollArea), [i, s] = c.useState(), a = c.useRef(null), f = A(t, a, n.onScrollbarXChange);
255
+ return c.useEffect(() => {
256
+ a.current && s(getComputedStyle(a.current));
257
+ }, [a]), /* @__PURE__ */ b(
258
+ Q,
259
+ {
260
+ "data-orientation": "horizontal",
261
+ ...o,
262
+ ref: f,
263
+ sizes: r,
264
+ style: {
265
+ bottom: 0,
266
+ left: n.dir === "rtl" ? "var(--radix-scroll-area-corner-width)" : 0,
267
+ right: n.dir === "ltr" ? "var(--radix-scroll-area-corner-width)" : 0,
268
+ "--radix-scroll-area-thumb-width": X(r) + "px",
269
+ ...e.style
270
+ },
271
+ onThumbPointerDown: (d) => e.onThumbPointerDown(d.x),
272
+ onDragScroll: (d) => e.onDragScroll(d.x),
273
+ onWheelScroll: (d, h) => {
274
+ if (n.viewport) {
275
+ const u = n.viewport.scrollLeft + d.deltaX;
276
+ e.onWheelScroll(u), oe(u, h) && d.preventDefault();
277
+ }
278
+ },
279
+ onResize: () => {
280
+ a.current && n.viewport && i && l({
281
+ content: n.viewport.scrollWidth,
282
+ viewport: n.viewport.offsetWidth,
283
+ scrollbar: {
284
+ size: a.current.clientWidth,
285
+ paddingStart: O(i.paddingLeft),
286
+ paddingEnd: O(i.paddingRight)
134
287
  }
135
- ) })
288
+ });
136
289
  }
137
- );
138
- }
139
- ), g = "AccordionItem", [me, k] = b(g), U = s.forwardRef(
140
- (o, c) => {
141
- const { __scopeAccordion: e, value: t, ...i } = o, r = I(g, e), l = se(g, e), a = S(e), p = ne(), m = t && l.value.includes(t) || !1, v = r.disabled || o.disabled;
142
- return /* @__PURE__ */ n(
143
- me,
144
- {
145
- scope: e,
146
- open: m,
147
- disabled: v,
148
- triggerId: p,
149
- children: /* @__PURE__ */ n(
150
- re,
151
- {
152
- "data-orientation": r.orientation,
153
- "data-state": J(m),
154
- ...a,
155
- ...i,
156
- ref: c,
157
- disabled: v,
158
- open: m,
159
- onOpenChange: (u) => {
160
- u ? l.onItemOpen(t) : l.onItemClose(t);
161
- }
290
+ }
291
+ );
292
+ }), Se = c.forwardRef((e, t) => {
293
+ const { sizes: r, onSizesChange: l, ...o } = e, n = v(g, e.__scopeScrollArea), [i, s] = c.useState(), a = c.useRef(null), f = A(t, a, n.onScrollbarYChange);
294
+ return c.useEffect(() => {
295
+ a.current && s(getComputedStyle(a.current));
296
+ }, [a]), /* @__PURE__ */ b(
297
+ Q,
298
+ {
299
+ "data-orientation": "vertical",
300
+ ...o,
301
+ ref: f,
302
+ sizes: r,
303
+ style: {
304
+ top: 0,
305
+ right: n.dir === "ltr" ? 0 : void 0,
306
+ left: n.dir === "rtl" ? 0 : void 0,
307
+ bottom: "var(--radix-scroll-area-corner-height)",
308
+ "--radix-scroll-area-thumb-height": X(r) + "px",
309
+ ...e.style
310
+ },
311
+ onThumbPointerDown: (d) => e.onThumbPointerDown(d.y),
312
+ onDragScroll: (d) => e.onDragScroll(d.y),
313
+ onWheelScroll: (d, h) => {
314
+ if (n.viewport) {
315
+ const u = n.viewport.scrollTop + d.deltaY;
316
+ e.onWheelScroll(u), oe(u, h) && d.preventDefault();
317
+ }
318
+ },
319
+ onResize: () => {
320
+ a.current && n.viewport && i && l({
321
+ content: n.viewport.scrollHeight,
322
+ viewport: n.viewport.offsetHeight,
323
+ scrollbar: {
324
+ size: a.current.clientHeight,
325
+ paddingStart: O(i.paddingTop),
326
+ paddingEnd: O(i.paddingBottom)
162
327
  }
163
- )
328
+ });
164
329
  }
165
- );
330
+ }
331
+ );
332
+ }), [me, K] = j(g), Q = c.forwardRef((e, t) => {
333
+ const {
334
+ __scopeScrollArea: r,
335
+ sizes: l,
336
+ hasThumb: o,
337
+ onThumbChange: n,
338
+ onThumbPointerUp: i,
339
+ onThumbPointerDown: s,
340
+ onThumbPositionChange: a,
341
+ onDragScroll: f,
342
+ onWheelScroll: d,
343
+ onResize: h,
344
+ ...u
345
+ } = e, S = v(g, r), [p, y] = c.useState(null), M = A(t, (m) => y(m)), P = c.useRef(null), _ = c.useRef(""), U = S.viewport, D = l.content - l.viewport, W = C(d), x = C(a), H = Y(h, 10);
346
+ function z(m) {
347
+ if (P.current) {
348
+ const w = m.clientX - P.current.left, E = m.clientY - P.current.top;
349
+ f({ x: w, y: E });
350
+ }
166
351
  }
167
- );
168
- U.displayName = g;
169
- var j = "AccordionHeader", Y = s.forwardRef(
170
- (o, c) => {
171
- const { __scopeAccordion: e, ...t } = o, i = I(d, e), r = k(j, e);
172
- return /* @__PURE__ */ n(
173
- V.h3,
174
- {
175
- "data-orientation": i.orientation,
176
- "data-state": J(r.open),
177
- "data-disabled": r.disabled ? "" : void 0,
178
- ...t,
179
- ref: c
180
- }
181
- );
352
+ return c.useEffect(() => {
353
+ const m = (w) => {
354
+ const E = w.target;
355
+ (p == null ? void 0 : p.contains(E)) && W(w, D);
356
+ };
357
+ return document.addEventListener("wheel", m, { passive: !1 }), () => document.removeEventListener("wheel", m, { passive: !1 });
358
+ }, [U, p, D, W]), c.useEffect(x, [l, x]), T(p, H), T(S.content, H), /* @__PURE__ */ b(
359
+ me,
360
+ {
361
+ scope: r,
362
+ scrollbar: p,
363
+ hasThumb: o,
364
+ onThumbChange: C(n),
365
+ onThumbPointerUp: C(i),
366
+ onThumbPositionChange: x,
367
+ onThumbPointerDown: C(s),
368
+ children: /* @__PURE__ */ b(
369
+ L.div,
370
+ {
371
+ ...u,
372
+ ref: M,
373
+ style: { position: "absolute", ...u.style },
374
+ onPointerDown: R(e.onPointerDown, (m) => {
375
+ m.button === 0 && (m.target.setPointerCapture(m.pointerId), P.current = p.getBoundingClientRect(), _.current = document.body.style.webkitUserSelect, document.body.style.webkitUserSelect = "none", S.viewport && (S.viewport.style.scrollBehavior = "auto"), z(m));
376
+ }),
377
+ onPointerMove: R(e.onPointerMove, z),
378
+ onPointerUp: R(e.onPointerUp, (m) => {
379
+ const w = m.target;
380
+ w.hasPointerCapture(m.pointerId) && w.releasePointerCapture(m.pointerId), document.body.style.webkitUserSelect = _.current, S.viewport && (S.viewport.style.scrollBehavior = ""), P.current = null;
381
+ })
382
+ }
383
+ )
384
+ }
385
+ );
386
+ }), N = "ScrollAreaThumb", pe = c.forwardRef(
387
+ (e, t) => {
388
+ const { forceMount: r, ...l } = e, o = K(N, e.__scopeScrollArea);
389
+ return /* @__PURE__ */ b(I, { present: r || o.hasThumb, children: /* @__PURE__ */ b(ve, { ref: t, ...l }) });
182
390
  }
183
- );
184
- Y.displayName = j;
185
- var y = "AccordionTrigger", q = s.forwardRef(
186
- (o, c) => {
187
- const { __scopeAccordion: e, ...t } = o, i = I(d, e), r = k(y, e), l = de(y, e), a = S(e);
188
- return /* @__PURE__ */ n(E.ItemSlot, { scope: e, children: /* @__PURE__ */ n(
189
- te,
190
- {
191
- "aria-disabled": r.open && !l.collapsible || void 0,
192
- "data-orientation": i.orientation,
193
- id: r.triggerId,
194
- ...a,
195
- ...t,
196
- ref: c
391
+ ), ve = c.forwardRef(
392
+ (e, t) => {
393
+ const { __scopeScrollArea: r, style: l, ...o } = e, n = v(N, r), i = K(N, r), { onThumbPositionChange: s } = i, a = A(
394
+ t,
395
+ (h) => i.onThumbChange(h)
396
+ ), f = c.useRef(void 0), d = Y(() => {
397
+ f.current && (f.current(), f.current = void 0);
398
+ }, 100);
399
+ return c.useEffect(() => {
400
+ const h = n.viewport;
401
+ if (h) {
402
+ const u = () => {
403
+ if (d(), !f.current) {
404
+ const S = Pe(h, s);
405
+ f.current = S, s();
406
+ }
407
+ };
408
+ return s(), h.addEventListener("scroll", u), () => h.removeEventListener("scroll", u);
197
409
  }
198
- ) });
199
- }
200
- );
201
- q.displayName = y;
202
- var B = "AccordionContent", F = s.forwardRef(
203
- (o, c) => {
204
- const { __scopeAccordion: e, ...t } = o, i = I(d, e), r = k(B, e), l = S(e);
205
- return /* @__PURE__ */ n(
206
- oe,
410
+ }, [n.viewport, d, s]), /* @__PURE__ */ b(
411
+ L.div,
207
412
  {
208
- role: "region",
209
- "aria-labelledby": r.triggerId,
210
- "data-orientation": i.orientation,
211
- ...l,
212
- ...t,
213
- ref: c,
413
+ "data-state": i.hasThumb ? "visible" : "hidden",
414
+ ...o,
415
+ ref: a,
214
416
  style: {
215
- "--radix-accordion-content-height": "var(--radix-collapsible-content-height)",
216
- "--radix-accordion-content-width": "var(--radix-collapsible-content-width)",
217
- ...o.style
218
- }
417
+ width: "var(--radix-scroll-area-thumb-width)",
418
+ height: "var(--radix-scroll-area-thumb-height)",
419
+ ...l
420
+ },
421
+ onPointerDownCapture: R(e.onPointerDownCapture, (h) => {
422
+ const S = h.target.getBoundingClientRect(), p = h.clientX - S.left, y = h.clientY - S.top;
423
+ i.onThumbPointerDown({ x: p, y });
424
+ }),
425
+ onPointerUp: R(e.onPointerUp, i.onThumbPointerUp)
219
426
  }
220
427
  );
221
428
  }
222
429
  );
223
- F.displayName = B;
224
- function J(o) {
225
- return o ? "open" : "closed";
430
+ pe.displayName = N;
431
+ var B = "ScrollAreaCorner", Z = c.forwardRef(
432
+ (e, t) => {
433
+ const r = v(B, e.__scopeScrollArea), l = !!(r.scrollbarX && r.scrollbarY);
434
+ return r.type !== "scroll" && l ? /* @__PURE__ */ b(we, { ...e, ref: t }) : null;
435
+ }
436
+ );
437
+ Z.displayName = B;
438
+ var we = c.forwardRef((e, t) => {
439
+ const { __scopeScrollArea: r, ...l } = e, o = v(B, r), [n, i] = c.useState(0), [s, a] = c.useState(0), f = !!(n && s);
440
+ return T(o.scrollbarX, () => {
441
+ var h;
442
+ const d = ((h = o.scrollbarX) == null ? void 0 : h.offsetHeight) || 0;
443
+ o.onCornerHeightChange(d), a(d);
444
+ }), T(o.scrollbarY, () => {
445
+ var h;
446
+ const d = ((h = o.scrollbarY) == null ? void 0 : h.offsetWidth) || 0;
447
+ o.onCornerWidthChange(d), i(d);
448
+ }), f ? /* @__PURE__ */ b(
449
+ L.div,
450
+ {
451
+ ...l,
452
+ ref: t,
453
+ style: {
454
+ width: n,
455
+ height: s,
456
+ position: "absolute",
457
+ right: o.dir === "ltr" ? 0 : void 0,
458
+ left: o.dir === "rtl" ? 0 : void 0,
459
+ bottom: 0,
460
+ ...e.style
461
+ }
462
+ }
463
+ ) : null;
464
+ });
465
+ function O(e) {
466
+ return e ? parseInt(e, 10) : 0;
467
+ }
468
+ function ee(e, t) {
469
+ const r = e / t;
470
+ return isNaN(r) ? 0 : r;
471
+ }
472
+ function X(e) {
473
+ const t = ee(e.viewport, e.content), r = e.scrollbar.paddingStart + e.scrollbar.paddingEnd, l = (e.scrollbar.size - r) * t;
474
+ return Math.max(l, 18);
475
+ }
476
+ function ge(e, t, r, l = "ltr") {
477
+ const o = X(r), n = o / 2, i = t || n, s = o - i, a = r.scrollbar.paddingStart + i, f = r.scrollbar.size - r.scrollbar.paddingEnd - s, d = r.content - r.viewport, h = l === "ltr" ? [0, d] : [d * -1, 0];
478
+ return re([a, f], h)(e);
479
+ }
480
+ function F(e, t, r = "ltr") {
481
+ const l = X(t), o = t.scrollbar.paddingStart + t.scrollbar.paddingEnd, n = t.scrollbar.size - o, i = t.content - t.viewport, s = n - l, a = r === "ltr" ? [0, i] : [i * -1, 0], f = ce(e, a);
482
+ return re([0, i], [0, s])(f);
483
+ }
484
+ function re(e, t) {
485
+ return (r) => {
486
+ if (e[0] === e[1] || t[0] === t[1]) return t[0];
487
+ const l = (t[1] - t[0]) / (e[1] - e[0]);
488
+ return t[0] + l * (r - e[0]);
489
+ };
490
+ }
491
+ function oe(e, t) {
492
+ return e > 0 && e < t;
493
+ }
494
+ var Pe = (e, t = () => {
495
+ }) => {
496
+ let r = { left: e.scrollLeft, top: e.scrollTop }, l = 0;
497
+ return function o() {
498
+ const n = { left: e.scrollLeft, top: e.scrollTop }, i = r.left !== n.left, s = r.top !== n.top;
499
+ (i || s) && t(), r = n, l = window.requestAnimationFrame(o);
500
+ }(), () => window.cancelAnimationFrame(l);
501
+ };
502
+ function Y(e, t) {
503
+ const r = C(e), l = c.useRef(0);
504
+ return c.useEffect(() => () => window.clearTimeout(l.current), []), c.useCallback(() => {
505
+ window.clearTimeout(l.current), l.current = window.setTimeout(r, t);
506
+ }, [r, t]);
507
+ }
508
+ function T(e, t) {
509
+ const r = C(t);
510
+ le(() => {
511
+ let l = 0;
512
+ if (e) {
513
+ const o = new ResizeObserver(() => {
514
+ cancelAnimationFrame(l), l = window.requestAnimationFrame(r);
515
+ });
516
+ return o.observe(e), () => {
517
+ window.cancelAnimationFrame(l), o.unobserve(e);
518
+ };
519
+ }
520
+ }, [e, r]);
226
521
  }
227
- var Pe = K, Ne = U, ye = Y, Ee = q, Se = F;
522
+ var He = q, ze = G, Ne = Z;
228
523
  export {
229
- K as Accordion,
230
- F as AccordionContent,
231
- Y as AccordionHeader,
232
- U as AccordionItem,
233
- q as AccordionTrigger,
234
- Se as Content,
235
- ye as Header,
236
- Ne as Item,
237
- Pe as Root,
238
- Ee as Trigger
524
+ Ne as Corner,
525
+ He as Root,
526
+ q as ScrollArea,
527
+ Z as ScrollAreaCorner,
528
+ ue as ScrollAreaScrollbar,
529
+ pe as ScrollAreaThumb,
530
+ G as ScrollAreaViewport,
531
+ ze as Viewport
239
532
  };