@cdx-ui/primitives 0.0.1-beta.115 → 0.0.1-beta.117

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 (85) hide show
  1. package/README.md +5 -0
  2. package/lib/commonjs/index.js +35 -0
  3. package/lib/commonjs/index.js.map +1 -1
  4. package/lib/commonjs/overlay/useAnchorPosition.js +60 -11
  5. package/lib/commonjs/overlay/useAnchorPosition.js.map +1 -1
  6. package/lib/commonjs/slider/SliderRail.js +131 -0
  7. package/lib/commonjs/slider/SliderRail.js.map +1 -0
  8. package/lib/commonjs/slider/SliderRoot.js +186 -0
  9. package/lib/commonjs/slider/SliderRoot.js.map +1 -0
  10. package/lib/commonjs/slider/SliderThumb.js +228 -0
  11. package/lib/commonjs/slider/SliderThumb.js.map +1 -0
  12. package/lib/commonjs/slider/context.js +11 -0
  13. package/lib/commonjs/slider/context.js.map +1 -0
  14. package/lib/commonjs/slider/index.js +65 -0
  15. package/lib/commonjs/slider/index.js.map +1 -0
  16. package/lib/commonjs/slider/types.js +6 -0
  17. package/lib/commonjs/slider/types.js.map +1 -0
  18. package/lib/commonjs/slider/useSliderPointer.js +116 -0
  19. package/lib/commonjs/slider/useSliderPointer.js.map +1 -0
  20. package/lib/commonjs/slider/utils.js +155 -0
  21. package/lib/commonjs/slider/utils.js.map +1 -0
  22. package/lib/commonjs/utils/assignRef.js +16 -0
  23. package/lib/commonjs/utils/assignRef.js.map +1 -0
  24. package/lib/commonjs/utils/createPortal.js +3 -1
  25. package/lib/commonjs/utils/createPortal.js.map +1 -1
  26. package/lib/module/index.js +4 -0
  27. package/lib/module/index.js.map +1 -1
  28. package/lib/module/overlay/useAnchorPosition.js +60 -11
  29. package/lib/module/overlay/useAnchorPosition.js.map +1 -1
  30. package/lib/module/slider/SliderRail.js +127 -0
  31. package/lib/module/slider/SliderRail.js.map +1 -0
  32. package/lib/module/slider/SliderRoot.js +182 -0
  33. package/lib/module/slider/SliderRoot.js.map +1 -0
  34. package/lib/module/slider/SliderThumb.js +224 -0
  35. package/lib/module/slider/SliderThumb.js.map +1 -0
  36. package/lib/module/slider/context.js +5 -0
  37. package/lib/module/slider/context.js.map +1 -0
  38. package/lib/module/slider/index.js +8 -0
  39. package/lib/module/slider/index.js.map +1 -0
  40. package/lib/module/slider/types.js +4 -0
  41. package/lib/module/slider/types.js.map +1 -0
  42. package/lib/module/slider/useSliderPointer.js +110 -0
  43. package/lib/module/slider/useSliderPointer.js.map +1 -0
  44. package/lib/module/slider/utils.js +138 -0
  45. package/lib/module/slider/utils.js.map +1 -0
  46. package/lib/module/utils/assignRef.js +12 -0
  47. package/lib/module/utils/assignRef.js.map +1 -0
  48. package/lib/module/utils/createPortal.js +3 -1
  49. package/lib/module/utils/createPortal.js.map +1 -1
  50. package/lib/typescript/index.d.ts +4 -0
  51. package/lib/typescript/index.d.ts.map +1 -1
  52. package/lib/typescript/overlay/useAnchorPosition.d.ts +7 -1
  53. package/lib/typescript/overlay/useAnchorPosition.d.ts.map +1 -1
  54. package/lib/typescript/slider/SliderRail.d.ts +6 -0
  55. package/lib/typescript/slider/SliderRail.d.ts.map +1 -0
  56. package/lib/typescript/slider/SliderRoot.d.ts +7 -0
  57. package/lib/typescript/slider/SliderRoot.d.ts.map +1 -0
  58. package/lib/typescript/slider/SliderThumb.d.ts +6 -0
  59. package/lib/typescript/slider/SliderThumb.d.ts.map +1 -0
  60. package/lib/typescript/slider/context.d.ts +37 -0
  61. package/lib/typescript/slider/context.d.ts.map +1 -0
  62. package/lib/typescript/slider/index.d.ts +8 -0
  63. package/lib/typescript/slider/index.d.ts.map +1 -0
  64. package/lib/typescript/slider/types.d.ts +37 -0
  65. package/lib/typescript/slider/types.d.ts.map +1 -0
  66. package/lib/typescript/slider/useSliderPointer.d.ts +23 -0
  67. package/lib/typescript/slider/useSliderPointer.d.ts.map +1 -0
  68. package/lib/typescript/slider/utils.d.ts +23 -0
  69. package/lib/typescript/slider/utils.d.ts.map +1 -0
  70. package/lib/typescript/utils/assignRef.d.ts +3 -0
  71. package/lib/typescript/utils/assignRef.d.ts.map +1 -0
  72. package/lib/typescript/utils/createPortal.d.ts.map +1 -1
  73. package/package.json +2 -2
  74. package/src/index.ts +4 -0
  75. package/src/overlay/useAnchorPosition.ts +79 -11
  76. package/src/slider/SliderRail.tsx +143 -0
  77. package/src/slider/SliderRoot.tsx +266 -0
  78. package/src/slider/SliderThumb.tsx +268 -0
  79. package/src/slider/context.tsx +38 -0
  80. package/src/slider/index.ts +19 -0
  81. package/src/slider/types.ts +44 -0
  82. package/src/slider/useSliderPointer.ts +157 -0
  83. package/src/slider/utils.ts +181 -0
  84. package/src/utils/assignRef.ts +11 -0
  85. package/src/utils/createPortal.ts +3 -1
@@ -12,8 +12,10 @@ var _reactNative = require("react-native");
12
12
  * `react-dom`, which would cause a build error on native platforms.
13
13
  */
