@kimdw-rtk/ui 0.1.15 → 0.1.16

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.
@@ -1 +1 @@
1
- {"version":3,"file":"Range.css.d.ts","sourceRoot":"","sources":["../../../src/components/Range/Range.css.ts"],"names":[],"mappings":"AAkCA,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BhB,CAAC;AAEH,eAAO,MAAM,KAAK,QA2ChB,CAAC;AAEH,eAAO,MAAM,IAAI,QAOf,CAAC;AAEH,eAAO,MAAM,GAAG,QAWd,CAAC"}
1
+ {"version":3,"file":"Range.css.d.ts","sourceRoot":"","sources":["../../../src/components/Range/Range.css.ts"],"names":[],"mappings":"AAkCA,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+BhB,CAAC;AAEH,eAAO,MAAM,KAAK,QA4ChB,CAAC;AAEH,eAAO,MAAM,IAAI,QAOf,CAAC;AAEH,eAAO,MAAM,GAAG,QAWd,CAAC"}
@@ -95,6 +95,7 @@
95
95
  width: 100%;
96
96
  height: 2em;
97
97
  user-select: none;
98
+ touch-action: none;
98
99
  }
99
100
  .Range_styleWithLayer__biyxwow {
100
101
  font-size: 0.75em;
@@ -116,6 +117,7 @@
116
117
  background-color: rgb(var(--backgroundVar__biyxwo0));
117
118
  transform: translate(-50%, -50%);
118
119
  cursor: pointer;
120
+ touch-action: none;
119
121
  }
