@drjoshcsimmons/scl 0.1.0 → 0.1.2

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 (195) hide show
  1. package/dist/components/ui/alert/alert.d.ts +1 -1
  2. package/dist/components/ui/alert/alert.d.ts.map +1 -1
  3. package/dist/components/ui/badge/badge.d.ts +1 -1
  4. package/dist/components/ui/badge/badge.d.ts.map +1 -1
  5. package/dist/components/ui/button/button.d.ts +1 -1
  6. package/dist/components/ui/button/button.d.ts.map +1 -1
  7. package/dist/components/ui/combobox/combobox.d.ts +31 -0
  8. package/dist/components/ui/combobox/combobox.d.ts.map +1 -0
  9. package/dist/components/ui/combobox/index.d.ts +3 -0
  10. package/dist/components/ui/combobox/index.d.ts.map +1 -0
  11. package/dist/components/ui/command/command.d.ts +85 -0
  12. package/dist/components/ui/command/command.d.ts.map +1 -0
  13. package/dist/components/ui/command/index.d.ts +2 -0
  14. package/dist/components/ui/command/index.d.ts.map +1 -0
  15. package/dist/components/ui/dithered-image/dithered-image.d.ts +6 -2
  16. package/dist/components/ui/dithered-image/dithered-image.d.ts.map +1 -1
  17. package/dist/components/ui/dithered-image/index.d.ts +1 -1
  18. package/dist/components/ui/dithered-image/index.d.ts.map +1 -1
  19. package/dist/components/ui/form/form.d.ts +24 -0
  20. package/dist/components/ui/form/form.d.ts.map +1 -0
  21. package/dist/components/ui/form/index.d.ts +2 -0
  22. package/dist/components/ui/form/index.d.ts.map +1 -0
  23. package/dist/components/ui/progress/progress.d.ts +0 -6
  24. package/dist/components/ui/progress/progress.d.ts.map +1 -1
  25. package/dist/components/ui/scroll-area/scroll-area.d.ts.map +1 -1
  26. package/dist/components/ui/skeleton/skeleton.d.ts +4 -1
  27. package/dist/components/ui/skeleton/skeleton.d.ts.map +1 -1
  28. package/dist/components/ui/statusline/statusline.d.ts.map +1 -1
  29. package/dist/components/ui/terminal-textarea/terminal-textarea.d.ts +0 -5
  30. package/dist/components/ui/terminal-textarea/terminal-textarea.d.ts.map +1 -1
  31. package/dist/index.d.ts +3 -0
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +166 -143
  34. package/dist/index10.js +30 -30
  35. package/dist/index100.js +218 -29
  36. package/dist/index101.js +646 -11
  37. package/dist/index102.js +173 -127
  38. package/dist/index103.js +4 -50
  39. package/dist/index104.js +30 -9
  40. package/dist/index105.js +6 -4
  41. package/dist/index106.js +11 -180
  42. package/dist/index107.js +19 -648
  43. package/dist/index108.js +9 -107
  44. package/dist/index109.js +38 -91
  45. package/dist/index11.js +13 -13
  46. package/dist/index110.js +18 -67
  47. package/dist/index111.js +201 -154
  48. package/dist/index112.js +20 -395
  49. package/dist/index113.js +395 -1675
  50. package/dist/index114.js +2 -278
  51. package/dist/index115.js +49 -128
  52. package/dist/index116.js +65 -32
  53. package/dist/index117.js +19 -1605
  54. package/dist/index118.js +28 -297
  55. package/dist/index119.js +5 -635
  56. package/dist/index12.js +1 -1
  57. package/dist/index120.js +2 -144
  58. package/dist/index121.js +2 -21
  59. package/dist/index122.js +5 -9
  60. package/dist/index123.js +3 -38
  61. package/dist/index124.js +24 -18
  62. package/dist/index125.js +113 -6
  63. package/dist/index126.js +15 -11
  64. package/dist/index127.js +513 -194
  65. package/dist/index128.js +128 -22
  66. package/dist/index129.js +114 -380
  67. package/dist/index13.js +132 -93
  68. package/dist/index130.js +59 -1300
  69. package/dist/index131.js +63 -612
  70. package/dist/index132.js +9 -2
  71. package/dist/index133.js +13 -52
  72. package/dist/index134.js +64 -63
  73. package/dist/index135.js +3 -24
  74. package/dist/index136.js +23 -29
  75. package/dist/index137.js +23 -5
  76. package/dist/index138.js +13 -2
  77. package/dist/index139.js +28 -2
  78. package/dist/index14.js +106 -220
  79. package/dist/index140.js +5 -5
  80. package/dist/index15.js +79 -125
  81. package/dist/index16.js +280 -17
  82. package/dist/index17.js +139 -12
  83. package/dist/index18.js +92 -22
  84. package/dist/index19.js +18 -55
  85. package/dist/index2.js +2 -2
  86. package/dist/index20.js +14 -26
  87. package/dist/index21.js +19 -33
  88. package/dist/index22.js +38 -121
  89. package/dist/index23.js +29 -22
  90. package/dist/index24.js +31 -64
  91. package/dist/index25.js +121 -15
  92. package/dist/index26.js +19 -29
  93. package/dist/index27.js +68 -77
  94. package/dist/index28.js +20 -25
  95. package/dist/index29.js +32 -88
  96. package/dist/index3.js +11 -9
  97. package/dist/index30.js +138 -38
  98. package/dist/index31.js +20 -227
  99. package/dist/index32.js +88 -18
  100. package/dist/index33.js +37 -28
  101. package/dist/index34.js +86 -22
  102. package/dist/index35.js +17 -102
  103. package/dist/index36.js +34 -65
  104. package/dist/index37.js +23 -49
  105. package/dist/index38.js +38 -99
  106. package/dist/index39.js +65 -10
  107. package/dist/index4.js +6 -6
  108. package/dist/index40.js +49 -15
  109. package/dist/index41.js +93 -2256
  110. package/dist/index42.js +10 -32
  111. package/dist/index43.js +15 -18
  112. package/dist/index44.js +2251 -225
  113. package/dist/index45.js +237 -11
  114. package/dist/index46.js +11 -73
  115. package/dist/index47.js +33 -249
  116. package/dist/index48.js +118 -9
  117. package/dist/index49.js +63 -326
  118. package/dist/index5.js +23 -23
  119. package/dist/index50.js +307 -57
  120. package/dist/index51.js +12 -241
  121. package/dist/index52.js +222 -822
  122. package/dist/index53.js +6 -3
  123. package/dist/index54.js +56 -114
  124. package/dist/index55.js +248 -219
  125. package/dist/index56.js +249 -11
  126. package/dist/index57.js +3 -5
  127. package/dist/index58.js +110 -221
  128. package/dist/index59.js +12 -260
  129. package/dist/index6.js +12 -12
  130. package/dist/index60.js +18 -12
  131. package/dist/index61.js +221 -18
  132. package/dist/index62.js +11 -530
  133. package/dist/index63.js +11 -6155
  134. package/dist/index64.js +234 -2626
  135. package/dist/index65.js +230 -292
  136. package/dist/index66.js +504 -646
  137. package/dist/index67.js +155 -824
  138. package/dist/index68.js +128 -23
  139. package/dist/index69.js +319 -311
  140. package/dist/index7.js +22 -22
  141. package/dist/index70.js +72 -4889
  142. package/dist/index71.js +408 -802
  143. package/dist/index72.js +18 -1254
  144. package/dist/index73.js +844 -518
  145. package/dist/index74.js +9 -125
  146. package/dist/index75.js +31 -161
  147. package/dist/index76.js +7 -31
  148. package/dist/index77.js +62 -429
  149. package/dist/index78.js +50 -128
  150. package/dist/index79.js +4 -81
  151. package/dist/index8.js +17 -18
  152. package/dist/index80.js +23 -64
  153. package/dist/index81.js +33 -45
  154. package/dist/index82.js +63 -21
  155. package/dist/index83.js +10 -6
  156. package/dist/index84.js +52 -49
  157. package/dist/index85.js +10 -33
  158. package/dist/index86.js +30 -11
  159. package/dist/index87.js +12 -7
  160. package/dist/index88.js +46 -30
  161. package/dist/index89.js +7 -54
  162. package/dist/index9.js +23 -31
  163. package/dist/index90.js +14 -10
  164. package/dist/index91.js +125 -4
  165. package/dist/index92.js +131 -9
  166. package/dist/index93.js +14 -6
  167. package/dist/index94.js +14 -24
  168. package/dist/index95.js +9 -69
  169. package/dist/index96.js +47 -122
  170. package/dist/index97.js +51 -216
  171. package/dist/index98.js +6 -14
  172. package/dist/index99.js +24 -53
  173. package/dist/tokens/colors.d.ts +26 -86
  174. package/dist/tokens/colors.d.ts.map +1 -1
  175. package/dist/tokens/index.d.ts +12 -84
  176. package/dist/tokens/index.d.ts.map +1 -1
  177. package/package.json +28 -23
  178. package/dist/index141.js +0 -5
  179. package/dist/index142.js +0 -26
  180. package/dist/index143.js +0 -115
  181. package/dist/index144.js +0 -18
  182. package/dist/index145.js +0 -527
  183. package/dist/index146.js +0 -130
  184. package/dist/index147.js +0 -136
  185. package/dist/index148.js +0 -67
  186. package/dist/index149.js +0 -71
  187. package/dist/index150.js +0 -11
  188. package/dist/index151.js +0 -16
  189. package/dist/index152.js +0 -68
  190. package/dist/index153.js +0 -6
  191. package/dist/index154.js +0 -25
  192. package/dist/index155.js +0 -25
  193. package/dist/index156.js +0 -15
  194. package/dist/index157.js +0 -30
  195. package/dist/index158.js +0 -7
