@vuer-ai/vuer-uikit 0.0.97 → 0.0.98

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 (56) hide show
  1. package/README.md +106 -7
  2. package/cli/dial-cli.js +49 -7
  3. package/dist/SyncScroll/SyncScroll.cjs +9 -9
  4. package/dist/SyncScroll/SyncScroll.mjs +2 -2
  5. package/dist/SyncScroll/index.cjs +9 -9
  6. package/dist/SyncScroll/index.mjs +2 -2
  7. package/dist/chunk-4KWGGESI.cjs +494 -0
  8. package/dist/{chunk-6YDZA2RP.cjs → chunk-7GWDO25E.cjs} +1 -1
  9. package/dist/chunk-A5LCX2UQ.cjs +208 -0
  10. package/dist/chunk-BEJIZ56L.mjs +300 -0
  11. package/dist/chunk-C7VGRU3O.mjs +283 -0
  12. package/dist/chunk-LJMNHTTG.cjs +679 -0
  13. package/dist/chunk-O66RESRR.cjs +285 -0
  14. package/dist/{chunk-JBHXGZUF.mjs → chunk-TTYSYGVE.mjs} +1 -1
  15. package/dist/chunk-VA3PEYFM.mjs +489 -0
  16. package/dist/chunk-VBBJSIY7.cjs +308 -0
  17. package/dist/chunk-W4JCKCW7.mjs +661 -0
  18. package/dist/chunk-WWGF6TBZ.mjs +206 -0
  19. package/dist/dial/DialPanel.cjs +11 -11
  20. package/dist/dial/DialPanel.mjs +10 -10
  21. package/dist/dial/index.cjs +27 -27
  22. package/dist/dial/index.mjs +10 -10
  23. package/dist/dial/wrapped-inputs/ControlledInputs.cjs +14 -14
  24. package/dist/dial/wrapped-inputs/ControlledInputs.mjs +10 -10
  25. package/dist/dial/wrapped-inputs/DialInputs.cjs +21 -21
  26. package/dist/dial/wrapped-inputs/DialInputs.mjs +10 -10
  27. package/dist/dial/wrapped-inputs/DialVectorInput.cjs +11 -11
  28. package/dist/dial/wrapped-inputs/DialVectorInput.mjs +10 -10
  29. package/dist/dial/wrapped-inputs/index.cjs +26 -26
  30. package/dist/dial/wrapped-inputs/index.mjs +10 -10
  31. package/dist/highlight-cursor/cursor-provider.cjs +3 -3
  32. package/dist/highlight-cursor/cursor-provider.mjs +2 -2
  33. package/dist/highlight-cursor/enhanced-components.cjs +1 -1
  34. package/dist/highlight-cursor/enhanced-components.mjs +1 -1
  35. package/dist/highlight-cursor/index.cjs +3 -3
  36. package/dist/highlight-cursor/index.mjs +2 -2
  37. package/dist/index.cjs +86 -86
  38. package/dist/index.mjs +10 -10
  39. package/dist/ui/UIKitBadge.cjs +5 -5
  40. package/dist/ui/UIKitBadge.mjs +1 -1
  41. package/dist/ui/badge.d.cts +1 -1
  42. package/dist/ui/badge.d.ts +1 -1
  43. package/dist/ui/index.cjs +12 -12
  44. package/dist/ui/index.mjs +6 -6
  45. package/dist/ui/inputs/input.d.cts +1 -1
  46. package/dist/ui/inputs/input.d.ts +1 -1
  47. package/dist/ui/select.d.cts +1 -1
  48. package/dist/ui/select.d.ts +1 -1
  49. package/dist/ui/textarea.d.cts +1 -1
  50. package/dist/ui/textarea.d.ts +1 -1
  51. package/dist/ui/tree-view-legacy.cjs +8 -8
  52. package/dist/ui/tree-view-legacy.mjs +4 -4
  53. package/dist/ui/waterfall/index.cjs +5 -5
  54. package/dist/ui/waterfall/index.mjs +4 -4
  55. package/package.json +1 -1
  56. package/src/cli/dial-cli.ts +64 -8
