farm-react 1.0.9 → 1.0.11

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 (71) hide show
  1. package/dist/cjs/components/Button.d.ts +2 -1
  2. package/dist/cjs/components/Button.js.map +1 -1
  3. package/dist/cjs/components/Card.js +1 -1
  4. package/dist/cjs/components/Card.js.map +1 -1
  5. package/dist/cjs/components/SlickSlider.d.ts +77 -0
  6. package/dist/cjs/components/SlickSlider.js +184 -0
  7. package/dist/cjs/components/SlickSlider.js.map +1 -0
  8. package/dist/cjs/components/TextInput.d.ts +6 -5
  9. package/dist/cjs/components/TextInput.js.map +1 -1
  10. package/dist/cjs/hooks/slider/useSlider.d.ts +72 -0
  11. package/dist/cjs/hooks/slider/useSlider.js +153 -0
  12. package/dist/cjs/hooks/slider/useSlider.js.map +1 -0
  13. package/dist/cjs/hooks/slider/useSliderAutoPlay.d.ts +33 -0
  14. package/dist/cjs/hooks/slider/useSliderAutoPlay.js +73 -0
  15. package/dist/cjs/hooks/slider/useSliderAutoPlay.js.map +1 -0
  16. package/dist/cjs/hooks/slider/useSliderBreakpoints.d.ts +35 -0
  17. package/dist/cjs/hooks/slider/useSliderBreakpoints.js +54 -0
  18. package/dist/cjs/hooks/slider/useSliderBreakpoints.js.map +1 -0
  19. package/dist/cjs/hooks/slider/useSliderDimension.d.ts +40 -0
  20. package/dist/cjs/hooks/slider/useSliderDimension.js +89 -0
  21. package/dist/cjs/hooks/slider/useSliderDimension.js.map +1 -0
  22. package/dist/cjs/hooks/slider/useSliderDraggable.d.ts +42 -0
  23. package/dist/cjs/hooks/slider/useSliderDraggable.js +143 -0
  24. package/dist/cjs/hooks/slider/useSliderDraggable.js.map +1 -0
  25. package/dist/cjs/hooks/slider/useSliderNavigation.d.ts +42 -0
  26. package/dist/cjs/hooks/slider/useSliderNavigation.js +124 -0
  27. package/dist/cjs/hooks/slider/useSliderNavigation.js.map +1 -0
  28. package/dist/cjs/hooks/slider/useSliderTransform.d.ts +31 -0
  29. package/dist/cjs/hooks/slider/useSliderTransform.js +66 -0
  30. package/dist/cjs/hooks/slider/useSliderTransform.js.map +1 -0
  31. package/dist/cjs/index.d.ts +3 -1
  32. package/dist/cjs/index.js +4 -2
  33. package/dist/cjs/index.js.map +1 -1
  34. package/dist/esm/components/Button.d.ts +2 -1
  35. package/dist/esm/components/Button.js.map +1 -1
  36. package/dist/esm/components/Card.js +1 -1
  37. package/dist/esm/components/Card.js.map +1 -1
  38. package/dist/esm/components/SlickSlider.d.ts +77 -0
  39. package/dist/esm/components/SlickSlider.js +181 -0
  40. package/dist/esm/components/SlickSlider.js.map +1 -0
  41. package/dist/esm/components/TextInput.d.ts +6 -5
  42. package/dist/esm/components/TextInput.js.map +1 -1
  43. package/dist/esm/helpers.d.ts +1 -0
  44. package/dist/esm/helpers.js +2 -0
  45. package/dist/esm/helpers.js.map +1 -0
  46. package/dist/esm/hooks/slider/useSlider.d.ts +72 -0
  47. package/dist/esm/hooks/slider/useSlider.js +150 -0
  48. package/dist/esm/hooks/slider/useSlider.js.map +1 -0
  49. package/dist/esm/hooks/slider/useSliderAutoPlay.d.ts +33 -0
  50. package/dist/esm/hooks/slider/useSliderAutoPlay.js +71 -0
  51. package/dist/esm/hooks/slider/useSliderAutoPlay.js.map +1 -0
  52. package/dist/esm/hooks/slider/useSliderBreakpoints.d.ts +35 -0
  53. package/dist/esm/hooks/slider/useSliderBreakpoints.js +52 -0
  54. package/dist/esm/hooks/slider/useSliderBreakpoints.js.map +1 -0
  55. package/dist/esm/hooks/slider/useSliderDimension.d.ts +40 -0
  56. package/dist/esm/hooks/slider/useSliderDimension.js +87 -0
  57. package/dist/esm/hooks/slider/useSliderDimension.js.map +1 -0
  58. package/dist/esm/hooks/slider/useSliderDraggable.d.ts +42 -0
  59. package/dist/esm/hooks/slider/useSliderDraggable.js +141 -0
  60. package/dist/esm/hooks/slider/useSliderDraggable.js.map +1 -0
  61. package/dist/esm/hooks/slider/useSliderNavigation.d.ts +42 -0
  62. package/dist/esm/hooks/slider/useSliderNavigation.js +122 -0
  63. package/dist/esm/hooks/slider/useSliderNavigation.js.map +1 -0
  64. package/dist/esm/hooks/slider/useSliderTransform.d.ts +31 -0
  65. package/dist/esm/hooks/slider/useSliderTransform.js +64 -0
  66. package/dist/esm/hooks/slider/useSliderTransform.js.map +1 -0
  67. package/dist/esm/index.d.ts +3 -1
  68. package/dist/esm/index.js +3 -1
  69. package/dist/esm/index.js.map +1 -1
  70. package/dist/package.json +14 -1
  71. package/package.json +15 -2