package/dist/index66.js CHANGED
@@ -1,674 +1,532 @@
1
- import { configureNesting as O, parser as H } from "./index114.js";
2
- import { cssLanguage as _, css as U } from "./index67.js";
3
- import { typescriptLanguage as W, jsxLanguage as J, tsxLanguage as K, javascriptLanguage as $, javascript as Q } from "./index65.js";
4
- import { EditorView as X } from "./index63.js";
5
- import { EditorSelection as Y } from "./index64.js";
6
- import { LRLanguage as Z, LanguageSupport as ee, indentNodeProp as te, foldNodeProp as le, bracketMatchingHandle as ae, syntaxTree as z } from "./index72.js";
7
- const T = ["_blank", "_self", "_top", "_parent"], S = ["ascii", "utf-8", "utf-16", "latin1", "latin1"], N = ["get", "post", "put", "delete"], E = ["application/x-www-form-urlencoded", "multipart/form-data", "text/plain"], c = ["true", "false"], l = {}, ne = {
8
- a: {
9
- attrs: {
10
- href: null,
11
- ping: null,
12
- type: null,
13
- media: null,
14
- target: T,
15
- hreflang: null
16
- }
17
- },
18
- abbr: l,
19
- address: l,
20
- area: {
21
- attrs: {
22
- alt: null,
23
- coords: null,
24
- href: null,
25
- target: null,
26
- ping: null,
27
- media: null,
28
- hreflang: null,
29
- type: null,
30
- shape: ["default", "rect", "circle", "poly"]
31
- }
32
- },
33
- article: l,
34
- aside: l,
35
- audio: {
36
- attrs: {
37
- src: null,
38
- mediagroup: null,
39
- crossorigin: ["anonymous", "use-credentials"],
40
- preload: ["none", "metadata", "auto"],
41
- autoplay: ["autoplay"],
42
- loop: ["loop"],
43
- controls: ["controls"]
44
- }
45
- },
46
- b: l,
47
- base: { attrs: { href: null, target: T } },
48
- bdi: l,
49
- bdo: l,
50
- blockquote: { attrs: { cite: null } },
51
- body: l,
52
- br: l,
53
- button: {
54
- attrs: {
55
- form: null,
56
- formaction: null,
57
- name: null,
58
- value: null,
59
- autofocus: ["autofocus"],
60
- disabled: ["autofocus"],
61
- formenctype: E,
62
- formmethod: N,
63
- formnovalidate: ["novalidate"],
64
- formtarget: T,
65
- type: ["submit", "reset", "button"]
66
- }
67
- },
68
- canvas: { attrs: { width: null, height: null } },
69
- caption: l,
70
- center: l,
71
- cite: l,
72
- code: l,
73
- col: { attrs: { span: null } },
74
- colgroup: { attrs: { span: null } },
75
- command: {
76
- attrs: {
77
- type: ["command", "checkbox", "radio"],
78
- label: null,
79
- icon: null,
80
- radiogroup: null,
81
- command: null,
82
- title: null,
83
- disabled: ["disabled"],
84
- checked: ["checked"]
85
- }
86
- },
87
- data: { attrs: { value: null } },
88
- datagrid: { attrs: { disabled: ["disabled"], multiple: ["multiple"] } },
89
- datalist: { attrs: { data: null } },
90
- dd: l,
91
- del: { attrs: { cite: null, datetime: null } },
92
- details: { attrs: { open: ["open"] } },
93
- dfn: l,
94
- div: l,
95
- dl: l,
96
- dt: l,
97
- em: l,
98
- embed: { attrs: { src: null, type: null, width: null, height: null } },
99
- eventsource: { attrs: { src: null } },
100
- fieldset: { attrs: { disabled: ["disabled"], form: null, name: null } },
101
- figcaption: l,
102
- figure: l,
103
- footer: l,
104
- form: {
105
- attrs: {
106
- action: null,
107
- name: null,
108
- "accept-charset": S,
109
- autocomplete: ["on", "off"],
110
- enctype: E,
111
- method: N,
112
- novalidate: ["novalidate"],
113
- target: T
1
+ import * as c from "react";
2
+ import { Primitive as L } from "./index81.js";
3
+ import { Presence as I } from "./index82.js";
4
+ import { createContextScope as te } from "./index77.js";
5
+ import { useComposedRefs as A } from "./index80.js";
6
+ import { useCallbackRef as C } from "./index85.js";
7
+ import { useDirection as ne } from "./index89.js";
8
+ import { useLayoutEffect as le } from "./index79.js";
9
+ import { clamp as ce } from "./index103.js";
10
+ import { composeEventHandlers as R } from "./index76.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) => {
17
+ const {
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,
26
+ {
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
+ )
61
+ }
62
+ );
63
+ }
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
+ };
114
131
  }