14
14
  const createPortalFn = exports.createPortalFn = (() => {
15
- if (_reactNative.Platform.OS !== 'web') return undefined;
16
15
  try {
16
+ if (_reactNative.Platform.OS !== 'web') {
17
+ return undefined;
18
+ }
17
19
  // eslint-disable-next-line @typescript-eslint/no-require-imports
18
20
  return require('react-dom').createPortal;
19
21
  } catch {
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","createPortalFn","exports","Platform","OS","undefined","createPortal"],"sourceRoot":"../../../src","sources":["utils/createPortal.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,cAA0C,GAAAC,OAAA,CAAAD,cAAA,GAAG,CAAC,MAAM;EAC/D,IAAIE,qBAAQ,CAACC,EAAE,KAAK,KAAK,EAAE,OAAOC,SAAS;EAC3C,IAAI;IACF;IACA,OAAQL,OAAO,CAAC,WAAW,CAAC,CAAsCM,YAAY;EAChF,CAAC,CAAC,MAAM;IACN,OAAOD,SAAS;EAClB;AACF,CAAC,EAAE,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","createPortalFn","exports","Platform","OS","undefined","createPortal"],"sourceRoot":"../../../src","sources":["utils/createPortal.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,cAA0C,GAAAC,OAAA,CAAAD,cAAA,GAAG,CAAC,MAAM;EAC/D,IAAI;IACF,IAAIE,qBAAQ,CAACC,EAAE,KAAK,KAAK,EAAE;MACzB,OAAOC,SAAS;IAClB;IACA;IACA,OAAQL,OAAO,CAAC,WAAW,CAAC,CAAsCM,YAAY;EAChF,CAAC,CAAC,MAAM;IACN,OAAOD,SAAS;EAClB;AACF,CAAC,EAAE,CAAC","ignoreList":[]}
@@ -13,6 +13,7 @@ export * from './otp-input';
13
13
  export * from './link';
14
14
  export * from './list-item';
15
15
  export { OverlayInsetsProvider } from './overlay';
16
+ export { useAnchorPosition } from './overlay';
16
17
  export * from './select';
17
18
  export * from './switch';
18
19
  export * from './tile';
@@ -20,8 +21,11 @@ export * from './toast';
20
21
  export * from './portal';
21
22
  export * from './progress-bar';
22
23
  export * from './radio';
24
+ export * from './slider';
23
25
  export { FormControlContext, useFormControlContext } from '@cdx-ui/utils';
24
26
  export { dataAttributes, mergeDataAttributes } from './utils/dataAttributes';
25
27
  export { domDataAttributes, mergeDomDataAttributes } from './utils/domDataAttributes';
28
+ export { assignRef } from './utils/assignRef';
29
+ export { createPortalFn } from './utils/createPortal';
26
30
  export { Slot } from './slot';
27
31
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["OverlayInsetsProvider","FormControlContext","useFormControlContext","dataAttributes","mergeDataAttributes","domDataAttributes","mergeDomDataAttributes","Slot"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,cAAc,UAAU;AACxB,cAAc,UAAU;AACxB,cAAc,QAAQ;AACtB,cAAc,YAAY;AAC1B,cAAc,UAAU;AACxB,cAAc,SAAS;AACvB,cAAc,QAAQ;AACtB,cAAc,uBAAuB;AACrC,cAAc,SAAS;AACvB,cAAc,aAAa;AAC3B,cAAc,QAAQ;AACtB,cAAc,aAAa;AAC3B,SAA0BA,qBAAqB,QAAQ,WAAW;AAClE,cAAc,UAAU;AACxB,cAAc,UAAU;AACxB,cAAc,QAAQ;AACtB,cAAc,SAAS;AACvB,cAAc,UAAU;AACxB,cAAc,gBAAgB;AAC9B,cAAc,SAAS;AAEvB,SAASC,kBAAkB,EAAEC,qBAAqB,QAAQ,eAAe;AACzE,SAASC,cAAc,EAAEC,mBAAmB,QAAQ,wBAAwB;AAC5E,SACEC,iBAAiB,EACjBC,sBAAsB,QAEjB,2BAA2B;AAClC,SAASC,IAAI,QAAQ,QAAQ","ignoreList":[]}
1
+ {"version":3,"names":["OverlayInsetsProvider","useAnchorPosition","FormControlContext","useFormControlContext","dataAttributes","mergeDataAttributes","domDataAttributes","mergeDomDataAttributes","assignRef","createPortalFn","Slot"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,cAAc,UAAU;AACxB,cAAc,UAAU;AACxB,cAAc,QAAQ;AACtB,cAAc,YAAY;AAC1B,cAAc,UAAU;AACxB,cAAc,SAAS;AACvB,cAAc,QAAQ;AACtB,cAAc,uBAAuB;AACrC,cAAc,SAAS;AACvB,cAAc,aAAa;AAC3B,cAAc,QAAQ;AACtB,cAAc,aAAa;AAC3B,SAA0BA,qBAAqB,QAAQ,WAAW;AAClE,SAASC,iBAAiB,QAA2B,WAAW;AAChE,cAAc,UAAU;AACxB,cAAc,UAAU;AACxB,cAAc,QAAQ;AACtB,cAAc,SAAS;AACvB,cAAc,UAAU;AACxB,cAAc,gBAAgB;AAC9B,cAAc,SAAS;AACvB,cAAc,UAAU;AAExB,SAASC,kBAAkB,EAAEC,qBAAqB,QAAQ,eAAe;AACzE,SAASC,cAAc,EAAEC,mBAAmB,QAAQ,wBAAwB;AAC5E,SACEC,iBAAiB,EACjBC,sBAAsB,QAEjB,2BAA2B;AAClC,SAASC,SAAS,QAAQ,mBAAmB;AAC7C,SAASC,cAAc,QAAQ,sBAAsB;AACrD,SAASC,IAAI,QAAQ,QAAQ","ignoreList":[]}
@@ -12,29 +12,60 @@ function measureWeb(element) {
12
12
  height: rect.height
13
13
  };
14
14
  }
15
-
15
+ function setLayoutIfChanged(setLayout, next) {
16
+ setLayout(prev => {
17
+ if (prev?.x === next.x && prev.y === next.y && prev.width === next.width && prev.height === next.height) {
18
+ return prev;
19
+ }
20
+ return next;
21
+ });
22
+ }
16
23
  /**
17
24
  * Measures an anchor element's position and size, re-measuring on scroll/resize
18
25
  * (web) so a positioned overlay can track its anchor across layout changes.
19
26
  *
20
27
  * Returns `null` until the first measurement completes.
21
28
  */
22
- export function useAnchorPosition(anchorRef, open) {
29
+ export function useAnchorPosition(anchorRef, open, options) {
30
+ const {
31
+ remeasureKey,
32
+ trackWhileOpen = false
33
+ } = options ?? {};
23
34
  const [layout, setLayout] = useState(null);
35
+ const measureAnchor = () => {
36
+ const anchor = anchorRef.current;
37
+ if (!anchor) {
38
+ return;
39
+ }
40
+ if (Platform.OS === 'web') {
41
+ setLayoutIfChanged(setLayout, measureWeb(anchor));
42
+ return;
43
+ }
44
+ anchor.measureInWindow((x, y, width, height) => {
45
+ setLayoutIfChanged(setLayout, {
46
+ x,
47
+ y,
48
+ width,
49
+ height
50
+ });
51
+ });
52
+ };
24
53
  useIsomorphicLayoutEffect(() => {
25
54
  if (!open) {
26
55
  setLayout(null);
27
56
  return;
28
57
  }
29
- const anchor = anchorRef.current;
30
- if (!anchor) return;
31
58
  let cancelled = false;
32
59
  if (Platform.OS === 'web') {
33
- setLayout(measureWeb(anchor));
60
+ measureAnchor();
34
61
  } else {
62
+ const anchor = anchorRef.current;
63
+ if (!anchor) {
64
+ return;
65
+ }
35
66
  anchor.measureInWindow((x, y, width, height) => {
36
67
  if (!cancelled) {
37
- setLayout({
68
+ setLayoutIfChanged(setLayout, {
38
69
  x,
39
70
  y,
40
71
  width,
@@ -46,19 +77,37 @@ export function useAnchorPosition(anchorRef, open) {
46
77
  return () => {
47
78
  cancelled = true;
48
79
  };
49
- }, [open, anchorRef]);
80
+ }, [open, anchorRef, remeasureKey]);
50
81
  useEffect(() => {
51
- if (!open || Platform.OS !== 'web') return;
82
+ if (!open || !trackWhileOpen) {
83
+ return;
84
+ }
85
+ let frameId = 0;
86
+ const tick = () => {
87
+ measureAnchor();
88
+ frameId = requestAnimationFrame(tick);
89
+ };
90
+ frameId = requestAnimationFrame(tick);
91
+ return () => {
92
+ cancelAnimationFrame(frameId);
93
+ };
94
+ }, [open, anchorRef, remeasureKey, trackWhileOpen]);
95
+ useEffect(() => {
96
+ if (!open || Platform.OS !== 'web' || trackWhileOpen) {
97
+ return;
98
+ }
52
99
  const anchor = anchorRef.current;
53
- if (!anchor) return;
54
- const update = () => setLayout(measureWeb(anchor));
100
+ if (!anchor) {
101
+ return;
102
+ }
103
+ const update = () => setLayoutIfChanged(setLayout, measureWeb(anchor));
55
104
  window.addEventListener('scroll', update, true);
56
105
  window.addEventListener('resize', update);
57
106
  return () => {
58
107
  window.removeEventListener('scroll', update, true);
59
108
  window.removeEventListener('resize', update);
60
109
  };
61
- }, [open, anchorRef]);
110
+ }, [open, anchorRef, remeasureKey, trackWhileOpen]);
62
111
  return layout;
63
112
  }
64
113
  //# sourceMappingURL=useAnchorPosition.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useLayoutEffect","useState","Platform","useIsomorphicLayoutEffect","OS","measureWeb","element","rect","getBoundingClientRect","x","left","y","top","width","height","useAnchorPosition","anchorRef","open","layout","setLayout","anchor","current","cancelled","measureInWindow","update","window","addEventListener","removeEventListener"],"sourceRoot":"../../../src","sources":["overlay/useAnchorPosition.ts"],"mappings":";;AACA,SAASA,SAAS,EAAEC,eAAe,EAAEC,QAAQ,QAAQ,OAAO;AAC5D,SAASC,QAAQ,QAAQ,cAAc;AAEvC,MAAMC,yBAAyB,GAAGD,QAAQ,CAACE,EAAE,KAAK,KAAK,GAAGJ,eAAe,GAAGD,SAAS;AASrF,SAASM,UAAUA,CAACC,OAAY,EAAgB;EAC9C,MAAMC,IAAI,GAAID,OAAO,CAA4BE,qBAAqB,CAAC,CAAC;EACxE,OAAO;IAAEC,CAAC,EAAEF,IAAI,CAACG,IAAI;IAAEC,CAAC,EAAEJ,IAAI,CAACK,GAAG;IAAEC,KAAK,EAAEN,IAAI,CAACM,KAAK;IAAEC,MAAM,EAAEP,IAAI,CAACO;EAAO,CAAC;AAC9E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,iBAAiBA,CAACC,SAAyB,EAAEC,IAAa,EAAuB;EAC/F,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAGlB,QAAQ,CAAsB,IAAI,CAAC;EAE/DE,yBAAyB,CAAC,MAAM;IAC9B,IAAI,CAACc,IAAI,EAAE;MACTE,SAAS,CAAC,IAAI,CAAC;MACf;IACF;IAEA,MAAMC,MAAM,GAAGJ,SAAS,CAACK,OAAO;IAChC,IAAI,CAACD,MAAM,EAAE;IAEb,IAAIE,SAAS,GAAG,KAAK;IAErB,IAAIpB,QAAQ,CAACE,EAAE,KAAK,KAAK,EAAE;MACzBe,SAAS,CAACd,UAAU,CAACe,MAAM,CAAC,CAAC;IAC/B,CAAC,MAAM;MACLA,MAAM,CAACG,eAAe,CAAC,CAACd,CAAS,EAAEE,CAAS,EAAEE,KAAa,EAAEC,MAAc,KAAK;QAC9E,IAAI,CAACQ,SAAS,EAAE;UACdH,SAAS,CAAC;YAAEV,CAAC;YAAEE,CAAC;YAAEE,KAAK;YAAEC;UAAO,CAAC,CAAC;QACpC;MACF,CAAC,CAAC;IACJ;IAEA,OAAO,MAAM;MACXQ,SAAS,GAAG,IAAI;IAClB,CAAC;EACH,CAAC,EAAE,CAACL,IAAI,EAAED,SAAS,CAAC,CAAC;EAErBjB,SAAS,CAAC,MAAM;IACd,IAAI,CAACkB,IAAI,IAAIf,QAAQ,CAACE,EAAE,KAAK,KAAK,EAAE;IAEpC,MAAMgB,MAAM,GAAGJ,SAAS,CAACK,OAAO;IAChC,IAAI,CAACD,MAAM,EAAE;IAEb,MAAMI,MAAM,GAAGA,CAAA,KAAML,SAAS,CAACd,UAAU,CAACe,MAAM,CAAC,CAAC;IAElDK,MAAM,CAACC,gBAAgB,CAAC,QAAQ,EAAEF,MAAM,EAAE,IAAI,CAAC;IAC/CC,MAAM,CAACC,gBAAgB,CAAC,QAAQ,EAAEF,MAAM,CAAC;IAEzC,OAAO,MAAM;MACXC,MAAM,CAACE,mBAAmB,CAAC,QAAQ,EAAEH,MAAM,EAAE,IAAI,CAAC;MAClDC,MAAM,CAACE,mBAAmB,CAAC,QAAQ,EAAEH,MAAM,CAAC;IAC9C,CAAC;EACH,CAAC,EAAE,CAACP,IAAI,EAAED,SAAS,CAAC,CAAC;EAErB,OAAOE,MAAM;AACf","ignoreList":[]}
1
+ {"version":3,"names":["useEffect","useLayoutEffect","useState","Platform","useIsomorphicLayoutEffect","OS","measureWeb","element","rect","getBoundingClientRect","x","left","y","top","width","height","setLayoutIfChanged","setLayout","next","prev","useAnchorPosition","anchorRef","open","options","remeasureKey","trackWhileOpen","layout","measureAnchor","anchor","current","measureInWindow","cancelled","frameId","tick","requestAnimationFrame","cancelAnimationFrame","update","window","addEventListener","removeEventListener"],"sourceRoot":"../../../src","sources":["overlay/useAnchorPosition.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+
3
+ import { forwardRef, useCallback, useRef } from 'react';
4
+ import { Platform, Pressable, StyleSheet, View } from 'react-native';
5
+ import { Slot } from '../slot';
6
+ import { assignRef } from '../utils/assignRef';
7
+ import { dataAttributes } from '../utils/dataAttributes';
8
+ import { useSliderContext } from './context';
9
+ import { getPointerCoords, getRatioFromPagePoint, useWebSliderDrag } from './useSliderPointer';
10
+ import { jsx as _jsx } from "react/jsx-runtime";
11
+ export const SliderRail = /*#__PURE__*/forwardRef(({
12
+ asChild,
13
+ style,
14
+ onLayout,
15
+ children,
16
+ ...props
17
+ }, ref) => {
18
+ const {
19
+ orientation,
20
+ isDisabled,
21
+ isDragging,
22
+ trackLayout,
23
+ thumbSize,
24
+ setValueFromRatio,
25
+ setTrackLayout,
26
+ setIsDragging
27
+ } = useSliderContext();
28
+ const railRef = useRef(null);
29
+ const measureRail = useCallback(() => {
30
+ const node = railRef.current;
31
+ if (!node?.measureInWindow) {
32
+ return;
33
+ }
34
+ node.measureInWindow((x, y, width, height) => {
35
+ setTrackLayout({
36
+ x,
37
+ y,
38
+ width,
39
+ height
40
+ });
41
+ });
42
+ }, [setTrackLayout]);
43
+ const handleLayout = useCallback(event => {
44
+ measureRail();
45
+ onLayout?.(event);
46
+ }, [measureRail, onLayout]);
47
+ const {
48
+ startDrag
49
+ } = useWebSliderDrag({
50
+ isDisabled,
51
+ setIsDragging,
52
+ setValueFromRatio,
53
+ trackLayout,
54
+ orientation,
55
+ thumbSize
56
+ });
57
+ const updateFromEvent = useCallback(event => {
58
+ if (isDisabled) {
59
+ return;
60
+ }
61
+ const {
62
+ x,
63
+ y
64
+ } = getPointerCoords(event.nativeEvent);
65
+ setValueFromRatio(getRatioFromPagePoint(x, y, trackLayout, orientation, thumbSize), true);
66
+ }, [isDisabled, orientation, setValueFromRatio, thumbSize, trackLayout]);
67
+ const handlePress = useCallback(event => {
68
+ updateFromEvent(event);
69
+ }, [updateFromEvent]);
70
+ const handlePointerDown = useCallback(event => {
71
+ if (Platform.OS !== 'web' || isDisabled) {
72
+ return;
73
+ }
74
+ event.preventDefault();
75
+ const node = railRef.current;
76
+ if (!node) return;
77
+ const rect = node.getBoundingClientRect();
78
+ const freshLayout = {
79
+ x: rect.left,
80
+ y: rect.top,
81
+ width: rect.width,
82
+ height: rect.height
83
+ };
84
+ setTrackLayout(freshLayout);
85
+ const {
86
+ x,
87
+ y
88
+ } = getPointerCoords(event.nativeEvent);
89
+ startDrag(x, y, undefined, freshLayout);
90
+ }, [isDisabled, setTrackLayout, startDrag]);
91
+ const Comp = asChild ? Slot : View;
92
+ return /*#__PURE__*/_jsx(Pressable, {
93
+ accessibilityRole: "none",
94
+ accessible: false,
95
+ disabled: isDisabled,
96
+ onPress: Platform.OS === 'web' ? undefined : handlePress,
97
+ onPointerDown: Platform.OS === 'web' ? handlePointerDown : undefined,
98
+ accessibilityElementsHidden: true,
99
+ importantForAccessibility: "no-hide-descendants",
100
+ "aria-hidden": true,
101
+ tabIndex: -1,
102
+ style: styles.railHitArea,
103
+ children: /*#__PURE__*/_jsx(Comp, {
104
+ ref: node => {
105
+ railRef.current = node;
106
+ assignRef(ref, node);
107
+ },
108
+ ...props,
109
+ onLayout: handleLayout,
110
+ style: style,
111
+ ...dataAttributes({
112
+ slot: 'slider-rail',
113
+ dragging: isDragging
114
+ }),
115
+ children: children
116
+ })
117
+ });
118
+ });
119
+ SliderRail.displayName = 'SliderRail';
120
+ const styles = StyleSheet.create({
121
+ railHitArea: {
122
+ ...StyleSheet.absoluteFillObject,
123
+ justifyContent: 'center',
124
+ alignItems: 'center'
125
+ }
126
+ });
127
+ //# sourceMappingURL=SliderRail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["forwardRef","useCallback","useRef","Platform","Pressable","StyleSheet","View","Slot","assignRef","dataAttributes","useSliderContext","getPointerCoords","getRatioFromPagePoint","useWebSliderDrag","jsx","_jsx","SliderRail","asChild","style","onLayout","children","props","ref","orientation","isDisabled","isDragging","trackLayout","thumbSize","setValueFromRatio","setTrackLayout","setIsDragging","railRef","measureRail","node","current","measureInWindow","x","y","width","height","handleLayout","event","startDrag","updateFromEvent","nativeEvent","handlePress","handlePointerDown","OS","preventDefault","rect","getBoundingClientRect","freshLayout","left","top","undefined","Comp","accessibilityRole","accessible","disabled","onPress","onPointerDown","accessibilityElementsHidden","importantForAccessibility","tabIndex","styles","railHitArea","slot","dragging","displayName","create","absoluteFillObject","justifyContent","alignItems"],"sourceRoot":"../../../src","sources":["slider/SliderRail.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+
3
+ import { forwardRef, useCallback, useMemo, useRef, useState } from 'react';
4
+ import { Platform, View } from 'react-native';
5
+ import { composeEventHandlers, useControllableState } from '@cdx-ui/utils';
6
+ import { useFocus } from '@react-native-aria/focus';
7
+ import { Slot } from '../slot';
8
+ import { dataAttributes } from '../utils/dataAttributes';
9
+ import { SliderProvider } from './context';
10
+ import { clamp, formatSliderValue, snapToStep, valueToPercent } from './utils';
11
+ import { jsx as _jsx } from "react/jsx-runtime";
12
+ const STEP_KEYS = new Set(['ArrowUp', 'ArrowRight', 'ArrowDown', 'ArrowLeft', 'Home', 'End']);
13
+ export const SliderRoot = /*#__PURE__*/forwardRef(({
14
+ asChild,
15
+ value: valueProp,
16
+ defaultValue,
17
+ onChange,
18
+ onChangeComplete,
19
+ min = 0,
20
+ max = 100,
21
+ step = 1,
22
+ isDisabled = false,
23
+ orientation = 'horizontal',
24
+ accessibilityLabel,
25
+ accessibilityValue: accessibilityValueProp,
26
+ accessibilityRole = 'adjustable',
27
+ role = 'slider',
28
+ children,
29
+ onLayout,
30
+ ...props
31
+ }, ref) => {
32
+ const [trackLayout, setTrackLayoutState] = useState(null);
33
+ const [thumbSize, setThumbSizeState] = useState(20);
34
+ const [isDragging, setIsDragging] = useState(false);
35
+ const [isHovered, setIsHovered] = useState(false);
36
+ const [isFocusedState, setIsFocusedState] = useState(false);
37
+ const thumbRef = useRef(null);
38
+ const {
39
+ focusProps,
40
+ isFocused
41
+ } = useFocus();
42
+ const resolvedDefault = defaultValue ?? min;
43
+ const [value, setValueState] = useControllableState({
44
+ prop: valueProp,
45
+ defaultProp: resolvedDefault,
46
+ onChange
47
+ });
48
+ const currentValue = snapToStep(value ?? resolvedDefault, min, max, step);
49
+ const percent = valueToPercent(currentValue, min, max);
50
+ const setValue = useCallback((next, complete = false) => {
51
+ if (isDisabled) {
52
+ return;
53
+ }
54
+ const snapped = snapToStep(next, min, max, step);
55
+ setValueState(snapped);
56
+ if (complete) {
57
+ onChangeComplete?.(snapped);
58
+ }
59
+ }, [isDisabled, max, min, onChangeComplete, setValueState, step]);
60
+ const setValueFromRatio = useCallback((ratio, complete = false) => {
61
+ const next = min + clamp(ratio, 0, 1) * (max - min);
62
+ setValue(next, complete);
63
+ }, [max, min, setValue]);
64
+ const setTrackLayout = useCallback(layout => {
65
+ setTrackLayoutState(prev => {
66
+ if (prev !== null && prev.width === layout.width && prev.height === layout.height && prev.x === layout.x && prev.y === layout.y) {
67
+ return prev;
68
+ }
69
+ return layout;
70
+ });
71
+ }, []);
72
+ const setThumbSize = useCallback(size => {
73
+ setThumbSizeState(prev => prev === size ? prev : size);
74
+ }, []);
75
+ const accessibilityValue = useMemo(() => {
76
+ const defaults = {
77
+ min,
78
+ max,
79
+ now: currentValue,
80
+ text: formatSliderValue(currentValue)
81
+ };
82
+ if (accessibilityValueProp === undefined) {
83
+ return defaults;
84
+ }
85
+ return {
86
+ ...defaults,
87
+ ...accessibilityValueProp
88
+ };
89
+ }, [accessibilityValueProp, currentValue, max, min]);
90
+ const getValueLabel = useCallback(() => accessibilityValue.text, [accessibilityValue.text]);
91
+ const handleKeyDown = useCallback(event => {
92
+ if (isDisabled) {
93
+ return;
94
+ }
95
+ const key = event.nativeEvent.key;
96
+ if (!key || !STEP_KEYS.has(key)) {
97
+ return;
98
+ }
99
+ if (Platform.OS === 'web') {
100
+ event.preventDefault();
101
+ }
102
+ let next = currentValue;
103
+ if (key === 'ArrowUp' || key === 'ArrowRight') {
104
+ next = currentValue + step;
105
+ } else if (key === 'ArrowDown' || key === 'ArrowLeft') {
106
+ next = currentValue - step;
107
+ } else if (key === 'Home') {
108
+ next = min;
109
+ } else if (key === 'End') {
110
+ next = max;
111
+ }
112
+ setValue(next, true);
113
+ }, [currentValue, isDisabled, max, min, setValue, step]);
114
+ const contextValue = useMemo(() => ({
115
+ value: currentValue,
116
+ min,
117
+ max,
118
+ step,
119
+ percent,
120
+ orientation,
121
+ isDisabled,
122
+ isDragging,
123
+ isHovered,
124
+ isFocused: isFocused || isFocusedState,
125
+ trackLayout,
126
+ thumbSize,
127
+ setValue,
128
+ setValueFromRatio,
129
+ setTrackLayout,
130
+ setThumbSize,
131
+ setIsDragging,
132
+ setIsHovered,
133
+ setIsFocused: setIsFocusedState,
134
+ getValueLabel,
135
+ thumbRef
136
+ }), [currentValue, getValueLabel, isDisabled, isDragging, isFocused, isFocusedState, isHovered, max, min, orientation, percent, setTrackLayout, setThumbSize, setValue, setValueFromRatio, step, thumbSize, trackLayout, thumbRef]);
137
+ const dataAttrs = dataAttributes({
138
+ slot: 'slider',
139
+ orientation,
140
+ disabled: isDisabled,
141
+ dragging: isDragging,
142
+ hover: isHovered,
143
+ focus: isFocused,
144
+ value: String(currentValue),
145
+ min: String(min),
146
+ max: String(max)
147
+ });
148
+ const Comp = asChild ? Slot : View;
149
+ const handleLayout = composeEventHandlers(onLayout, () => undefined);
150
+ const webKeyProps = Platform.OS === 'web' ? {
151
+ tabIndex: isDisabled ? -1 : 0,
152
+ onKeyDown: composeEventHandlers(props.onKeyDown, handleKeyDown)
153
+ } : {};
154
+ return /*#__PURE__*/_jsx(SliderProvider, {
155
+ value: contextValue,
156
+ children: /*#__PURE__*/_jsx(Comp, {
157
+ ref: ref,
158
+ ...props,
159
+ ...focusProps,
160
+ ...webKeyProps,
161
+ onLayout: handleLayout,
162
+ onFocus: composeEventHandlers(composeEventHandlers(props.onFocus, focusProps.onFocus), () => setIsFocusedState(true)),
163
+ onBlur: composeEventHandlers(composeEventHandlers(props.onBlur, focusProps.onBlur), () => setIsFocusedState(false)),
164
+ accessibilityRole: accessibilityRole,
165
+ accessibilityLabel: accessibilityLabel,
166
+ accessibilityValue: accessibilityValue,
167
+ accessibilityState: {
168
+ disabled: isDisabled
169
+ },
170
+ "aria-valuemin": min,
171
+ "aria-valuemax": max,
172
+ "aria-valuenow": currentValue,
173
+ "aria-orientation": orientation,
174
+ "aria-disabled": isDisabled,
175
+ role: role,
176
+ ...dataAttrs,
177
+ children: children
178
+ })
179
+ });
180
+ });
181
+ SliderRoot.displayName = 'SliderRoot';
182
+ //# sourceMappingURL=SliderRoot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["forwardRef","useCallback","useMemo","useRef","useState","Platform","View","composeEventHandlers","useControllableState","useFocus","Slot","dataAttributes","SliderProvider","clamp","formatSliderValue","snapToStep","valueToPercent","jsx","_jsx","STEP_KEYS","Set","SliderRoot","asChild","value","valueProp","defaultValue","onChange","onChangeComplete","min","max","step","isDisabled","orientation","accessibilityLabel","accessibilityValue","accessibilityValueProp","accessibilityRole","role","children","onLayout","props","ref","trackLayout","setTrackLayoutState","thumbSize","setThumbSizeState","isDragging","setIsDragging","isHovered","setIsHovered","isFocusedState","setIsFocusedState","thumbRef","focusProps","isFocused","resolvedDefault","setValueState","prop","defaultProp","currentValue","percent","setValue","next","complete","snapped","setValueFromRatio","ratio","setTrackLayout","layout","prev","width","height","x","y","setThumbSize","size","defaults","now","text","undefined","getValueLabel","handleKeyDown","event","key","nativeEvent","has","OS","preventDefault","contextValue","setIsFocused","dataAttrs","slot","disabled","dragging","hover","focus","String","Comp","handleLayout","webKeyProps","tabIndex","onKeyDown","onFocus","onBlur","accessibilityState","displayName"],"sourceRoot":"../../../src","sources":["slider/SliderRoot.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,WAAW,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAC1E,SACEC,QAAQ,EACRC,IAAI,QAIC,cAAc;AACrB,SAASC,oBAAoB,EAAEC,oBAAoB,QAAQ,eAAe;AAC1E,SAASC,QAAQ,QAAQ,0BAA0B;AACnD,SAASC,IAAI,QAAQ,SAAS;AAC9B,SAASC,cAAc,QAAQ,yBAAyB;AACxD,SAASC,cAAc,QAAgC,WAAW;AAElE,SAASC,KAAK,EAAEC,iBAAiB,EAAEC,UAAU,EAAEC,cAAc,QAAQ,SAAS;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE/E,MAAMC,SAAS,GAAG,IAAIC,GAAG,CAAC,CAAC,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAM7F,OAAO,MAAMC,UAAU,gBAAGrB,UAAU,CAClC,CACE;EACEsB,OAAO;EACPC,KAAK,EAAEC,SAAS;EAChBC,YAAY;EACZC,QAAQ;EACRC,gBAAgB;EAChBC,GAAG,GAAG,CAAC;EACPC,GAAG,GAAG,GAAG;EACTC,IAAI,GAAG,CAAC;EACRC,UAAU,GAAG,KAAK;EAClBC,WAAW,GAAG,YAAY;EAC1BC,kBAAkB;EAClBC,kBAAkB,EAAEC,sBAAsB;EAC1CC,iBAAiB,GAAG,YAAY;EAChCC,IAAI,GAAG,QAAQ;EACfC,QAAQ;EACRC,QAAQ;EACR,GAAGC;AACL,CAAC,EACDC,GAAG,KACA;EACH,MAAM,CAACC,WAAW,EAAEC,mBAAmB,CAAC,GAAGvC,QAAQ,CAA2B,IAAI,CAAC;EACnF,MAAM,CAACwC,SAAS,EAAEC,iBAAiB,CAAC,GAAGzC,QAAQ,CAAC,EAAE,CAAC;EACnD,MAAM,CAAC0C,UAAU,EAAEC,aAAa,CAAC,GAAG3C,QAAQ,CAAC,KAAK,CAAC;EACnD,MAAM,CAAC4C,SAAS,EAAEC,YAAY,CAAC,GAAG7C,QAAQ,CAAC,KAAK,CAAC;EACjD,MAAM,CAAC8C,cAAc,EAAEC,iBAAiB,CAAC,GAAG/C,QAAQ,CAAC,KAAK,CAAC;EAC3D,MAAMgD,QAAQ,GAAGjD,MAAM,CAAO,IAAI,CAAC;EACnC,MAAM;IAAEkD,UAAU;IAAEC;EAAU,CAAC,GAAG7C,QAAQ,CAAC,CAAC;EAE5C,MAAM8C,eAAe,GAAG9B,YAAY,IAAIG,GAAG;EAC3C,MAAM,CAACL,KAAK,EAAEiC,aAAa,CAAC,GAAGhD,oBAAoB,CAAS;IAC1DiD,IAAI,EAAEjC,SAAS;IACfkC,WAAW,EAAEH,eAAe;IAC5B7B;EACF,CAAC,CAAC;EAEF,MAAMiC,YAAY,GAAG5C,UAAU,CAACQ,KAAK,IAAIgC,eAAe,EAAE3B,GAAG,EAAEC,GAAG,EAAEC,IAAI,CAAC;EACzE,MAAM8B,OAAO,GAAG5C,cAAc,CAAC2C,YAAY,EAAE/B,GAAG,EAAEC,GAAG,CAAC;EAEtD,MAAMgC,QAAQ,GAAG5D,WAAW,CAC1B,CAAC6D,IAAY,EAAEC,QAAQ,GAAG,KAAK,KAAK;IAClC,IAAIhC,UAAU,EAAE;MACd;IACF;IACA,MAAMiC,OAAO,GAAGjD,UAAU,CAAC+C,IAAI,EAAElC,GAAG,EAAEC,GAAG,EAAEC,IAAI,CAAC;IAChD0B,aAAa,CAACQ,OAAO,CAAC;IACtB,IAAID,QAAQ,EAAE;MACZpC,gBAAgB,GAAGqC,OAAO,CAAC;IAC7B;EACF,CAAC,EACD,CAACjC,UAAU,EAAEF,GAAG,EAAED,GAAG,EAAED,gBAAgB,EAAE6B,aAAa,EAAE1B,IAAI,CAC9D,CAAC;EAED,MAAMmC,iBAAiB,GAAGhE,WAAW,CACnC,CAACiE,KAAa,EAAEH,QAAQ,GAAG,KAAK,KAAK;IACnC,MAAMD,IAAI,GAAGlC,GAAG,GAAGf,KAAK,CAACqD,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,IAAIrC,GAAG,GAAGD,GAAG,CAAC;IACnDiC,QAAQ,CAACC,IAAI,EAAEC,QAAQ,CAAC;EAC1B,CAAC,EACD,CAAClC,GAAG,EAAED,GAAG,EAAEiC,QAAQ,CACrB,CAAC;EAED,MAAMM,cAAc,GAAGlE,WAAW,CAAEmE,MAAyB,IAAK;IAChEzB,mBAAmB,CAAE0B,IAAI,IAAK;MAC5B,IACEA,IAAI,KAAK,IAAI,IACbA,IAAI,CAACC,KAAK,KAAKF,MAAM,CAACE,KAAK,IAC3BD,IAAI,CAACE,MAAM,KAAKH,MAAM,CAACG,MAAM,IAC7BF,IAAI,CAACG,CAAC,KAAKJ,MAAM,CAACI,CAAC,IACnBH,IAAI,CAACI,CAAC,KAAKL,MAAM,CAACK,CAAC,EACnB;QACA,OAAOJ,IAAI;MACb;MACA,OAAOD,MAAM;IACf,CAAC,CAAC;EACJ,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMM,YAAY,GAAGzE,WAAW,CAAE0E,IAAY,IAAK;IACjD9B,iBAAiB,CAAEwB,IAAI,IAAMA,IAAI,KAAKM,IAAI,GAAGN,IAAI,GAAGM,IAAK,CAAC;EAC5D,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMzC,kBAAkB,GAAGhC,OAAO,CAAC,MAAM;IACvC,MAAM0E,QAAQ,GAAG;MACfhD,GAAG;MACHC,GAAG;MACHgD,GAAG,EAAElB,YAAY;MACjBmB,IAAI,EAAEhE,iBAAiB,CAAC6C,YAAY;IACtC,CAAC;IAED,IAAIxB,sBAAsB,KAAK4C,SAAS,EAAE;MACxC,OAAOH,QAAQ;IACjB;IAEA,OAAO;MAAE,GAAGA,QAAQ;MAAE,GAAGzC;IAAuB,CAAC;EACnD,CAAC,EAAE,CAACA,sBAAsB,EAAEwB,YAAY,EAAE9B,GAAG,EAAED,GAAG,CAAC,CAAC;EAEpD,MAAMoD,aAAa,GAAG/E,WAAW,CAAC,MAAMiC,kBAAkB,CAAC4C,IAAI,EAAE,CAAC5C,kBAAkB,CAAC4C,IAAI,CAAC,CAAC;EAE3F,MAAMG,aAAa,GAAGhF,WAAW,CAC9BiF,KAA8E,IAAK;IAClF,IAAInD,UAAU,EAAE;MACd;IACF;IACA,MAAMoD,GAAG,GAAGD,KAAK,CAACE,WAAW,CAACD,GAAG;IACjC,IAAI,CAACA,GAAG,IAAI,CAAChE,SAAS,CAACkE,GAAG,CAACF,GAAG,CAAC,EAAE;MAC/B;IACF;IACA,IAAI9E,QAAQ,CAACiF,EAAE,KAAK,KAAK,EAAE;MACxBJ,KAAK,CAA+CK,cAAc,CAAC,CAAC;IACvE;IAEA,IAAIzB,IAAI,GAAGH,YAAY;IACvB,IAAIwB,GAAG,KAAK,SAAS,IAAIA,GAAG,KAAK,YAAY,EAAE;MAC7CrB,IAAI,GAAGH,YAAY,GAAG7B,IAAI;IAC5B,CAAC,MAAM,IAAIqD,GAAG,KAAK,WAAW,IAAIA,GAAG,KAAK,WAAW,EAAE;MACrDrB,IAAI,GAAGH,YAAY,GAAG7B,IAAI;IAC5B,CAAC,MAAM,IAAIqD,GAAG,KAAK,MAAM,EAAE;MACzBrB,IAAI,GAAGlC,GAAG;IACZ,CAAC,MAAM,IAAIuD,GAAG,KAAK,KAAK,EAAE;MACxBrB,IAAI,GAAGjC,GAAG;IACZ;IAEAgC,QAAQ,CAACC,IAAI,EAAE,IAAI,CAAC;EACtB,CAAC,EACD,CAACH,YAAY,EAAE5B,UAAU,EAAEF,GAAG,EAAED,GAAG,EAAEiC,QAAQ,EAAE/B,IAAI,CACrD,CAAC;EAED,MAAM0D,YAAY,GAAGtF,OAAO,CAC1B,OAAO;IACLqB,KAAK,EAAEoC,YAAY;IACnB/B,GAAG;IACHC,GAAG;IACHC,IAAI;IACJ8B,OAAO;IACP5B,WAAW;IACXD,UAAU;IACVe,UAAU;IACVE,SAAS;IACTM,SAAS,EAAEA,SAAS,IAAIJ,cAAc;IACtCR,WAAW;IACXE,SAAS;IACTiB,QAAQ;IACRI,iBAAiB;IACjBE,cAAc;IACdO,YAAY;IACZ3B,aAAa;IACbE,YAAY;IACZwC,YAAY,EAAEtC,iBAAiB;IAC/B6B,aAAa;IACb5B;EACF,CAAC,CAAC,EACF,CACEO,YAAY,EACZqB,aAAa,EACbjD,UAAU,EACVe,UAAU,EACVQ,SAAS,EACTJ,cAAc,EACdF,SAAS,EACTnB,GAAG,EACHD,GAAG,EACHI,WAAW,EACX4B,OAAO,EACPO,cAAc,EACdO,YAAY,EACZb,QAAQ,EACRI,iBAAiB,EACjBnC,IAAI,EACJc,SAAS,EACTF,WAAW,EACXU,QAAQ,CAEZ,CAAC;EAED,MAAMsC,SAAS,GAAG/E,cAAc,CAAC;IAC/BgF,IAAI,EAAE,QAAQ;IACd3D,WAAW;IACX4D,QAAQ,EAAE7D,UAAU;IACpB8D,QAAQ,EAAE/C,UAAU;IACpBgD,KAAK,EAAE9C,SAAS;IAChB+C,KAAK,EAAEzC,SAAS;IAChB/B,KAAK,EAAEyE,MAAM,CAACrC,YAAY,CAAC;IAC3B/B,GAAG,EAAEoE,MAAM,CAACpE,GAAG,CAAC;IAChBC,GAAG,EAAEmE,MAAM,CAACnE,GAAG;EACjB,CAAC,CAAC;EAEF,MAAMoE,IAAI,GAAG3E,OAAO,GAAGZ,IAAI,GAAGJ,IAAI;EAElC,MAAM4F,YAAY,GAAG3F,oBAAoB,CAACgC,QAAQ,EAAE,MAAMwC,SAAS,CAAC;EAEpE,MAAMoB,WAAW,GACf9F,QAAQ,CAACiF,EAAE,KAAK,KAAK,GACjB;IACEc,QAAQ,EAAErE,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC;IAC7BsE,SAAS,EAAE9F,oBAAoB,CAC5BiC,KAAK,CAA0D6D,SAAS,EACzEpB,aACF;EACF,CAAC,GACD,CAAC,CAAC;EAER,oBACE/D,IAAA,CAACN,cAAc;IAACW,KAAK,EAAEiE,YAAa;IAAAlD,QAAA,eAClCpB,IAAA,CAAC+E,IAAI;MACHxD,GAAG,EAAEA,GAAI;MAAA,GACJD,KAAK;MAAA,GACNa,UAAU;MAAA,GACV8C,WAAW;MACf5D,QAAQ,EAAE2D,YAAa;MACvBI,OAAO,EAAE/F,oBAAoB,CAC3BA,oBAAoB,CAClBiC,KAAK,CAAC8D,OAAO,EACbjD,UAAU,CAACiD,OACb,CAAC,EACD,MAAMnD,iBAAiB,CAAC,IAAI,CAC9B,CAAE;MACFoD,MAAM,EAAEhG,oBAAoB,CAC1BA,oBAAoB,CAClBiC,KAAK,CAAC+D,MAAM,EACZlD,UAAU,CAACkD,MACb,CAAC,EACD,MAAMpD,iBAAiB,CAAC,KAAK,CAC/B,CAAE;MACFf,iBAAiB,EAAEA,iBAAkB;MACrCH,kBAAkB,EAAEA,kBAAmB;MACvCC,kBAAkB,EAAEA,kBAAmB;MACvCsE,kBAAkB,EAAE;QAAEZ,QAAQ,EAAE7D;MAAW,CAAE;MAC7C,iBAAeH,GAAI;MACnB,iBAAeC,GAAI;MACnB,iBAAe8B,YAAa;MAC5B,oBAAkB3B,WAAY;MAC9B,iBAAeD,UAAW;MAC1BM,IAAI,EAAEA,IAAK;MAAA,GACPqD,SAAS;MAAApD,QAAA,EAEZA;IAAQ,CACL;EAAC,CACO,CAAC;AAErB,CACF,CAAC;AAEDjB,UAAU,CAACoF,WAAW,GAAG,YAAY","ignoreList":[]}