120
122
  .Range_styleWithLayer__biyxwo1x::before {
121
123
  content: "";
@@ -4,16 +4,16 @@
4
4
  var jsxRuntime = require('react/jsx-runtime');
5
5
  var react = require('react');
6
6
  var utils = require('@kimdw-rtk/utils');
7
+ var vanillaExtractDynamic_esm = require('../../node_modules/.pnpm/@vanilla-extract_dynamic@2.1.5/node_modules/@vanilla-extract/dynamic/dist/vanilla-extract-dynamic.esm.cjs');
7
8
  var clsx = require('../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.cjs');
8
9
  var index = require('../../hooks/useMouseScroll/index.cjs');
9
10
  var ScrollArea_css = require('./ScrollArea.css.vanilla.cjs');
11
+ var spacing = require('../../tokens/semantic/spacing.cjs');
10
12
  var sx = require('../../styles/sx.cjs');
11
13
 
12
- const ScrollArea = react.forwardRef(({ children, className, sx: propSx, ...props }, ref) => {
14
+ const ScrollArea = react.forwardRef(({ children, className, innerPadding = 'lg', sx: propSx, style, ...props }, ref) => {
13
15
  const scrollAreaRef = react.useRef(null);
14
16
  const targetRef = utils.useCombinedRefs(ref, scrollAreaRef);
15
- const [hasLeftSpace, setHasLeftSpace] = react.useState(false);
16
- const [hasRightSpace, setHasRightSpace] = react.useState(true);
17
17
  index.useMouseScroll(scrollAreaRef);
18
18
  react.useEffect(() => {
19
19
  const element = scrollAreaRef.current;
@@ -28,20 +28,15 @@ const ScrollArea = react.forwardRef(({ children, className, sx: propSx, ...props
28
28
  }
29
29
  e.preventDefault();
30
30
  };
31
- const handleScroll = () => {
32
- setHasLeftSpace(element.scrollLeft !== 0);
33
- setHasRightSpace(Math.ceil(element.scrollLeft + element.clientWidth) <
34
- Math.floor(element.scrollWidth));
35
- };
36
- handleScroll();
37
- element.addEventListener('scroll', handleScroll);
38
31
  element.addEventListener('wheel', handleWheel);
39
32
  return () => {
40
- element.removeEventListener('scroll', handleScroll);
41
33
  element.removeEventListener('wheel', handleWheel);
42
34
  };
43
35
  }, []);
44
- return (jsxRuntime.jsx("div", { ref: targetRef, className: clsx.clsx(ScrollArea_css.scrollArea, className, sx.sx(propSx), hasLeftSpace && hasRightSpace && ScrollArea_css.maskBoth, hasLeftSpace && ScrollArea_css.maskLeft, hasRightSpace && ScrollArea_css.maskRight), ...props, children: jsxRuntime.jsx("div", { className: ScrollArea_css.wrapper, children: children }) }));
36
+ return (jsxRuntime.jsx("div", { ref: targetRef, className: clsx.clsx(ScrollArea_css.scrollArea, className, sx.sx(propSx), ScrollArea_css.mask), ...props, style: {
37
+ ...style,
38
+ ...vanillaExtractDynamic_esm.assignInlineVars({ [ScrollArea_css.paddingVar]: spacing.spacing[innerPadding] }),
39
+ }, children: jsxRuntime.jsx("div", { className: ScrollArea_css.wrapper, children: children }) }));
45
40
  });
46
41
  ScrollArea.displayName = 'ScrollArea';
47
42
 
@@ -1,6 +1,5 @@
1
+ export declare const paddingVar: `var(--${string})`;
1
2
  export declare const scrollArea: string;
2
- export declare const maskLeft: string;
3
- export declare const maskRight: string;
4
- export declare const maskBoth: string;
3
+ export declare const mask: string;
5
4
  export declare const wrapper: string;
6
5
  //# sourceMappingURL=ScrollArea.css.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollArea.css.d.ts","sourceRoot":"","sources":["../../../src/components/ScrollArea/ScrollArea.css.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,UAAU,QASrB,CAAC;AAEH,eAAO,MAAM,QAAQ,QAKnB,CAAC;AAEH,eAAO,MAAM,SAAS,QAKpB,CAAC;AAEH,eAAO,MAAM,QAAQ,QAMnB,CAAC;AAEH,eAAO,MAAM,OAAO,QAElB,CAAC"}
1
+ {"version":3,"file":"ScrollArea.css.d.ts","sourceRoot":"","sources":["../../../src/components/ScrollArea/ScrollArea.css.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,UAAU,oBAAc,CAAC;AAEtC,eAAO,MAAM,UAAU,QASrB,CAAC;AAEH,eAAO,MAAM,IAAI,QAMf,CAAC;AAEH,eAAO,MAAM,OAAO,QAGlB,CAAC"}
@@ -1,33 +1,22 @@
1
1
  @layer components;
2
- .ScrollArea_maskLeft__m6lfro1 {
3
- mask-image: linear-gradient(to left,
4
- black 0%,
5
- black calc(100% - 3rem),
6
- transparent 100%);
7
- }
8
- .ScrollArea_maskRight__m6lfro2 {
9
- mask-image: linear-gradient(to right,
10
- black 0%,
11
- black calc(100% - 3rem),
12
- transparent 100%);
13
- }
14
- .ScrollArea_maskBoth__m6lfro3 {
2
+ .ScrollArea_mask__m6lfro2 {
15
3
  mask-image: linear-gradient(to right,
16
4
  transparent 0%,
17
- black 3rem,
18
- black calc(100% - 3rem),
5
+ black var(--paddingVar__m6lfro0),
6
+ black calc(100% - var(--paddingVar__m6lfro0)),
19
7
  transparent 100%);
20
8
  }
21
- .ScrollArea_wrapper__m6lfro4 {
9
+ .ScrollArea_wrapper__m6lfro3 {
22
10
  width: max-content;
11
+ padding-inline: var(--paddingVar__m6lfro0);
23
12
  }
24
13
  @layer components {
25
- .ScrollArea_styleWithLayer__m6lfro0 {
14
+ .ScrollArea_styleWithLayer__m6lfro1 {
26
15
  width: 100%;
27
16
  overflow-x: scroll;
28
17
  user-select: none;
29
18
  }
30
- .ScrollArea_styleWithLayer__m6lfro0::-webkit-scrollbar {
19
+ .ScrollArea_styleWithLayer__m6lfro1::-webkit-scrollbar {
31
20
  display: none;
32
21
  }
33
22
  }
@@ -5,14 +5,12 @@ require('./../../styles/sprinkles.css.ts.vanilla.css');
5
5
  require('./../../styles/globalStyle.css.ts.vanilla.css');
6
6
  require('./ScrollArea.css.ts.vanilla.css');
7
7
 
8
- var maskBoth = 'ScrollArea_maskBoth__m6lfro3';
9
- var maskLeft = 'ScrollArea_maskLeft__m6lfro1';
10
- var maskRight = 'ScrollArea_maskRight__m6lfro2';
11
- var scrollArea = 'ScrollArea_styleWithLayer__m6lfro0';
12
- var wrapper = 'ScrollArea_wrapper__m6lfro4';
8
+ var mask = 'ScrollArea_mask__m6lfro2';
9
+ var paddingVar = 'var(--paddingVar__m6lfro0)';
10
+ var scrollArea = 'ScrollArea_styleWithLayer__m6lfro1';
11
+ var wrapper = 'ScrollArea_wrapper__m6lfro3';
13
12
 
14
- exports.maskBoth = maskBoth;
15
- exports.maskLeft = maskLeft;
16
- exports.maskRight = maskRight;
13
+ exports.mask = mask;
14
+ exports.paddingVar = paddingVar;
17
15
  exports.scrollArea = scrollArea;
18
16
  exports.wrapper = wrapper;
@@ -3,10 +3,9 @@ import './../../styles/sprinkles.css.ts.vanilla.css';
3
3
  import './../../styles/globalStyle.css.ts.vanilla.css';
4
4
  import './ScrollArea.css.ts.vanilla.css';
5
5
 
6
- var maskBoth = 'ScrollArea_maskBoth__m6lfro3';
7
- var maskLeft = 'ScrollArea_maskLeft__m6lfro1';
8
- var maskRight = 'ScrollArea_maskRight__m6lfro2';
9
- var scrollArea = 'ScrollArea_styleWithLayer__m6lfro0';
10
- var wrapper = 'ScrollArea_wrapper__m6lfro4';
6
+ var mask = 'ScrollArea_mask__m6lfro2';
7
+ var paddingVar = 'var(--paddingVar__m6lfro0)';
8
+ var scrollArea = 'ScrollArea_styleWithLayer__m6lfro1';
9
+ var wrapper = 'ScrollArea_wrapper__m6lfro3';
11
10
 
12
- export { maskBoth, maskLeft, maskRight, scrollArea, wrapper };
11
+ export { mask, paddingVar, scrollArea, wrapper };
@@ -1,6 +1,9 @@
1
+ import { spacing } from '#tokens';
1
2
  import type { UIComponent } from '#types';
2
3
  import * as s from './ScrollArea.css';
3
- type ScrollAreaProps = UIComponent<'div'>;
4
+ interface ScrollAreaProps extends UIComponent<'div'> {
5
+ innerPadding?: keyof typeof spacing;
6
+ }
4
7
  export declare const ScrollArea: import("react").ForwardRefExoticComponent<Omit<ScrollAreaProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
5
8
  export { s as scrollAreaCss };
6
9
  //# sourceMappingURL=ScrollArea.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollArea.d.ts","sourceRoot":"","sources":["../../../src/components/ScrollArea/ScrollArea.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAE1C,OAAO,KAAK,CAAC,MAAM,kBAAkB,CAAC;AAEtC,KAAK,eAAe,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;AAE1C,eAAO,MAAM,UAAU,yHA+DtB,CAAC;AAGF,OAAO,EAAE,CAAC,IAAI,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"ScrollArea.d.ts","sourceRoot":"","sources":["../../../src/components/ScrollArea/ScrollArea.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAE1C,OAAO,KAAK,CAAC,MAAM,kBAAkB,CAAC;AAEtC,UAAU,eAAgB,SAAQ,WAAW,CAAC,KAAK,CAAC;IAClD,YAAY,CAAC,EAAE,MAAM,OAAO,OAAO,CAAC;CACrC;AAED,eAAO,MAAM,UAAU,yHAiDtB,CAAC;AAGF,OAAO,EAAE,CAAC,IAAI,aAAa,EAAE,CAAC"}
@@ -1,19 +1,19 @@
1
1
  "use client";
2
2
  import { jsx } from 'react/jsx-runtime';
3
- import { forwardRef, useRef, useState, useEffect } from 'react';
3
+ import { forwardRef, useRef, useEffect } from 'react';
4
4
  import { useCombinedRefs } from '@kimdw-rtk/utils';
5
+ import { assignInlineVars } from '../../node_modules/.pnpm/@vanilla-extract_dynamic@2.1.5/node_modules/@vanilla-extract/dynamic/dist/vanilla-extract-dynamic.esm.js';
5
6
  import { clsx } from '../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.js';
6
7
  import { useMouseScroll } from '../../hooks/useMouseScroll/index.js';
7
- import { wrapper, scrollArea, maskBoth, maskLeft, maskRight } from './ScrollArea.css.vanilla.js';
8
+ import { wrapper, paddingVar, scrollArea, mask } from './ScrollArea.css.vanilla.js';
8
9
  import * as ScrollArea_css from './ScrollArea.css.vanilla.js';
9
10
  export { ScrollArea_css as scrollAreaCss };
11
+ import { spacing } from '../../tokens/semantic/spacing.js';
10
12
  import { sx } from '../../styles/sx.js';
11
13
 
12
- const ScrollArea = forwardRef(({ children, className, sx: propSx, ...props }, ref) => {
14
+ const ScrollArea = forwardRef(({ children, className, innerPadding = 'lg', sx: propSx, style, ...props }, ref) => {
13
15
  const scrollAreaRef = useRef(null);
14
16
  const targetRef = useCombinedRefs(ref, scrollAreaRef);
15
- const [hasLeftSpace, setHasLeftSpace] = useState(false);
16
- const [hasRightSpace, setHasRightSpace] = useState(true);
17
17
  useMouseScroll(scrollAreaRef);
18
18
  useEffect(() => {
19
19
  const element = scrollAreaRef.current;
@@ -28,20 +28,15 @@ const ScrollArea = forwardRef(({ children, className, sx: propSx, ...props }, re
28
28
  }
29
29
  e.preventDefault();
30
30
  };
31
- const handleScroll = () => {
32
- setHasLeftSpace(element.scrollLeft !== 0);
33
- setHasRightSpace(Math.ceil(element.scrollLeft + element.clientWidth) <
34
- Math.floor(element.scrollWidth));
35
- };
36
- handleScroll();
37
- element.addEventListener('scroll', handleScroll);
38
31
  element.addEventListener('wheel', handleWheel);
39
32
  return () => {
40
- element.removeEventListener('scroll', handleScroll);
41
33
  element.removeEventListener('wheel', handleWheel);
42
34
  };
43
35
  }, []);
44
- return (jsx("div", { ref: targetRef, className: clsx(scrollArea, className, sx(propSx), hasLeftSpace && hasRightSpace && maskBoth, hasLeftSpace && maskLeft, hasRightSpace && maskRight), ...props, children: jsx("div", { className: wrapper, children: children }) }));
36
+ return (jsx("div", { ref: targetRef, className: clsx(scrollArea, className, sx(propSx), mask), ...props, style: {
37
+ ...style,
38
+ ...assignInlineVars({ [paddingVar]: spacing[innerPadding] }),
39
+ }, children: jsx("div", { className: wrapper, children: children }) }));
45
40
  });
46
41
  ScrollArea.displayName = 'ScrollArea';
47
42
 
@@ -7,40 +7,91 @@ const usePointerSlider = (ref, { min, max, defaultValue, }) => {
7
7
  const [value, setValue] = react.useState(defaultValue);
8
8
  react.useEffect(() => {
9
9
  const element = ref.current;
10
- let isDown = false, parentWidth = 0, parentX = 0;
11
10
  if (element === null) {
12
11
  return;
13
12
  }
14
- element.style.left = `${((defaultValue - min) / (max - min)) * 100}%`;
15
- const handlePointerDown = (e) => {
16
- element.setPointerCapture(e.pointerId);
17
- isDown = true;
13
+ const ownerWindow = element.ownerDocument.defaultView;
14
+ if (ownerWindow === null) {
15
+ return;
16
+ }
17
+ let isDragging = false, activePointerId = null, parentWidth = 0, parentX = 0;
18
+ const setThumbPosition = (nextValue) => {
19
+ element.style.left = `${((nextValue - min) / (max - min)) * 100}%`;
20
+ };
21
+ const syncParentRect = () => {
18
22
  const boundingRect = element.parentElement?.getBoundingClientRect();
19
23
  if (boundingRect === undefined) {
20
- return;
24
+ return false;
21
25
  }
22
26
  parentWidth = boundingRect.width;
23
27
  parentX = boundingRect.x;
28
+ return parentWidth > 0;
24
29
  };
25
- const handlePointerMove = (e) => {
26
- if (!isDown) {
30
+ const updateValue = (clientX) => {
31
+ if (parentWidth <= 0 || !Number.isFinite(clientX)) {
27
32
  return;
28
33
  }
29
- const currentValue = Math.min(max, Math.max(min, Math.round((e.clientX - parentX) / (parentWidth / (max - min))) + min));
30
- element.style.left = `${((currentValue - min) / (max - min)) * 100}%`;
34
+ const currentValue = Math.min(max, Math.max(min, Math.round((clientX - parentX) / (parentWidth / (max - min))) + min));
35
+ setThumbPosition(currentValue);
31
36
  setValue(currentValue);
32
37
  };
38
+ setValue(defaultValue);
39
+ setThumbPosition(defaultValue);
40
+ const handlePointerDown = (e) => {
41
+ if (e.pointerType === 'mouse' && e.button !== 0) {
42
+ return;
43
+ }
44
+ if (!syncParentRect()) {
45
+ return;
46
+ }
47
+ e.preventDefault();
48
+ isDragging = true;
49
+ activePointerId = Number.isFinite(e.pointerId) ? e.pointerId : null;
50
+ if (activePointerId !== null &&
51
+ element.hasPointerCapture?.(activePointerId) === false) {
52
+ element.setPointerCapture?.(activePointerId);
53
+ }
54
+ updateValue(e.clientX);
55
+ };
56
+ const handlePointerMove = (e) => {
57
+ if (!isDragging ||
58
+ (activePointerId !== null && activePointerId !== e.pointerId)) {
59
+ return;
60
+ }
61
+ updateValue(e.clientX);
62
+ };
33
63
  const handlePointerUp = (e) => {
34
- element.releasePointerCapture(e.pointerId);
35
- isDown = false;
64
+ if (activePointerId !== null && activePointerId !== e.pointerId) {
65
+ return;
66
+ }
67
+ if (activePointerId !== null &&
68
+ element.hasPointerCapture?.(activePointerId)) {
69
+ element.releasePointerCapture?.(activePointerId);
70
+ }
71
+ isDragging = false;
72
+ activePointerId = null;
73
+ };
74
+ const handleLostPointerCapture = () => {
75
+ isDragging = false;
76
+ activePointerId = null;
36
77
  };
37
78
  element.addEventListener('pointerdown', handlePointerDown);
38
79
  element.addEventListener('pointermove', handlePointerMove);
39
80
  element.addEventListener('pointerup', handlePointerUp);
81
+ element.addEventListener('pointercancel', handlePointerUp);
82
+ element.addEventListener('lostpointercapture', handleLostPointerCapture);
83
+ ownerWindow.addEventListener('pointermove', handlePointerMove);
84
+ ownerWindow.addEventListener('pointerup', handlePointerUp);
85
+ ownerWindow.addEventListener('pointercancel', handlePointerUp);
40
86
  return () => {
41
87
  element.removeEventListener('pointerdown', handlePointerDown);
42
88
  element.removeEventListener('pointermove', handlePointerMove);
43
89
  element.removeEventListener('pointerup', handlePointerUp);
90
+ element.removeEventListener('pointercancel', handlePointerUp);
91
+ element.removeEventListener('lostpointercapture', handleLostPointerCapture);
92
+ ownerWindow.removeEventListener('pointermove', handlePointerMove);
93
+ ownerWindow.removeEventListener('pointerup', handlePointerUp);
94
+ ownerWindow.removeEventListener('pointercancel', handlePointerUp);
44
95
  };
45
96
  }, [ref, max, min, defaultValue]);
46
97
  return value;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/usePointerSlider/index.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EAC5E,KAAK,CAAC,EACN,6BAIG;IACD,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;CACtB,KACA,MA+DF,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/usePointerSlider/index.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EAC5E,KAAK,CAAC,EACN,6BAIG;IACD,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;CACtB,KACA,MA2IF,CAAC"}
@@ -5,40 +5,91 @@ const usePointerSlider = (ref, { min, max, defaultValue, }) => {
5
5
  const [value, setValue] = useState(defaultValue);
6
6
  useEffect(() => {
7
7
  const element = ref.current;
8
- let isDown = false, parentWidth = 0, parentX = 0;
9
8
  if (element === null) {
10
9
  return;
11
10
  }
12
- element.style.left = `${((defaultValue - min) / (max - min)) * 100}%`;
13
- const handlePointerDown = (e) => {
14
- element.setPointerCapture(e.pointerId);
15
- isDown = true;
11
+ const ownerWindow = element.ownerDocument.defaultView;
12
+ if (ownerWindow === null) {
13
+ return;
14
+ }
15
+ let isDragging = false, activePointerId = null, parentWidth = 0, parentX = 0;
16
+ const setThumbPosition = (nextValue) => {
17
+ element.style.left = `${((nextValue - min) / (max - min)) * 100}%`;
18
+ };
19
+ const syncParentRect = () => {
16
20
  const boundingRect = element.parentElement?.getBoundingClientRect();
17
21
  if (boundingRect === undefined) {
18
- return;
22
+ return false;
19
23
  }
20
24
  parentWidth = boundingRect.width;
21
25
  parentX = boundingRect.x;
26
+ return parentWidth > 0;
22
27
  };
23
- const handlePointerMove = (e) => {
24
- if (!isDown) {
28
+ const updateValue = (clientX) => {
29
+ if (parentWidth <= 0 || !Number.isFinite(clientX)) {
25
30
  return;
26
31
  }
27
- const currentValue = Math.min(max, Math.max(min, Math.round((e.clientX - parentX) / (parentWidth / (max - min))) + min));
28
- element.style.left = `${((currentValue - min) / (max - min)) * 100}%`;
32
+ const currentValue = Math.min(max, Math.max(min, Math.round((clientX - parentX) / (parentWidth / (max - min))) + min));
33
+ setThumbPosition(currentValue);
29
34
  setValue(currentValue);
30
35
  };
36
+ setValue(defaultValue);
37
+ setThumbPosition(defaultValue);
38
+ const handlePointerDown = (e) => {
39
+ if (e.pointerType === 'mouse' && e.button !== 0) {
40
+ return;
41
+ }
42
+ if (!syncParentRect()) {
43
+ return;
44
+ }
45
+ e.preventDefault();
46
+ isDragging = true;
47
+ activePointerId = Number.isFinite(e.pointerId) ? e.pointerId : null;
48
+ if (activePointerId !== null &&
49
+ element.hasPointerCapture?.(activePointerId) === false) {
50
+ element.setPointerCapture?.(activePointerId);
51
+ }
52
+ updateValue(e.clientX);
53
+ };
54
+ const handlePointerMove = (e) => {
55
+ if (!isDragging ||
56
+ (activePointerId !== null && activePointerId !== e.pointerId)) {
57
+ return;
58
+ }
59
+ updateValue(e.clientX);
60
+ };
31
61
  const handlePointerUp = (e) => {
32
- element.releasePointerCapture(e.pointerId);
33
- isDown = false;
62
+ if (activePointerId !== null && activePointerId !== e.pointerId) {
63
+ return;
64
+ }
65
+ if (activePointerId !== null &&
66
+ element.hasPointerCapture?.(activePointerId)) {
67
+ element.releasePointerCapture?.(activePointerId);
68
+ }
69
+ isDragging = false;
70
+ activePointerId = null;
71
+ };
72
+ const handleLostPointerCapture = () => {
73
+ isDragging = false;
74
+ activePointerId = null;
34
75
  };
35
76
  element.addEventListener('pointerdown', handlePointerDown);
36
77
  element.addEventListener('pointermove', handlePointerMove);
37
78
  element.addEventListener('pointerup', handlePointerUp);
79
+ element.addEventListener('pointercancel', handlePointerUp);
80
+ element.addEventListener('lostpointercapture', handleLostPointerCapture);
81
+ ownerWindow.addEventListener('pointermove', handlePointerMove);
82
+ ownerWindow.addEventListener('pointerup', handlePointerUp);
83
+ ownerWindow.addEventListener('pointercancel', handlePointerUp);
38
84
  return () => {
39
85
  element.removeEventListener('pointerdown', handlePointerDown);
40
86
  element.removeEventListener('pointermove', handlePointerMove);
41
87
  element.removeEventListener('pointerup', handlePointerUp);
88
+ element.removeEventListener('pointercancel', handlePointerUp);
89
+ element.removeEventListener('lostpointercapture', handleLostPointerCapture);
90
+ ownerWindow.removeEventListener('pointermove', handlePointerMove);
91
+ ownerWindow.removeEventListener('pointerup', handlePointerUp);
92
+ ownerWindow.removeEventListener('pointercancel', handlePointerUp);
42
93
  };
43
94
  }, [ref, max, min, defaultValue]);
44
95
  return value;
@@ -0,0 +1,26 @@
1
+ 'use strict';
2
+
3
+ var vanillaExtractPrivate_esm = require('../../../../../@vanilla-extract_private@1.0.9/node_modules/@vanilla-extract/private/dist/vanilla-extract-private.esm.cjs');
4
+
5
+ function assignInlineVars(varsOrContract, tokens) {
6
+ var styles = {};
7
+ {
8
+ var _vars = varsOrContract;
9
+ for (var varName in _vars) {
10
+ var value = _vars[varName];
11
+ if (value == null) {
12
+ continue;
13
+ }
14
+ styles[vanillaExtractPrivate_esm.getVarName(varName)] = value;
15
+ }
16
+ }
17
+ Object.defineProperty(styles, 'toString', {
18
+ value: function value() {
19
+ return Object.keys(this).map(key => "".concat(key, ":").concat(this[key])).join(';');
20
+ },
21
+ writable: false
22
+ });
23
+ return styles;
24
+ }
25
+
26
+ exports.assignInlineVars = assignInlineVars;
@@ -0,0 +1,24 @@
1
+ import { getVarName } from '../../../../../@vanilla-extract_private@1.0.9/node_modules/@vanilla-extract/private/dist/vanilla-extract-private.esm.js';
2
+
3
+ function assignInlineVars(varsOrContract, tokens) {
4
+ var styles = {};
5
+ {
6
+ var _vars = varsOrContract;
7
+ for (var varName in _vars) {
8
+ var value = _vars[varName];
9
+ if (value == null) {
10
+ continue;
11
+ }
12
+ styles[getVarName(varName)] = value;
13
+ }
14
+ }
15
+ Object.defineProperty(styles, 'toString', {
16
+ value: function value() {
17
+ return Object.keys(this).map(key => "".concat(key, ":").concat(this[key])).join(';');
18
+ },
19
+ writable: false
20
+ });
21
+ return styles;
22
+ }
23
+
24
+ export { assignInlineVars };
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ function getVarName(variable) {
4
+ var matches = variable.match(/^var\((.*)\)$/);
5
+ if (matches) {
6
+ return matches[1];
7
+ }
8
+ return variable;
9
+ }
10
+
11
+ exports.getVarName = getVarName;
@@ -0,0 +1,9 @@
1
+ function getVarName(variable) {
2
+ var matches = variable.match(/^var\((.*)\)$/);
3
+ if (matches) {
4
+ return matches[1];
5
+ }
6
+ return variable;
7
+ }
8
+
9
+ export { getVarName };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kimdw-rtk/ui",
3
- "version": "0.1.15",
3
+ "version": "0.1.16",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "imports": {