115
- },
116
- h1: l,
117
- h2: l,
118
- h3: l,
119
- h4: l,
120
- h5: l,
121
- h6: l,
122
- head: {
123
- children: ["title", "base", "link", "style", "meta", "script", "noscript", "command"]
124
- },
125
- header: l,
126
- hgroup: l,
127
- hr: l,
128
- html: {
129
- attrs: { manifest: null }
130
- },
131
- i: l,
132
- iframe: {
133
- attrs: {
134
- src: null,
135
- srcdoc: null,
136
- name: null,
137
- width: null,
138
- height: null,
139
- sandbox: ["allow-top-navigation", "allow-same-origin", "allow-forms", "allow-scripts"],
140
- seamless: ["seamless"]
132
+ }, [o.scrollArea, o.scrollHideDelay]), /* @__PURE__ */ b(I, { present: r || n, children: /* @__PURE__ */ b(
133
+ J,
134
+ {
135
+ "data-state": n ? "visible" : "hidden",
136
+ ...l,
137
+ ref: t
141
138
  }
142
- },
143
- img: {
144
- attrs: {
145
- alt: null,
146
- src: null,
147
- ismap: null,
148
- usemap: null,
149
- width: null,
150
- height: null,
151
- crossorigin: ["anonymous", "use-credentials"]
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"
152
157
  }
153
- },
154
- input: {
155
- attrs: {
156
- alt: null,
157
- dirname: null,
158
- form: null,
159
- formaction: null,
160
- height: null,
161
- list: null,
162
- max: null,
163
- maxlength: null,
164
- min: null,
165
- name: null,
166
- pattern: null,
167
- placeholder: null,
168
- size: null,
169
- src: null,
170
- step: null,
171
- value: null,
172
- width: null,
173
- accept: ["audio/*", "video/*", "image/*"],
174
- autocomplete: ["on", "off"],
175
- autofocus: ["autofocus"],
176
- checked: ["checked"],
177
- disabled: ["disabled"],
178
- formenctype: E,
179
- formmethod: N,
180
- formnovalidate: ["novalidate"],
181
- formtarget: T,
182
- multiple: ["multiple"],
183
- readonly: ["readonly"],
184
- required: ["required"],
185
- type: [
186
- "hidden",
187
- "text",
188
- "search",
189
- "tel",
190
- "url",
191
- "email",
192
- "password",
193
- "datetime",
194
- "date",
195
- "month",
196
- "week",
197
- "time",
198
- "datetime-local",
199
- "number",
200
- "range",
201
- "color",
202
- "checkbox",
203
- "radio",
204
- "file",
205
- "submit",
206
- "image",
207
- "reset",
208
- "button"
209
- ]
158
+ });
159
+ return c.useEffect(() => {
160
+ if (s === "idle") {
161
+ const f = window.setTimeout(() => a("HIDE"), o.scrollHideDelay);
162
+ return () => window.clearTimeout(f);
210
163
  }
211
- },
212
- ins: { attrs: { cite: null, datetime: null } },
213
- kbd: l,
214
- keygen: {
215
- attrs: {
216
- challenge: null,
217
- form: null,
218
- name: null,
219
- autofocus: ["autofocus"],
220
- disabled: ["disabled"],
221
- keytype: ["RSA"]
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;
171
+ };
172
+ return f.addEventListener("scroll", u), () => f.removeEventListener("scroll", u);
222
173
  }
223
- },
224
- label: { attrs: { for: null, form: null } },
225
- legend: l,
226
- li: { attrs: { value: null } },
227
- link: {
228
- attrs: {
229
- href: null,
230
- type: null,
231
- hreflang: null,
232
- media: null,
233
- sizes: ["all", "16x16", "16x16 32x32", "16x16 32x32 64x64"]
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"))
234
182
  }
235
- },
236
- map: { attrs: { name: null } },
237
- mark: l,
238
- menu: { attrs: { label: null, type: ["list", "context", "toolbar"] } },
239
- meta: {
240
- attrs: {
241
- content: null,
242
- charset: S,
243
- name: ["viewport", "application-name", "author", "description", "generator", "keywords"],
244
- "http-equiv": ["content-language", "content-type", "default-style", "refresh"]
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);
245
189
  }
246
- },
247
- meter: { attrs: { value: null, min: null, low: null, high: null, max: null, optimum: null } },
248
- nav: l,
249
- noscript: l,
250
- object: {
251
- attrs: {
252
- data: null,
253
- type: null,
254
- name: null,
255
- usemap: null,
256
- form: null,
257
- width: null,
258
- height: null,
259
- typemustmatch: ["typemustmatch"]
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
260
197
  }
261
- },
262
- ol: {
263
- attrs: { reversed: ["reversed"], start: null, type: ["1", "a", "A", "i", "I"] },
264
- children: ["li", "script", "template", "ul", "ol"]
265
- },
266
- optgroup: { attrs: { disabled: ["disabled"], label: null } },
267
- option: { attrs: { disabled: ["disabled"], label: null, selected: ["selected"], value: null } },
268
- output: { attrs: { for: null, form: null, name: null } },
269
- p: l,
270
- param: { attrs: { name: null, value: null } },
271
- pre: l,
272
- progress: { attrs: { value: null, max: null } },
273
- q: { attrs: { cite: null } },
274
- rp: l,
275
- rt: l,
276
- ruby: l,
277
- samp: l,
278
- script: {
279
- attrs: {
280
- type: ["text/javascript"],
281
- src: null,
282
- async: ["async"],
283
- defer: ["defer"],
284
- charset: S
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));
232
+ }
285
233
  }