@@ -0,0 +1,208 @@
1
+ 'use strict';
2
+
3
+ var chunkOHIB3TEN_cjs = require('./chunk-OHIB3TEN.cjs');
4
+ var chunkP6DICGAV_cjs = require('./chunk-P6DICGAV.cjs');
5
+ var react = require('react');
6
+ var reactDom = require('react-dom');
7
+ var jsxRuntime = require('react/jsx-runtime');
8
+
9
+ var CursorProvider = ({
10
+ children,
11
+ maxOffsetX = 5,
12
+ maxOffsetY = 20,
13
+ cursorSize = 20,
14
+ transitionDuration = 100,
15
+ cursorClassName,
16
+ className,
17
+ as: Component = "div",
18
+ ...props
19
+ }) => {
20
+ const [isClient, setIsClient] = react.useState(false);
21
+ const [isMouseInside, setIsMouseInside] = react.useState(false);
22
+ const [mousePosition, setMousePosition] = react.useState({ x: 0, y: 0 });
23
+ const [hoveredElementId, setHoveredElementId] = react.useState(null);
24
+ const [elementDimensions, setElementDimensions] = react.useState({
25
+ width: 0,
26
+ height: 0,
27
+ x: 0,
28
+ y: 0,
29
+ right: 0,
30
+ bottom: 0
31
+ });
32
+ const hoveredElementRef = react.useRef(null);
33
+ react.useEffect(() => {
34
+ setIsClient(true);
35
+ }, []);
36
+ react.useEffect(() => {
37
+ if (!isClient) return;
38
+ const handleMouseMove = (e) => {
39
+ setMousePosition({ x: e.clientX, y: e.clientY });
40
+ };
41
+ document.addEventListener("mousemove", handleMouseMove);
42
+ return () => document.removeEventListener("mousemove", handleMouseMove);
43
+ }, [isClient]);
44
+ const handleMouseEnter = react.useCallback(() => {
45
+ setIsMouseInside(true);
46
+ }, []);
47
+ const handleMouseLeave = react.useCallback(() => {
48
+ setIsMouseInside(false);
49
+ setHoveredElementId(null);
50
+ hoveredElementRef.current = null;
51
+ }, []);
52
+ const checkMouseInElement = react.useCallback(() => {
53
+ if (!hoveredElementRef.current || !hoveredElementId) {
54
+ return;
55
+ }
56
+ const rect = hoveredElementRef.current.getBoundingClientRect();
57
+ setElementDimensions({
58
+ width: rect.width,
59
+ height: rect.height,
60
+ x: rect.left,
61
+ y: rect.top,
62
+ right: rect.right,
63
+ bottom: rect.bottom
64
+ });
65
+ const isInside = mousePosition.x >= rect.left && mousePosition.x <= rect.right && mousePosition.y >= rect.top && mousePosition.y <= rect.bottom;
66
+ if (!isInside) {
67
+ setHoveredElementId(null);
68
+ hoveredElementRef.current = null;
69
+ }
70
+ }, [mousePosition, hoveredElementId]);
71
+ react.useEffect(() => {
72
+ if (!isClient) return;
73
+ const handleScroll = () => {
74
+ checkMouseInElement();
75
+ };
76
+ document.addEventListener("scroll", handleScroll, { passive: true, capture: true });
77
+ return () => {
78
+ document.removeEventListener("scroll", handleScroll, { capture: true });
79
+ };
80
+ }, [checkMouseInElement, isClient]);
81
+ const registerHoveredElement = react.useCallback(
82
+ (id, dimensions, element) => {
83
+ setHoveredElementId(id);
84
+ setElementDimensions({
85
+ width: dimensions.width,
86
+ height: dimensions.height,
87
+ x: dimensions.left,
88
+ y: dimensions.top,
89
+ right: dimensions.right,
90
+ bottom: dimensions.bottom
91
+ });
92
+ if (element) {
93
+ hoveredElementRef.current = element;
94
+ }
95
+ },
96
+ []
97
+ );
98
+ const unregisterHoveredElement = react.useCallback(() => {
99
+ setHoveredElementId(null);
100
+ hoveredElementRef.current = null;
101
+ }, []);
102
+ const updateElementDimensions = react.useCallback(
103
+ (dimensions) => {
104
+ if (hoveredElementId) {
105
+ setElementDimensions({
106
+ width: dimensions.width,
107
+ height: dimensions.height,
108
+ x: dimensions.left,
109
+ y: dimensions.top,
110
+ right: dimensions.right,
111
+ bottom: dimensions.bottom
112
+ });
113
+ }
114
+ },
115
+ [hoveredElementId]
116
+ );
117
+ const getCursorPosition = () => {
118
+ if (!hoveredElementId) {
119
+ return {
120
+ x: mousePosition.x - cursorSize / 2,
121
+ y: mousePosition.y - cursorSize / 2
122
+ };
123
+ }
124
+ const elementCenterX = elementDimensions.x + elementDimensions.width / 2;
125
+ const elementCenterY = elementDimensions.y + elementDimensions.height / 2;
126
+ const offsetX = (mousePosition.x - elementCenterX) * 0.1;
127
+ const offsetY = (mousePosition.y - elementCenterY) * 0.1;
128
+ const boundedOffsetX = Math.max(-maxOffsetX, Math.min(maxOffsetX, offsetX));
129
+ const boundedOffsetY = Math.max(-maxOffsetY, Math.min(maxOffsetY, offsetY));
130
+ return {
131
+ x: elementDimensions.x + boundedOffsetX,
132
+ y: elementDimensions.y + boundedOffsetY
133
+ };
134
+ };
135
+ const contextValue = react.useMemo(
136
+ () => ({
137
+ // State values that change during component lifecycle
138
+ mousePosition,
139
+ hoveredElementId,
140
+ elementDimensions,
141
+ // Callbacks that should be stable references
142
+ registerHoveredElement,
143
+ unregisterHoveredElement,
144
+ updateElementDimensions
145
+ }),
146
+ [
147
+ mousePosition,
148
+ hoveredElementId,
149
+ elementDimensions,
150
+ registerHoveredElement,
151
+ unregisterHoveredElement,
152
+ updateElementDimensions
153
+ ]
154
+ );
155
+ const cursorPosition = getCursorPosition();
156
+ const cursorStyleObject = react.useMemo(
157
+ () => ({
158
+ left: cursorPosition.x,
159
+ top: cursorPosition.y,
160
+ width: hoveredElementId ? elementDimensions.width > 0 ? elementDimensions.width : cursorSize : cursorSize,
161
+ height: hoveredElementId ? elementDimensions.height > 0 ? elementDimensions.height : cursorSize : cursorSize,
162
+ willChange: "transform, width, height"
163
+ }),
164
+ [
165
+ cursorPosition.x,
166
+ cursorPosition.y,
167
+ hoveredElementId,
168
+ elementDimensions.width,
169
+ elementDimensions.height,
170
+ cursorSize
171
+ ]
172
+ );
173
+ let styleClass;
174
+ if (hoveredElementId) {
175
+ styleClass = `opacity-[0.05] rounded-uk-md transition-[width,height,left,top] duration-${transitionDuration} ease-out`;
176
+ } else {
177
+ styleClass = `opacity-90 rounded-full z-10 transition-[width,height,left,top] duration-${transitionDuration} ease-out transition-opacity duration-${transitionDuration}`;
178
+ }
179
+ const cursorElement = isClient && isMouseInside && /* @__PURE__ */ jsxRuntime.jsx(
180
+ "div",
181
+ {
182
+ className: `pointer-events-none fixed ${styleClass} ${hoveredElementId ? "" : cursorClassName || ""}`,
183
+ style: {
184
+ ...cursorStyleObject,
185
+ backgroundColor: "var(--shadow-tertiary)"
186
+ }
187
+ }
188
+ );
189
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
190
+ isClient && typeof document !== "undefined" && document.body && cursorElement && reactDom.createPortal(cursorElement, document.body),
191
+ /* @__PURE__ */ jsxRuntime.jsx(chunkP6DICGAV_cjs.CursorContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsx(
192
+ Component,
193
+ {
194
+ ...props,
195
+ className: chunkOHIB3TEN_cjs.cn(className),
196
+ style: {
197
+ cursor: isMouseInside && !hoveredElementId ? "none" : "auto",
198
+ ...props.style
199
+ },
200
+ onMouseEnter: handleMouseEnter,
201
+ onMouseLeave: handleMouseLeave,
202
+ children
203
+ }
204
+ ) })
205
+ ] });
206
+ };
207
+
208
+ exports.CursorProvider = CursorProvider;
@@ -0,0 +1,300 @@
1
+ import { useSyncScroll, useScrollSlave, useSyncDrag } from './chunk-SAGQV2YZ.mjs';
2
+ import { cn } from './chunk-HMN4IKTG.mjs';
3
+ import { Slot } from '@radix-ui/react-slot';
4
+ import { useState, useRef, useEffect } from 'react';
5
+ import { jsx } from 'react/jsx-runtime';
6
+
7
+ var SyncScroll = ({ children, className, asChild = false, ...props }) => {
8
+ const Comp = asChild ? Slot : "div";
9
+ return /* @__PURE__ */ jsx(Comp, { ref: useSyncScroll(), className: cn("overflow-y-auto", className), ...props, children });
10
+ };
11
+ var SyncScrollSlave = ({
12
+ children,
13
+ className,
14
+ asChild = false,
15
+ ...props
16
+ }) => {
17
+ const Comp = asChild ? Slot : "div";
18
+ return /* @__PURE__ */ jsx(Comp, { ref: useScrollSlave(), className: cn("overflow-y-auto", className), ...props, children });
19
+ };
20
+ var SyncDrag = ({
21
+ ref: extRef,
22
+ children,
23
+ className,
24
+ asChild = false,
25
+ ...props
26
+ }) => {
27
+ const ref = useSyncDrag({ ref: extRef, axis: "both" });
28
+ const [isDragging, setIsDragging] = useState(false);
29
+ const dragStartX = useRef(0);
30
+ const dragStartY = useRef(0);
31
+ const scrollStartLeft = useRef(0);
32
+ const scrollStartTop = useRef(0);
33
+ useEffect(() => {
34
+ const element = ref.current;
35
+ if (!element) return;
36
+ const handleMouseDown = (e) => {
37
+ setIsDragging(true);
38
+ dragStartX.current = e.clientX;
39
+ dragStartY.current = e.clientY;
40
+ scrollStartLeft.current = element.scrollLeft;
41
+ scrollStartTop.current = element.scrollTop;
42
+ e.preventDefault();
43
+ };
44
+ const handleMouseMove = (e) => {
45
+ if (!isDragging || !element) return;
46
+ const deltaX = e.clientX - dragStartX.current;
47
+ const deltaY = e.clientY - dragStartY.current;
48
+ element.scrollLeft = scrollStartLeft.current - deltaX * 2;
49
+ element.scrollTop = scrollStartTop.current - deltaY * 2;
50
+ };
51
+ const handleMouseUp = () => {
52
+ setIsDragging(false);
53
+ };
54
+ element.addEventListener("mousedown", handleMouseDown);
55
+ if (isDragging) {
56
+ document.addEventListener("mousemove", handleMouseMove);
57
+ document.addEventListener("mouseup", handleMouseUp);
58
+ document.addEventListener("mouseleave", handleMouseUp);
59
+ }
60
+ return () => {
61
+ element.removeEventListener("mousedown", handleMouseDown);
62
+ document.removeEventListener("mousemove", handleMouseMove);
63
+ document.removeEventListener("mouseup", handleMouseUp);
64
+ document.removeEventListener("mouseleave", handleMouseUp);
65
+ };
66
+ }, [isDragging, ref]);
67
+ const Comp = asChild ? Slot : "div";
68
+ return /* @__PURE__ */ jsx(
69
+ Comp,
70
+ {
71
+ ref,
72
+ className: cn("cursor-grab overflow-auto", isDragging && "cursor-grabbing", className),
73
+ style: { userSelect: isDragging ? "none" : "auto", ...props.style },
74
+ ...props,
75
+ children
76
+ }
77
+ );
78
+ };
79
+ var SyncDragX = ({ children, className, asChild = false, ...props }) => {
80
+ const ref = useSyncDrag({ axis: "horizontal" });
81
+ const [isDragging, setIsDragging] = useState(false);
82
+ const dragStartX = useRef(0);
83
+ const scrollStartLeft = useRef(0);
84
+ useEffect(() => {
85
+ const element = ref.current;
86
+ if (!element) return;
87
+ const handleMouseDown = (e) => {
88
+ setIsDragging(true);
89
+ dragStartX.current = e.clientX;
90
+ scrollStartLeft.current = element.scrollLeft;
91
+ e.preventDefault();
92
+ };
93
+ const handleMouseMove = (e) => {
94
+ if (!isDragging || !element) return;
95
+ const deltaX = e.clientX - dragStartX.current;
96
+ element.scrollLeft = scrollStartLeft.current - deltaX * 2;
97
+ };
98
+ const handleMouseUp = () => {
99
+ setIsDragging(false);
100
+ };
101
+ element.addEventListener("mousedown", handleMouseDown);
102
+ if (isDragging) {
103
+ document.addEventListener("mousemove", handleMouseMove);
104
+ document.addEventListener("mouseup", handleMouseUp);
105
+ document.addEventListener("mouseleave", handleMouseUp);
106
+ }
107
+ return () => {
108
+ element.removeEventListener("mousedown", handleMouseDown);
109
+ document.removeEventListener("mousemove", handleMouseMove);
110
+ document.removeEventListener("mouseup", handleMouseUp);
111
+ document.removeEventListener("mouseleave", handleMouseUp);
112
+ };
113
+ }, [isDragging, ref]);
114
+ const Comp = asChild ? Slot : "div";
115
+ return /* @__PURE__ */ jsx(
116
+ Comp,
117
+ {
118
+ ref,
119
+ className: cn("cursor-grab overflow-x-auto", isDragging ? "cursor-grabbing" : "", className),
120
+ style: { userSelect: isDragging ? "none" : "auto", ...props.style },
121
+ ...props,
122
+ children
123
+ }
124
+ );
125
+ };
126
+ var SyncDragSlave = ({
127
+ ref: extRef,
128
+ children,
129
+ className,
130
+ asChild = false,
131
+ ...props
132
+ }) => {
133
+ const ref = useScrollSlave({ ref: extRef, axis: "both" });
134
+ const [isDragging, setIsDragging] = useState(false);
135
+ const dragStartX = useRef(0);
136
+ const dragStartY = useRef(0);
137
+ const scrollStartLeft = useRef(0);
138
+ const scrollStartTop = useRef(0);
139
+ useEffect(() => {
140
+ const element = ref.current;
141
+ if (!element) return;
142
+ const handleMouseDown = (e) => {
143
+ setIsDragging(true);
144
+ dragStartX.current = e.clientX;
145
+ dragStartY.current = e.clientY;
146
+ scrollStartLeft.current = element.scrollLeft;
147
+ scrollStartTop.current = element.scrollTop;
148
+ e.preventDefault();
149
+ };
150
+ const handleMouseMove = (e) => {
151
+ if (!isDragging || !element) return;
152
+ const deltaX = e.clientX - dragStartX.current;
153
+ const deltaY = e.clientY - dragStartY.current;
154
+ element.scrollLeft = scrollStartLeft.current - deltaX * 2;
155
+ element.scrollTop = scrollStartTop.current - deltaY * 2;
156
+ };
157
+ const handleMouseUp = () => {
158
+ setIsDragging(false);
159
+ };
160
+ element.addEventListener("mousedown", handleMouseDown);
161
+ if (isDragging) {
162
+ document.addEventListener("mousemove", handleMouseMove);
163
+ document.addEventListener("mouseup", handleMouseUp);
164
+ document.addEventListener("mouseleave", handleMouseUp);
165
+ }
166
+ return () => {
167
+ element.removeEventListener("mousedown", handleMouseDown);
168
+ document.removeEventListener("mousemove", handleMouseMove);
169
+ document.removeEventListener("mouseup", handleMouseUp);
170
+ document.removeEventListener("mouseleave", handleMouseUp);
171
+ };
172
+ }, [isDragging, ref]);
173
+ const Comp = asChild ? Slot : "div";
174
+ return /* @__PURE__ */ jsx(
175
+ Comp,
176
+ {
177
+ ref,
178
+ className: cn("cursor-grab overflow-auto", isDragging && "cursor-grabbing", className),
179
+ style: { userSelect: isDragging ? "none" : "auto", ...props.style },
180
+ ...props,
181
+ children
182
+ }
183
+ );
184
+ };
185
+ var SyncDragSlaveX = ({
186
+ ref: extRef,
187
+ children,
188
+ className,
189
+ asChild = false,
190
+ ...props
191
+ }) => {
192
+ const ref = useScrollSlave({ ref: extRef, axis: "horizontal" });
193
+ const [isDragging, setIsDragging] = useState(false);
194
+ const dragStartX = useRef(0);
195
+ const scrollStartLeft = useRef(0);
196
+ useEffect(() => {
197
+ const element = ref.current;
198
+ if (!element) return;
199
+ const handleMouseDown = (e) => {
200
+ setIsDragging(true);
201
+ dragStartX.current = e.clientX;
202
+ scrollStartLeft.current = element.scrollLeft;
203
+ e.preventDefault();
204
+ };
205
+ const handleMouseMove = (e) => {
206
+ if (!isDragging || !element) return;
207
+ const deltaX = e.clientX - dragStartX.current;
208
+ element.scrollLeft = scrollStartLeft.current - deltaX * 2;
209
+ };
210
+ const handleMouseUp = () => {
211
+ setIsDragging(false);
212
+ };
213
+ element.addEventListener("mousedown", handleMouseDown);
214
+ if (isDragging) {
215
+ document.addEventListener("mousemove", handleMouseMove);
216
+ document.addEventListener("mouseup", handleMouseUp);
217
+ document.addEventListener("mouseleave", handleMouseUp);
218
+ }
219
+ return () => {
220
+ element.removeEventListener("mousedown", handleMouseDown);
221
+ document.removeEventListener("mousemove", handleMouseMove);
222
+ document.removeEventListener("mouseup", handleMouseUp);
223
+ document.removeEventListener("mouseleave", handleMouseUp);
224
+ };
225
+ }, [isDragging, ref]);
226
+ const Comp = asChild ? Slot : "div";
227
+ return /* @__PURE__ */ jsx(
228
+ Comp,
229
+ {
230
+ ref,
231
+ className: cn(
232
+ "cursor-grab overflow-x-auto overflow-y-hidden",
233
+ isDragging && "cursor-grabbing",
234
+ className
235
+ ),
236
+ style: { userSelect: isDragging ? "none" : "auto", ...props.style },
237
+ ...props,
238
+ children
239
+ }
240
+ );
241
+ };
242
+ var SyncDragY = ({
243
+ ref: extRef,
244
+ children,
245
+ className,
246
+ asChild = false,
247
+ ...props
248
+ }) => {
249
+ const ref = useSyncDrag({ ref: extRef, axis: "vertical" });
250
+ const [isDragging, setIsDragging] = useState(false);
251
+ const dragStartY = useRef(0);
252
+ const scrollStartTop = useRef(0);
253
+ useEffect(() => {
254
+ const element = ref.current;
255
+ if (!element) return;
256
+ const handleMouseDown = (e) => {
257
+ setIsDragging(true);
258
+ dragStartY.current = e.clientY;
259
+ scrollStartTop.current = element.scrollTop;
260
+ e.preventDefault();
261
+ };
262
+ const handleMouseMove = (e) => {
263
+ if (!isDragging || !element) return;
264
+ const deltaY = e.clientY - dragStartY.current;
265
+ element.scrollTop = scrollStartTop.current - deltaY * 2;
266
+ };
267
+ const handleMouseUp = () => {
268
+ setIsDragging(false);
269
+ };
270
+ element.addEventListener("mousedown", handleMouseDown);
271
+ if (isDragging) {
272
+ document.addEventListener("mousemove", handleMouseMove);
273
+ document.addEventListener("mouseup", handleMouseUp);
274
+ document.addEventListener("mouseleave", handleMouseUp);
275
+ }
276
+ return () => {
277
+ element.removeEventListener("mousedown", handleMouseDown);
278
+ document.removeEventListener("mousemove", handleMouseMove);
279
+ document.removeEventListener("mouseup", handleMouseUp);
280
+ document.removeEventListener("mouseleave", handleMouseUp);
281
+ };
282
+ }, [isDragging, ref]);
283
+ const Comp = asChild ? Slot : "div";
284
+ return /* @__PURE__ */ jsx(
285
+ Comp,
286
+ {
287
+ ref,
288
+ className: cn(
289
+ "cursor-grab overflow-x-hidden overflow-y-auto",
290
+ isDragging && "cursor-grabbing",
291
+ className
292
+ ),
293
+ style: { userSelect: isDragging ? "none" : "auto", ...props.style },
294
+ ...props,
295
+ children
296
+ }
297
+ );
298
+ };
299
+
300
+ export { SyncDrag, SyncDragSlave, SyncDragSlaveX, SyncDragX, SyncDragY, SyncScroll, SyncScrollSlave };