@openameba/spindle-ui 0.50.1 → 0.51.0
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/CHANGELOG.md +42 -1
- package/HeroCarousel/HeroCarousel.d.ts.map +1 -1
- package/HeroCarousel/HeroCarousel.js +2 -2
- package/HeroCarousel/HeroCarousel.js.map +1 -1
- package/HeroCarousel/HeroCarousel.mjs +2 -2
- package/README.md +8 -0
- package/package.json +3 -2
- package/HeroCarousel/hooks/useAutoPlayCarousel.d.ts +0 -27
- package/HeroCarousel/hooks/useAutoPlayCarousel.d.ts.map +0 -1
- package/HeroCarousel/hooks/useAutoPlayCarousel.js +0 -172
- package/HeroCarousel/hooks/useAutoPlayCarousel.js.map +0 -1
- package/HeroCarousel/hooks/useAutoPlayCarousel.mjs +0 -160
- package/HeroCarousel/hooks/useAutoSlide.d.ts +0 -13
- package/HeroCarousel/hooks/useAutoSlide.d.ts.map +0 -1
- package/HeroCarousel/hooks/useAutoSlide.js +0 -48
- package/HeroCarousel/hooks/useAutoSlide.js.map +0 -1
- package/HeroCarousel/hooks/useAutoSlide.mjs +0 -42
- package/HeroCarousel/hooks/useCarouselFocus.d.ts +0 -11
- package/HeroCarousel/hooks/useCarouselFocus.d.ts.map +0 -1
- package/HeroCarousel/hooks/useCarouselFocus.js +0 -28
- package/HeroCarousel/hooks/useCarouselFocus.js.map +0 -1
- package/HeroCarousel/hooks/useCarouselFocus.mjs +0 -22
- package/HeroCarousel/hooks/useSliderMoveEvent.d.ts +0 -10
- package/HeroCarousel/hooks/useSliderMoveEvent.d.ts.map +0 -1
- package/HeroCarousel/hooks/useSliderMoveEvent.js +0 -54
- package/HeroCarousel/hooks/useSliderMoveEvent.js.map +0 -1
- package/HeroCarousel/hooks/useSliderMoveEvent.mjs +0 -49
- package/HeroCarousel/hooks/useSliderTransition.d.ts +0 -20
- package/HeroCarousel/hooks/useSliderTransition.d.ts.map +0 -1
- package/HeroCarousel/hooks/useSliderTransition.js +0 -36
- package/HeroCarousel/hooks/useSliderTransition.js.map +0 -1
- package/HeroCarousel/hooks/useSliderTransition.mjs +0 -30
- package/HeroCarousel/hooks/useValueRef.d.ts +0 -3
- package/HeroCarousel/hooks/useValueRef.d.ts.map +0 -1
- package/HeroCarousel/hooks/useValueRef.js +0 -13
- package/HeroCarousel/hooks/useValueRef.js.map +0 -1
- package/HeroCarousel/hooks/useValueRef.mjs +0 -8
package/CHANGELOG.md
CHANGED
|
@@ -3,18 +3,59 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [0.51.0](https://github.com/openameba/spindle/compare/@openameba/spindle-ui@0.50.1...@openameba/spindle-ui@0.51.0) (2022-11-07)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* **spindle-ui:** use spindle-hooks ([69885ba](https://github.com/openameba/spindle/commit/69885bae6c477632bc2a8375ac780ccac022ac7c))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## [0.50.1-alpha.2](https://github.com/openameba/spindle/compare/@openameba/spindle-ui@0.50.1-alpha.0...@openameba/spindle-ui@0.50.1-alpha.2) (2022-10-28)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Features
|
|
21
|
+
|
|
22
|
+
* **spindle-ui:** use spindle-hooks ([69885ba](https://github.com/openameba/spindle/commit/69885bae6c477632bc2a8375ac780ccac022ac7c))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
## [0.50.1-alpha.1](https://github.com/openameba/spindle/compare/@openameba/spindle-ui@0.50.1-alpha.0...@openameba/spindle-ui@0.50.1-alpha.1) (2022-10-28)
|
|
29
|
+
|
|
30
|
+
**Note:** Version bump only for package @openameba/spindle-ui
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
6
36
|
## [0.50.1](https://github.com/openameba/spindle/compare/@openameba/spindle-ui@0.50.0...@openameba/spindle-ui@0.50.1) (2022-10-27)
|
|
7
37
|
|
|
8
38
|
|
|
9
39
|
### Bug Fixes
|
|
10
40
|
|
|
11
|
-
* **spindle-ui:** pagination
|
|
41
|
+
* **spindle-ui:** pagination style and docs ([a307efb](https://github.com/openameba/spindle/commit/a307efb1c70c700b739afe98336d2a5c2bff06c5))
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
## [0.50.1-alpha.0](https://github.com/openameba/spindle/compare/@openameba/spindle-ui@0.50.0...@openameba/spindle-ui@0.50.1-alpha.0) (2022-10-26)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
### Bug Fixes
|
|
51
|
+
|
|
12
52
|
* **spindle-ui:** pagination style and docs ([a307efb](https://github.com/openameba/spindle/commit/a307efb1c70c700b739afe98336d2a5c2bff06c5))
|
|
13
53
|
|
|
14
54
|
|
|
15
55
|
### Features
|
|
16
56
|
|
|
17
57
|
* **spindle-ui:** add useStackNotificationComponent ([b18c498](https://github.com/openameba/spindle/commit/b18c4981bc38c9a7e2abd682ef504b55bcfde2bb))
|
|
58
|
+
* **spindle-ui:** use spindle-hooks ([e10f0a9](https://github.com/openameba/spindle/commit/e10f0a97ec73d0fc7b0fc6ccb35c9e3c7b8a4543))
|
|
18
59
|
|
|
19
60
|
|
|
20
61
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeroCarousel.d.ts","sourceRoot":"","sources":["../../src/HeroCarousel/HeroCarousel.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"HeroCarousel.d.ts","sourceRoot":"","sources":["../../src/HeroCarousel/HeroCarousel.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAMlC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD,aAAK,KAAK,GAAG;IACX,YAAY,EAAE,YAAY,EAAE,CAAC;CAC9B,CAAC;AAKF,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,KAAK,CA0FjC,CAAC"}
|
|
@@ -5,17 +5,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.HeroCarousel = void 0;
|
|
7
7
|
var react_1 = __importDefault(require("react"));
|
|
8
|
+
var spindle_hooks_1 = require("@openameba/spindle-hooks");
|
|
8
9
|
var ChevronLeftBold_1 = __importDefault(require("../Icon/ChevronLeftBold"));
|
|
9
10
|
var ChevronRightBold_1 = __importDefault(require("../Icon/ChevronRightBold"));
|
|
10
11
|
var Pause_1 = __importDefault(require("../Icon/Pause"));
|
|
11
12
|
var PlayFill_1 = __importDefault(require("../Icon/PlayFill"));
|
|
12
13
|
var HeroCarouselItem_1 = __importDefault(require("./HeroCarouselItem"));
|
|
13
|
-
var useAutoPlayCarousel_1 = require("./hooks/useAutoPlayCarousel");
|
|
14
14
|
var BLOCK_NAME = 'spui-HeroCarousel';
|
|
15
15
|
var ITEM_LINK_CLASS_NAME = 'js-auto-play-carousel-item-link';
|
|
16
16
|
exports.HeroCarousel = react_1.default.memo(function HeroCarousel(_a) {
|
|
17
17
|
var carouselList = _a.carouselList;
|
|
18
|
-
var _b = (0,
|
|
18
|
+
var _b = (0, spindle_hooks_1.useCarousel)({
|
|
19
19
|
items: carouselList,
|
|
20
20
|
itemLinkClassName: ITEM_LINK_CLASS_NAME,
|
|
21
21
|
}), handleSlideToPrev = _b.handleSlideToPrev, handleSlideToNext = _b.handleSlideToNext, handleMouseEnter = _b.handleMouseEnter, handleMouseDown = _b.handleMouseDown, handleMouseLeave = _b.handleMouseLeave, handleTouchStart = _b.handleTouchStart, handleTransitionEnd = _b.handleTransitionEnd, isAutoPlaying = _b.isAutoPlaying, isLinkClicked = _b.isLinkClicked, itemsToRender = _b.itemsToRender, listRef = _b.listRef, listStyles = _b.listStyles, toggleAutoPlay = _b.toggleAutoPlay, handleFocus = _b.handleFocus, handleBlur = _b.handleBlur;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeroCarousel.js","sourceRoot":"","sources":["../../src/HeroCarousel/HeroCarousel.tsx"],"names":[],"mappings":";;;;;;AAAA,gDAAkC;AAClC,4EAAsD;AACtD,8EAAwD;AACxD,wDAAkC;AAClC,8DAAwC;AAExC,wEAAkD;
|
|
1
|
+
{"version":3,"file":"HeroCarousel.js","sourceRoot":"","sources":["../../src/HeroCarousel/HeroCarousel.tsx"],"names":[],"mappings":";;;;;;AAAA,gDAAkC;AAClC,0DAAuD;AACvD,4EAAsD;AACtD,8EAAwD;AACxD,wDAAkC;AAClC,8DAAwC;AAExC,wEAAkD;AAMlD,IAAM,UAAU,GAAG,mBAAmB,CAAC;AACvC,IAAM,oBAAoB,GAAG,iCAAiC,CAAC;AAElD,QAAA,YAAY,GAAc,eAAK,CAAC,IAAI,CAAC,SAAS,YAAY,CAAC,EAEvE;QADC,YAAY,kBAAA;IAEN,IAAA,KAgBF,IAAA,2BAAW,EAAC;QACd,KAAK,EAAE,YAAY;QACnB,iBAAiB,EAAE,oBAAoB;KACxC,CAAC,EAlBA,iBAAiB,uBAAA,EACjB,iBAAiB,uBAAA,EACjB,gBAAgB,sBAAA,EAChB,eAAe,qBAAA,EACf,gBAAgB,sBAAA,EAChB,gBAAgB,sBAAA,EAChB,mBAAmB,yBAAA,EACnB,aAAa,mBAAA,EACb,aAAa,mBAAA,EACb,aAAa,mBAAA,EACb,OAAO,aAAA,EACP,UAAU,gBAAA,EACV,cAAc,oBAAA,EACd,WAAW,iBAAA,EACX,UAAU,gBAIV,CAAC;IAEH,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;QAC7B,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CACL;QACE,uCACE,SAAS,EAAE,UAAG,UAAU,eAAY,EACpC,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,WAAW,EACpB,WAAW,EAAE,eAAe,EAC5B,YAAY,EAAE,gBAAgB,EAC9B,YAAY,EAAE,gBAAgB,EAC9B,YAAY,EAAE,gBAAgB,EAC9B,eAAe,EAAE,mBAAmB;YAEpC,8DACuB,gCAAO,EAC5B,SAAS,EAAE,UAAG,UAAU,UAAO,EAC/B,GAAG,EAAE,OAAO,EACZ,IAAI,EAAC,OAAO,EACZ,KAAK,EAAE,UAAU,IAEhB,aAAa,CAAC,GAAG,CAAC,UAAC,IAAkB,EAAE,KAAa,IAAK,OAAA,CACxD,8BAAC,0BAAgB,IACf,YAAY,EAAE,IAAI,EAClB,aAAa,EAAE,aAAa,EAC5B,iBAAiB,EAAE,oBAAoB,EACvC,GAAG,EAAE,wBAAiB,KAAK,CAAE,GAC7B,CACH,EAPyD,CAOzD,CAAC,CACC,CACD;QAEN,uCAAK,SAAS,EAAE,UAAG,UAAU,cAAW;YACtC,wDACa,+DAAa,EACxB,SAAS,EAAE,UAAG,UAAU,sBAAY,UAAU,mBAAgB,EAC9D,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,iBAAiB;gBAE1B,8BAAC,yBAAe,mBAAc,IAAI,GAAI,CAC/B;YACT,wDACc,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EACjD,SAAS,EAAE,UAAG,UAAU,aAAU,EAClC,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,cAAc,IAEtB,aAAa,CAAC,CAAC,CAAC,CACf,8BAAC,eAAK,mBAAc,IAAI,GAAI,CAC7B,CAAC,CAAC,CAAC,CACF,8BAAC,kBAAQ,mBAAc,IAAI,GAAI,CAChC,CACM;YACT,wDACa,qEAAc,EACzB,SAAS,EAAE,UAAG,UAAU,sBAAY,UAAU,mBAAgB,EAC9D,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,iBAAiB;gBAE1B,8BAAC,0BAAgB,mBAAc,IAAI,GAAI,CAChC,CACL,CACF,CACP,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { useCarousel } from '@openameba/spindle-hooks';
|
|
2
3
|
import ChevronLeftBold from '../Icon/ChevronLeftBold';
|
|
3
4
|
import ChevronRightBold from '../Icon/ChevronRightBold';
|
|
4
5
|
import Pause from '../Icon/Pause';
|
|
5
6
|
import PlayFill from '../Icon/PlayFill';
|
|
6
7
|
import HeroCarouselItem from './HeroCarouselItem';
|
|
7
|
-
import { useAutoPlayCarousel } from './hooks/useAutoPlayCarousel';
|
|
8
8
|
const BLOCK_NAME = 'spui-HeroCarousel';
|
|
9
9
|
const ITEM_LINK_CLASS_NAME = 'js-auto-play-carousel-item-link';
|
|
10
10
|
export const HeroCarousel = React.memo(function HeroCarousel({ carouselList, }) {
|
|
11
|
-
const { handleSlideToPrev, handleSlideToNext, handleMouseEnter, handleMouseDown, handleMouseLeave, handleTouchStart, handleTransitionEnd, isAutoPlaying, isLinkClicked, itemsToRender, listRef, listStyles, toggleAutoPlay, handleFocus, handleBlur, } =
|
|
11
|
+
const { handleSlideToPrev, handleSlideToNext, handleMouseEnter, handleMouseDown, handleMouseLeave, handleTouchStart, handleTransitionEnd, isAutoPlaying, isLinkClicked, itemsToRender, listRef, listStyles, toggleAutoPlay, handleFocus, handleBlur, } = useCarousel({
|
|
12
12
|
items: carouselList,
|
|
13
13
|
itemLinkClassName: ITEM_LINK_CLASS_NAME,
|
|
14
14
|
});
|
package/README.md
CHANGED
|
@@ -105,6 +105,14 @@ yarn install
|
|
|
105
105
|
yarn dev # storybookが起動します
|
|
106
106
|
```
|
|
107
107
|
|
|
108
|
+
NOTE: 事前に [spindle-hooks](https://github.com/openameba/spindle/tree/main/packages/spindle-hooks) を 以下のように build しておく必要があります。
|
|
109
|
+
|
|
110
|
+
```
|
|
111
|
+
cd ../spindle-hooks
|
|
112
|
+
yarn build
|
|
113
|
+
cd -
|
|
114
|
+
```
|
|
115
|
+
|
|
108
116
|
## ライセンス
|
|
109
117
|
Spindle UIはMITライセンスで公開されています。ただし、アイコンは[Spindle Icons](../spindle-icons/)に準じて、Creative Commons BY-NC-ND 4.0ライセンスで公開されています。
|
|
110
118
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openameba/spindle-ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.51.0",
|
|
4
4
|
"main": "./index.js",
|
|
5
5
|
"module": "./index.mjs",
|
|
6
6
|
"types": "./index.d.ts",
|
|
@@ -51,6 +51,7 @@
|
|
|
51
51
|
}
|
|
52
52
|
},
|
|
53
53
|
"dependencies": {
|
|
54
|
+
"@openameba/spindle-hooks": "^0.11.0",
|
|
54
55
|
"ameba-color-palette.css": "^4.8.0",
|
|
55
56
|
"react-merge-refs": "^1.1.0"
|
|
56
57
|
},
|
|
@@ -94,5 +95,5 @@
|
|
|
94
95
|
"ts-jest": "28.0.8",
|
|
95
96
|
"webpack": "^5.73.0"
|
|
96
97
|
},
|
|
97
|
-
"gitHead": "
|
|
98
|
+
"gitHead": "74f01b42b5d3cdc01bd5a7eddce6305019050d62"
|
|
98
99
|
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
declare type Payload<Item> = {
|
|
3
|
-
items: Item[];
|
|
4
|
-
itemLinkClassName: string;
|
|
5
|
-
};
|
|
6
|
-
export declare function useAutoPlayCarousel<Item>({ items, itemLinkClassName, }: Payload<Item>): {
|
|
7
|
-
handleSlideToPrev: () => void;
|
|
8
|
-
handleSlideToNext: () => void;
|
|
9
|
-
handleMouseEnter: () => void;
|
|
10
|
-
handleMouseDown: (e: React.MouseEvent) => void;
|
|
11
|
-
handleMouseLeave: () => void;
|
|
12
|
-
handleTouchStart: (e: React.TouchEvent) => void;
|
|
13
|
-
handleTransitionEnd: () => void;
|
|
14
|
-
isAutoPlaying: boolean;
|
|
15
|
-
isLinkClicked: boolean;
|
|
16
|
-
itemsToRender: Item[];
|
|
17
|
-
listRef: import("react").RefObject<HTMLUListElement>;
|
|
18
|
-
listStyles: {
|
|
19
|
-
transition: string;
|
|
20
|
-
transform: string;
|
|
21
|
-
};
|
|
22
|
-
toggleAutoPlay: () => void;
|
|
23
|
-
handleFocus: (e: React.FocusEvent<HTMLDivElement>) => void;
|
|
24
|
-
handleBlur: () => void;
|
|
25
|
-
};
|
|
26
|
-
export {};
|
|
27
|
-
//# sourceMappingURL=useAutoPlayCarousel.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useAutoPlayCarousel.d.ts","sourceRoot":"","sources":["../../../src/HeroCarousel/hooks/useAutoPlayCarousel.ts"],"names":[],"mappings":";AAOA,aAAK,OAAO,CAAC,IAAI,IAAI;IACnB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAKF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,EACxC,KAAK,EACL,iBAAiB,GAClB,EAAE,OAAO,CAAC,IAAI,CAAC;;;;yBAgFc,gBAAgB;;0BA2Bf,gBAAgB;;;;;;;;;;;qBA4BrB,gBAAgB,CAAC,cAAc,CAAC;;EA4DzD"}
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
3
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
4
|
-
if (ar || !(i in from)) {
|
|
5
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
6
|
-
ar[i] = from[i];
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.useAutoPlayCarousel = void 0;
|
|
13
|
-
var react_1 = require("react");
|
|
14
|
-
var useAutoSlide_1 = require("./useAutoSlide");
|
|
15
|
-
var useCarouselFocus_1 = require("./useCarouselFocus");
|
|
16
|
-
var useSliderMoveEvent_1 = require("./useSliderMoveEvent");
|
|
17
|
-
var useSliderTransition_1 = require("./useSliderTransition");
|
|
18
|
-
var useValueRef_1 = require("./useValueRef");
|
|
19
|
-
var COPY_COUNT = 5;
|
|
20
|
-
var SWIPE_THRESHOLD_X = 20;
|
|
21
|
-
function useAutoPlayCarousel(_a) {
|
|
22
|
-
var items = _a.items, itemLinkClassName = _a.itemLinkClassName;
|
|
23
|
-
var _b = (0, useSliderMoveEvent_1.useSliderMoveEvent)(), diffXRef = _b.diffXRef, diffYRef = _b.diffYRef, setDiffX = _b.setDiffX, setDiffY = _b.setDiffY, setStartX = _b.setStartX, setStartY = _b.setStartY;
|
|
24
|
-
var _c = (0, react_1.useState)(0), focusOffset = _c[0], setFocusOffset = _c[1];
|
|
25
|
-
var _d = (0, react_1.useState)(false), isHovering = _d[0], setIsHovering = _d[1];
|
|
26
|
-
var _e = (0, react_1.useState)(false), isLinkClicked = _e[0], setIsLinkClicked = _e[1];
|
|
27
|
-
var isHoveringRef = (0, useValueRef_1.useValueRef)(isHovering);
|
|
28
|
-
var slideToNextRef = (0, useValueRef_1.useValueRef)(function () { return slideToNext(); });
|
|
29
|
-
var itemCount = (0, react_1.useMemo)(function () { return items.length; }, [items]);
|
|
30
|
-
var getIsCopiedItem = (0, react_1.useCallback)(function (index) {
|
|
31
|
-
return index < COPY_COUNT || index >= itemCount + COPY_COUNT;
|
|
32
|
-
}, [itemCount]);
|
|
33
|
-
var _f = (0, useAutoSlide_1.useAutoSlide)({
|
|
34
|
-
onTimeOut: slideToNextRef.current,
|
|
35
|
-
}), isAutoPlaying = _f.isAutoPlaying, setIsAutoPlaying = _f.setIsAutoPlaying, resetAutoSlide = _f.resetAutoSlide, resetTimeOut = _f.resetTimeOut, toggleAutoPlay = _f.toggleAutoPlay;
|
|
36
|
-
var _g = (0, useCarouselFocus_1.useCarouselFocus)({
|
|
37
|
-
getIsCopiedItem: getIsCopiedItem,
|
|
38
|
-
itemLinkClassName: itemLinkClassName,
|
|
39
|
-
}), linkRefs = _g.linkRefs, listRef = _g.listRef;
|
|
40
|
-
var isAutoPlayingRef = (0, useValueRef_1.useValueRef)(isAutoPlaying);
|
|
41
|
-
var _h = (0, useSliderTransition_1.useSliderTransition)({
|
|
42
|
-
copyCount: COPY_COUNT,
|
|
43
|
-
itemCount: itemCount,
|
|
44
|
-
isAutoPlaying: isAutoPlaying,
|
|
45
|
-
linkRefs: linkRefs,
|
|
46
|
-
}), currentIndexRef = _h.currentIndexRef, handleTransitionEnd = _h.handleTransitionEnd, listStyles = _h.listStyles, setCurrentIndex = _h.setCurrentIndex, setDisableAutoFocus = _h.setDisableAutoFocus, setDisableTransition = _h.setDisableTransition;
|
|
47
|
-
var itemsToRender = (0, react_1.useMemo)(
|
|
48
|
-
// generate copy contents on both ends to make carousel look like looping
|
|
49
|
-
function () { return __spreadArray(__spreadArray(__spreadArray([], items.slice(-COPY_COUNT), true), items, true), items.slice(0, COPY_COUNT), true); }, [items]);
|
|
50
|
-
var slideToNext = function (ignoreHover) {
|
|
51
|
-
if (ignoreHover === void 0) { ignoreHover = false; }
|
|
52
|
-
var shouldSlideToNext = ((!isHoveringRef.current && isAutoPlayingRef.current) || ignoreHover) &&
|
|
53
|
-
currentIndexRef.current <= itemCount;
|
|
54
|
-
if (shouldSlideToNext) {
|
|
55
|
-
setDisableTransition(false);
|
|
56
|
-
setCurrentIndex(currentIndexRef.current + 1);
|
|
57
|
-
}
|
|
58
|
-
resetAutoSlide();
|
|
59
|
-
};
|
|
60
|
-
var slideToPrev = function () {
|
|
61
|
-
if (currentIndexRef.current >= 0) {
|
|
62
|
-
setDisableTransition(false);
|
|
63
|
-
setCurrentIndex(currentIndexRef.current - 1);
|
|
64
|
-
}
|
|
65
|
-
resetAutoSlide();
|
|
66
|
-
};
|
|
67
|
-
var handleMouseEnter = function () { return setIsHovering(true); };
|
|
68
|
-
var handleMouseLeave = function () {
|
|
69
|
-
setIsHovering(false);
|
|
70
|
-
resetAutoSlide();
|
|
71
|
-
};
|
|
72
|
-
var handleMouseDown = function (e) {
|
|
73
|
-
resetTimeOut();
|
|
74
|
-
setStartX(e.clientX);
|
|
75
|
-
setStartY(e.clientY);
|
|
76
|
-
};
|
|
77
|
-
var onMouseUp = function () {
|
|
78
|
-
if (diffXRef.current > SWIPE_THRESHOLD_X) {
|
|
79
|
-
setIsLinkClicked(false);
|
|
80
|
-
setIsAutoPlaying(false);
|
|
81
|
-
slideToPrev();
|
|
82
|
-
}
|
|
83
|
-
if (diffXRef.current < -SWIPE_THRESHOLD_X) {
|
|
84
|
-
setIsLinkClicked(false);
|
|
85
|
-
setIsAutoPlaying(false);
|
|
86
|
-
slideToNext(true);
|
|
87
|
-
}
|
|
88
|
-
if (diffXRef.current === 0 && diffYRef.current === 0) {
|
|
89
|
-
setIsLinkClicked(true);
|
|
90
|
-
}
|
|
91
|
-
setStartX(null);
|
|
92
|
-
setStartY(null);
|
|
93
|
-
setDiffX(0);
|
|
94
|
-
setDiffY(0);
|
|
95
|
-
};
|
|
96
|
-
var handleTouchStart = function (e) {
|
|
97
|
-
if (!e.touches.length)
|
|
98
|
-
return;
|
|
99
|
-
var touch = e.touches[0];
|
|
100
|
-
resetTimeOut();
|
|
101
|
-
handleMouseEnter();
|
|
102
|
-
setStartX(touch.clientX);
|
|
103
|
-
setStartY(touch.clientY);
|
|
104
|
-
};
|
|
105
|
-
var onTouchEnd = function () {
|
|
106
|
-
setIsHovering(false);
|
|
107
|
-
onMouseUp();
|
|
108
|
-
};
|
|
109
|
-
var handleSlideToPrev = function () {
|
|
110
|
-
resetTimeOut();
|
|
111
|
-
setIsAutoPlaying(false);
|
|
112
|
-
slideToPrev();
|
|
113
|
-
};
|
|
114
|
-
var handleSlideToNext = function () {
|
|
115
|
-
resetTimeOut();
|
|
116
|
-
setIsAutoPlaying(false);
|
|
117
|
-
slideToNext(true);
|
|
118
|
-
};
|
|
119
|
-
var handleFocus = function (e) {
|
|
120
|
-
setIsAutoPlaying(false);
|
|
121
|
-
var newFocusOffset = e.target.offsetLeft;
|
|
122
|
-
setFocusOffset(newFocusOffset);
|
|
123
|
-
if (focusOffset === 0) {
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
setDisableAutoFocus(true);
|
|
127
|
-
if (isHovering && diffXRef.current === 0 && diffYRef.current === 0) {
|
|
128
|
-
setIsLinkClicked(true);
|
|
129
|
-
return;
|
|
130
|
-
}
|
|
131
|
-
if (focusOffset > newFocusOffset) {
|
|
132
|
-
setDisableTransition(false);
|
|
133
|
-
setCurrentIndex(currentIndexRef.current - 1);
|
|
134
|
-
}
|
|
135
|
-
if (focusOffset < newFocusOffset) {
|
|
136
|
-
setDisableTransition(false);
|
|
137
|
-
setCurrentIndex(currentIndexRef.current + 1);
|
|
138
|
-
}
|
|
139
|
-
};
|
|
140
|
-
var handleBlur = function () {
|
|
141
|
-
setIsAutoPlaying(true);
|
|
142
|
-
};
|
|
143
|
-
(0, react_1.useEffect)(function () {
|
|
144
|
-
document.body.addEventListener('mouseup', onMouseUp);
|
|
145
|
-
document.body.addEventListener('touchend', onTouchEnd);
|
|
146
|
-
return function () {
|
|
147
|
-
document.body.removeEventListener('mouseup', onMouseUp);
|
|
148
|
-
document.body.removeEventListener('touchend', onTouchEnd);
|
|
149
|
-
};
|
|
150
|
-
// this effect should be called only once
|
|
151
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
152
|
-
}, []);
|
|
153
|
-
return {
|
|
154
|
-
handleSlideToPrev: handleSlideToPrev,
|
|
155
|
-
handleSlideToNext: handleSlideToNext,
|
|
156
|
-
handleMouseEnter: handleMouseEnter,
|
|
157
|
-
handleMouseDown: handleMouseDown,
|
|
158
|
-
handleMouseLeave: handleMouseLeave,
|
|
159
|
-
handleTouchStart: handleTouchStart,
|
|
160
|
-
handleTransitionEnd: handleTransitionEnd,
|
|
161
|
-
isAutoPlaying: isAutoPlaying,
|
|
162
|
-
isLinkClicked: isLinkClicked,
|
|
163
|
-
itemsToRender: itemsToRender,
|
|
164
|
-
listRef: listRef,
|
|
165
|
-
listStyles: listStyles,
|
|
166
|
-
toggleAutoPlay: toggleAutoPlay,
|
|
167
|
-
handleFocus: handleFocus,
|
|
168
|
-
handleBlur: handleBlur,
|
|
169
|
-
};
|
|
170
|
-
}
|
|
171
|
-
exports.useAutoPlayCarousel = useAutoPlayCarousel;
|
|
172
|
-
//# sourceMappingURL=useAutoPlayCarousel.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useAutoPlayCarousel.js","sourceRoot":"","sources":["../../../src/HeroCarousel/hooks/useAutoPlayCarousel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
import { useCallback, useEffect, useMemo, useState } from 'react';
|
|
2
|
-
import { useAutoSlide } from './useAutoSlide';
|
|
3
|
-
import { useCarouselFocus } from './useCarouselFocus';
|
|
4
|
-
import { useSliderMoveEvent } from './useSliderMoveEvent';
|
|
5
|
-
import { useSliderTransition } from './useSliderTransition';
|
|
6
|
-
import { useValueRef } from './useValueRef';
|
|
7
|
-
const COPY_COUNT = 5;
|
|
8
|
-
const SWIPE_THRESHOLD_X = 20;
|
|
9
|
-
export function useAutoPlayCarousel({ items, itemLinkClassName, }) {
|
|
10
|
-
const { diffXRef, diffYRef, setDiffX, setDiffY, setStartX, setStartY } = useSliderMoveEvent();
|
|
11
|
-
const [focusOffset, setFocusOffset] = useState(0);
|
|
12
|
-
const [isHovering, setIsHovering] = useState(false);
|
|
13
|
-
const [isLinkClicked, setIsLinkClicked] = useState(false);
|
|
14
|
-
const isHoveringRef = useValueRef(isHovering);
|
|
15
|
-
const slideToNextRef = useValueRef(() => slideToNext());
|
|
16
|
-
const itemCount = useMemo(() => items.length, [items]);
|
|
17
|
-
const getIsCopiedItem = useCallback((index) => {
|
|
18
|
-
return index < COPY_COUNT || index >= itemCount + COPY_COUNT;
|
|
19
|
-
}, [itemCount]);
|
|
20
|
-
const { isAutoPlaying, setIsAutoPlaying, resetAutoSlide, resetTimeOut, toggleAutoPlay, } = useAutoSlide({
|
|
21
|
-
onTimeOut: slideToNextRef.current,
|
|
22
|
-
});
|
|
23
|
-
const { linkRefs, listRef } = useCarouselFocus({
|
|
24
|
-
getIsCopiedItem,
|
|
25
|
-
itemLinkClassName,
|
|
26
|
-
});
|
|
27
|
-
const isAutoPlayingRef = useValueRef(isAutoPlaying);
|
|
28
|
-
const { currentIndexRef, handleTransitionEnd, listStyles, setCurrentIndex, setDisableAutoFocus, setDisableTransition, } = useSliderTransition({
|
|
29
|
-
copyCount: COPY_COUNT,
|
|
30
|
-
itemCount,
|
|
31
|
-
isAutoPlaying,
|
|
32
|
-
linkRefs,
|
|
33
|
-
});
|
|
34
|
-
const itemsToRender = useMemo(
|
|
35
|
-
// generate copy contents on both ends to make carousel look like looping
|
|
36
|
-
() => [
|
|
37
|
-
...items.slice(-COPY_COUNT),
|
|
38
|
-
...items,
|
|
39
|
-
...items.slice(0, COPY_COUNT),
|
|
40
|
-
], [items]);
|
|
41
|
-
const slideToNext = (ignoreHover = false) => {
|
|
42
|
-
const shouldSlideToNext = ((!isHoveringRef.current && isAutoPlayingRef.current) || ignoreHover) &&
|
|
43
|
-
currentIndexRef.current <= itemCount;
|
|
44
|
-
if (shouldSlideToNext) {
|
|
45
|
-
setDisableTransition(false);
|
|
46
|
-
setCurrentIndex(currentIndexRef.current + 1);
|
|
47
|
-
}
|
|
48
|
-
resetAutoSlide();
|
|
49
|
-
};
|
|
50
|
-
const slideToPrev = () => {
|
|
51
|
-
if (currentIndexRef.current >= 0) {
|
|
52
|
-
setDisableTransition(false);
|
|
53
|
-
setCurrentIndex(currentIndexRef.current - 1);
|
|
54
|
-
}
|
|
55
|
-
resetAutoSlide();
|
|
56
|
-
};
|
|
57
|
-
const handleMouseEnter = () => setIsHovering(true);
|
|
58
|
-
const handleMouseLeave = () => {
|
|
59
|
-
setIsHovering(false);
|
|
60
|
-
resetAutoSlide();
|
|
61
|
-
};
|
|
62
|
-
const handleMouseDown = (e) => {
|
|
63
|
-
resetTimeOut();
|
|
64
|
-
setStartX(e.clientX);
|
|
65
|
-
setStartY(e.clientY);
|
|
66
|
-
};
|
|
67
|
-
const onMouseUp = () => {
|
|
68
|
-
if (diffXRef.current > SWIPE_THRESHOLD_X) {
|
|
69
|
-
setIsLinkClicked(false);
|
|
70
|
-
setIsAutoPlaying(false);
|
|
71
|
-
slideToPrev();
|
|
72
|
-
}
|
|
73
|
-
if (diffXRef.current < -SWIPE_THRESHOLD_X) {
|
|
74
|
-
setIsLinkClicked(false);
|
|
75
|
-
setIsAutoPlaying(false);
|
|
76
|
-
slideToNext(true);
|
|
77
|
-
}
|
|
78
|
-
if (diffXRef.current === 0 && diffYRef.current === 0) {
|
|
79
|
-
setIsLinkClicked(true);
|
|
80
|
-
}
|
|
81
|
-
setStartX(null);
|
|
82
|
-
setStartY(null);
|
|
83
|
-
setDiffX(0);
|
|
84
|
-
setDiffY(0);
|
|
85
|
-
};
|
|
86
|
-
const handleTouchStart = (e) => {
|
|
87
|
-
if (!e.touches.length)
|
|
88
|
-
return;
|
|
89
|
-
const touch = e.touches[0];
|
|
90
|
-
resetTimeOut();
|
|
91
|
-
handleMouseEnter();
|
|
92
|
-
setStartX(touch.clientX);
|
|
93
|
-
setStartY(touch.clientY);
|
|
94
|
-
};
|
|
95
|
-
const onTouchEnd = () => {
|
|
96
|
-
setIsHovering(false);
|
|
97
|
-
onMouseUp();
|
|
98
|
-
};
|
|
99
|
-
const handleSlideToPrev = () => {
|
|
100
|
-
resetTimeOut();
|
|
101
|
-
setIsAutoPlaying(false);
|
|
102
|
-
slideToPrev();
|
|
103
|
-
};
|
|
104
|
-
const handleSlideToNext = () => {
|
|
105
|
-
resetTimeOut();
|
|
106
|
-
setIsAutoPlaying(false);
|
|
107
|
-
slideToNext(true);
|
|
108
|
-
};
|
|
109
|
-
const handleFocus = (e) => {
|
|
110
|
-
setIsAutoPlaying(false);
|
|
111
|
-
const { offsetLeft: newFocusOffset } = e.target;
|
|
112
|
-
setFocusOffset(newFocusOffset);
|
|
113
|
-
if (focusOffset === 0) {
|
|
114
|
-
return;
|
|
115
|
-
}
|
|
116
|
-
setDisableAutoFocus(true);
|
|
117
|
-
if (isHovering && diffXRef.current === 0 && diffYRef.current === 0) {
|
|
118
|
-
setIsLinkClicked(true);
|
|
119
|
-
return;
|
|
120
|
-
}
|
|
121
|
-
if (focusOffset > newFocusOffset) {
|
|
122
|
-
setDisableTransition(false);
|
|
123
|
-
setCurrentIndex(currentIndexRef.current - 1);
|
|
124
|
-
}
|
|
125
|
-
if (focusOffset < newFocusOffset) {
|
|
126
|
-
setDisableTransition(false);
|
|
127
|
-
setCurrentIndex(currentIndexRef.current + 1);
|
|
128
|
-
}
|
|
129
|
-
};
|
|
130
|
-
const handleBlur = () => {
|
|
131
|
-
setIsAutoPlaying(true);
|
|
132
|
-
};
|
|
133
|
-
useEffect(() => {
|
|
134
|
-
document.body.addEventListener('mouseup', onMouseUp);
|
|
135
|
-
document.body.addEventListener('touchend', onTouchEnd);
|
|
136
|
-
return () => {
|
|
137
|
-
document.body.removeEventListener('mouseup', onMouseUp);
|
|
138
|
-
document.body.removeEventListener('touchend', onTouchEnd);
|
|
139
|
-
};
|
|
140
|
-
// this effect should be called only once
|
|
141
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
142
|
-
}, []);
|
|
143
|
-
return {
|
|
144
|
-
handleSlideToPrev,
|
|
145
|
-
handleSlideToNext,
|
|
146
|
-
handleMouseEnter,
|
|
147
|
-
handleMouseDown,
|
|
148
|
-
handleMouseLeave,
|
|
149
|
-
handleTouchStart,
|
|
150
|
-
handleTransitionEnd,
|
|
151
|
-
isAutoPlaying,
|
|
152
|
-
isLinkClicked,
|
|
153
|
-
itemsToRender,
|
|
154
|
-
listRef,
|
|
155
|
-
listStyles,
|
|
156
|
-
toggleAutoPlay,
|
|
157
|
-
handleFocus,
|
|
158
|
-
handleBlur,
|
|
159
|
-
};
|
|
160
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
declare type Payload = {
|
|
3
|
-
onTimeOut: () => void;
|
|
4
|
-
};
|
|
5
|
-
export declare function useAutoSlide({ onTimeOut }: Payload): {
|
|
6
|
-
isAutoPlaying: boolean;
|
|
7
|
-
setIsAutoPlaying: import("react").Dispatch<import("react").SetStateAction<boolean>>;
|
|
8
|
-
resetAutoSlide: () => void;
|
|
9
|
-
resetTimeOut: () => void;
|
|
10
|
-
toggleAutoPlay: () => void;
|
|
11
|
-
};
|
|
12
|
-
export {};
|
|
13
|
-
//# sourceMappingURL=useAutoSlide.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useAutoSlide.d.ts","sourceRoot":"","sources":["../../../src/HeroCarousel/hooks/useAutoSlide.ts"],"names":[],"mappings":";AAIA,aAAK,OAAO,GAAG;IACb,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAEF,wBAAgB,YAAY,CAAC,EAAE,SAAS,EAAE,EAAE,OAAO;;;;;;EAgDlD"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.useAutoSlide = void 0;
|
|
4
|
-
var react_1 = require("react");
|
|
5
|
-
var AUTO_SLIDE_SPEED = 4000; // ms
|
|
6
|
-
function useAutoSlide(_a) {
|
|
7
|
-
var onTimeOut = _a.onTimeOut;
|
|
8
|
-
var _b = (0, react_1.useState)(true), isAutoPlaying = _b[0], setIsAutoPlaying = _b[1];
|
|
9
|
-
var _c = (0, react_1.useState)(null), timeoutId = _c[0], setTimeoutId = _c[1];
|
|
10
|
-
var resetTimeOut = (0, react_1.useCallback)(function () {
|
|
11
|
-
if (timeoutId) {
|
|
12
|
-
clearTimeout(timeoutId);
|
|
13
|
-
}
|
|
14
|
-
}, [timeoutId]);
|
|
15
|
-
var activateAutoSlide = function () {
|
|
16
|
-
resetTimeOut();
|
|
17
|
-
var newTimeoutId = setTimeout(function () {
|
|
18
|
-
onTimeOut();
|
|
19
|
-
}, AUTO_SLIDE_SPEED);
|
|
20
|
-
setTimeoutId(newTimeoutId);
|
|
21
|
-
};
|
|
22
|
-
var resetAutoSlide = function () {
|
|
23
|
-
if (isAutoPlaying) {
|
|
24
|
-
activateAutoSlide();
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
var toggleAutoPlay = function () {
|
|
28
|
-
resetTimeOut();
|
|
29
|
-
if (!isAutoPlaying) {
|
|
30
|
-
activateAutoSlide();
|
|
31
|
-
}
|
|
32
|
-
setIsAutoPlaying(function (prev) { return !prev; });
|
|
33
|
-
};
|
|
34
|
-
(0, react_1.useEffect)(function () {
|
|
35
|
-
activateAutoSlide();
|
|
36
|
-
// this effect should be called only once
|
|
37
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
38
|
-
}, []);
|
|
39
|
-
return {
|
|
40
|
-
isAutoPlaying: isAutoPlaying,
|
|
41
|
-
setIsAutoPlaying: setIsAutoPlaying,
|
|
42
|
-
resetAutoSlide: resetAutoSlide,
|
|
43
|
-
resetTimeOut: resetTimeOut,
|
|
44
|
-
toggleAutoPlay: toggleAutoPlay,
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
exports.useAutoSlide = useAutoSlide;
|
|
48
|
-
//# sourceMappingURL=useAutoSlide.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useAutoSlide.js","sourceRoot":"","sources":["../../../src/HeroCarousel/hooks/useAutoSlide.ts"],"names":[],"mappings":";;;AAAA,+BAAyD;AAEzD,IAAM,gBAAgB,GAAG,IAAI,CAAC,CAAC,KAAK;AAMpC,SAAgB,YAAY,CAAC,EAAsB;QAApB,SAAS,eAAA;IAChC,IAAA,KAAoC,IAAA,gBAAQ,EAAC,IAAI,CAAC,EAAjD,aAAa,QAAA,EAAE,gBAAgB,QAAkB,CAAC;IACnD,IAAA,KAA4B,IAAA,gBAAQ,EAAwB,IAAI,CAAC,EAAhE,SAAS,QAAA,EAAE,YAAY,QAAyC,CAAC;IAExE,IAAM,YAAY,GAAG,IAAA,mBAAW,EAAC;QAC/B,IAAI,SAAS,EAAE;YACb,YAAY,CAAC,SAAS,CAAC,CAAC;SACzB;IACH,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,IAAM,iBAAiB,GAAG;QACxB,YAAY,EAAE,CAAC;QAEf,IAAM,YAAY,GAAG,UAAU,CAAC;YAC9B,SAAS,EAAE,CAAC;QACd,CAAC,EAAE,gBAAgB,CAAC,CAAC;QAErB,YAAY,CAAC,YAAY,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,IAAM,cAAc,GAAG;QACrB,IAAI,aAAa,EAAE;YACjB,iBAAiB,EAAE,CAAC;SACrB;IACH,CAAC,CAAC;IAEF,IAAM,cAAc,GAAG;QACrB,YAAY,EAAE,CAAC;QAEf,IAAI,CAAC,aAAa,EAAE;YAClB,iBAAiB,EAAE,CAAC;SACrB;QACD,gBAAgB,CAAC,UAAC,IAAI,IAAK,OAAA,CAAC,IAAI,EAAL,CAAK,CAAC,CAAC;IACpC,CAAC,CAAC;IAEF,IAAA,iBAAS,EAAC;QACR,iBAAiB,EAAE,CAAC;QACpB,yCAAyC;QACzC,uDAAuD;IACzD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO;QACL,aAAa,eAAA;QACb,gBAAgB,kBAAA;QAChB,cAAc,gBAAA;QACd,YAAY,cAAA;QACZ,cAAc,gBAAA;KACf,CAAC;AACJ,CAAC;AAhDD,oCAgDC"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { useCallback, useEffect, useState } from 'react';
|
|
2
|
-
const AUTO_SLIDE_SPEED = 4000; // ms
|
|
3
|
-
export function useAutoSlide({ onTimeOut }) {
|
|
4
|
-
const [isAutoPlaying, setIsAutoPlaying] = useState(true);
|
|
5
|
-
const [timeoutId, setTimeoutId] = useState(null);
|
|
6
|
-
const resetTimeOut = useCallback(() => {
|
|
7
|
-
if (timeoutId) {
|
|
8
|
-
clearTimeout(timeoutId);
|
|
9
|
-
}
|
|
10
|
-
}, [timeoutId]);
|
|
11
|
-
const activateAutoSlide = () => {
|
|
12
|
-
resetTimeOut();
|
|
13
|
-
const newTimeoutId = setTimeout(() => {
|
|
14
|
-
onTimeOut();
|
|
15
|
-
}, AUTO_SLIDE_SPEED);
|
|
16
|
-
setTimeoutId(newTimeoutId);
|
|
17
|
-
};
|
|
18
|
-
const resetAutoSlide = () => {
|
|
19
|
-
if (isAutoPlaying) {
|
|
20
|
-
activateAutoSlide();
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
const toggleAutoPlay = () => {
|
|
24
|
-
resetTimeOut();
|
|
25
|
-
if (!isAutoPlaying) {
|
|
26
|
-
activateAutoSlide();
|
|
27
|
-
}
|
|
28
|
-
setIsAutoPlaying((prev) => !prev);
|
|
29
|
-
};
|
|
30
|
-
useEffect(() => {
|
|
31
|
-
activateAutoSlide();
|
|
32
|
-
// this effect should be called only once
|
|
33
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
34
|
-
}, []);
|
|
35
|
-
return {
|
|
36
|
-
isAutoPlaying,
|
|
37
|
-
setIsAutoPlaying,
|
|
38
|
-
resetAutoSlide,
|
|
39
|
-
resetTimeOut,
|
|
40
|
-
toggleAutoPlay,
|
|
41
|
-
};
|
|
42
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
declare type Payload = {
|
|
3
|
-
getIsCopiedItem: (index: number) => boolean;
|
|
4
|
-
itemLinkClassName: string;
|
|
5
|
-
};
|
|
6
|
-
export declare function useCarouselFocus({ getIsCopiedItem, itemLinkClassName, }: Payload): {
|
|
7
|
-
linkRefs: import("react").MutableRefObject<HTMLLinkElement[]>;
|
|
8
|
-
listRef: import("react").RefObject<HTMLUListElement>;
|
|
9
|
-
};
|
|
10
|
-
export {};
|
|
11
|
-
//# sourceMappingURL=useCarouselFocus.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useCarouselFocus.d.ts","sourceRoot":"","sources":["../../../src/HeroCarousel/hooks/useCarouselFocus.ts"],"names":[],"mappings":";AAEA,aAAK,OAAO,GAAG;IACb,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5C,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,EAC/B,eAAe,EACf,iBAAiB,GAClB,EAAE,OAAO;;;EA+BT"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.useCarouselFocus = void 0;
|
|
4
|
-
var react_1 = require("react");
|
|
5
|
-
function useCarouselFocus(_a) {
|
|
6
|
-
var getIsCopiedItem = _a.getIsCopiedItem, itemLinkClassName = _a.itemLinkClassName;
|
|
7
|
-
var listRef = (0, react_1.useRef)(null);
|
|
8
|
-
var linkRefs = (0, react_1.useRef)([]);
|
|
9
|
-
(0, react_1.useEffect)(function () {
|
|
10
|
-
if (!listRef.current)
|
|
11
|
-
return;
|
|
12
|
-
var linkElements = listRef.current.querySelectorAll("a.".concat(itemLinkClassName));
|
|
13
|
-
if (!linkElements)
|
|
14
|
-
return;
|
|
15
|
-
// NOTE: use NodeList forEach as IE polyfill
|
|
16
|
-
Array.prototype.forEach.call(linkElements, function (link, index) {
|
|
17
|
-
linkRefs.current.push(link);
|
|
18
|
-
link.setAttribute('tabindex', getIsCopiedItem(index) ? '-1' : '0');
|
|
19
|
-
link.setAttribute('aria-hidden', getIsCopiedItem(index) ? 'true' : 'false');
|
|
20
|
-
});
|
|
21
|
-
}, [getIsCopiedItem, itemLinkClassName]);
|
|
22
|
-
return {
|
|
23
|
-
linkRefs: linkRefs,
|
|
24
|
-
listRef: listRef,
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
exports.useCarouselFocus = useCarouselFocus;
|
|
28
|
-
//# sourceMappingURL=useCarouselFocus.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useCarouselFocus.js","sourceRoot":"","sources":["../../../src/HeroCarousel/hooks/useCarouselFocus.ts"],"names":[],"mappings":";;;AAAA,+BAA0C;AAO1C,SAAgB,gBAAgB,CAAC,EAGvB;QAFR,eAAe,qBAAA,EACf,iBAAiB,uBAAA;IAEjB,IAAM,OAAO,GAAG,IAAA,cAAM,EAAmB,IAAI,CAAC,CAAC;IAC/C,IAAM,QAAQ,GAAG,IAAA,cAAM,EAAoB,EAAE,CAAC,CAAC;IAE/C,IAAA,iBAAS,EAAC;QACR,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO;QAE7B,IAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,gBAAgB,CACnD,YAAK,iBAAiB,CAAE,CACzB,CAAC;QAEF,IAAI,CAAC,YAAY;YAAE,OAAO;QAE1B,4CAA4C;QAC5C,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAC1B,YAAY,EACZ,UAAC,IAAqB,EAAE,KAAK;YAC3B,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACnE,IAAI,CAAC,YAAY,CACf,aAAa,EACb,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAC1C,CAAC;QACJ,CAAC,CACF,CAAC;IACJ,CAAC,EAAE,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAEzC,OAAO;QACL,QAAQ,UAAA;QACR,OAAO,SAAA;KACR,CAAC;AACJ,CAAC;AAlCD,4CAkCC"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { useEffect, useRef } from 'react';
|
|
2
|
-
export function useCarouselFocus({ getIsCopiedItem, itemLinkClassName, }) {
|
|
3
|
-
const listRef = useRef(null);
|
|
4
|
-
const linkRefs = useRef([]);
|
|
5
|
-
useEffect(() => {
|
|
6
|
-
if (!listRef.current)
|
|
7
|
-
return;
|
|
8
|
-
const linkElements = listRef.current.querySelectorAll(`a.${itemLinkClassName}`);
|
|
9
|
-
if (!linkElements)
|
|
10
|
-
return;
|
|
11
|
-
// NOTE: use NodeList forEach as IE polyfill
|
|
12
|
-
Array.prototype.forEach.call(linkElements, (link, index) => {
|
|
13
|
-
linkRefs.current.push(link);
|
|
14
|
-
link.setAttribute('tabindex', getIsCopiedItem(index) ? '-1' : '0');
|
|
15
|
-
link.setAttribute('aria-hidden', getIsCopiedItem(index) ? 'true' : 'false');
|
|
16
|
-
});
|
|
17
|
-
}, [getIsCopiedItem, itemLinkClassName]);
|
|
18
|
-
return {
|
|
19
|
-
linkRefs,
|
|
20
|
-
listRef,
|
|
21
|
-
};
|
|
22
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
export declare function useSliderMoveEvent(): {
|
|
3
|
-
diffXRef: import("react").MutableRefObject<number>;
|
|
4
|
-
diffYRef: import("react").MutableRefObject<number>;
|
|
5
|
-
setDiffX: import("react").Dispatch<import("react").SetStateAction<number>>;
|
|
6
|
-
setDiffY: import("react").Dispatch<import("react").SetStateAction<number>>;
|
|
7
|
-
setStartX: import("react").Dispatch<import("react").SetStateAction<number | null>>;
|
|
8
|
-
setStartY: import("react").Dispatch<import("react").SetStateAction<number | null>>;
|
|
9
|
-
};
|
|
10
|
-
//# sourceMappingURL=useSliderMoveEvent.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useSliderMoveEvent.d.ts","sourceRoot":"","sources":["../../../src/HeroCarousel/hooks/useSliderMoveEvent.ts"],"names":[],"mappings":";AAGA,wBAAgB,kBAAkB;;;;;;;EAwDjC"}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.useSliderMoveEvent = void 0;
|
|
4
|
-
var react_1 = require("react");
|
|
5
|
-
var useValueRef_1 = require("./useValueRef");
|
|
6
|
-
function useSliderMoveEvent() {
|
|
7
|
-
var _a = (0, react_1.useState)(0), diffX = _a[0], setDiffX = _a[1];
|
|
8
|
-
var _b = (0, react_1.useState)(0), diffY = _b[0], setDiffY = _b[1];
|
|
9
|
-
var _c = (0, react_1.useState)(null), startX = _c[0], setStartX = _c[1];
|
|
10
|
-
var _d = (0, react_1.useState)(null), startY = _d[0], setStartY = _d[1];
|
|
11
|
-
var diffXRef = (0, useValueRef_1.useValueRef)(diffX);
|
|
12
|
-
var diffYRef = (0, useValueRef_1.useValueRef)(diffY);
|
|
13
|
-
var startXRef = (0, useValueRef_1.useValueRef)(startX);
|
|
14
|
-
var startYRef = (0, useValueRef_1.useValueRef)(startY);
|
|
15
|
-
var onMouseMove = function (e) {
|
|
16
|
-
if (startXRef.current === null || startYRef.current === null)
|
|
17
|
-
return;
|
|
18
|
-
e.preventDefault();
|
|
19
|
-
setDiffX(e.clientX - startXRef.current);
|
|
20
|
-
setDiffY(e.clientY - startYRef.current);
|
|
21
|
-
};
|
|
22
|
-
var onTouchMove = function (e) {
|
|
23
|
-
if (startXRef.current === null ||
|
|
24
|
-
startYRef.current === null ||
|
|
25
|
-
!e.touches.length) {
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
var touch = e.touches[0];
|
|
29
|
-
setDiffX(touch.clientX - startXRef.current);
|
|
30
|
-
setDiffY(touch.clientY - startYRef.current);
|
|
31
|
-
};
|
|
32
|
-
(0, react_1.useEffect)(function () {
|
|
33
|
-
document.body.addEventListener('mousemove', onMouseMove);
|
|
34
|
-
document.body.addEventListener('touchmove', onTouchMove, {
|
|
35
|
-
passive: true,
|
|
36
|
-
});
|
|
37
|
-
return function () {
|
|
38
|
-
document.body.removeEventListener('mousemove', onMouseMove);
|
|
39
|
-
document.body.removeEventListener('touchmove', onTouchMove);
|
|
40
|
-
};
|
|
41
|
-
// this effect should be called only once
|
|
42
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
43
|
-
}, []);
|
|
44
|
-
return {
|
|
45
|
-
diffXRef: diffXRef,
|
|
46
|
-
diffYRef: diffYRef,
|
|
47
|
-
setDiffX: setDiffX,
|
|
48
|
-
setDiffY: setDiffY,
|
|
49
|
-
setStartX: setStartX,
|
|
50
|
-
setStartY: setStartY,
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
exports.useSliderMoveEvent = useSliderMoveEvent;
|
|
54
|
-
//# sourceMappingURL=useSliderMoveEvent.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useSliderMoveEvent.js","sourceRoot":"","sources":["../../../src/HeroCarousel/hooks/useSliderMoveEvent.ts"],"names":[],"mappings":";;;AAAA,+BAA4C;AAC5C,6CAA4C;AAE5C,SAAgB,kBAAkB;IAC1B,IAAA,KAAoB,IAAA,gBAAQ,EAAC,CAAC,CAAC,EAA9B,KAAK,QAAA,EAAE,QAAQ,QAAe,CAAC;IAChC,IAAA,KAAoB,IAAA,gBAAQ,EAAC,CAAC,CAAC,EAA9B,KAAK,QAAA,EAAE,QAAQ,QAAe,CAAC;IAChC,IAAA,KAAsB,IAAA,gBAAQ,EAAgB,IAAI,CAAC,EAAlD,MAAM,QAAA,EAAE,SAAS,QAAiC,CAAC;IACpD,IAAA,KAAsB,IAAA,gBAAQ,EAAgB,IAAI,CAAC,EAAlD,MAAM,QAAA,EAAE,SAAS,QAAiC,CAAC;IAC1D,IAAM,QAAQ,GAAG,IAAA,yBAAW,EAAC,KAAK,CAAC,CAAC;IACpC,IAAM,QAAQ,GAAG,IAAA,yBAAW,EAAC,KAAK,CAAC,CAAC;IACpC,IAAM,SAAS,GAAG,IAAA,yBAAW,EAAC,MAAM,CAAC,CAAC;IACtC,IAAM,SAAS,GAAG,IAAA,yBAAW,EAAC,MAAM,CAAC,CAAC;IAEtC,IAAM,WAAW,GAAG,UAAC,CAAa;QAChC,IAAI,SAAS,CAAC,OAAO,KAAK,IAAI,IAAI,SAAS,CAAC,OAAO,KAAK,IAAI;YAAE,OAAO;QAErE,CAAC,CAAC,cAAc,EAAE,CAAC;QAEnB,QAAQ,CAAC,CAAC,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QACxC,QAAQ,CAAC,CAAC,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC,CAAC;IAEF,IAAM,WAAW,GAAG,UAAC,CAAa;QAChC,IACE,SAAS,CAAC,OAAO,KAAK,IAAI;YAC1B,SAAS,CAAC,OAAO,KAAK,IAAI;YAC1B,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EACjB;YACA,OAAO;SACR;QAED,IAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAE3B,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QAC5C,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC,CAAC;IAEF,IAAA,iBAAS,EAAC;QACR,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACzD,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,WAAW,EAAE;YACvD,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QAEH,OAAO;YACL,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YAC5D,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAC9D,CAAC,CAAC;QACF,yCAAyC;QACzC,uDAAuD;IACzD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO;QACL,QAAQ,UAAA;QACR,QAAQ,UAAA;QACR,QAAQ,UAAA;QACR,QAAQ,UAAA;QACR,SAAS,WAAA;QACT,SAAS,WAAA;KACV,CAAC;AACJ,CAAC;AAxDD,gDAwDC"}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { useEffect, useState } from 'react';
|
|
2
|
-
import { useValueRef } from './useValueRef';
|
|
3
|
-
export function useSliderMoveEvent() {
|
|
4
|
-
const [diffX, setDiffX] = useState(0);
|
|
5
|
-
const [diffY, setDiffY] = useState(0);
|
|
6
|
-
const [startX, setStartX] = useState(null);
|
|
7
|
-
const [startY, setStartY] = useState(null);
|
|
8
|
-
const diffXRef = useValueRef(diffX);
|
|
9
|
-
const diffYRef = useValueRef(diffY);
|
|
10
|
-
const startXRef = useValueRef(startX);
|
|
11
|
-
const startYRef = useValueRef(startY);
|
|
12
|
-
const onMouseMove = (e) => {
|
|
13
|
-
if (startXRef.current === null || startYRef.current === null)
|
|
14
|
-
return;
|
|
15
|
-
e.preventDefault();
|
|
16
|
-
setDiffX(e.clientX - startXRef.current);
|
|
17
|
-
setDiffY(e.clientY - startYRef.current);
|
|
18
|
-
};
|
|
19
|
-
const onTouchMove = (e) => {
|
|
20
|
-
if (startXRef.current === null ||
|
|
21
|
-
startYRef.current === null ||
|
|
22
|
-
!e.touches.length) {
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
const touch = e.touches[0];
|
|
26
|
-
setDiffX(touch.clientX - startXRef.current);
|
|
27
|
-
setDiffY(touch.clientY - startYRef.current);
|
|
28
|
-
};
|
|
29
|
-
useEffect(() => {
|
|
30
|
-
document.body.addEventListener('mousemove', onMouseMove);
|
|
31
|
-
document.body.addEventListener('touchmove', onTouchMove, {
|
|
32
|
-
passive: true,
|
|
33
|
-
});
|
|
34
|
-
return () => {
|
|
35
|
-
document.body.removeEventListener('mousemove', onMouseMove);
|
|
36
|
-
document.body.removeEventListener('touchmove', onTouchMove);
|
|
37
|
-
};
|
|
38
|
-
// this effect should be called only once
|
|
39
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
40
|
-
}, []);
|
|
41
|
-
return {
|
|
42
|
-
diffXRef,
|
|
43
|
-
diffYRef,
|
|
44
|
-
setDiffX,
|
|
45
|
-
setDiffY,
|
|
46
|
-
setStartX,
|
|
47
|
-
setStartY,
|
|
48
|
-
};
|
|
49
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { MutableRefObject } from 'react';
|
|
2
|
-
declare type Payload = {
|
|
3
|
-
copyCount: number;
|
|
4
|
-
itemCount: number;
|
|
5
|
-
linkRefs: MutableRefObject<HTMLLinkElement[]>;
|
|
6
|
-
isAutoPlaying: boolean;
|
|
7
|
-
};
|
|
8
|
-
export declare function useSliderTransition({ copyCount, itemCount, linkRefs, isAutoPlaying, }: Payload): {
|
|
9
|
-
currentIndexRef: MutableRefObject<number>;
|
|
10
|
-
handleTransitionEnd: () => void;
|
|
11
|
-
listStyles: {
|
|
12
|
-
transition: string;
|
|
13
|
-
transform: string;
|
|
14
|
-
};
|
|
15
|
-
setCurrentIndex: import("react").Dispatch<import("react").SetStateAction<number>>;
|
|
16
|
-
setDisableAutoFocus: import("react").Dispatch<import("react").SetStateAction<boolean>>;
|
|
17
|
-
setDisableTransition: import("react").Dispatch<import("react").SetStateAction<boolean>>;
|
|
18
|
-
};
|
|
19
|
-
export {};
|
|
20
|
-
//# sourceMappingURL=useSliderTransition.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useSliderTransition.d.ts","sourceRoot":"","sources":["../../../src/HeroCarousel/hooks/useSliderTransition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAG5D,aAAK,OAAO,GAAG;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,gBAAgB,CAAC,eAAe,EAAE,CAAC,CAAC;IAC9C,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,EAClC,SAAS,EACT,SAAS,EACT,QAAQ,EACR,aAAa,GACd,EAAE,OAAO;;;;;;;;;;EAgCT"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.useSliderTransition = void 0;
|
|
4
|
-
var react_1 = require("react");
|
|
5
|
-
var useValueRef_1 = require("./useValueRef");
|
|
6
|
-
function useSliderTransition(_a) {
|
|
7
|
-
var copyCount = _a.copyCount, itemCount = _a.itemCount, linkRefs = _a.linkRefs, isAutoPlaying = _a.isAutoPlaying;
|
|
8
|
-
var _b = (0, react_1.useState)(0), currentIndex = _b[0], setCurrentIndex = _b[1];
|
|
9
|
-
var currentIndexRef = (0, useValueRef_1.useValueRef)(currentIndex);
|
|
10
|
-
var _c = (0, react_1.useState)(false), disableTransition = _c[0], setDisableTransition = _c[1];
|
|
11
|
-
var _d = (0, react_1.useState)(false), disableAutoFocus = _d[0], setDisableAutoFocus = _d[1];
|
|
12
|
-
var listStyles = (0, react_1.useMemo)(function () {
|
|
13
|
-
return {
|
|
14
|
-
transition: disableTransition ? 'none' : '',
|
|
15
|
-
transform: "translate3d(".concat(-100 * (currentIndex + copyCount), "%, 0, 0) translateX(0)"),
|
|
16
|
-
};
|
|
17
|
-
}, [copyCount, currentIndex, disableTransition]);
|
|
18
|
-
var handleTransitionEnd = function () {
|
|
19
|
-
if (!isAutoPlaying && !disableAutoFocus) {
|
|
20
|
-
linkRefs.current[currentIndex + copyCount].focus();
|
|
21
|
-
}
|
|
22
|
-
// if reach contents end, rewind without transition to make it look like looping
|
|
23
|
-
setDisableTransition(true);
|
|
24
|
-
setCurrentIndex(function (prev) { return (prev + itemCount) % itemCount; });
|
|
25
|
-
};
|
|
26
|
-
return {
|
|
27
|
-
currentIndexRef: currentIndexRef,
|
|
28
|
-
handleTransitionEnd: handleTransitionEnd,
|
|
29
|
-
listStyles: listStyles,
|
|
30
|
-
setCurrentIndex: setCurrentIndex,
|
|
31
|
-
setDisableAutoFocus: setDisableAutoFocus,
|
|
32
|
-
setDisableTransition: setDisableTransition,
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
exports.useSliderTransition = useSliderTransition;
|
|
36
|
-
//# sourceMappingURL=useSliderTransition.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useSliderTransition.js","sourceRoot":"","sources":["../../../src/HeroCarousel/hooks/useSliderTransition.ts"],"names":[],"mappings":";;;AAAA,+BAA4D;AAC5D,6CAA4C;AAS5C,SAAgB,mBAAmB,CAAC,EAK1B;QAJR,SAAS,eAAA,EACT,SAAS,eAAA,EACT,QAAQ,cAAA,EACR,aAAa,mBAAA;IAEP,IAAA,KAAkC,IAAA,gBAAQ,EAAC,CAAC,CAAC,EAA5C,YAAY,QAAA,EAAE,eAAe,QAAe,CAAC;IACpD,IAAM,eAAe,GAAG,IAAA,yBAAW,EAAC,YAAY,CAAC,CAAC;IAC5C,IAAA,KAA4C,IAAA,gBAAQ,EAAC,KAAK,CAAC,EAA1D,iBAAiB,QAAA,EAAE,oBAAoB,QAAmB,CAAC;IAC5D,IAAA,KAA0C,IAAA,gBAAQ,EAAC,KAAK,CAAC,EAAxD,gBAAgB,QAAA,EAAE,mBAAmB,QAAmB,CAAC;IAEhE,IAAM,UAAU,GAAG,IAAA,eAAO,EAAC;QACzB,OAAO;YACL,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YAC3C,SAAS,EAAE,sBACT,CAAC,GAAG,GAAG,CAAC,YAAY,GAAG,SAAS,CAAC,2BACX;SACzB,CAAC;IACJ,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAEjD,IAAM,mBAAmB,GAAG;QAC1B,IAAI,CAAC,aAAa,IAAI,CAAC,gBAAgB,EAAE;YACvC,QAAQ,CAAC,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC,KAAK,EAAE,CAAC;SACpD;QACD,gFAAgF;QAChF,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC3B,eAAe,CAAC,UAAC,IAAI,IAAK,OAAA,CAAC,IAAI,GAAG,SAAS,CAAC,GAAG,SAAS,EAA9B,CAA8B,CAAC,CAAC;IAC5D,CAAC,CAAC;IAEF,OAAO;QACL,eAAe,iBAAA;QACf,mBAAmB,qBAAA;QACnB,UAAU,YAAA;QACV,eAAe,iBAAA;QACf,mBAAmB,qBAAA;QACnB,oBAAoB,sBAAA;KACrB,CAAC;AACJ,CAAC;AArCD,kDAqCC"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { useMemo, useState } from 'react';
|
|
2
|
-
import { useValueRef } from './useValueRef';
|
|
3
|
-
export function useSliderTransition({ copyCount, itemCount, linkRefs, isAutoPlaying, }) {
|
|
4
|
-
const [currentIndex, setCurrentIndex] = useState(0);
|
|
5
|
-
const currentIndexRef = useValueRef(currentIndex);
|
|
6
|
-
const [disableTransition, setDisableTransition] = useState(false);
|
|
7
|
-
const [disableAutoFocus, setDisableAutoFocus] = useState(false);
|
|
8
|
-
const listStyles = useMemo(() => {
|
|
9
|
-
return {
|
|
10
|
-
transition: disableTransition ? 'none' : '',
|
|
11
|
-
transform: `translate3d(${-100 * (currentIndex + copyCount)}%, 0, 0) translateX(0)`,
|
|
12
|
-
};
|
|
13
|
-
}, [copyCount, currentIndex, disableTransition]);
|
|
14
|
-
const handleTransitionEnd = () => {
|
|
15
|
-
if (!isAutoPlaying && !disableAutoFocus) {
|
|
16
|
-
linkRefs.current[currentIndex + copyCount].focus();
|
|
17
|
-
}
|
|
18
|
-
// if reach contents end, rewind without transition to make it look like looping
|
|
19
|
-
setDisableTransition(true);
|
|
20
|
-
setCurrentIndex((prev) => (prev + itemCount) % itemCount);
|
|
21
|
-
};
|
|
22
|
-
return {
|
|
23
|
-
currentIndexRef,
|
|
24
|
-
handleTransitionEnd,
|
|
25
|
-
listStyles,
|
|
26
|
-
setCurrentIndex,
|
|
27
|
-
setDisableAutoFocus,
|
|
28
|
-
setDisableTransition,
|
|
29
|
-
};
|
|
30
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useValueRef.d.ts","sourceRoot":"","sources":["../../../src/HeroCarousel/hooks/useValueRef.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAE5D,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAQ5D"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.useValueRef = void 0;
|
|
4
|
-
var react_1 = require("react");
|
|
5
|
-
function useValueRef(value) {
|
|
6
|
-
var ref = (0, react_1.useRef)(value);
|
|
7
|
-
(0, react_1.useEffect)(function () {
|
|
8
|
-
ref.current = value;
|
|
9
|
-
}, [value]);
|
|
10
|
-
return ref;
|
|
11
|
-
}
|
|
12
|
-
exports.useValueRef = useValueRef;
|
|
13
|
-
//# sourceMappingURL=useValueRef.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useValueRef.js","sourceRoot":"","sources":["../../../src/HeroCarousel/hooks/useValueRef.ts"],"names":[],"mappings":";;;AAAA,+BAA4D;AAE5D,SAAgB,WAAW,CAAI,KAAQ;IACrC,IAAM,GAAG,GAAG,IAAA,cAAM,EAAC,KAAK,CAAC,CAAC;IAE1B,IAAA,iBAAS,EAAC;QACR,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;IACtB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,OAAO,GAAG,CAAC;AACb,CAAC;AARD,kCAQC"}
|