286
- },
287
- section: l,
288
- select: {
289
- attrs: {
290
- form: null,
291
- name: null,
292
- size: null,
293
- autofocus: ["autofocus"],
294
- disabled: ["disabled"],
295
- multiple: ["multiple"]
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
+ }
296
251
  }
297
- },
298
- slot: { attrs: { name: null } },
299
- small: l,
300
- source: { attrs: { src: null, type: null, media: null } },
301
- span: l,
302
- strong: l,
303
- style: {
304
- attrs: {
305
- type: ["text/css"],
306
- media: null,
307
- scoped: null
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)
287
+ }
288
+ });
289
+ }
308
290
  }
309
- },
310
- sub: l,
311
- summary: l,
312
- sup: l,
313
- table: l,
314
- tbody: l,
315
- td: { attrs: { colspan: null, rowspan: null, headers: null } },
316
- template: l,
317
- textarea: {
318
- attrs: {
319
- dirname: null,
320
- form: null,
321
- maxlength: null,
322
- name: null,
323
- placeholder: null,
324
- rows: null,
325
- cols: null,
326
- autofocus: ["autofocus"],
327
- disabled: ["disabled"],
328
- readonly: ["readonly"],
329
- required: ["required"],
330
- wrap: ["soft", "hard"]
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)
327
+ }
328
+ });
329
+ }
331
330
  }