@@ -0,0 +1,33 @@
1
+ /**
2
+ * -----------------------------------------------------------------------------
3
+ * @file useSliderAutoPlay
4
+ * -----------------------------------------------------------------------------
5
+ *
6
+ * @description :- React hook that manages autoplay behavior for a slider component.
7
+ * Responsibilities:
8
+ * - Starts an interval-based autoplay when enabled
9
+ * - Stops autoplay safely on cleanup or when conditions change
10
+ * - Prevents multiple intervals from running simultaneously
11
+ * - Respects loop and transformation states to avoid invalid transitions
12
+ * Autoplay will:
13
+ * - Start only when `enable` is true
14
+ * - Pause automatically when the slider is transforming
15
+ * - Stop and clean up intervals on unmount
16
+ * @param autoPlayConfig Configuration object controlling autoplay behavior
17
+ * @param handleNextSlide Callback invoked to move to the next slide
18
+ *
19
+ * -----------------------------------------------------------------------------
20
+ * Copyright © 2017-present BookingKoala. All rights reserved.
21
+ * -----------------------------------------------------------------------------
22
+ */
23
+ import { type RefObject } from 'react';
24
+ import type { SlickSliderAutoPlayConfig } from '../../components/SlickSlider';
25
+ interface SlickSliderAutoplayProps {
26
+ autoPlayConfig: SlickSliderAutoPlayConfig;
27
+ handleNextSlide: () => void;
28
+ isAllSlidesVisible: boolean;
29
+ loop: boolean;
30
+ sliderWrapperRef?: RefObject<HTMLDivElement | null>;
31
+ }
32
+ declare function useSliderAutoplay({ autoPlayConfig, handleNextSlide, isAllSlidesVisible, loop, }: Readonly<SlickSliderAutoplayProps>): void;
33
+ export default useSliderAutoplay;
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /**
4
+ * -----------------------------------------------------------------------------
5
+ * @file useSliderAutoPlay
6
+ * -----------------------------------------------------------------------------
7
+ *
8
+ * @description :- React hook that manages autoplay behavior for a slider component.
9
+ * Responsibilities:
10
+ * - Starts an interval-based autoplay when enabled
11
+ * - Stops autoplay safely on cleanup or when conditions change
12
+ * - Prevents multiple intervals from running simultaneously
13
+ * - Respects loop and transformation states to avoid invalid transitions
14
+ * Autoplay will:
15
+ * - Start only when `enable` is true
16
+ * - Pause automatically when the slider is transforming
17
+ * - Stop and clean up intervals on unmount
18
+ * @param autoPlayConfig Configuration object controlling autoplay behavior
19
+ * @param handleNextSlide Callback invoked to move to the next slide
20
+ *
21
+ * -----------------------------------------------------------------------------
22
+ * Copyright © 2017-present BookingKoala. All rights reserved.
23
+ * -----------------------------------------------------------------------------
24
+ */
25
+ var react_1 = require("react");
26
+ var helpers_1 = require("../../helpers");
27
+ var Utils_1 = require("../../Utils");
28
+ function useSliderAutoplay(_a) {
29
+ var autoPlayConfig = _a.autoPlayConfig, handleNextSlide = _a.handleNextSlide, isAllSlidesVisible = _a.isAllSlidesVisible, loop = _a.loop;
30
+ // Destruct props
31
+ var _b = (0, helpers_1.destructObj)(autoPlayConfig), _c = _b.enable, enable = _c === void 0 ? false : _c, _d = _b.interval, interval = _d === void 0 ? 2000 : _d;
32
+ // Refs
33
+ var timerRef = (0, react_1.useRef)(null);
34
+ /**
35
+ * Function initializes autoplay by creating a single interval timer.
36
+ * On each interval tick, it triggers the handleNextSlide callback
37
+ * to advance the slider.
38
+ */
39
+ var startAutoPlay = (0, react_1.useCallback)(function () {
40
+ if (!enable || timerRef.current)
41
+ return;
42
+ timerRef.current = Utils_1.safeWindow === null || Utils_1.safeWindow === void 0 ? void 0 : Utils_1.safeWindow.setInterval(function () {
43
+ handleNextSlide();
44
+ }, interval);
45
+ }, [enable, interval, handleNextSlide]);
46
+ /** Function stops the active autoplay interval and resets the timer reference. */
47
+ var clearAutoplayTimer = (0, react_1.useCallback)(function () {
48
+ if (!(0, helpers_1.isNullOrUndefined)(timerRef.current)) {
49
+ Utils_1.safeWindow === null || Utils_1.safeWindow === void 0 ? void 0 : Utils_1.safeWindow.clearInterval(timerRef.current);
50
+ timerRef.current = null;
51
+ }
52
+ }, []);
53
+ (0, react_1.useEffect)(function () {
54
+ if (!loop || isAllSlidesVisible)
55
+ return undefined;
56
+ startAutoPlay();
57
+ // TODO: Enable pause-on-hover by attaching mouseenter/mouseleave events to start and stop autoplay when hover interaction is active.
58
+ // const container = sliderWrapperRef?.current;
59
+ // if (pauseOnHover) {
60
+ // if (isNullOrUndefined(container)) return;
61
+ // container.addEventListener('mouseenter', clearAutoplayTimer);
62
+ // container.addEventListener('mouseleave', startAutoPlay);
63
+ // }
64
+ return function () {
65
+ clearAutoplayTimer();
66
+ // if (isNullOrUndefined(container)) return;
67
+ // container.removeEventListener('mouseenter', clearAutoplayTimer);
68
+ // container.removeEventListener('mouseleave', startAutoPlay);
69
+ };
70
+ }, [loop, isAllSlidesVisible, startAutoPlay, clearAutoplayTimer]);
71
+ }
72
+ exports.default = useSliderAutoplay;
73
+ //# sourceMappingURL=useSliderAutoPlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSliderAutoPlay.js","sourceRoot":"","sources":["../../../../src/hooks/slider/useSliderAutoPlay.ts"],"names":[],"mappings":";;AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,+BAAsE;AACtE,yCAA8D;AAE9D,qCAAwC;AAUxC,SAAS,iBAAiB,CAAC,EAKU;QAJnC,cAAc,oBAAA,EACd,eAAe,qBAAA,EACf,kBAAkB,wBAAA,EAClB,IAAI,UAAA;IAEJ,iBAAiB;IACX,IAAA,KAAsC,IAAA,qBAAW,EAAC,cAAc,CAAC,EAA/D,cAAc,EAAd,MAAM,mBAAG,KAAK,KAAA,EAAE,gBAAe,EAAf,QAAQ,mBAAG,IAAI,KAAgC,CAAA;IAEvE,OAAO;IACP,IAAM,QAAQ,GAAG,IAAA,cAAM,EAA4B,IAAI,CAAC,CAAA;IAExD;;;;OAIG;IACH,IAAM,aAAa,GAAG,IAAA,mBAAW,EAAC;QAChC,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,OAAO;YAAE,OAAM;QACvC,QAAQ,CAAC,OAAO,GAAG,kBAAU,aAAV,kBAAU,uBAAV,kBAAU,CAAE,WAAW,CAAC;YACzC,eAAe,EAAE,CAAA;QACnB,CAAC,EAAE,QAAQ,CAAC,CAAA;IACd,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAA;IAEvC,kFAAkF;IAClF,IAAM,kBAAkB,GAAG,IAAA,mBAAW,EAAC;QACrC,IAAI,CAAC,IAAA,2BAAiB,EAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACzC,kBAAU,aAAV,kBAAU,uBAAV,kBAAU,CAAE,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;YAC3C,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAA;QACzB,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,IAAA,iBAAS,EAAC;QACR,IAAI,CAAC,IAAI,IAAI,kBAAkB;YAAE,OAAO,SAAS,CAAA;QACjD,aAAa,EAAE,CAAA;QACf,qIAAqI;QACrI,+CAA+C;QAC/C,sBAAsB;QACtB,6CAA6C;QAC7C,iEAAiE;QACjE,4DAA4D;QAC5D,IAAI;QAEJ,OAAO;YACL,kBAAkB,EAAE,CAAA;YACpB,4CAA4C;YAC5C,mEAAmE;YACnE,8DAA8D;QAChE,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,kBAAkB,EAAE,aAAa,EAAE,kBAAkB,CAAC,CAAC,CAAA;AACnE,CAAC;AAED,kBAAe,iBAAiB,CAAA"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * -----------------------------------------------------------------------------
3
+ * @file useSliderBreakpoint
4
+ * -----------------------------------------------------------------------------
5
+ *
6
+ * @description Resolves responsive slider configuration based on viewport width.
7
+ * Applies the first matching breakpoint over the base config and updates
8
+ * the result on window resize. Uses deep comparison to avoid unnecessary
9
+ * re-renders.
10
+ *
11
+ * -----------------------------------------------------------------------------
12
+ * Copyright © 2017-present BookingKoala. All rights reserved.
13
+ * -----------------------------------------------------------------------------
14
+ */
15
+ import type { SlickSliderAnimationConfig, SlickSliderAutoPlayConfig } from '../../components/SlickSlider';
16
+ export interface SlickSliderConfig {
17
+ activeSlide: number;
18
+ animationConfig: SlickSliderAnimationConfig;
19
+ autoPlayConfig: SlickSliderAutoPlayConfig;
20
+ breakpoint?: number;
21
+ draggable: {
22
+ dragThreshold?: number;
23
+ enableDrag?: boolean;
24
+ };
25
+ gap: number;
26
+ loop: boolean;
27
+ slideToScroll: number;
28
+ slideToShow: number;
29
+ }
30
+ export interface SliderBreakpointProps {
31
+ breakpoints?: SlickSliderConfig[];
32
+ config: SlickSliderConfig;
33
+ }
34
+ declare function useSliderBreakpoints({ breakpoints, config }: SliderBreakpointProps): SlickSliderConfig;
35
+ export default useSliderBreakpoints;
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ /**
3
+ * -----------------------------------------------------------------------------
4
+ * @file useSliderBreakpoint
5
+ * -----------------------------------------------------------------------------
6
+ *
7
+ * @description Resolves responsive slider configuration based on viewport width.
8
+ * Applies the first matching breakpoint over the base config and updates
9
+ * the result on window resize. Uses deep comparison to avoid unnecessary
10
+ * re-renders.
11
+ *
12
+ * -----------------------------------------------------------------------------
13
+ * Copyright © 2017-present BookingKoala. All rights reserved.
14
+ * -----------------------------------------------------------------------------
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ var tslib_1 = require("tslib");
18
+ var react_1 = require("react");
19
+ var helpers_1 = require("../../helpers");
20
+ var Utils_1 = require("../../Utils");
21
+ function useSliderBreakpoints(_a) {
22
+ var breakpoints = _a.breakpoints, config = _a.config;
23
+ // States
24
+ var _b = (0, react_1.useState)(config), sliderConfig = _b[0], setSliderConfig = _b[1];
25
+ // Hooks
26
+ (0, react_1.useEffect)(function () {
27
+ if ((0, helpers_1.isObjectEmpty)(config)) {
28
+ setSliderConfig(config);
29
+ return undefined;
30
+ }
31
+ function resolveBreakpointConfig() {
32
+ var viewportWidth = Utils_1.safeWindow === null || Utils_1.safeWindow === void 0 ? void 0 : Utils_1.safeWindow.innerWidth;
33
+ // Find the first breakpoint that matches current viewport
34
+ var matchedBreakpoint = breakpoints === null || breakpoints === void 0 ? void 0 : breakpoints.find(function (bp) { return viewportWidth && (bp === null || bp === void 0 ? void 0 : bp.breakpoint) && viewportWidth <= bp.breakpoint; });
35
+ // Merge base config with breakpoint overrides
36
+ return (0, helpers_1.isObjectNotEmpty)(matchedBreakpoint) ? tslib_1.__assign(tslib_1.__assign({}, config), matchedBreakpoint) : config;
37
+ }
38
+ function updateConfig() {
39
+ var resolvedConfig = resolveBreakpointConfig();
40
+ // Avoid unnecessary updates
41
+ if (!(0, helpers_1.deepCompareObjects)(sliderConfig, resolvedConfig)) {
42
+ setSliderConfig(resolvedConfig);
43
+ }
44
+ }
45
+ updateConfig();
46
+ Utils_1.safeWindow === null || Utils_1.safeWindow === void 0 ? void 0 : Utils_1.safeWindow.addEventListener('resize', updateConfig);
47
+ return function () {
48
+ Utils_1.safeWindow === null || Utils_1.safeWindow === void 0 ? void 0 : Utils_1.safeWindow.removeEventListener('resize', updateConfig);
49
+ };
50
+ }, [config, breakpoints]);
51
+ return sliderConfig;
52
+ }
53
+ exports.default = useSliderBreakpoints;
54
+ //# sourceMappingURL=useSliderBreakpoints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSliderBreakpoints.js","sourceRoot":"","sources":["../../../../src/hooks/slider/useSliderBreakpoints.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;AAEH,+BAA2C;AAC3C,yCAAmF;AAEnF,qCAAwC;AAqBxC,SAAS,oBAAoB,CAAC,EAA8C;QAA5C,WAAW,iBAAA,EAAE,MAAM,YAAA;IACjD,SAAS;IACH,IAAA,KAAkC,IAAA,gBAAQ,EAAC,MAAM,CAAC,EAAjD,YAAY,QAAA,EAAE,eAAe,QAAoB,CAAA;IAExD,QAAQ;IACR,IAAA,iBAAS,EAAC;QACR,IAAI,IAAA,uBAAa,EAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,eAAe,CAAC,MAAM,CAAC,CAAA;YACvB,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,SAAS,uBAAuB;YAC9B,IAAM,aAAa,GAAG,kBAAU,aAAV,kBAAU,uBAAV,kBAAU,CAAE,UAAU,CAAA;YAE5C,0DAA0D;YAC1D,IAAM,iBAAiB,GAAG,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,IAAI,CACzC,UAAC,EAAE,IAAK,OAAA,aAAa,KAAI,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,UAAU,CAAA,IAAI,aAAa,IAAI,EAAE,CAAC,UAAU,EAAjE,CAAiE,CAC1E,CAAA;YAED,8CAA8C;YAC9C,OAAO,IAAA,0BAAgB,EAAC,iBAAiB,CAAC,CAAC,CAAC,uCAAM,MAAM,GAAK,iBAAiB,EAAG,CAAC,CAAC,MAAM,CAAA;QAC3F,CAAC;QAED,SAAS,YAAY;YACnB,IAAM,cAAc,GAAG,uBAAuB,EAAE,CAAA;YAChD,4BAA4B;YAC5B,IAAI,CAAC,IAAA,4BAAkB,EAAC,YAAY,EAAE,cAAc,CAAC,EAAE,CAAC;gBACtD,eAAe,CAAC,cAAc,CAAC,CAAA;YACjC,CAAC;QACH,CAAC;QAED,YAAY,EAAE,CAAA;QACd,kBAAU,aAAV,kBAAU,uBAAV,kBAAU,CAAE,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;QAEpD,OAAO;YACL,kBAAU,aAAV,kBAAU,uBAAV,kBAAU,CAAE,mBAAmB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;QACzD,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAA;IAEzB,OAAO,YAAY,CAAA;AACrB,CAAC;AAED,kBAAe,oBAAoB,CAAA"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * -----------------------------------------------------------------------------
3
+ * @file useSliderDimension
4
+ * -----------------------------------------------------------------------------
5
+ *
6
+ * @description React hook responsible for calculating and applying layout-related
7
+ * dimensions for a flex-based slider.
8
+ * This hook dynamically computes:
9
+ * - Slider container width
10
+ * - Slide flex-basis based on the number of visible slides
11
+ * - Gap between slides
12
+ * The calculated values are applied directly to the DOM and stored
13
+ * in shared slider refs for use by other slider utilities.
14
+ *
15
+ * Features:
16
+ * - Responsive slide sizing using container dimensions
17
+ * - Flex-based layout calculation
18
+ * - Centralized dimension updates
19
+ * - Safe DOM access via refs
20
+ *
21
+ * NOTE: this loc update when we have add the custom styling. loc no.:-69
22
+ *
23
+ * -----------------------------------------------------------------------------
24
+ * Copyright © 2017-present BookingKoala. All rights reserved.
25
+ * -----------------------------------------------------------------------------
26
+ */
27
+ import { type MutableRefObject, type RefObject } from 'react';
28
+ import type { SlickSliderRefs } from './useSlider';
29
+ export interface SlickSliderDimensionProps {
30
+ gap: number;
31
+ orientation: 'horizontal' | 'vertical';
32
+ sliderObjRefs: MutableRefObject<SlickSliderRefs>;
33
+ sliderWrapperRef: RefObject<HTMLDivElement | null>;
34
+ slideToShow: number;
35
+ }
36
+ interface SlickSliderDimensionsReturn {
37
+ calculateDimensions: () => void;
38
+ }
39
+ declare function useSliderDimension({ gap, orientation, sliderObjRefs, sliderWrapperRef, slideToShow, }: Readonly<SlickSliderDimensionProps>): SlickSliderDimensionsReturn;
40
+ export default useSliderDimension;
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /**
4
+ * -----------------------------------------------------------------------------
5
+ * @file useSliderDimension
6
+ * -----------------------------------------------------------------------------
7
+ *
8
+ * @description React hook responsible for calculating and applying layout-related
9
+ * dimensions for a flex-based slider.
10
+ * This hook dynamically computes:
11
+ * - Slider container width
12
+ * - Slide flex-basis based on the number of visible slides
13
+ * - Gap between slides
14
+ * The calculated values are applied directly to the DOM and stored
15
+ * in shared slider refs for use by other slider utilities.
16
+ *
17
+ * Features:
18
+ * - Responsive slide sizing using container dimensions
19
+ * - Flex-based layout calculation
20
+ * - Centralized dimension updates
21
+ * - Safe DOM access via refs
22
+ *
23
+ * NOTE: this loc update when we have add the custom styling. loc no.:-69
24
+ *
25
+ * -----------------------------------------------------------------------------
26
+ * Copyright © 2017-present BookingKoala. All rights reserved.
27
+ * -----------------------------------------------------------------------------
28
+ */
29
+ var react_1 = require("react");
30
+ var helpers_1 = require("../../helpers");
31
+ function useSliderDimension(_a) {
32
+ var gap = _a.gap, orientation = _a.orientation, sliderObjRefs = _a.sliderObjRefs, sliderWrapperRef = _a.sliderWrapperRef, slideToShow = _a.slideToShow;
33
+ /**
34
+ * Calculates and applies slide dimensions based on slider orientation.
35
+ *
36
+ * - Sets the gap between slides.
37
+ * - For vertical sliders:
38
+ * - Calculates slide height including gap.
39
+ * - Sets the container height to show the required number of slides.
40
+ * - Switches layout to column direction.
41
+ * - For horizontal sliders:
42
+ * - Calculates available width after subtracting gaps.
43
+ * - Distributes width equally across visible slides using flex-basis.
44
+ *
45
+ * This function updates both DOM styles and cached dimensions
46
+ * used later for slide translation.
47
+ */
48
+ var calculateSlideDimensions = (0, react_1.useCallback)(function (_a) {
49
+ var container = _a.container, rect = _a.rect;
50
+ container.style.setProperty('gap', "".concat(gap, "px"));
51
+ if (orientation === 'vertical') {
52
+ var verticalSlideHight = container.children[0].clientHeight + gap;
53
+ Object.assign(sliderObjRefs.current, {
54
+ containerHeight: verticalSlideHight,
55
+ });
56
+ container.style.setProperty('height', "".concat(verticalSlideHight * slideToShow, "px"));
57
+ container.style.setProperty('flex-direction', 'column');
58
+ return;
59
+ }
60
+ var containerWidth = rect.width;
61
+ var totalGap = gap * (slideToShow - 1);
62
+ var availableWidth = containerWidth - totalGap;
63
+ var slideWidthPx = availableWidth / slideToShow;
64
+ var flexBasisPercent = (slideWidthPx / containerWidth) * 100;
65
+ Object.assign(sliderObjRefs.current, {
66
+ containerWidth: containerWidth + gap,
67
+ });
68
+ Array.from(container.children).forEach(function (element) {
69
+ ;
70
+ element.style.setProperty('flex', "0 0 ".concat(flexBasisPercent, "%"));
71
+ });
72
+ }, [gap, slideToShow, sliderObjRefs, orientation]);
73
+ /**
74
+ * Calculates and applies slider dimensions based on the current container size.
75
+ * Safely accesses the slider container element, retrieves its bounding rectangle,
76
+ * and triggers the dimension calculation for slides.
77
+ * NOTE: currently for horizontal slider navigation
78
+ */
79
+ var calculateDimensions = (0, react_1.useCallback)(function () {
80
+ var container = sliderWrapperRef.current;
81
+ if ((0, helpers_1.isNullOrUndefined)(container))
82
+ return;
83
+ var rect = container.getBoundingClientRect();
84
+ calculateSlideDimensions({ container: container, rect: rect });
85
+ }, [sliderWrapperRef, calculateSlideDimensions]);
86
+ return { calculateDimensions: calculateDimensions };
87
+ }
88
+ exports.default = useSliderDimension;
89
+ //# sourceMappingURL=useSliderDimension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSliderDimension.js","sourceRoot":"","sources":["../../../../src/hooks/slider/useSliderDimension.ts"],"names":[],"mappings":";;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,+BAA0E;AAC1E,yCAAiD;AAoBjD,SAAS,kBAAkB,CAAC,EAMU;QALpC,GAAG,SAAA,EACH,WAAW,iBAAA,EACX,aAAa,mBAAA,EACb,gBAAgB,sBAAA,EAChB,WAAW,iBAAA;IAEX;;;;;;;;;;;;;;OAcG;IACH,IAAM,wBAAwB,GAAG,IAAA,mBAAW,EAC1C,UAAC,EAAwC;YAAtC,SAAS,eAAA,EAAE,IAAI,UAAA;QAChB,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,UAAG,GAAG,OAAI,CAAC,CAAA;QAC9C,IAAI,WAAW,KAAK,UAAU,EAAE,CAAC;YAC/B,IAAM,kBAAkB,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,GAAG,CAAA;YACnE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE;gBACnC,eAAe,EAAE,kBAAkB;aACpC,CAAC,CAAA;YACF,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,UAAG,kBAAkB,GAAG,WAAW,OAAI,CAAC,CAAA;YAC9E,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAA;YACvD,OAAM;QACR,CAAC;QAEO,IAAO,cAAc,GAAK,IAAI,MAAT,CAAS;QACtC,IAAM,QAAQ,GAAG,GAAG,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,CAAA;QACxC,IAAM,cAAc,GAAG,cAAc,GAAG,QAAQ,CAAA;QAChD,IAAM,YAAY,GAAG,cAAc,GAAG,WAAW,CAAA;QACjD,IAAM,gBAAgB,GAAG,CAAC,YAAY,GAAG,cAAc,CAAC,GAAG,GAAG,CAAA;QAC9D,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE;YACnC,cAAc,EAAE,cAAc,GAAG,GAAG;SACrC,CAAC,CAAA;QACF,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAC,OAAO;YAC7C,CAAC;YAAC,OAAuB,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,cAAO,gBAAgB,MAAG,CAAC,CAAA;QACjF,CAAC,CAAC,CAAA;IACJ,CAAC,EACD,CAAC,GAAG,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,CAAC,CAC/C,CAAA;IAED;;;;;OAKG;IACH,IAAM,mBAAmB,GAAG,IAAA,mBAAW,EAAC;QACtC,IAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAA;QAC1C,IAAI,IAAA,2BAAiB,EAAC,SAAS,CAAC;YAAE,OAAM;QACxC,IAAM,IAAI,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAA;QAC9C,wBAAwB,CAAC,EAAE,SAAS,WAAA,EAAE,IAAI,MAAA,EAAE,CAAC,CAAA;IAC/C,CAAC,EAAE,CAAC,gBAAgB,EAAE,wBAAwB,CAAC,CAAC,CAAA;IAEhD,OAAO,EAAE,mBAAmB,qBAAA,EAAE,CAAA;AAChC,CAAC;AAED,kBAAe,kBAAkB,CAAA"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * -----------------------------------------------------------------------------
3
+ * @file useSliderDraggable
4
+ * -----------------------------------------------------------------------------
5
+ *
6
+ * @description A custom React hook that enables pointer-based drag interactions
7
+ * for the Slick slider component.
8
+ * Responsibilities:
9
+ * - Attaches pointer event listeners to the slider container
10
+ * - Tracks drag state and movement distance
11
+ * - Applies real-time transforms during dragging
12
+ * - Determines swipe intent using a configurable threshold
13
+ * - Triggers next/previous slide navigation based on drag direction
14
+ * - Safely handles pointer cancellation and cleanup
15
+ * Behavior:
16
+ * - Dragging is enabled only when `draggable.enableDrag` is true
17
+ * - Horizontal movement controls slide navigation
18
+ * - Transitions are suppressed during drag and restored on release
19
+ * - Automatically cleans up listeners on unmount or ref changes
20
+ *
21
+ * -----------------------------------------------------------------------------
22
+ * Copyright © 2017-present BookingKoala. All rights reserved.
23
+ * -----------------------------------------------------------------------------
24
+ */
25
+ import { type MutableRefObject, type RefObject } from 'react';
26
+ import type { SlickSliderRefs } from './useSlider';
27
+ export interface SliderDraggableProps {
28
+ applyTransform: (val: number, withTransition?: boolean, isRaw?: boolean) => void;
29
+ calculateTranslate: (idx: number) => number;
30
+ draggable?: {
31
+ dragThreshold?: number;
32
+ enableDrag?: boolean;
33
+ };
34
+ handleNextSlide: () => void;
35
+ handlePrevSlide: () => void;
36
+ hasNextBtnDisabled: () => boolean;
37
+ hasPrevBtnDisabled: () => boolean;
38
+ sliderObjRefs: MutableRefObject<SlickSliderRefs>;
39
+ sliderWrapperRef: RefObject<HTMLDivElement | null>;
40
+ }
41
+ declare function useSliderDraggable({ applyTransform, calculateTranslate, draggable, handleNextSlide, handlePrevSlide, hasNextBtnDisabled, hasPrevBtnDisabled, sliderObjRefs, sliderWrapperRef, }: SliderDraggableProps): void;
42
+ export default useSliderDraggable;
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /**
4
+ * -----------------------------------------------------------------------------
5
+ * @file useSliderDraggable
6
+ * -----------------------------------------------------------------------------
7
+ *
8
+ * @description A custom React hook that enables pointer-based drag interactions
9
+ * for the Slick slider component.
10
+ * Responsibilities:
11
+ * - Attaches pointer event listeners to the slider container
12
+ * - Tracks drag state and movement distance
13
+ * - Applies real-time transforms during dragging
14
+ * - Determines swipe intent using a configurable threshold
15
+ * - Triggers next/previous slide navigation based on drag direction
16
+ * - Safely handles pointer cancellation and cleanup
17
+ * Behavior:
18
+ * - Dragging is enabled only when `draggable.enableDrag` is true
19
+ * - Horizontal movement controls slide navigation
20
+ * - Transitions are suppressed during drag and restored on release
21
+ * - Automatically cleans up listeners on unmount or ref changes
22
+ *
23
+ * -----------------------------------------------------------------------------
24
+ * Copyright © 2017-present BookingKoala. All rights reserved.
25
+ * -----------------------------------------------------------------------------
26
+ */
27
+ var react_1 = require("react");
28
+ var helpers_1 = require("../../helpers");
29
+ function useSliderDraggable(_a) {
30
+ var applyTransform = _a.applyTransform, calculateTranslate = _a.calculateTranslate, draggable = _a.draggable, handleNextSlide = _a.handleNextSlide, handlePrevSlide = _a.handlePrevSlide, hasNextBtnDisabled = _a.hasNextBtnDisabled, hasPrevBtnDisabled = _a.hasPrevBtnDisabled, sliderObjRefs = _a.sliderObjRefs, sliderWrapperRef = _a.sliderWrapperRef;
31
+ (0, react_1.useEffect)(function () {
32
+ var _a = (0, helpers_1.destructObj)(draggable), _b = _a.dragThreshold, dragThreshold = _b === void 0 ? 200 : _b, _c = _a.enableDrag, enableDrag = _c === void 0 ? true : _c;
33
+ var _d = sliderObjRefs.current, currentIndex = _d.currentIndex, drag = _d.drag;
34
+ var container = sliderWrapperRef.current;
35
+ if (!enableDrag || (0, helpers_1.isNullOrUndefined)(container))
36
+ return undefined;
37
+ /**
38
+ * Handles the pointer down event to initiate a drag interaction.
39
+ * - Captures the pointer to continue receiving move/up events
40
+ * even if the pointer leaves the container
41
+ * - Initializes drag state (start position and reset translate)
42
+ */
43
+ function handlePointerDown(event) {
44
+ if ((0, helpers_1.isNullOrUndefined)(container))
45
+ return;
46
+ container.setPointerCapture(event.pointerId);
47
+ Object.assign(drag, {
48
+ isDragging: true,
49
+ startX: event.clientX,
50
+ startY: event.clientY,
51
+ translate: 0,
52
+ });
53
+ (0, helpers_1.preventDefault)(event);
54
+ }
55
+ /**
56
+ * Handles pointer move events during an active drag gesture.
57
+ * - Runs only while dragging is in progress
58
+ * - Calculates horizontal movement delta from the initial pointer position
59
+ * - Updates drag translate value for threshold / direction detection
60
+ * - Applies a real-time transform without transition for smooth dragging
61
+ */
62
+ function handlePointerMove(event) {
63
+ if ((0, helpers_1.isNullOrUndefined)(container) || !drag.isDragging)
64
+ return;
65
+ var delta = event.clientX - drag.startX;
66
+ var base = calculateTranslate(currentIndex);
67
+ Object.assign(drag, { translate: delta });
68
+ applyTransform(delta + base, false, true);
69
+ (0, helpers_1.preventDefault)(event);
70
+ }
71
+ /**
72
+ * Handles the pointer up event to finalize a drag interaction.
73
+ * - Releases pointer capture to stop receiving pointer events
74
+ * - Evaluates total drag distance against the configured threshold
75
+ * - Triggers slide navigation based on drag direction and availability
76
+ * - Reverts to the current slide if the drag is insufficient or navigation is disabled
77
+ */
78
+ function handlePointerUp(event) {
79
+ if ((0, helpers_1.isNullOrUndefined)(container) || !drag.isDragging)
80
+ return;
81
+ container.releasePointerCapture(event.pointerId);
82
+ var translate = drag.translate;
83
+ Object.assign(drag, { isDragging: false });
84
+ if (Math.abs(translate) <= dragThreshold) {
85
+ applyTransform(currentIndex, true);
86
+ return;
87
+ }
88
+ if (translate < 0 && !hasNextBtnDisabled()) {
89
+ handleNextSlide();
90
+ return;
91
+ }
92
+ if (translate > 0 && !hasPrevBtnDisabled()) {
93
+ handlePrevSlide();
94
+ return;
95
+ }
96
+ applyTransform(currentIndex, true);
97
+ }
98
+ /**
99
+ * Handles pointer cancel events to safely abort an active drag interaction.
100
+ * - Triggered when the browser cancels the pointer sequence
101
+ * (e.g., touch interruption, context menu, lost capture)
102
+ * - Releases pointer capture to avoid stuck pointer states
103
+ * - Resets dragging state
104
+ * - Smoothly reverts the slider back to the current active slid.
105
+ */
106
+ function handlePointerCancel(event) {
107
+ if ((0, helpers_1.isNullOrUndefined)(container) || !drag.isDragging)
108
+ return;
109
+ container.releasePointerCapture(event.pointerId);
110
+ Object.assign(drag, { isDragging: false });
111
+ applyTransform(currentIndex, true);
112
+ }
113
+ /**
114
+ * Registers pointer event listeners on the slider container
115
+ * to enable drag-based interactions.
116
+ *
117
+ * Cleanup ensures all listeners are removed when the component
118
+ * unmounts or the container reference changes, preventing
119
+ * memory leaks and duplicate handlers.
120
+ */
121
+ container.addEventListener('pointerdown', handlePointerDown);
122
+ container.addEventListener('pointermove', handlePointerMove);
123
+ container.addEventListener('pointerup', handlePointerUp);
124
+ container.addEventListener('pointercancel', handlePointerCancel);
125
+ /**
126
+ * Restrict touch gestures to vertical scrolling only (pan-y),allowing smooth page scroll while
127
+ * preventing horizontal touch interference during slider drag interactions.
128
+ */
129
+ var touchActionAxis = 'pan-y';
130
+ Object.assign(container.style, { touchAction: touchActionAxis });
131
+ return function () {
132
+ if ((0, helpers_1.isNullOrUndefined)(container))
133
+ return;
134
+ container.removeEventListener('pointerdown', handlePointerDown);
135
+ container.removeEventListener('pointermove', handlePointerMove);
136
+ container.removeEventListener('pointerup', handlePointerUp);
137
+ container.removeEventListener('pointercancel', handlePointerCancel);
138
+ Object.assign(container.style, { touchAction: '' });
139
+ };
140
+ }, [sliderObjRefs, handleNextSlide, handlePrevSlide, hasNextBtnDisabled, handlePrevSlide]);
141
+ }
142
+ exports.default = useSliderDraggable;
143
+ //# sourceMappingURL=useSliderDraggable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSliderDraggable.js","sourceRoot":"","sources":["../../../../src/hooks/slider/useSliderDraggable.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * -----------------------------------------------------------------------------
3
+ * @file useSliderNavigation
4
+ * -----------------------------------------------------------------------------
5
+ *
6
+ * @description This hook is responsible for handling all slider navigation logic.
7
+ *
8
+ * Features:
9
+ * - Handles next slide navigation
10
+ * - Handles previous slide navigation
11
+ * - Controls next button disabled state
12
+ * - Controls previous button disabled state
13
+ * - Provides the active indicator index
14
+ * - Calculates the total number of indicators
15
+ *
16
+ * -----------------------------------------------------------------------------
17
+ * Copyright © 2017-present BookingKoala. All rights reserved.
18
+ * -----------------------------------------------------------------------------
19
+ */
20
+ import { type MutableRefObject, type RefObject } from 'react';
21
+ import type { SlickSliderRefs } from './useSlider';
22
+ interface UseSlickSliderNavigationReturn {
23
+ getActiveIndicatorIndex: () => number | undefined;
24
+ getIndicatorCount: () => number | undefined;
25
+ goToSlideIndicator: (indicatorIndex: number) => void;
26
+ handleNextSlide: () => void;
27
+ handlePrevSlide: () => void;
28
+ hasNextBtnDisabled: () => boolean;
29
+ hasPrevBtnDisabled: () => boolean;
30
+ }
31
+ interface UseSlickSliderDimensionsProps {
32
+ activeSlide: number;
33
+ applyTransform: (indexOrTranslate: number, withTransition?: boolean) => void;
34
+ loop: boolean;
35
+ sliderObjRefs: MutableRefObject<SlickSliderRefs>;
36
+ sliderWrapperRef: RefObject<HTMLDivElement | null>;
37
+ slideToScroll: number;
38
+ slideToShow: number;
39
+ speed?: number;
40
+ }
41
+ declare function useSliderNavigation({ activeSlide, applyTransform, loop, sliderObjRefs, slideToScroll, slideToShow, speed, }: UseSlickSliderDimensionsProps): UseSlickSliderNavigationReturn;
42
+ export default useSliderNavigation;