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.
- package/dist/cjs/components/Button.d.ts +2 -1
- package/dist/cjs/components/Button.js.map +1 -1
- package/dist/cjs/components/Card.js +1 -1
- package/dist/cjs/components/Card.js.map +1 -1
- package/dist/cjs/components/SlickSlider.d.ts +77 -0
- package/dist/cjs/components/SlickSlider.js +184 -0
- package/dist/cjs/components/SlickSlider.js.map +1 -0
- package/dist/cjs/components/TextInput.d.ts +6 -5
- package/dist/cjs/components/TextInput.js.map +1 -1
- package/dist/cjs/hooks/slider/useSlider.d.ts +72 -0
- package/dist/cjs/hooks/slider/useSlider.js +153 -0
- package/dist/cjs/hooks/slider/useSlider.js.map +1 -0
- package/dist/cjs/hooks/slider/useSliderAutoPlay.d.ts +33 -0
- package/dist/cjs/hooks/slider/useSliderAutoPlay.js +73 -0
- package/dist/cjs/hooks/slider/useSliderAutoPlay.js.map +1 -0
- package/dist/cjs/hooks/slider/useSliderBreakpoints.d.ts +35 -0
- package/dist/cjs/hooks/slider/useSliderBreakpoints.js +54 -0
- package/dist/cjs/hooks/slider/useSliderBreakpoints.js.map +1 -0
- package/dist/cjs/hooks/slider/useSliderDimension.d.ts +40 -0
- package/dist/cjs/hooks/slider/useSliderDimension.js +89 -0
- package/dist/cjs/hooks/slider/useSliderDimension.js.map +1 -0
- package/dist/cjs/hooks/slider/useSliderDraggable.d.ts +42 -0
- package/dist/cjs/hooks/slider/useSliderDraggable.js +143 -0
- package/dist/cjs/hooks/slider/useSliderDraggable.js.map +1 -0
- package/dist/cjs/hooks/slider/useSliderNavigation.d.ts +42 -0
- package/dist/cjs/hooks/slider/useSliderNavigation.js +124 -0
- package/dist/cjs/hooks/slider/useSliderNavigation.js.map +1 -0
- package/dist/cjs/hooks/slider/useSliderTransform.d.ts +31 -0
- package/dist/cjs/hooks/slider/useSliderTransform.js +66 -0
- package/dist/cjs/hooks/slider/useSliderTransform.js.map +1 -0
- package/dist/cjs/index.d.ts +3 -1
- package/dist/cjs/index.js +4 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/components/Button.d.ts +2 -1
- package/dist/esm/components/Button.js.map +1 -1
- package/dist/esm/components/Card.js +1 -1
- package/dist/esm/components/Card.js.map +1 -1
- package/dist/esm/components/SlickSlider.d.ts +77 -0
- package/dist/esm/components/SlickSlider.js +181 -0
- package/dist/esm/components/SlickSlider.js.map +1 -0
- package/dist/esm/components/TextInput.d.ts +6 -5
- package/dist/esm/components/TextInput.js.map +1 -1
- package/dist/esm/helpers.d.ts +1 -0
- package/dist/esm/helpers.js +2 -0
- package/dist/esm/helpers.js.map +1 -0
- package/dist/esm/hooks/slider/useSlider.d.ts +72 -0
- package/dist/esm/hooks/slider/useSlider.js +150 -0
- package/dist/esm/hooks/slider/useSlider.js.map +1 -0
- package/dist/esm/hooks/slider/useSliderAutoPlay.d.ts +33 -0
- package/dist/esm/hooks/slider/useSliderAutoPlay.js +71 -0
- package/dist/esm/hooks/slider/useSliderAutoPlay.js.map +1 -0
- package/dist/esm/hooks/slider/useSliderBreakpoints.d.ts +35 -0
- package/dist/esm/hooks/slider/useSliderBreakpoints.js +52 -0
- package/dist/esm/hooks/slider/useSliderBreakpoints.js.map +1 -0
- package/dist/esm/hooks/slider/useSliderDimension.d.ts +40 -0
- package/dist/esm/hooks/slider/useSliderDimension.js +87 -0
- package/dist/esm/hooks/slider/useSliderDimension.js.map +1 -0
- package/dist/esm/hooks/slider/useSliderDraggable.d.ts +42 -0
- package/dist/esm/hooks/slider/useSliderDraggable.js +141 -0
- package/dist/esm/hooks/slider/useSliderDraggable.js.map +1 -0
- package/dist/esm/hooks/slider/useSliderNavigation.d.ts +42 -0
- package/dist/esm/hooks/slider/useSliderNavigation.js +122 -0
- package/dist/esm/hooks/slider/useSliderNavigation.js.map +1 -0
- package/dist/esm/hooks/slider/useSliderTransform.d.ts +31 -0
- package/dist/esm/hooks/slider/useSliderTransform.js +64 -0
- package/dist/esm/hooks/slider/useSliderTransform.js.map +1 -0
- package/dist/esm/index.d.ts +3 -1
- package/dist/esm/index.js +3 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/package.json +14 -1
- 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;
|