332
- },
333
- tfoot: l,
334
- th: { attrs: { colspan: null, rowspan: null, headers: null, scope: ["row", "col", "rowgroup", "colgroup"] } },
335
- thead: l,
336
- time: { attrs: { datetime: null } },
337
- title: l,
338
- tr: l,
339
- track: {
340
- attrs: {
341
- src: null,
342
- label: null,
343
- default: null,
344
- kind: ["subtitles", "captions", "descriptions", "chapters", "metadata"],
345
- srclang: null
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 });
346
350
  }
347
- },
348
- ul: { children: ["li", "script", "template", "ul", "ol"] },
349
- var: l,
350
- video: {
351
- attrs: {
352
- src: null,
353
- poster: null,
354
- width: null,
355
- height: null,
356
- crossorigin: ["anonymous", "use-credentials"],
357
- preload: ["auto", "metadata", "none"],
358
- autoplay: ["autoplay"],
359
- mediagroup: ["movie"],
360
- muted: ["muted"],
361
- controls: ["controls"]
351
+ }
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
+ )
362
384
  }
363
- },
364
- wbr: l
365
- }, D = {
366
- accesskey: null,
367
- class: null,
368
- contenteditable: c,
369
- contextmenu: null,
370
- dir: ["ltr", "rtl", "auto"],
371
- draggable: ["true", "false", "auto"],
372
- dropzone: ["copy", "move", "link", "string:", "file:"],
373
- hidden: ["hidden"],
374
- id: null,
375
- inert: ["inert"],
376
- itemid: null,
377
- itemprop: null,
378
- itemref: null,
379
- itemscope: ["itemscope"],
380
- itemtype: null,
381
- lang: ["ar", "bn", "de", "en-GB", "en-US", "es", "fr", "hi", "id", "ja", "pa", "pt", "ru", "tr", "zh"],
382
- spellcheck: c,
383
- autocorrect: c,
384
- autocapitalize: c,
385
- style: null,
386
- tabindex: null,
387
- title: null,
388
- translate: ["yes", "no"],
389
- rel: ["stylesheet", "alternate", "author", "bookmark", "help", "license", "next", "nofollow", "noreferrer", "prefetch", "prev", "search", "tag"],
390
- role: /* @__PURE__ */ "alert application article banner button cell checkbox complementary contentinfo dialog document feed figure form grid gridcell heading img list listbox listitem main navigation region row rowgroup search switch tab table tabpanel textbox timer".split(" "),
391
- "aria-activedescendant": null,
392
- "aria-atomic": c,
393
- "aria-autocomplete": ["inline", "list", "both", "none"],
394
- "aria-busy": c,
395
- "aria-checked": ["true", "false", "mixed", "undefined"],
396
- "aria-controls": null,
397
- "aria-describedby": null,
398
- "aria-disabled": c,
399
- "aria-dropeffect": null,
400
- "aria-expanded": ["true", "false", "undefined"],
401
- "aria-flowto": null,
402
- "aria-grabbed": ["true", "false", "undefined"],
403
- "aria-haspopup": c,
404
- "aria-hidden": c,
405
- "aria-invalid": ["true", "false", "grammar", "spelling"],
406
- "aria-label": null,
407
- "aria-labelledby": null,
408
- "aria-level": null,
409
- "aria-live": ["off", "polite", "assertive"],
410
- "aria-multiline": c,
411
- "aria-multiselectable": c,
412
- "aria-owns": null,
413
- "aria-posinset": null,
414
- "aria-pressed": ["true", "false", "mixed", "undefined"],
415
- "aria-readonly": c,
416
- "aria-relevant": null,
417
- "aria-required": c,
418
- "aria-selected": ["true", "false", "undefined"],
419
- "aria-setsize": null,
420
- "aria-sort": ["ascending", "descending", "none", "other"],
421
- "aria-valuemax": null,
422
- "aria-valuemin": null,
423
- "aria-valuenow": null,
424
- "aria-valuetext": null
425
- }, F = /* @__PURE__ */ "beforeunload copy cut dragstart dragover dragleave dragenter dragend drag paste focus blur change click load mousedown mouseenter mouseleave mouseup keydown keyup resize scroll unload".split(" ").map((e) => "on" + e);
426
- for (let e of F)
427
- D[e] = null;
428
- class C {
429
- constructor(n, r) {
430
- this.tags = { ...ne, ...n }, this.globalAttrs = { ...D, ...r }, this.allTags = Object.keys(this.tags), this.globalAttrNames = Object.keys(this.globalAttrs);
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 }) });
431
390
  }
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);
409
+ }
410
+ }, [n.viewport, d, s]), /* @__PURE__ */ b(
411
+ L.div,
412
+ {
413
+ "data-state": i.hasThumb ? "visible" : "hidden",
414
+ ...o,
415
+ ref: a,
416
+ style: {
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)
426
+ }
427
+ );
428
+ }
429
+ );
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;
432
467
  }
