@basic-ui/core 0.0.51 → 0.0.53

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 (104) hide show
  1. package/build/cjs/index.js +19 -3
  2. package/build/cjs/index.js.map +1 -1
  3. package/build/esm/Carousel/Carousel.d.ts +9 -0
  4. package/build/esm/Carousel/Carousel.js +38 -0
  5. package/build/esm/Carousel/Carousel.js.map +1 -0
  6. package/build/esm/Carousel/Fader.d.ts +14 -0
  7. package/build/esm/Carousel/Fader.js +76 -0
  8. package/build/esm/Carousel/Fader.js.map +1 -0
  9. package/build/esm/Carousel/FaderItem.d.ts +5 -0
  10. package/build/esm/Carousel/FaderItem.js +16 -0
  11. package/build/esm/Carousel/FaderItem.js.map +1 -0
  12. package/build/esm/Carousel/Preloader.d.ts +7 -0
  13. package/build/esm/Carousel/Preloader.js +70 -0
  14. package/build/esm/Carousel/Preloader.js.map +1 -0
  15. package/build/esm/Carousel/Slider.d.ts +14 -0
  16. package/build/esm/Carousel/Slider.js +212 -0
  17. package/build/esm/Carousel/Slider.js.map +1 -0
  18. package/build/esm/Carousel/SliderItem.d.ts +12 -0
  19. package/build/esm/Carousel/SliderItem.js +41 -0
  20. package/build/esm/Carousel/SliderItem.js.map +1 -0
  21. package/build/esm/Carousel/context.d.ts +10 -0
  22. package/build/esm/Carousel/context.js +8 -0
  23. package/build/esm/Carousel/context.js.map +1 -0
  24. package/build/esm/Carousel/getSliderParams.d.ts +9 -0
  25. package/build/esm/Carousel/getSliderParams.js +85 -0
  26. package/build/esm/Carousel/getSliderParams.js.map +1 -0
  27. package/build/esm/Carousel/index.d.ts +7 -0
  28. package/build/esm/Carousel/index.js +8 -0
  29. package/build/esm/Carousel/index.js.map +1 -0
  30. package/build/esm/Carousel/useCarouselGestures.d.ts +30 -0
  31. package/build/esm/Carousel/useCarouselGestures.js +33 -0
  32. package/build/esm/Carousel/useCarouselGestures.js.map +1 -0
  33. package/build/esm/DatePicker/DatePicker.d.ts +24 -0
  34. package/build/esm/DatePicker/DatePicker.js +101 -0
  35. package/build/esm/DatePicker/DatePicker.js.map +1 -0
  36. package/build/esm/DatePicker/DatePickerSelect.d.ts +8 -0
  37. package/build/esm/DatePicker/DatePickerSelect.js +201 -0
  38. package/build/esm/DatePicker/DatePickerSelect.js.map +1 -0
  39. package/build/esm/DatePicker/RangeDatePicker.d.ts +28 -0
  40. package/build/esm/DatePicker/RangeDatePicker.js +94 -0
  41. package/build/esm/DatePicker/RangeDatePicker.js.map +1 -0
  42. package/build/esm/DatePicker/adjustDates.d.ts +4 -0
  43. package/build/esm/DatePicker/adjustDates.js +18 -0
  44. package/build/esm/DatePicker/adjustDates.js.map +1 -0
  45. package/build/esm/DatePicker/contexts.d.ts +31 -0
  46. package/build/esm/DatePicker/contexts.js +15 -0
  47. package/build/esm/DatePicker/contexts.js.map +1 -0
  48. package/build/esm/DatePicker/dateTypes.d.ts +2 -0
  49. package/build/esm/DatePicker/dateTypes.js +2 -0
  50. package/build/esm/DatePicker/dateTypes.js.map +1 -0
  51. package/build/esm/DatePicker/hooks.d.ts +36 -0
  52. package/build/esm/DatePicker/hooks.js +98 -0
  53. package/build/esm/DatePicker/hooks.js.map +1 -0
  54. package/build/esm/DatePicker/index.d.ts +5 -0
  55. package/build/esm/DatePicker/index.js +6 -0
  56. package/build/esm/DatePicker/index.js.map +1 -0
  57. package/build/esm/Portal/Portal.d.ts +3 -2
  58. package/build/esm/Portal/Portal.js +6 -3
  59. package/build/esm/Portal/Portal.js.map +1 -1
  60. package/build/esm/Portal/PortalSelectorProvider.d.ts +8 -0
  61. package/build/esm/Portal/PortalSelectorProvider.js +13 -0
  62. package/build/esm/Portal/PortalSelectorProvider.js.map +1 -0
  63. package/build/esm/Portal/index.d.ts +1 -0
  64. package/build/esm/Portal/index.js +1 -0
  65. package/build/esm/Portal/index.js.map +1 -1
  66. package/build/esm/hooks/useControlledState.js +1 -1
  67. package/build/esm/hooks/useControlledState.js.map +1 -1
  68. package/build/esm/hooks/useId.d.ts +1 -0
  69. package/build/esm/hooks/useId.js +25 -0
  70. package/build/esm/hooks/useId.js.map +1 -0
  71. package/build/esm/utils/assignRef.d.ts +3 -0
  72. package/build/esm/utils/assignRef.js +25 -0
  73. package/build/esm/utils/assignRef.js.map +1 -0
  74. package/build/esm/utils/getCircularIndex.d.ts +1 -0
  75. package/build/esm/utils/getCircularIndex.js +8 -0
  76. package/build/esm/utils/getCircularIndex.js.map +1 -0
  77. package/build/esm/utils/rubberBandClamp.d.ts +2 -0
  78. package/build/esm/utils/rubberBandClamp.js +20 -0
  79. package/build/esm/utils/rubberBandClamp.js.map +1 -0
  80. package/build/esm/utils/wrapEvent.d.ts +3 -0
  81. package/build/esm/utils/wrapEvent.js +16 -0
  82. package/build/esm/utils/wrapEvent.js.map +1 -0
  83. package/build/tsconfig-build.tsbuildinfo +1 -1
  84. package/build/tsconfig.tsbuildinfo +7270 -0
  85. package/package.json +2 -2
  86. package/src/Portal/Portal.tsx +15 -4
  87. package/src/Portal/PortalSelectorProvider.tsx +24 -0
  88. package/src/Portal/index.ts +5 -0
  89. package/src/hooks/useControlledState.ts +3 -3
  90. package/build/esm/TimerField/clamp.d.ts +0 -1
  91. package/build/esm/TimerField/clamp.js +0 -2
  92. package/build/esm/TimerField/clamp.js.map +0 -1
  93. package/build/esm/TimerField/index.d.ts +0 -1
  94. package/build/esm/TimerField/index.js +0 -2
  95. package/build/esm/TimerField/index.js.map +0 -1
  96. package/build/esm/TimerField/useControlledState.d.ts +0 -1
  97. package/build/esm/TimerField/useControlledState.js +0 -2
  98. package/build/esm/TimerField/useControlledState.js.map +0 -1
  99. package/build/esm/TimerField/useTimerField.d.ts +0 -44
  100. package/build/esm/TimerField/useTimerField.js +0 -430
  101. package/build/esm/TimerField/useTimerField.js.map +0 -1
  102. package/build/esm/TimerField/wrapEvent.d.ts +0 -1
  103. package/build/esm/TimerField/wrapEvent.js +0 -2
  104. package/build/esm/TimerField/wrapEvent.js.map +0 -1
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ export interface CarouselProps extends React.HTMLAttributes<HTMLElement> {
3
+ as?: React.ElementType<any>;
4
+ isRTL?: boolean;
5
+ currentSlide?: number;
6
+ slidesToShow?: number;
7
+ children?: React.ReactNode;
8
+ }
9
+ export declare const Carousel: React.ForwardRefExoticComponent<CarouselProps & React.RefAttributes<HTMLElement>>;
@@ -0,0 +1,38 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
+ import React, { forwardRef, useMemo, useRef } from 'react';
4
+ import { assignMultipleRefs } from '../utils/assignRef';
5
+ import { CarouselProvider } from './context';
6
+ export var Carousel = forwardRef(function Carousel(_ref, forwardedRef) {
7
+ var _ref$as = _ref.as,
8
+ Comp = _ref$as === void 0 ? 'section' : _ref$as,
9
+ _ref$currentSlide = _ref.currentSlide,
10
+ currentSlide = _ref$currentSlide === void 0 ? 0 : _ref$currentSlide,
11
+ _ref$slidesToShow = _ref.slidesToShow,
12
+ slidesToShow = _ref$slidesToShow === void 0 ? 1 : _ref$slidesToShow,
13
+ _ref$isRTL = _ref.isRTL,
14
+ isRTL = _ref$isRTL === void 0 ? false : _ref$isRTL,
15
+ children = _ref.children,
16
+ otherProps = _objectWithoutProperties(_ref, ["as", "currentSlide", "slidesToShow", "isRTL", "children"]);
17
+
18
+ var containerRef = useRef(null);
19
+ var contextValue = useMemo(function () {
20
+ return {
21
+ slidesToShow: slidesToShow,
22
+ isRTL: isRTL,
23
+ currentSlide: currentSlide,
24
+ itemWidth: 100 / slidesToShow,
25
+ containerRef: containerRef
26
+ };
27
+ }, [currentSlide, isRTL, slidesToShow]);
28
+ return /*#__PURE__*/React.createElement(CarouselProvider, {
29
+ value: contextValue
30
+ }, /*#__PURE__*/React.createElement(Comp, _extends({
31
+ ref: assignMultipleRefs(forwardedRef, containerRef)
32
+ }, otherProps, {
33
+ role: "region",
34
+ "data-carousel-root": "",
35
+ "aria-roledescription": "carousel"
36
+ }), children));
37
+ });
38
+ //# sourceMappingURL=Carousel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/Carousel/Carousel.tsx"],"names":["React","forwardRef","useMemo","useRef","assignMultipleRefs","CarouselProvider","Carousel","forwardedRef","as","Comp","currentSlide","slidesToShow","isRTL","children","otherProps","containerRef","contextValue","itemWidth"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,UAAhB,EAA4BC,OAA5B,EAAqCC,MAArC,QAAmD,OAAnD;AACA,SAASC,kBAAT,QAAmC,oBAAnC;AACA,SAASC,gBAAT,QAAiC,WAAjC;AAUA,OAAO,IAAMC,QAAQ,GAAGL,UAAU,CAChC,SAASK,QAAT,OASEC,YATF,EAUE;AAAA,qBAREC,EAQF;AAAA,MARMC,IAQN,wBARa,SAQb;AAAA,+BAPEC,YAOF;AAAA,MAPEA,YAOF,kCAPiB,CAOjB;AAAA,+BANEC,YAMF;AAAA,MANEA,YAMF,kCANiB,CAMjB;AAAA,wBALEC,KAKF;AAAA,MALEA,KAKF,2BALU,KAKV;AAAA,MAJEC,QAIF,QAJEA,QAIF;AAAA,MAHKC,UAGL;;AACA,MAAMC,YAAY,GAAGZ,MAAM,CAAqB,IAArB,CAA3B;AACA,MAAMa,YAAY,GAAGd,OAAO,CAC1B;AAAA,WAAO;AACLS,MAAAA,YAAY,EAAZA,YADK;AAELC,MAAAA,KAAK,EAALA,KAFK;AAGLF,MAAAA,YAAY,EAAZA,YAHK;AAILO,MAAAA,SAAS,EAAE,MAAMN,YAJZ;AAKLI,MAAAA,YAAY,EAAZA;AALK,KAAP;AAAA,GAD0B,EAQ1B,CAACL,YAAD,EAAeE,KAAf,EAAsBD,YAAtB,CAR0B,CAA5B;AAWA,sBACE,oBAAC,gBAAD;AAAkB,IAAA,KAAK,EAAEK;AAAzB,kBACE,oBAAC,IAAD;AACE,IAAA,GAAG,EAAEZ,kBAAkB,CAACG,YAAD,EAAeQ,YAAf;AADzB,KAEMD,UAFN;AAGE,IAAA,IAAI,EAAC,QAHP;AAIE,0BAAmB,EAJrB;AAKE,4BAAqB;AALvB,MAOGD,QAPH,CADF,CADF;AAaD,CArC+B,CAA3B","sourcesContent":["import React, { forwardRef, useMemo, useRef } from 'react';\nimport { assignMultipleRefs } from '../utils/assignRef';\nimport { CarouselProvider } from './context';\n\nexport interface CarouselProps extends React.HTMLAttributes<HTMLElement> {\n as?: React.ElementType<any>;\n isRTL?: boolean;\n currentSlide?: number;\n slidesToShow?: number;\n children?: React.ReactNode;\n}\n\nexport const Carousel = forwardRef<HTMLElement, CarouselProps>(\n function Carousel(\n {\n as: Comp = 'section',\n currentSlide = 0,\n slidesToShow = 1,\n isRTL = false,\n children,\n ...otherProps\n },\n forwardedRef\n ) {\n const containerRef = useRef<HTMLElement | null>(null);\n const contextValue = useMemo(\n () => ({\n slidesToShow,\n isRTL,\n currentSlide,\n itemWidth: 100 / slidesToShow,\n containerRef,\n }),\n [currentSlide, isRTL, slidesToShow]\n );\n\n return (\n <CarouselProvider value={contextValue}>\n <Comp\n ref={assignMultipleRefs(forwardedRef, containerRef)}\n {...otherProps}\n role=\"region\"\n data-carousel-root=\"\"\n aria-roledescription=\"carousel\"\n >\n {children}\n </Comp>\n </CarouselProvider>\n );\n }\n);\n"],"file":"Carousel.js"}
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import { SpringConfig } from 'react-spring';
3
+ import { GestureHandlersState } from '../hooks';
4
+ export declare const faderConfig: SpringConfig;
5
+ export interface FaderProps extends React.HTMLAttributes<HTMLDivElement> {
6
+ as?: React.ElementType<any>;
7
+ mouseSwipe?: boolean;
8
+ touchSwipe?: boolean;
9
+ onSwipeRight?: (s: Partial<GestureHandlersState>) => void;
10
+ onSwipeLeft?: (s: Partial<GestureHandlersState>) => void;
11
+ springConfig?: SpringConfig;
12
+ children?: React.ReactNode[] | React.ReactNode;
13
+ }
14
+ export declare const Fader: React.ForwardRefExoticComponent<FaderProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,76 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
+ import React, { forwardRef, Children, useMemo } from 'react';
4
+ import { useTransition, animated } from 'react-spring';
5
+ import { getCircularIndex } from '../utils/getCircularIndex';
6
+ import { useCarouselGestures } from './useCarouselGestures';
7
+ import { useCarouselContext } from './context';
8
+ export var faderConfig = {
9
+ tension: 280,
10
+ friction: 75,
11
+ clamp: true
12
+ };
13
+ export var Fader = forwardRef(function Fader(_ref, ref) {
14
+ var _ref$as = _ref.as,
15
+ Comp = _ref$as === void 0 ? 'div' : _ref$as,
16
+ maybeSingleChildren = _ref.children,
17
+ _ref$springConfig = _ref.springConfig,
18
+ springConfig = _ref$springConfig === void 0 ? faderConfig : _ref$springConfig,
19
+ _ref$mouseSwipe = _ref.mouseSwipe,
20
+ mouseSwipe = _ref$mouseSwipe === void 0 ? false : _ref$mouseSwipe,
21
+ _ref$touchSwipe = _ref.touchSwipe,
22
+ touchSwipe = _ref$touchSwipe === void 0 ? false : _ref$touchSwipe,
23
+ onSwipeLeft = _ref.onSwipeLeft,
24
+ onSwipeRight = _ref.onSwipeRight,
25
+ otherProps = _objectWithoutProperties(_ref, ["as", "children", "springConfig", "mouseSwipe", "touchSwipe", "onSwipeLeft", "onSwipeRight"]);
26
+
27
+ var _useCarouselContext = useCarouselContext(),
28
+ _useCarouselContext$i = _useCarouselContext.isRTL,
29
+ isRTL = _useCarouselContext$i === void 0 ? false : _useCarouselContext$i,
30
+ _useCarouselContext$c = _useCarouselContext.currentSlide,
31
+ nextSlideIndex = _useCarouselContext$c === void 0 ? 0 : _useCarouselContext$c,
32
+ containerRef = _useCarouselContext.containerRef;
33
+
34
+ var children = useMemo(function () {
35
+ return Children.toArray(maybeSingleChildren);
36
+ }, [maybeSingleChildren]);
37
+ var transitions = useTransition(nextSlideIndex, {
38
+ config: springConfig,
39
+ from: {
40
+ opacity: 0
41
+ },
42
+ enter: {
43
+ opacity: 1
44
+ },
45
+ leave: {
46
+ opacity: 0
47
+ }
48
+ });
49
+
50
+ var _useCarouselGestures = useCarouselGestures({
51
+ onSwipeLeft: onSwipeLeft,
52
+ onSwipeRight: onSwipeRight,
53
+ isRTL: isRTL,
54
+ containerRef: containerRef
55
+ }),
56
+ handlers = _useCarouselGestures.handlers;
57
+
58
+ return /*#__PURE__*/React.createElement(Comp, _extends({
59
+ onTouchStart: touchSwipe ? handlers.onTouchStart : undefined,
60
+ onMouseDown: mouseSwipe ? handlers.onMouseDown : undefined,
61
+ "aria-live": "polite",
62
+ "data-carousel-slider": "",
63
+ ref: ref
64
+ }, otherProps), transitions(function (style, item) {
65
+ var idx = getCircularIndex(item, children.length);
66
+
67
+ if (idx !== null) {
68
+ return /*#__PURE__*/React.createElement(animated.span, {
69
+ style: style
70
+ }, children[idx]);
71
+ }
72
+
73
+ return null;
74
+ }));
75
+ });
76
+ //# sourceMappingURL=Fader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/Carousel/Fader.tsx"],"names":["React","forwardRef","Children","useMemo","useTransition","animated","getCircularIndex","useCarouselGestures","useCarouselContext","faderConfig","tension","friction","clamp","Fader","ref","as","Comp","maybeSingleChildren","children","springConfig","mouseSwipe","touchSwipe","onSwipeLeft","onSwipeRight","otherProps","isRTL","currentSlide","nextSlideIndex","containerRef","toArray","transitions","config","from","opacity","enter","leave","handlers","onTouchStart","undefined","onMouseDown","style","item","idx","length"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,UAAhB,EAA4BC,QAA5B,EAAsCC,OAAtC,QAAqD,OAArD;AACA,SAASC,aAAT,EAAsCC,QAAtC,QAAsD,cAAtD;AACA,SAASC,gBAAT,QAAiC,2BAAjC;AACA,SAASC,mBAAT,QAAoC,uBAApC;AACA,SAASC,kBAAT,QAAmC,WAAnC;AAGA,OAAO,IAAMC,WAAyB,GAAG;AACvCC,EAAAA,OAAO,EAAE,GAD8B;AAEvCC,EAAAA,QAAQ,EAAE,EAF6B;AAGvCC,EAAAA,KAAK,EAAE;AAHgC,CAAlC;AAgBP,OAAO,IAAMC,KAAK,GAAGZ,UAAU,CAAC,SAASY,KAAT,OAW9BC,GAX8B,EAY9B;AAAA,qBAVEC,EAUF;AAAA,MAVMC,IAUN,wBAVa,KAUb;AAAA,MATYC,mBASZ,QATEC,QASF;AAAA,+BAREC,YAQF;AAAA,MAREA,YAQF,kCARiBV,WAQjB;AAAA,6BAPEW,UAOF;AAAA,MAPEA,UAOF,gCAPe,KAOf;AAAA,6BANEC,UAMF;AAAA,MANEA,UAMF,gCANe,KAMf;AAAA,MALEC,WAKF,QALEA,WAKF;AAAA,MAJEC,YAIF,QAJEA,YAIF;AAAA,MAHKC,UAGL;;AAAA,4BAKIhB,kBAAkB,EALtB;AAAA,kDAEEiB,KAFF;AAAA,MAEEA,KAFF,sCAEU,KAFV;AAAA,kDAGEC,YAHF;AAAA,MAGgBC,cAHhB,sCAGiC,CAHjC;AAAA,MAIEC,YAJF,uBAIEA,YAJF;;AAMA,MAAMV,QAAQ,GAAGf,OAAO,CAAC;AAAA,WAAMD,QAAQ,CAAC2B,OAAT,CAAiBZ,mBAAjB,CAAN;AAAA,GAAD,EAA8C,CACpEA,mBADoE,CAA9C,CAAxB;AAIA,MAAMa,WAAW,GAAG1B,aAAa,CAACuB,cAAD,EAAiB;AAChDI,IAAAA,MAAM,EAAEZ,YADwC;AAEhDa,IAAAA,IAAI,EAAE;AAAEC,MAAAA,OAAO,EAAE;AAAX,KAF0C;AAGhDC,IAAAA,KAAK,EAAE;AAAED,MAAAA,OAAO,EAAE;AAAX,KAHyC;AAIhDE,IAAAA,KAAK,EAAE;AAAEF,MAAAA,OAAO,EAAE;AAAX;AAJyC,GAAjB,CAAjC;;AAVA,6BAiBqB1B,mBAAmB,CAAC;AACvCe,IAAAA,WAAW,EAAXA,WADuC;AAEvCC,IAAAA,YAAY,EAAZA,YAFuC;AAGvCE,IAAAA,KAAK,EAALA,KAHuC;AAIvCG,IAAAA,YAAY,EAAZA;AAJuC,GAAD,CAjBxC;AAAA,MAiBQQ,QAjBR,wBAiBQA,QAjBR;;AAwBA,sBACE,oBAAC,IAAD;AACE,IAAA,YAAY,EAAEf,UAAU,GAAGe,QAAQ,CAACC,YAAZ,GAA2BC,SADrD;AAEE,IAAA,WAAW,EAAElB,UAAU,GAAGgB,QAAQ,CAACG,WAAZ,GAA0BD,SAFnD;AAGE,iBAAU,QAHZ;AAIE,4BAAqB,EAJvB;AAKE,IAAA,GAAG,EAAExB;AALP,KAMMU,UANN,GAQGM,WAAW,CAAC,UAACU,KAAD,EAAQC,IAAR,EAAiB;AAC5B,QAAMC,GAAG,GAAGpC,gBAAgB,CAACmC,IAAD,EAAOvB,QAAQ,CAACyB,MAAhB,CAA5B;;AACA,QAAID,GAAG,KAAK,IAAZ,EAAkB;AAChB,0BAAO,oBAAC,QAAD,CAAU,IAAV;AAAe,QAAA,KAAK,EAAEF;AAAtB,SAA8BtB,QAAQ,CAACwB,GAAD,CAAtC,CAAP;AACD;;AAED,WAAO,IAAP;AACD,GAPW,CARd,CADF;AAmBD,CAvD8B,CAAxB","sourcesContent":["import React, { forwardRef, Children, useMemo } from 'react';\nimport { useTransition, SpringConfig, animated } from 'react-spring';\nimport { getCircularIndex } from '../utils/getCircularIndex';\nimport { useCarouselGestures } from './useCarouselGestures';\nimport { useCarouselContext } from './context';\nimport { GestureHandlersState } from '../hooks';\n\nexport const faderConfig: SpringConfig = {\n tension: 280,\n friction: 75,\n clamp: true,\n};\n\nexport interface FaderProps extends React.HTMLAttributes<HTMLDivElement> {\n as?: React.ElementType<any>;\n mouseSwipe?: boolean;\n touchSwipe?: boolean;\n onSwipeRight?: (s: Partial<GestureHandlersState>) => void;\n onSwipeLeft?: (s: Partial<GestureHandlersState>) => void;\n springConfig?: SpringConfig;\n children?: React.ReactNode[] | React.ReactNode;\n}\n\nexport const Fader = forwardRef(function Fader(\n {\n as: Comp = 'div',\n children: maybeSingleChildren,\n springConfig = faderConfig,\n mouseSwipe = false,\n touchSwipe = false,\n onSwipeLeft,\n onSwipeRight,\n ...otherProps\n }: FaderProps,\n ref: React.Ref<HTMLDivElement>\n) {\n const {\n isRTL = false,\n currentSlide: nextSlideIndex = 0,\n containerRef,\n } = useCarouselContext();\n const children = useMemo(() => Children.toArray(maybeSingleChildren), [\n maybeSingleChildren,\n ]);\n\n const transitions = useTransition(nextSlideIndex, {\n config: springConfig,\n from: { opacity: 0 },\n enter: { opacity: 1 },\n leave: { opacity: 0 },\n });\n\n const { handlers } = useCarouselGestures({\n onSwipeLeft,\n onSwipeRight,\n isRTL,\n containerRef,\n });\n\n return (\n <Comp\n onTouchStart={touchSwipe ? handlers.onTouchStart : undefined}\n onMouseDown={mouseSwipe ? handlers.onMouseDown : undefined}\n aria-live=\"polite\"\n data-carousel-slider=\"\"\n ref={ref}\n {...otherProps}\n >\n {transitions((style, item) => {\n const idx = getCircularIndex(item, children.length);\n if (idx !== null) {\n return <animated.span style={style}>{children[idx]}</animated.span>;\n }\n\n return null;\n })}\n </Comp>\n );\n});\n"],"file":"Fader.js"}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ export interface FaderItemProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ as?: React.ElementType<any>;
4
+ }
5
+ export declare const FaderItem: React.ForwardRefExoticComponent<FaderItemProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,16 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
+ import React, { forwardRef } from 'react';
4
+ export var FaderItem = forwardRef(function FaderItem(_ref, ref) {
5
+ var _ref$as = _ref.as,
6
+ Comp = _ref$as === void 0 ? 'div' : _ref$as,
7
+ props = _objectWithoutProperties(_ref, ["as"]);
8
+
9
+ return /*#__PURE__*/React.createElement(Comp, _extends({
10
+ role: "group",
11
+ "aria-roledescription": "slide",
12
+ "data-carousel-fader-item": "",
13
+ ref: ref
14
+ }, props));
15
+ });
16
+ //# sourceMappingURL=FaderItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/Carousel/FaderItem.tsx"],"names":["React","forwardRef","FaderItem","ref","as","Comp","props"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;AAMA,OAAO,IAAMC,SAAS,GAAGD,UAAU,CACjC,SAASC,SAAT,OAAmDC,GAAnD,EAAwD;AAAA,qBAAnCC,EAAmC;AAAA,MAA/BC,IAA+B,wBAAxB,KAAwB;AAAA,MAAdC,KAAc;;AACtD,sBACE,oBAAC,IAAD;AACE,IAAA,IAAI,EAAC,OADP;AAEE,4BAAqB,OAFvB;AAGE,gCAAyB,EAH3B;AAIE,IAAA,GAAG,EAAEH;AAJP,KAKMG,KALN,EADF;AASD,CAXgC,CAA5B","sourcesContent":["import React, { forwardRef } from 'react';\n\nexport interface FaderItemProps extends React.HTMLAttributes<HTMLDivElement> {\n as?: React.ElementType<any>;\n}\n\nexport const FaderItem = forwardRef<HTMLDivElement, FaderItemProps>(\n function FaderItem({ as: Comp = 'div', ...props }, ref) {\n return (\n <Comp\n role=\"group\"\n aria-roledescription=\"slide\"\n data-carousel-fader-item=\"\"\n ref={ref}\n {...props}\n />\n );\n }\n);\n"],"file":"FaderItem.js"}
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ export interface PreloaderProps {
3
+ children: React.ReactNode[] | React.ReactNode;
4
+ preloadNextCount?: number;
5
+ preloadPrevCount?: number;
6
+ }
7
+ export declare const Preloader: React.ForwardRefExoticComponent<PreloaderProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,70 @@
1
+ import React, { Children, forwardRef, cloneElement, useEffect, useRef } from 'react';
2
+ import { useCarouselContext } from './context';
3
+ import { getCircularIndex } from '../utils/getCircularIndex';
4
+ export var Preloader = forwardRef(function Preloader(_ref, ref) {
5
+ var maybeSingleChildren = _ref.children,
6
+ _ref$preloadNextCount = _ref.preloadNextCount,
7
+ preloadNextCount = _ref$preloadNextCount === void 0 ? 0 : _ref$preloadNextCount,
8
+ _ref$preloadPrevCount = _ref.preloadPrevCount,
9
+ preloadPrevCount = _ref$preloadPrevCount === void 0 ? 0 : _ref$preloadPrevCount;
10
+
11
+ var _useCarouselContext = useCarouselContext(),
12
+ currentSlide = _useCarouselContext.currentSlide,
13
+ slidesToShow = _useCarouselContext.slidesToShow;
14
+
15
+ var preloadedImagesCache = useRef({});
16
+ var childrenRef = useRef(maybeSingleChildren);
17
+ useEffect(function () {
18
+ if (maybeSingleChildren !== childrenRef.current) {
19
+ // clear cache
20
+ childrenRef.current = maybeSingleChildren;
21
+ preloadedImagesCache.current = {};
22
+ }
23
+ }, [maybeSingleChildren]);
24
+ var children = Children.toArray(maybeSingleChildren);
25
+
26
+ if (preloadNextCount > 0 && preloadPrevCount > 0 && children.length > 0) {
27
+ var ret = [];
28
+
29
+ for (var i = currentSlide - preloadPrevCount; i <= currentSlide + (slidesToShow - 1) + preloadNextCount; i += 1) {
30
+ var idx = getCircularIndex(i, children.length);
31
+
32
+ if (!idx) {
33
+ continue;
34
+ }
35
+
36
+ if ( // ignore images currently rendered in carousel
37
+ i >= currentSlide && i <= currentSlide + (slidesToShow - 1) || // ignore images we've already preloaded first
38
+ preloadedImagesCache.current[idx]) {
39
+ // set images rendered as already preloaded
40
+ preloadedImagesCache.current[idx] = true;
41
+ continue;
42
+ }
43
+
44
+ preloadedImagesCache.current[idx] = true;
45
+ ret.push(cloneElement(children[idx], {
46
+ 'data-carousel-preload': idx
47
+ }));
48
+ }
49
+
50
+ if (ret.length > 0) {
51
+ return /*#__PURE__*/React.createElement("div", {
52
+ ref: ref,
53
+ "data-carousel-preloader": true,
54
+ "aria-hidden": true,
55
+ style: {
56
+ width: '1px',
57
+ height: '0px',
58
+ padding: '0',
59
+ overflow: 'hidden',
60
+ position: 'fixed',
61
+ top: '1px',
62
+ left: '1px'
63
+ }
64
+ }, ret);
65
+ }
66
+ }
67
+
68
+ return null;
69
+ });
70
+ //# sourceMappingURL=Preloader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/Carousel/Preloader.tsx"],"names":["React","Children","forwardRef","cloneElement","useEffect","useRef","useCarouselContext","getCircularIndex","Preloader","ref","maybeSingleChildren","children","preloadNextCount","preloadPrevCount","currentSlide","slidesToShow","preloadedImagesCache","childrenRef","current","toArray","length","ret","i","idx","push","width","height","padding","overflow","position","top","left"],"mappings":"AAAA,OAAOA,KAAP,IACEC,QADF,EAEEC,UAFF,EAGEC,YAHF,EAIEC,SAJF,EAKEC,MALF,QAMO,OANP;AAOA,SAASC,kBAAT,QAAmC,WAAnC;AACA,SAASC,gBAAT,QAAiC,2BAAjC;AAQA,OAAO,IAAMC,SAAS,GAAGN,UAAU,CACjC,SAASM,SAAT,OAMEC,GANF,EAOE;AAAA,MALYC,mBAKZ,QALEC,QAKF;AAAA,mCAJEC,gBAIF;AAAA,MAJEA,gBAIF,sCAJqB,CAIrB;AAAA,mCAHEC,gBAGF;AAAA,MAHEA,gBAGF,sCAHqB,CAGrB;;AAAA,4BACuCP,kBAAkB,EADzD;AAAA,MACQQ,YADR,uBACQA,YADR;AAAA,MACsBC,YADtB,uBACsBA,YADtB;;AAEA,MAAMC,oBAAoB,GAAGX,MAAM,CAAC,EAAD,CAAnC;AACA,MAAMY,WAAW,GAAGZ,MAAM,CAACK,mBAAD,CAA1B;AAEAN,EAAAA,SAAS,CAAC,YAAM;AACd,QAAIM,mBAAmB,KAAKO,WAAW,CAACC,OAAxC,EAAiD;AAC/C;AACAD,MAAAA,WAAW,CAACC,OAAZ,GAAsBR,mBAAtB;AACAM,MAAAA,oBAAoB,CAACE,OAArB,GAA+B,EAA/B;AACD;AACF,GANQ,EAMN,CAACR,mBAAD,CANM,CAAT;AAQA,MAAMC,QAAQ,GAAGV,QAAQ,CAACkB,OAAT,CAAiBT,mBAAjB,CAAjB;;AAEA,MAAIE,gBAAgB,GAAG,CAAnB,IAAwBC,gBAAgB,GAAG,CAA3C,IAAgDF,QAAQ,CAACS,MAAT,GAAkB,CAAtE,EAAyE;AACvE,QAAMC,GAAyB,GAAG,EAAlC;;AACA,SACE,IAAIC,CAAC,GAAGR,YAAY,GAAGD,gBADzB,EAEES,CAAC,IAAIR,YAAY,IAAIC,YAAY,GAAG,CAAnB,CAAZ,GAAoCH,gBAF3C,EAGEU,CAAC,IAAI,CAHP,EAIE;AACA,UAAMC,GAAG,GAAGhB,gBAAgB,CAACe,CAAD,EAAIX,QAAQ,CAACS,MAAb,CAA5B;;AACA,UAAI,CAACG,GAAL,EAAU;AACR;AACD;;AAED,WACE;AACCD,MAAAA,CAAC,IAAIR,YAAL,IAAqBQ,CAAC,IAAIR,YAAY,IAAIC,YAAY,GAAG,CAAnB,CAAvC,IACA;AACAC,MAAAA,oBAAoB,CAACE,OAArB,CAA6BK,GAA7B,CAJF,EAKE;AACA;AACAP,QAAAA,oBAAoB,CAACE,OAArB,CAA6BK,GAA7B,IAAoC,IAApC;AACA;AACD;;AAEDP,MAAAA,oBAAoB,CAACE,OAArB,CAA6BK,GAA7B,IAAoC,IAApC;AACAF,MAAAA,GAAG,CAACG,IAAJ,CACErB,YAAY,CAACQ,QAAQ,CAACY,GAAD,CAAT,EAA2C;AACrD,iCAAyBA;AAD4B,OAA3C,CADd;AAKD;;AAED,QAAIF,GAAG,CAACD,MAAJ,GAAa,CAAjB,EAAoB;AAClB,0BACE;AACE,QAAA,GAAG,EAAEX,GADP;AAEE,uCAFF;AAGE,2BAHF;AAIE,QAAA,KAAK,EAAE;AACLgB,UAAAA,KAAK,EAAE,KADF;AAELC,UAAAA,MAAM,EAAE,KAFH;AAGLC,UAAAA,OAAO,EAAE,GAHJ;AAILC,UAAAA,QAAQ,EAAE,QAJL;AAKLC,UAAAA,QAAQ,EAAE,OALL;AAMLC,UAAAA,GAAG,EAAE,KANA;AAOLC,UAAAA,IAAI,EAAE;AAPD;AAJT,SAcGV,GAdH,CADF;AAkBD;AACF;;AAED,SAAO,IAAP;AACD,CA7EgC,CAA5B","sourcesContent":["import React, {\n Children,\n forwardRef,\n cloneElement,\n useEffect,\n useRef,\n} from 'react';\nimport { useCarouselContext } from './context';\nimport { getCircularIndex } from '../utils/getCircularIndex';\n\nexport interface PreloaderProps {\n children: React.ReactNode[] | React.ReactNode;\n preloadNextCount?: number;\n preloadPrevCount?: number;\n}\n\nexport const Preloader = forwardRef<HTMLDivElement, PreloaderProps>(\n function Preloader(\n {\n children: maybeSingleChildren,\n preloadNextCount = 0,\n preloadPrevCount = 0,\n },\n ref\n ) {\n const { currentSlide, slidesToShow } = useCarouselContext();\n const preloadedImagesCache = useRef({});\n const childrenRef = useRef(maybeSingleChildren);\n\n useEffect(() => {\n if (maybeSingleChildren !== childrenRef.current) {\n // clear cache\n childrenRef.current = maybeSingleChildren;\n preloadedImagesCache.current = {};\n }\n }, [maybeSingleChildren]);\n\n const children = Children.toArray(maybeSingleChildren);\n\n if (preloadNextCount > 0 && preloadPrevCount > 0 && children.length > 0) {\n const ret: React.ReactElement[] = [];\n for (\n let i = currentSlide - preloadPrevCount;\n i <= currentSlide + (slidesToShow - 1) + preloadNextCount;\n i += 1\n ) {\n const idx = getCircularIndex(i, children.length);\n if (!idx) {\n continue;\n }\n\n if (\n // ignore images currently rendered in carousel\n (i >= currentSlide && i <= currentSlide + (slidesToShow - 1)) ||\n // ignore images we've already preloaded first\n preloadedImagesCache.current[idx]\n ) {\n // set images rendered as already preloaded\n preloadedImagesCache.current[idx] = true;\n continue;\n }\n\n preloadedImagesCache.current[idx] = true;\n ret.push(\n cloneElement(children[idx] as React.ReactElement<any>, {\n 'data-carousel-preload': idx,\n })\n );\n }\n\n if (ret.length > 0) {\n return (\n <div\n ref={ref}\n data-carousel-preloader\n aria-hidden\n style={{\n width: '1px',\n height: '0px',\n padding: '0',\n overflow: 'hidden',\n position: 'fixed',\n top: '1px',\n left: '1px',\n }}\n >\n {ret}\n </div>\n );\n }\n }\n\n return null;\n }\n);\n"],"file":"Preloader.js"}
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import { SpringConfig } from 'react-spring';
3
+ import { GestureHandlersState } from '../hooks';
4
+ export declare const sliderConfig: SpringConfig;
5
+ export interface SliderProps extends React.HTMLAttributes<HTMLDivElement> {
6
+ as?: React.ElementType<any>;
7
+ mouseSwipe?: boolean;
8
+ touchSwipe?: boolean;
9
+ onSwipeRight?: (s: Partial<GestureHandlersState>) => void;
10
+ onSwipeLeft?: (s: Partial<GestureHandlersState>) => void;
11
+ springConfig?: SpringConfig;
12
+ children?: React.ReactNode[] | React.ReactNode;
13
+ }
14
+ export declare const Slider: React.ForwardRefExoticComponent<SliderProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,212 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
+ import _extends from "@babel/runtime/helpers/esm/extends";
4
+ import React, { useRef, useReducer, useEffect, useMemo, Children, forwardRef } from 'react';
5
+ import { useSpring, animated } from 'react-spring';
6
+ import { SliderItemRenderer } from './SliderItem';
7
+ import { useCarouselContext } from './context';
8
+ import { getSliderParams } from './getSliderParams';
9
+ import { useCarouselGestures } from './useCarouselGestures';
10
+ export var sliderConfig = {
11
+ tension: 230,
12
+ friction: 20,
13
+ clamp: true
14
+ };
15
+ var SET_CURRENT_SLIDER_INDEX = 'setCurrentSlideIndex';
16
+ var SET_SHOULD_ANIMATE_TO_REST = 'setShouldAnimateToRest';
17
+ var TRIGGER_RERENDER = 'triggerRerender';
18
+
19
+ function reducer(prevState, action) {
20
+ switch (action.type) {
21
+ case SET_CURRENT_SLIDER_INDEX:
22
+ return _extends(_extends({}, prevState), {}, {
23
+ currentSlideIndex: action.payload,
24
+ shouldAnimateToRest: false
25
+ });
26
+
27
+ case SET_SHOULD_ANIMATE_TO_REST:
28
+ return _extends(_extends({}, prevState), {}, {
29
+ shouldAnimateToRest: action.payload
30
+ });
31
+
32
+ case TRIGGER_RERENDER:
33
+ return _extends({}, prevState);
34
+ }
35
+ }
36
+
37
+ var noop = function noop() {
38
+ /* null function to be used on onRest and onFrame */
39
+ };
40
+
41
+ export var Slider = forwardRef(function Slider(_ref, ref) {
42
+ var _ref$as = _ref.as,
43
+ Comp = _ref$as === void 0 ? animated.div : _ref$as,
44
+ maybeSingleChildren = _ref.children,
45
+ _ref$springConfig = _ref.springConfig,
46
+ springConfig = _ref$springConfig === void 0 ? sliderConfig : _ref$springConfig,
47
+ mouseSwipe = _ref.mouseSwipe,
48
+ touchSwipe = _ref.touchSwipe,
49
+ onSwipeLeft = _ref.onSwipeLeft,
50
+ onSwipeRight = _ref.onSwipeRight,
51
+ style = _ref.style,
52
+ otherProps = _objectWithoutProperties(_ref, ["as", "children", "springConfig", "mouseSwipe", "touchSwipe", "onSwipeLeft", "onSwipeRight", "style"]);
53
+
54
+ var _useCarouselContext = useCarouselContext(),
55
+ _useCarouselContext$i = _useCarouselContext.isRTL,
56
+ isRTL = _useCarouselContext$i === void 0 ? false : _useCarouselContext$i,
57
+ _useCarouselContext$s = _useCarouselContext.slidesToShow,
58
+ slidesToShow = _useCarouselContext$s === void 0 ? 1 : _useCarouselContext$s,
59
+ _useCarouselContext$c = _useCarouselContext.currentSlide,
60
+ nextSlideIndex = _useCarouselContext$c === void 0 ? 0 : _useCarouselContext$c,
61
+ containerRef = _useCarouselContext.containerRef,
62
+ itemWidth = _useCarouselContext.itemWidth;
63
+
64
+ var _useReducer = useReducer(reducer, {
65
+ currentSlideIndex: nextSlideIndex,
66
+ shouldAnimateToRest: false
67
+ }),
68
+ _useReducer2 = _slicedToArray(_useReducer, 2),
69
+ _useReducer2$ = _useReducer2[0],
70
+ currentSlideIndex = _useReducer2$.currentSlideIndex,
71
+ shouldAnimateToRest = _useReducer2$.shouldAnimateToRest,
72
+ dispatch = _useReducer2[1]; // Convert children from possibly empty, or 1 child, to array of nodes
73
+
74
+
75
+ var children = useMemo(function () {
76
+ return Children.toArray(maybeSingleChildren);
77
+ }, [maybeSingleChildren]); // Keep record of animation frames
78
+
79
+ var lastAnimationX = useRef(0); // Keep record of drag positioning, to forceUpdate when dragging slides
80
+
81
+ var lastDragX = useRef(NaN); // Animation properties... will be update via setAnimationProps
82
+
83
+ var _useSpring = useSpring({
84
+ to: {
85
+ x: 0
86
+ },
87
+ config: springConfig
88
+ }, []),
89
+ _useSpring2 = _slicedToArray(_useSpring, 2),
90
+ animationProps = _useSpring2[0],
91
+ setAnimationProps = _useSpring2[1]; // Keep track of animation values, to allow
92
+ // us to pause animation with mouse click
93
+
94
+
95
+ var onChange = function onChange(e) {
96
+ lastAnimationX.current = e.x || 0;
97
+ }; // Called when the next slide animation is complete
98
+
99
+
100
+ var onNextSlideComplete = function onNextSlideComplete() {
101
+ // need this to stay in sync with setAnimationProps
102
+ requestAnimationFrame(function () {
103
+ dispatch({
104
+ type: SET_CURRENT_SLIDER_INDEX,
105
+ payload: nextSlideIndex
106
+ });
107
+ lastAnimationX.current = 0;
108
+ setAnimationProps({
109
+ x: 0,
110
+ immediate: true,
111
+ onRest: noop,
112
+ onChange: noop
113
+ });
114
+ });
115
+ }; // Called when you started dragging, but didn't drag long enough,
116
+ // so it will rest back to zero
117
+
118
+
119
+ var onRestAnimationComplete = function onRestAnimationComplete() {
120
+ lastAnimationX.current = 0;
121
+ dispatch({
122
+ type: SET_SHOULD_ANIMATE_TO_REST,
123
+ payload: false
124
+ });
125
+ };
126
+
127
+ var onDrag = function onDrag(s) {
128
+ if (s.down) {
129
+ var x = lastAnimationX.current + s.xDeltaPercent;
130
+ setAnimationProps({
131
+ x: x,
132
+ immediate: true,
133
+ onRest: noop,
134
+ onChange: noop
135
+ });
136
+
137
+ if (x === 0) {
138
+ return;
139
+ }
140
+
141
+ if (s.xDeltaPercent !== 0 && !Object.is(Math.trunc(lastDragX.current / itemWidth), Math.trunc(x / itemWidth))) {
142
+ // flipping signal, or adding more async slides
143
+ requestAnimationFrame(function () {
144
+ dispatch({
145
+ type: SET_SHOULD_ANIMATE_TO_REST,
146
+ payload: true
147
+ });
148
+ });
149
+ }
150
+
151
+ lastDragX.current = x;
152
+ } else {
153
+ setAnimationProps({
154
+ x: 0,
155
+ onRest: onRestAnimationComplete,
156
+ onChange: onChange,
157
+ immediate: false
158
+ });
159
+ lastDragX.current = NaN; // force a rerender to make sure it will still work
160
+ // when you pause in the middle of a slide transition
161
+
162
+ dispatch({
163
+ type: TRIGGER_RERENDER
164
+ });
165
+ }
166
+ };
167
+
168
+ var _useCarouselGestures = useCarouselGestures({
169
+ isRTL: isRTL,
170
+ onSwipeRight: onSwipeRight,
171
+ onSwipeLeft: onSwipeLeft,
172
+ onDrag: onDrag,
173
+ containerRef: containerRef,
174
+ slidesToShow: slidesToShow
175
+ }),
176
+ handlers = _useCarouselGestures.handlers,
177
+ gestureState = _useCarouselGestures.state;
178
+
179
+ var deltaX = gestureState.down || shouldAnimateToRest ? lastAnimationX.current + gestureState.xDeltaPercent : 0;
180
+ /* Slide animation parameters */
181
+
182
+ var params = getSliderParams(children.length, currentSlideIndex, nextSlideIndex, slidesToShow, gestureState.down, deltaX, isRTL);
183
+ useEffect(function () {
184
+ if (nextSlideIndex !== currentSlideIndex) {
185
+ setAnimationProps({
186
+ x: params.targetX,
187
+ onRest: onNextSlideComplete,
188
+ onChange: onChange,
189
+ immediate: false
190
+ });
191
+ }
192
+ });
193
+ return /*#__PURE__*/React.createElement(Comp, _extends({
194
+ ref: ref,
195
+ onTouchStart: touchSwipe ? handlers.onTouchStart : undefined,
196
+ onMouseDown: mouseSwipe ? handlers.onMouseDown : undefined,
197
+ "aria-live": "polite",
198
+ "data-carousel-slider": "",
199
+ dir: isRTL ? 'rtl' : undefined,
200
+ style: _extends({
201
+ left: params.left,
202
+ paddingRight: params.paddingRight,
203
+ transform: animationProps.x.to(function (t) {
204
+ return "translateX(".concat(t, "%)");
205
+ })
206
+ }, style)
207
+ }, otherProps), /*#__PURE__*/React.createElement(SliderItemRenderer, {
208
+ startingIndex: params.startingIndex,
209
+ count: params.count
210
+ }, children));
211
+ });
212
+ //# sourceMappingURL=Slider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/Carousel/Slider.tsx"],"names":["React","useRef","useReducer","useEffect","useMemo","Children","forwardRef","useSpring","animated","SliderItemRenderer","useCarouselContext","getSliderParams","useCarouselGestures","sliderConfig","tension","friction","clamp","SET_CURRENT_SLIDER_INDEX","SET_SHOULD_ANIMATE_TO_REST","TRIGGER_RERENDER","reducer","prevState","action","type","currentSlideIndex","payload","shouldAnimateToRest","noop","Slider","ref","as","Comp","div","maybeSingleChildren","children","springConfig","mouseSwipe","touchSwipe","onSwipeLeft","onSwipeRight","style","otherProps","isRTL","slidesToShow","currentSlide","nextSlideIndex","containerRef","itemWidth","dispatch","toArray","lastAnimationX","lastDragX","NaN","to","x","config","animationProps","setAnimationProps","onChange","e","current","onNextSlideComplete","requestAnimationFrame","immediate","onRest","onRestAnimationComplete","onDrag","s","down","xDeltaPercent","Object","is","Math","trunc","handlers","gestureState","state","deltaX","params","length","targetX","onTouchStart","undefined","onMouseDown","left","paddingRight","transform","t","startingIndex","count"],"mappings":"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","sourcesContent":["import React, {\n useRef,\n useReducer,\n useEffect,\n useMemo,\n Children,\n forwardRef,\n} from 'react';\nimport { useSpring, SpringConfig, animated } from 'react-spring';\nimport { SliderItemRenderer } from './SliderItem';\nimport { useCarouselContext } from './context';\nimport { getSliderParams } from './getSliderParams';\nimport { useCarouselGestures } from './useCarouselGestures';\nimport { GestureHandlersState } from '../hooks';\n\nexport const sliderConfig: SpringConfig = {\n tension: 230,\n friction: 20,\n clamp: true,\n};\n\nexport interface SliderProps extends React.HTMLAttributes<HTMLDivElement> {\n as?: React.ElementType<any>;\n mouseSwipe?: boolean;\n touchSwipe?: boolean;\n onSwipeRight?: (s: Partial<GestureHandlersState>) => void;\n onSwipeLeft?: (s: Partial<GestureHandlersState>) => void;\n springConfig?: SpringConfig;\n children?: React.ReactNode[] | React.ReactNode;\n}\n\ninterface SliderState {\n currentSlideIndex: number;\n shouldAnimateToRest: boolean;\n}\n\nconst SET_CURRENT_SLIDER_INDEX = 'setCurrentSlideIndex';\nconst SET_SHOULD_ANIMATE_TO_REST = 'setShouldAnimateToRest';\nconst TRIGGER_RERENDER = 'triggerRerender';\n\ninterface SliderSetPreviousSlideIndex {\n type: typeof SET_CURRENT_SLIDER_INDEX;\n payload: number;\n}\n\ninterface SlideSetRestAnimating {\n type: typeof SET_SHOULD_ANIMATE_TO_REST;\n payload: boolean;\n}\n\ninterface SlideTriggerRerender {\n type: typeof TRIGGER_RERENDER;\n}\n\ntype SliderAction =\n | SliderSetPreviousSlideIndex\n | SlideSetRestAnimating\n | SlideTriggerRerender;\n\nfunction reducer<T>(\n prevState: Readonly<SliderState>,\n action: SliderAction\n): SliderState {\n switch (action.type) {\n case SET_CURRENT_SLIDER_INDEX:\n return {\n ...prevState,\n currentSlideIndex: action.payload,\n shouldAnimateToRest: false,\n };\n case SET_SHOULD_ANIMATE_TO_REST:\n return { ...prevState, shouldAnimateToRest: action.payload };\n case TRIGGER_RERENDER:\n return { ...prevState };\n }\n}\n\nconst noop = () => {\n /* null function to be used on onRest and onFrame */\n};\n\nexport const Slider = forwardRef<HTMLDivElement, SliderProps>(function Slider(\n {\n as: Comp = animated.div,\n children: maybeSingleChildren,\n springConfig = sliderConfig,\n mouseSwipe,\n touchSwipe,\n onSwipeLeft,\n onSwipeRight,\n style,\n ...otherProps\n },\n ref\n) {\n const {\n isRTL = false,\n slidesToShow = 1,\n currentSlide: nextSlideIndex = 0,\n containerRef,\n itemWidth,\n } = useCarouselContext();\n\n const [{ currentSlideIndex, shouldAnimateToRest }, dispatch] = useReducer(\n reducer,\n {\n currentSlideIndex: nextSlideIndex,\n shouldAnimateToRest: false,\n }\n );\n\n // Convert children from possibly empty, or 1 child, to array of nodes\n const children = useMemo(() => Children.toArray(maybeSingleChildren), [\n maybeSingleChildren,\n ]);\n\n // Keep record of animation frames\n const lastAnimationX = useRef(0);\n\n // Keep record of drag positioning, to forceUpdate when dragging slides\n const lastDragX = useRef(NaN);\n\n // Animation properties... will be update via setAnimationProps\n const [animationProps, setAnimationProps] = useSpring<{ x: number }>(\n {\n to: { x: 0 },\n config: springConfig,\n },\n []\n );\n\n // Keep track of animation values, to allow\n // us to pause animation with mouse click\n const onChange = (e: { x: number }) => {\n lastAnimationX.current = e.x || 0;\n };\n\n // Called when the next slide animation is complete\n const onNextSlideComplete = () => {\n // need this to stay in sync with setAnimationProps\n requestAnimationFrame(() => {\n dispatch({ type: SET_CURRENT_SLIDER_INDEX, payload: nextSlideIndex });\n lastAnimationX.current = 0;\n setAnimationProps({\n x: 0,\n immediate: true,\n onRest: noop,\n onChange: noop,\n });\n });\n };\n\n // Called when you started dragging, but didn't drag long enough,\n // so it will rest back to zero\n const onRestAnimationComplete = () => {\n lastAnimationX.current = 0;\n dispatch({ type: SET_SHOULD_ANIMATE_TO_REST, payload: false });\n };\n\n const onDrag = (s: GestureHandlersState) => {\n if (s.down) {\n const x = lastAnimationX.current + s.xDeltaPercent;\n setAnimationProps({\n x,\n immediate: true,\n onRest: noop,\n onChange: noop,\n });\n\n if (x === 0) {\n return;\n }\n\n if (\n s.xDeltaPercent !== 0 &&\n !Object.is(\n Math.trunc(lastDragX.current / itemWidth),\n Math.trunc(x / itemWidth)\n )\n ) {\n // flipping signal, or adding more async slides\n requestAnimationFrame(() => {\n dispatch({ type: SET_SHOULD_ANIMATE_TO_REST, payload: true });\n });\n }\n\n lastDragX.current = x;\n } else {\n setAnimationProps({\n x: 0,\n onRest: onRestAnimationComplete,\n onChange: onChange,\n immediate: false,\n });\n\n lastDragX.current = NaN;\n\n // force a rerender to make sure it will still work\n // when you pause in the middle of a slide transition\n dispatch({ type: TRIGGER_RERENDER });\n }\n };\n\n const { handlers, state: gestureState } = useCarouselGestures({\n isRTL,\n onSwipeRight,\n onSwipeLeft,\n onDrag,\n containerRef,\n slidesToShow,\n });\n\n const deltaX =\n gestureState.down || shouldAnimateToRest\n ? lastAnimationX.current + gestureState.xDeltaPercent\n : 0;\n\n /* Slide animation parameters */\n const params = getSliderParams(\n children.length,\n currentSlideIndex,\n nextSlideIndex,\n slidesToShow,\n gestureState.down,\n deltaX,\n isRTL\n );\n\n useEffect(() => {\n if (nextSlideIndex !== currentSlideIndex) {\n setAnimationProps({\n x: params.targetX,\n onRest: onNextSlideComplete,\n onChange,\n immediate: false,\n });\n }\n });\n\n return (\n <Comp\n ref={ref}\n onTouchStart={touchSwipe ? handlers.onTouchStart : undefined}\n onMouseDown={mouseSwipe ? handlers.onMouseDown : undefined}\n aria-live=\"polite\"\n data-carousel-slider=\"\"\n dir={isRTL ? 'rtl' : undefined}\n style={{\n left: params.left,\n paddingRight: params.paddingRight,\n transform: animationProps.x.to((t) => {\n return `translateX(${t}%)`;\n }),\n ...(style as any),\n }}\n {...otherProps}\n >\n <SliderItemRenderer\n startingIndex={params.startingIndex}\n count={params.count}\n >\n {children}\n </SliderItemRenderer>\n </Comp>\n );\n});\n"],"file":"Slider.js"}
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ export interface SliderItemProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ as?: React.ElementType<any>;
4
+ }
5
+ export declare const SliderItem: React.ForwardRefExoticComponent<SliderItemProps & React.RefAttributes<HTMLDivElement>>;
6
+ interface SliderItemRendererProps {
7
+ children: React.ReactNode[];
8
+ startingIndex: number;
9
+ count: number;
10
+ }
11
+ export declare const SliderItemRenderer: ({ children, startingIndex, count, }: SliderItemRendererProps) => JSX.Element;
12
+ export default SliderItem;
@@ -0,0 +1,41 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
+ import React, { forwardRef } from 'react';
4
+ import { getCircularIndex } from '../utils/getCircularIndex';
5
+ export var SliderItem = forwardRef(function SliderItem(_ref, ref) {
6
+ var _ref$as = _ref.as,
7
+ Comp = _ref$as === void 0 ? 'div' : _ref$as,
8
+ props = _objectWithoutProperties(_ref, ["as"]);
9
+
10
+ return /*#__PURE__*/React.createElement(Comp, _extends({
11
+ ref: ref,
12
+ role: "group",
13
+ "aria-roledescription": "slide",
14
+ "data-carousel-slider-item": ""
15
+ }, props));
16
+ });
17
+ export var SliderItemRenderer = function SliderItemRenderer(_ref2) {
18
+ var children = _ref2.children,
19
+ startingIndex = _ref2.startingIndex,
20
+ count = _ref2.count;
21
+ var ret = [];
22
+ var itemsLen = children.length;
23
+ var finalIndex = startingIndex + count;
24
+ var counter = 0;
25
+
26
+ for (var i = startingIndex; i < finalIndex; i += 1, counter += 1) {
27
+ if (counter % itemsLen === 0) {
28
+ ret.push([]);
29
+ }
30
+
31
+ var index = getCircularIndex(i, itemsLen);
32
+
33
+ if (index !== null) {
34
+ ret[ret.length - 1].push(children[index]);
35
+ }
36
+ }
37
+
38
+ return /*#__PURE__*/React.createElement(React.Fragment, null, ret);
39
+ };
40
+ export default SliderItem;
41
+ //# sourceMappingURL=SliderItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/Carousel/SliderItem.tsx"],"names":["React","forwardRef","getCircularIndex","SliderItem","ref","as","Comp","props","SliderItemRenderer","children","startingIndex","count","ret","itemsLen","length","finalIndex","counter","i","push","index"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;AACA,SAASC,gBAAT,QAAiC,2BAAjC;AAMA,OAAO,IAAMC,UAAU,GAAGF,UAAU,CAClC,SAASE,UAAT,OAEEC,GAFF,EAGE;AAAA,qBAFEC,EAEF;AAAA,MAFMC,IAEN,wBAFa,KAEb;AAAA,MAFuBC,KAEvB;;AACA,sBACE,oBAAC,IAAD;AACE,IAAA,GAAG,EAAEH,GADP;AAEE,IAAA,IAAI,EAAC,OAFP;AAGE,4BAAqB,OAHvB;AAIE,iCAA0B;AAJ5B,KAKMG,KALN,EADF;AASD,CAdiC,CAA7B;AAuBP,OAAO,IAAMC,kBAAkB,GAAG,SAASA,kBAAT,QAIN;AAAA,MAH1BC,QAG0B,SAH1BA,QAG0B;AAAA,MAF1BC,aAE0B,SAF1BA,aAE0B;AAAA,MAD1BC,KAC0B,SAD1BA,KAC0B;AAC1B,MAAMC,GAAwB,GAAG,EAAjC;AACA,MAAMC,QAAQ,GAAGJ,QAAQ,CAACK,MAA1B;AACA,MAAMC,UAAU,GAAGL,aAAa,GAAGC,KAAnC;AAEA,MAAIK,OAAO,GAAG,CAAd;;AACA,OAAK,IAAIC,CAAC,GAAGP,aAAb,EAA4BO,CAAC,GAAGF,UAAhC,EAA4CE,CAAC,IAAI,CAAL,EAAQD,OAAO,IAAI,CAA/D,EAAkE;AAChE,QAAIA,OAAO,GAAGH,QAAV,KAAuB,CAA3B,EAA8B;AAC5BD,MAAAA,GAAG,CAACM,IAAJ,CAAS,EAAT;AACD;;AACD,QAAMC,KAAK,GAAGjB,gBAAgB,CAACe,CAAD,EAAIJ,QAAJ,CAA9B;;AACA,QAAIM,KAAK,KAAK,IAAd,EAAoB;AAClBP,MAAAA,GAAG,CAACA,GAAG,CAACE,MAAJ,GAAa,CAAd,CAAH,CAAoBI,IAApB,CAAyBT,QAAQ,CAACU,KAAD,CAAjC;AACD;AACF;;AAED,sBAAO,oBAAC,KAAD,CAAO,QAAP,QAAiBP,GAAjB,CAAP;AACD,CArBM;AAuBP,eAAeT,UAAf","sourcesContent":["import React, { forwardRef } from 'react';\nimport { getCircularIndex } from '../utils/getCircularIndex';\n\nexport interface SliderItemProps extends React.HTMLAttributes<HTMLDivElement> {\n as?: React.ElementType<any>;\n}\n\nexport const SliderItem = forwardRef<HTMLDivElement, SliderItemProps>(\n function SliderItem(\n { as: Comp = 'div', ...props },\n ref: React.Ref<HTMLDivElement>\n ) {\n return (\n <Comp\n ref={ref}\n role=\"group\"\n aria-roledescription=\"slide\"\n data-carousel-slider-item=\"\"\n {...props}\n />\n );\n }\n);\n\ninterface SliderItemRendererProps {\n children: React.ReactNode[];\n startingIndex: number;\n count: number;\n}\n\nexport const SliderItemRenderer = function SliderItemRenderer({\n children,\n startingIndex,\n count,\n}: SliderItemRendererProps) {\n const ret: React.ReactNode[][] = [];\n const itemsLen = children.length;\n const finalIndex = startingIndex + count;\n\n let counter = 0;\n for (let i = startingIndex; i < finalIndex; i += 1, counter += 1) {\n if (counter % itemsLen === 0) {\n ret.push([]);\n }\n const index = getCircularIndex(i, itemsLen);\n if (index !== null) {\n ret[ret.length - 1].push(children[index]);\n }\n }\n\n return <React.Fragment>{ret}</React.Fragment>;\n};\n\nexport default SliderItem;\n"],"file":"SliderItem.js"}
@@ -0,0 +1,10 @@
1
+ /// <reference types="react" />
2
+ export interface CarouselContextProps {
3
+ slidesToShow: number;
4
+ isRTL: boolean;
5
+ currentSlide: number;
6
+ itemWidth: number;
7
+ containerRef: React.MutableRefObject<HTMLElement | null>;
8
+ }
9
+ export declare const CarouselProvider: import("react").Provider<CarouselContextProps>;
10
+ export declare const useCarouselContext: () => CarouselContextProps;
@@ -0,0 +1,8 @@
1
+ import { createContext, useContext } from 'react';
2
+ var carouselContext = createContext(null);
3
+ var CarouselProvider = carouselContext.Provider;
4
+ export { CarouselProvider };
5
+ export var useCarouselContext = function useCarouselContext() {
6
+ return useContext(carouselContext);
7
+ };
8
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/Carousel/context.ts"],"names":["createContext","useContext","carouselContext","CarouselProvider","Provider","useCarouselContext"],"mappings":"AAAA,SAASA,aAAT,EAAwBC,UAAxB,QAA0C,OAA1C;AAUA,IAAMC,eAAe,GAAGF,aAAa,CAAuB,IAAvB,CAArC;IACyBG,gB,GAAqBD,e,CAA/BE,Q;;AACf,OAAO,IAAMC,kBAAkB,GAAG,SAArBA,kBAAqB;AAAA,SAAMJ,UAAU,CAACC,eAAD,CAAhB;AAAA,CAA3B","sourcesContent":["import { createContext, useContext } from 'react';\n\nexport interface CarouselContextProps {\n slidesToShow: number;\n isRTL: boolean;\n currentSlide: number;\n itemWidth: number;\n containerRef: React.MutableRefObject<HTMLElement | null>;\n}\n\nconst carouselContext = createContext<CarouselContextProps>(null as any);\nexport const { Provider: CarouselProvider } = carouselContext;\nexport const useCarouselContext = () => useContext(carouselContext);\n"],"file":"context.js"}
@@ -0,0 +1,9 @@
1
+ export declare function getSlidesToScroll(curSlide: number, nextSlide: number, deltaX: number, itemWidth: number): number;
2
+ export declare function getSliderParams(numAvailableSlides: number, curSlide: number, nextSlide: number, slidesToShow: number, dragging: boolean, deltaX: number, isRTL: boolean): {
3
+ startingIndex: number;
4
+ count: number;
5
+ left: string | undefined;
6
+ targetX: number;
7
+ itemWidth: number;
8
+ paddingRight: string | undefined;
9
+ };