433
- C.default = /* @__PURE__ */ new C();
434
- function y(e, n, r = e.length) {
435
- if (!n)
436
- return "";
437
- let a = n.firstChild, t = a && a.getChild("TagName");
438
- return t ? e.sliceString(t.from, Math.min(t.to, r)) : "";
439
- }
440
- function v(e, n = !1) {
441
- for (; e; e = e.parent)
442
- if (e.name == "Element")
443
- if (n)
444
- n = !1;
445
- else
446
- return e;
447
- return null;
468
+ function ee(e, t) {
469
+ const r = e / t;
470
+ return isNaN(r) ? 0 : r;
448
471
  }
449
- function P(e, n, r) {
450
- let a = r.tags[y(e, v(n))];
451
- return (a == null ? void 0 : a.children) || r.allTags;
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);
452
475
  }
453
- function j(e, n) {
454
- let r = [];
455
- for (let a = v(n); a && !a.type.isTop; a = v(a.parent)) {
456
- let t = y(e, a);
457
- if (t && a.lastChild.name == "CloseTag")
458
- break;
459
- t && r.indexOf(t) < 0 && (n.name == "EndTag" || n.from >= a.firstChild.to) && r.push(t);
460
- }
461
- return r;
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);
462
479
  }
463
- const V = /^[:\-\.\w\u00b7-\uffff]*$/;
464
- function I(e, n, r, a, t) {
465
- let s = /\s*>/.test(e.sliceDoc(t, t + 5)) ? "" : ">", o = v(r, r.name == "StartTag" || r.name == "TagName");
466
- return {
467
- from: a,
468
- to: t,
469
- options: P(e.doc, o, n).map((u) => ({ label: u, type: "type" })).concat(j(e.doc, r).map((u, i) => ({
470
- label: "/" + u,
471
- apply: "/" + u + s,
472
- type: "type",
473
- boost: 99 - i
474
- }))),
475
- validFor: /^\/?[:\-\.\w\u00b7-\uffff]*$/
476
- };
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);
477
483
  }
478
- function L(e, n, r, a) {
479
- let t = /\s*>/.test(e.sliceDoc(a, a + 5)) ? "" : ">";
480
- return {
481
- from: r,
482
- to: a,
483
- options: j(e.doc, n).map((s, o) => ({ label: s, apply: s + t, type: "type", boost: 99 - o })),
484
- validFor: V
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]);
485
489
  };
486
490
  }
487
- function re(e, n, r, a) {
488
- let t = [], s = 0;
489
- for (let o of P(e.doc, r, n))
490
- t.push({ label: "<" + o, type: "type" });
491
- for (let o of j(e.doc, r))
492
- t.push({ label: "</" + o + ">", type: "type", boost: 99 - s++ });
493
- return { from: a, to: a, options: t, validFor: /^<\/?[:\-\.\w\u00b7-\uffff]*$/ };
491
+ function oe(e, t) {
492
+ return e > 0 && e < t;
494
493
  }
495
- function oe(e, n, r, a, t) {
496
- let s = v(r), o = s ? n.tags[y(e.doc, s)] : null, u = o && o.attrs ? Object.keys(o.attrs) : [], i = o && o.globalAttrs === !1 ? u : u.length ? u.concat(n.globalAttrNames) : n.globalAttrNames;
497
- return {
498
- from: a,
499
- to: t,
500
- options: i.map((f) => ({ label: f, type: "property" })),
501
- validFor: V
502
- };
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]);
503
507
  }
504
- function se(e, n, r, a, t) {
505
- var s;
506
- let o = (s = r.parent) === null || s === void 0 ? void 0 : s.getChild("AttributeName"), u = [], i;
507
- if (o) {
508
- let f = e.sliceDoc(o.from, o.to), g = n.globalAttrs[f];
509
- if (!g) {
510
- let p = v(r), m = p ? n.tags[y(e.doc, p)] : null;
511
- g = (m == null ? void 0 : m.attrs) && m.attrs[f];
512
- }
513
- if (g) {
514
- let p = e.sliceDoc(a, t).toLowerCase(), m = '"', d = '"';
515
- /^['"]/.test(p) ? (i = p[0] == '"' ? /^[^"]*$/ : /^[^']*$/, m = "", d = e.sliceDoc(t, t + 1) == p[0] ? "" : p[0], p = p.slice(1), a++) : i = /^[^\s<>='"]*$/;
516
- for (let h of g)
517
- u.push({ label: h, apply: m + h + d, type: "constant" });
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
+ };
518
519
  }
519
- }
520
- return { from: a, to: t, options: u, validFor: i };
521
- }
522
- function B(e, n) {
523
- let { state: r, pos: a } = n, t = z(r).resolveInner(a, -1), s = t.resolve(a);
524
- for (let o = a, u; s == t && (u = t.childBefore(o)); ) {
525
- let i = u.lastChild;
526
- if (!i || !i.type.isError || i.from < i.to)
527
- break;
528
- s = t = u, o = i.from;
529
- }
530
- return t.name == "TagName" ? t.parent && /CloseTag$/.test(t.parent.name) ? L(r, t, t.from, a) : I(r, e, t, t.from, a) : t.name == "StartTag" || t.name == "IncompleteTag" ? I(r, e, t, a, a) : t.name == "StartCloseTag" || t.name == "IncompleteCloseTag" ? L(r, t, a, a) : t.name == "OpenTag" || t.name == "SelfClosingTag" || t.name == "AttributeName" ? oe(r, e, t, t.name == "AttributeName" ? t.from : a, a) : t.name == "Is" || t.name == "AttributeValue" || t.name == "UnquotedAttributeValue" ? se(r, e, t, t.name == "Is" ? a : t.from, a) : n.explicit && (s.name == "Element" || s.name == "Text" || s.name == "Document") ? re(r, e, t, a) : null;
520
+ }, [e, r]);
531
521
  }
532
- function be(e) {
533
- return B(C.default, e);
534
- }
535
- function ie(e) {
536
- let { extraTags: n, extraGlobalAttributes: r } = e, a = r || n ? new C(n, r) : C.default;
537
- return (t) => B(a, t);
538
- }
539
- const ue = /* @__PURE__ */ $.parser.configure({ top: "SingleExpression" }), M = [
540
- {
541
- tag: "script",
542
- attrs: (e) => e.type == "text/typescript" || e.lang == "ts",
543
- parser: W.parser
544
- },
545
- {
546
- tag: "script",
547
- attrs: (e) => e.type == "text/babel" || e.type == "text/jsx",
548
- parser: J.parser
549
- },
550
- {
551
- tag: "script",
552
- attrs: (e) => e.type == "text/typescript-jsx",
553
- parser: K.parser
554
- },
555
- {
556
- tag: "script",
557
- attrs(e) {
558
- return /^(importmap|speculationrules|application\/(.+\+)?json)$/i.test(e.type);
559
- },
560
- parser: ue
561
- },
562
- {
563
- tag: "script",
564
- attrs(e) {
565
- return !e.type || /^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i.test(e.type);
566
- },
567
- parser: $.parser
568
- },
569
- {
570
- tag: "style",
571
- attrs(e) {
572
- return (!e.lang || e.lang == "css") && (!e.type || /^(text\/)?(x-)?(stylesheet|css)$/i.test(e.type));
573
- },
574
- parser: _.parser
575
- }
576
- ], G = /* @__PURE__ */ [
577
- {
578
- name: "style",
579
- parser: /* @__PURE__ */ _.parser.configure({ top: "Styles" })
580
- }
581
- ].concat(/* @__PURE__ */ F.map((e) => ({ name: e, parser: $.parser }))), R = /* @__PURE__ */ Z.define({
582
- name: "html",
583
- parser: /* @__PURE__ */ H.configure({
584
- props: [
585
- /* @__PURE__ */ te.add({
586
- Element(e) {
587
- let n = /^(\s*)(<\/)?/.exec(e.textAfter);
588
- return e.node.to <= e.pos + n[0].length ? e.continue() : e.lineIndent(e.node.from) + (n[2] ? 0 : e.unit);
589
- },
590
- "OpenTag CloseTag SelfClosingTag"(e) {
591
- return e.column(e.node.from) + e.unit;
592
- },
593
- Document(e) {
594
- if (e.pos + /\s*/.exec(e.textAfter)[0].length < e.node.to)
595
- return e.continue();
596
- let n = null, r;
597
- for (let a = e.node; ; ) {
598
- let t = a.lastChild;
599
- if (!t || t.name != "Element" || t.to != a.to)
600
- break;
601
- n = a = t;
602
- }
603
- return n && !((r = n.lastChild) && (r.name == "CloseTag" || r.name == "SelfClosingTag")) ? e.lineIndent(n.from) + e.unit : null;
604
- }
605
- }),
606
- /* @__PURE__ */ le.add({
607
- Element(e) {
608
- let n = e.firstChild, r = e.lastChild;
609
- return !n || n.name != "OpenTag" ? null : { from: n.to, to: r.name == "CloseTag" ? r.from : e.to };
610
- }
611
- }),
612
- /* @__PURE__ */ ae.add({
613
- "OpenTag CloseTag": (e) => e.getChild("TagName")
614
- })
615
- ]
616
- }),
617
- languageData: {
618
- commentTokens: { block: { open: "<!--", close: "-->" } },
619
- indentOnInput: /^\s*<\/\w+\W$/,
620
- wordChars: "-_"
621
- }
622
- }), x = /* @__PURE__ */ R.configure({
623
- wrap: /* @__PURE__ */ O(M, G)
624
- });
625
- function ye(e = {}) {
626
- let n = "", r;
627
- e.matchClosingTags === !1 && (n = "noMatch"), e.selfClosingTags === !0 && (n = (n ? n + " " : "") + "selfClosing"), (e.nestedLanguages && e.nestedLanguages.length || e.nestedAttributes && e.nestedAttributes.length) && (r = O((e.nestedLanguages || []).concat(M), (e.nestedAttributes || []).concat(G)));
628
- let a = r ? R.configure({ wrap: r, dialect: n }) : n ? x.configure({ dialect: n }) : x;
629
- return new ee(a, [
630
- x.data.of({ autocomplete: ie(e) }),
631
- e.autoCloseTags !== !1 ? de : [],
632
- Q().support,
633
- U().support
634
- ]);
635
- }
636
- const q = /* @__PURE__ */ new Set(/* @__PURE__ */ "area base br col command embed frame hr img input keygen link meta param source track wbr menuitem".split(" ")), de = /* @__PURE__ */ X.inputHandler.of((e, n, r, a, t) => {
637
- if (e.composing || e.state.readOnly || n != r || a != ">" && a != "/" || !x.isActiveAt(e.state, n, -1))
638
- return !1;
639
- let s = t(), { state: o } = s, u = o.changeByRange((i) => {
640
- var f, g, p;
641
- let m = o.doc.sliceString(i.from - 1, i.to) == a, { head: d } = i, h = z(o).resolveInner(d, -1), b;
642
- if (m && a == ">" && h.name == "EndTag") {
643
- let w = h.parent;
644
- if (((g = (f = w.parent) === null || f === void 0 ? void 0 : f.lastChild) === null || g === void 0 ? void 0 : g.name) != "CloseTag" && (b = y(o.doc, w.parent, d)) && !q.has(b)) {
645
- let A = d + (o.doc.sliceString(d, d + 1) === ">" ? 1 : 0), k = `</${b}>`;
646
- return { range: i, changes: { from: d, to: A, insert: k } };
647
- }
648
- } else if (m && a == "/" && h.name == "IncompleteCloseTag") {
649
- let w = h.parent;
650
- if (h.from == d - 2 && ((p = w.lastChild) === null || p === void 0 ? void 0 : p.name) != "CloseTag" && (b = y(o.doc, w, d)) && !q.has(b)) {
651
- let A = d + (o.doc.sliceString(d, d + 1) === ">" ? 1 : 0), k = `${b}>`;
652
- return {
653
- range: Y.cursor(d + k.length, -1),
654
- changes: { from: d, to: A, insert: k }
655
- };
656
- }
657
- }
658
- return { range: i };
659
- });
660
- return u.changes.empty ? !1 : (e.dispatch([
661
- s,
662
- o.update(u, {
663
- userEvent: "input.complete",
664
- scrollIntoView: !0
665
- })
666
- ]), !0);
667
- });
522
+ var He = q, ze = G, Ne = Z;
668
523
  export {
669
- de as autoCloseTags,
670
- ye as html,
671
- be as htmlCompletionSource,
672
- ie as htmlCompletionSourceWith,
673
- x as htmlLanguage
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
674
532
  };