@semcore/carousel 2.1.5 → 2.1.6
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 +6 -0
- package/lib/cjs/Carousel.js +47 -28
- package/lib/cjs/Carousel.js.map +1 -1
- package/lib/es6/Carousel.js +47 -28
- package/lib/es6/Carousel.js.map +1 -1
- package/package.json +7 -5
- package/src/Carousel.jsx +22 -28
package/CHANGELOG.md
CHANGED
package/lib/cjs/Carousel.js
CHANGED
|
@@ -37,6 +37,8 @@ var _l = _interopRequireDefault(require("@semcore/icon/ChevronRight/l"));
|
|
|
37
37
|
|
|
38
38
|
var _l2 = _interopRequireDefault(require("@semcore/icon/ChevronLeft/l"));
|
|
39
39
|
|
|
40
|
+
var _uniqueID = _interopRequireDefault(require("@semcore/utils/lib/uniqueID"));
|
|
41
|
+
|
|
40
42
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
41
43
|
|
|
42
44
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
@@ -54,22 +56,22 @@ var style = (
|
|
|
54
56
|
/*__reshadow_css_start__*/
|
|
55
57
|
_core.sstyled.insert(
|
|
56
58
|
/*__inner_css_start__*/
|
|
57
|
-
"
|
|
59
|
+
".___SCarousel_1hq9h_gg_{overflow:hidden;outline:none}.___SContainer_1hq9h_gg_{display:flex;transition:transform var(--duration_1hq9h) ease-in-out}.___SItem_1hq9h_gg_{flex:0 0 100%;max-width:100%;box-sizing:border-box;transform:var(--transform_1hq9h);border-radius:6px;overflow:hidden}.___SIndicators_1hq9h_gg_{display:flex;justify-content:center;margin-top:16px}.___SIndicator_1hq9h_gg_{margin:0 6px;cursor:pointer;display:block;width:12px;height:12px;border-radius:6px;background-color:#a9abb6;opacity:.3;-o-object-fit:cover;object-fit:cover;transition:opacity .1s ease-in-out}.___SIndicator_1hq9h_gg_:hover{opacity:.6}.___SIndicator_1hq9h_gg_.__active_1hq9h_gg_{opacity:1}.___SNext_1hq9h_gg_,.___SPrev_1hq9h_gg_{display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.___SPrev_1hq9h_gg_{margin-right:12px}.___SNext_1hq9h_gg_{margin-left:12px}.___SNext_1hq9h_gg_.__disabled_1hq9h_gg_,.___SPrev_1hq9h_gg_.__disabled_1hq9h_gg_{opacity:0.3;cursor:default;pointer-events:none}@media (prefers-reduced-motion){.___SContainer_1hq9h_gg_{transition:none}}"
|
|
58
60
|
/*__inner_css_end__*/
|
|
59
|
-
, "
|
|
61
|
+
, "1hq9h_gg_")
|
|
60
62
|
/*__reshadow_css_end__*/
|
|
61
63
|
, {
|
|
62
|
-
"__SCarousel": "
|
|
63
|
-
"__SContainer": "
|
|
64
|
-
"--duration": "--
|
|
65
|
-
"__SItem": "
|
|
66
|
-
"--transform": "--
|
|
67
|
-
"__SIndicators": "
|
|
68
|
-
"__SIndicator": "
|
|
69
|
-
"_active": "
|
|
70
|
-
"
|
|
71
|
-
"
|
|
72
|
-
"_disabled": "
|
|
64
|
+
"__SCarousel": "___SCarousel_1hq9h_gg_",
|
|
65
|
+
"__SContainer": "___SContainer_1hq9h_gg_",
|
|
66
|
+
"--duration": "--duration_1hq9h",
|
|
67
|
+
"__SItem": "___SItem_1hq9h_gg_",
|
|
68
|
+
"--transform": "--transform_1hq9h",
|
|
69
|
+
"__SIndicators": "___SIndicators_1hq9h_gg_",
|
|
70
|
+
"__SIndicator": "___SIndicator_1hq9h_gg_",
|
|
71
|
+
"_active": "__active_1hq9h_gg_",
|
|
72
|
+
"__SNext": "___SNext_1hq9h_gg_",
|
|
73
|
+
"__SPrev": "___SPrev_1hq9h_gg_",
|
|
74
|
+
"_disabled": "__disabled_1hq9h_gg_"
|
|
73
75
|
});
|
|
74
76
|
var position = {
|
|
75
77
|
getItemMin: function getItemMin(items) {
|
|
@@ -129,7 +131,7 @@ var CarouselRoot = /*#__PURE__*/function (_Component) {
|
|
|
129
131
|
|
|
130
132
|
}
|
|
131
133
|
});
|
|
132
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "
|
|
134
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "toggleItem", function (item) {
|
|
133
135
|
var removeItem = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
134
136
|
var index = _this.asProps.index;
|
|
135
137
|
var items = _this.state.items;
|
|
@@ -402,9 +404,11 @@ var CarouselRoot = /*#__PURE__*/function (_Component) {
|
|
|
402
404
|
}
|
|
403
405
|
}, {
|
|
404
406
|
key: "getItemProps",
|
|
405
|
-
value: function getItemProps() {
|
|
407
|
+
value: function getItemProps(_, index) {
|
|
406
408
|
return {
|
|
407
|
-
|
|
409
|
+
toggleItem: this.toggleItem,
|
|
410
|
+
uid: this.asProps.uid,
|
|
411
|
+
index: index
|
|
408
412
|
};
|
|
409
413
|
}
|
|
410
414
|
}, {
|
|
@@ -471,12 +475,16 @@ var CarouselRoot = /*#__PURE__*/function (_Component) {
|
|
|
471
475
|
var SCarousel = _flexBox.Box;
|
|
472
476
|
var _this$asProps5 = this.asProps,
|
|
473
477
|
styles = _this$asProps5.styles,
|
|
474
|
-
Children = _this$asProps5.Children
|
|
478
|
+
Children = _this$asProps5.Children,
|
|
479
|
+
index = _this$asProps5.index,
|
|
480
|
+
uid = _this$asProps5.uid;
|
|
475
481
|
return _ref8 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SCarousel, _ref8.cn("SCarousel", _objectSpread({}, (0, _core.assignProps)({
|
|
476
482
|
"onKeyDown": this.handlerKeyDown,
|
|
477
483
|
"tabIndex": 0,
|
|
478
484
|
"onTouchStart": this.handlerTouchStart,
|
|
479
|
-
"onTouchEnd": this.handlerTouchEnd
|
|
485
|
+
"onTouchEnd": this.handlerTouchEnd,
|
|
486
|
+
"role": "list",
|
|
487
|
+
"aria-activedescendant": "igc-".concat(uid, "-carousel-item-").concat(index)
|
|
480
488
|
}, _ref))), /*#__PURE__*/_react["default"].createElement(Children, _ref8.cn("Children", {})));
|
|
481
489
|
}
|
|
482
490
|
}]);
|
|
@@ -491,6 +499,7 @@ var CarouselRoot = /*#__PURE__*/function (_Component) {
|
|
|
491
499
|
bounded: false
|
|
492
500
|
});
|
|
493
501
|
(0, _defineProperty2["default"])(CarouselRoot, "style", style);
|
|
502
|
+
(0, _defineProperty2["default"])(CarouselRoot, "enhance", [(0, _uniqueID["default"])()]);
|
|
494
503
|
|
|
495
504
|
var Container = function Container(props) {
|
|
496
505
|
var _ref2 = arguments[0],
|
|
@@ -509,25 +518,29 @@ var Item = function Item(props) {
|
|
|
509
518
|
_ref10;
|
|
510
519
|
|
|
511
520
|
var styles = props.styles,
|
|
512
|
-
|
|
521
|
+
toggleItem = props.toggleItem,
|
|
522
|
+
index = props.index,
|
|
523
|
+
uid = props.uid;
|
|
513
524
|
var SItem = _flexBox.Box;
|
|
514
525
|
|
|
515
526
|
var refItem = /*#__PURE__*/_react["default"].createRef();
|
|
516
527
|
|
|
517
528
|
(0, _react.useEffect)(function () {
|
|
518
529
|
// add item
|
|
519
|
-
|
|
530
|
+
toggleItem({
|
|
520
531
|
node: refItem.current
|
|
521
532
|
});
|
|
522
533
|
return function () {
|
|
523
534
|
// remove item
|
|
524
|
-
|
|
535
|
+
toggleItem({
|
|
525
536
|
node: refItem.current
|
|
526
537
|
}, true);
|
|
527
538
|
};
|
|
528
539
|
}, []);
|
|
529
540
|
return _ref10 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SItem, _ref10.cn("SItem", _objectSpread({}, (0, _core.assignProps)({
|
|
530
|
-
"ref": refItem
|
|
541
|
+
"ref": refItem,
|
|
542
|
+
"role": "listitem",
|
|
543
|
+
"id": "igc-".concat(uid, "-carousel-item-").concat(index)
|
|
531
544
|
}, _ref3))));
|
|
532
545
|
};
|
|
533
546
|
|
|
@@ -537,7 +550,9 @@ var Prev = function Prev(props) {
|
|
|
537
550
|
|
|
538
551
|
var styles = props.styles;
|
|
539
552
|
var SPrev = _flexBox.Box;
|
|
540
|
-
return _ref11 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SPrev, _ref11.cn("SPrev", _objectSpread({}, (0, _core.assignProps)({
|
|
553
|
+
return _ref11 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SPrev, _ref11.cn("SPrev", _objectSpread({}, (0, _core.assignProps)({
|
|
554
|
+
"aria-hidden": "true"
|
|
555
|
+
}, _ref4))));
|
|
541
556
|
};
|
|
542
557
|
|
|
543
558
|
Prev.defaultProps = function () {
|
|
@@ -545,7 +560,6 @@ Prev.defaultProps = function () {
|
|
|
545
560
|
children: /*#__PURE__*/_react["default"].createElement(_l2["default"], {
|
|
546
561
|
interactive: true,
|
|
547
562
|
color: "gray-300",
|
|
548
|
-
"aria-hidden": true,
|
|
549
563
|
"aria-label": "Go to the previous item"
|
|
550
564
|
}),
|
|
551
565
|
top: 0
|
|
@@ -558,7 +572,9 @@ var Next = function Next(props) {
|
|
|
558
572
|
|
|
559
573
|
var styles = props.styles;
|
|
560
574
|
var SNext = _flexBox.Box;
|
|
561
|
-
return _ref12 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SNext, _ref12.cn("SNext", _objectSpread({}, (0, _core.assignProps)({
|
|
575
|
+
return _ref12 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SNext, _ref12.cn("SNext", _objectSpread({}, (0, _core.assignProps)({
|
|
576
|
+
"aria-hidden": "true"
|
|
577
|
+
}, _ref5))));
|
|
562
578
|
};
|
|
563
579
|
|
|
564
580
|
Next.defaultProps = function () {
|
|
@@ -566,7 +582,6 @@ Next.defaultProps = function () {
|
|
|
566
582
|
children: /*#__PURE__*/_react["default"].createElement(_l["default"], {
|
|
567
583
|
interactive: true,
|
|
568
584
|
color: "gray-300",
|
|
569
|
-
"aria-hidden": true,
|
|
570
585
|
"aria-label": "Go to the next item"
|
|
571
586
|
}),
|
|
572
587
|
top: 0
|
|
@@ -585,10 +600,14 @@ var Indicators = function Indicators(_ref16) {
|
|
|
585
600
|
if (Children.origin) {
|
|
586
601
|
var _ref13;
|
|
587
602
|
|
|
588
|
-
return _ref13 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SIndicators, _ref13.cn("SIndicators", _objectSpread({}, (0, _core.assignProps)({
|
|
603
|
+
return _ref13 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SIndicators, _ref13.cn("SIndicators", _objectSpread({}, (0, _core.assignProps)({
|
|
604
|
+
"aria-hidden": "true"
|
|
605
|
+
}, _ref6))), /*#__PURE__*/_react["default"].createElement(Children, _ref13.cn("Children", {})));
|
|
589
606
|
}
|
|
590
607
|
|
|
591
|
-
return _ref14 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SIndicators, _ref14.cn("SIndicators", _objectSpread({}, (0, _core.assignProps)({
|
|
608
|
+
return _ref14 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SIndicators, _ref14.cn("SIndicators", _objectSpread({}, (0, _core.assignProps)({
|
|
609
|
+
"aria-hidden": "true"
|
|
610
|
+
}, _ref6))), items.map(function (item, index) {
|
|
592
611
|
return /*#__PURE__*/_react["default"].createElement(Carousel.Indicator, (0, _extends2["default"])({
|
|
593
612
|
key: index
|
|
594
613
|
}, item));
|
package/lib/cjs/Carousel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Carousel.js","names":["position","getItemMin","items","indexItem","forEach","item","index","getItemMax","getMin","getMax","MAP_TRANSFORM","ArrowLeft","ArrowRight","CarouselRoot","props","React","createRef","e","key","preventDefault","controlTransformItem","activeItemIndex","handlers","removeItem","asProps","state","updateItems","filter","element","node","setState","map","transform","slideToValue","indexIndicator","refContainer","current","style","currentIndex","nextIndex","bounded","listIndex","_","ind","tmpArr","minTmpArr","maxTmpArr","length","unshift","pop","shift","push","tmpCurrentIndex","indexOf","left","nextIndexItem","direction","getDirection","i","transformItem","maxIndexIndicator","isControlled","step","nextItemPosition","undefined","positionLeftItem","positionItemMax","positionItemMin","findIndex","transformContainer","value","_touchStartCoord","changedTouches","clientX","touchEndCoord","delta","keyCode","bindHandlerClick","prevProps","duration","ref","$toogleItem","toogleItem","disabled","onClick","onKeyDown","bindHandlerKeydownControl","active","bindHandlerClickIndicator","SCarousel","Box","styles","Children","sstyled","handlerKeyDown","handlerTouchStart","handlerTouchEnd","Component","defaultIndex","Container","SContainer","Item","SItem","refItem","useEffect","Prev","SPrev","defaultProps","children","top","Next","SNext","Indicators","SIndicators","origin","Indicator","SIndicator","Carousel","createComponent"],"sources":["../../src/Carousel.jsx"],"sourcesContent":["import React, { useEffect } from 'react';\nimport createComponent, { Component, sstyled, Root } from '@semcore/core';\n\nimport { Box } from '@semcore/flex-box';\nimport ChevronRight from '@semcore/icon/ChevronRight/l';\nimport ChevronLeft from '@semcore/icon/ChevronLeft/l';\n\nimport style from './style/carousel.shadow.css';\n\nconst position = {\n getItemMin: function (items) {\n let indexItem = 0;\n items.forEach(function (item, index) {\n if (item.position < items[indexItem].position) {\n indexItem = index;\n }\n });\n return indexItem;\n },\n getItemMax: function (items) {\n let indexItem = 0;\n items.forEach(function (item, index) {\n if (item.position > items[indexItem].position) {\n indexItem = index;\n }\n });\n return indexItem;\n },\n getMin: function (items) {\n return items[position.getItemMin(items)].position;\n },\n getMax: function (items) {\n return items[position.getItemMax(items)].position;\n },\n};\n\nconst MAP_TRANSFORM = {\n ArrowLeft: 'left',\n ArrowRight: 'right',\n};\n\nclass CarouselRoot extends Component {\n static displayName = 'Carousel';\n static defaultProps = {\n defaultIndex: 0,\n duration: 350,\n step: 100,\n bounded: false,\n };\n\n static style = style;\n\n refContainer = React.createRef();\n transform = 0;\n positionLeftItem = 0;\n indexIndicator = 0;\n\n constructor(props) {\n super(props);\n this.isControlled = props.index !== undefined;\n this.state = {\n items: [],\n };\n }\n\n uncontrolledProps() {\n return {\n index: null,\n };\n }\n\n componentDidUpdate(prevProps) {\n const { index } = this.asProps;\n if (prevProps.index !== index && this.isControlled) {\n this.slideToValue(prevProps.index, index);\n }\n }\n\n handlerKeyDown = (e) => {\n switch (e.key) {\n case 'ArrowLeft':\n case 'ArrowRight':\n e.preventDefault();\n const { activeItemIndex } = this.controlTransformItem(MAP_TRANSFORM[e.key]);\n this.handlers.index(activeItemIndex);\n }\n };\n\n toogleItem = (item, removeItem = false) => {\n const { index } = this.asProps;\n const { items } = this.state;\n if (removeItem) {\n this.updateItems(items.filter((element) => element.node !== item.node));\n } else {\n this.setState(\n (state) => {\n return {\n items: [...state.items, item].map((element, position) => ({\n ...element,\n position,\n transform: 0,\n })),\n };\n },\n () => {\n if (index !== 0) {\n this.slideToValue(this.indexIndicator, index);\n }\n },\n );\n }\n };\n\n updateItems = (items) => {\n this.setState(() => ({ items }));\n };\n\n transformContainer = (transform) => {\n if (this.refContainer.current) {\n this.refContainer.current.style.transform = `translateX(${transform}%)`;\n }\n };\n\n getDirection = (currentIndex, nextIndex, bounded) => {\n if (bounded) {\n return currentIndex < nextIndex ? 'right' : 'left';\n }\n const { items } = this.state;\n const listIndex = items.map((_, ind) => ind);\n const tmpArr = [...listIndex];\n const minTmpArr = tmpArr[0];\n const maxTmpArr = tmpArr[tmpArr.length - 1];\n\n if (tmpArr.length === 2) {\n return currentIndex < nextIndex ? 'right' : 'left';\n }\n if (currentIndex === minTmpArr) {\n tmpArr.unshift(maxTmpArr);\n tmpArr.pop();\n }\n if (currentIndex === maxTmpArr) {\n tmpArr.shift();\n tmpArr.push(minTmpArr);\n }\n\n const tmpCurrentIndex = tmpArr.indexOf(currentIndex);\n const left = tmpArr.indexOf(nextIndex);\n\n return left - tmpCurrentIndex < 0 ? 'left' : 'right';\n };\n\n slideToValue = (currentIndex, nextIndexItem, bounded) => {\n if (currentIndex === nextIndexItem) return false;\n const direction = this.getDirection(\n currentIndex,\n nextIndexItem,\n bounded || this.asProps.bounded,\n );\n let i = currentIndex;\n while (nextIndexItem !== i) {\n const { activeItemIndex } = this.transformItem(direction);\n i = activeItemIndex;\n }\n };\n\n controlTransformItem = (direction) => {\n const { bounded, index } = this.asProps;\n const { items } = this.state;\n const maxIndexIndicator = items.length - 1;\n\n if (this.isControlled) {\n if (direction === 'right') {\n if (bounded && index === maxIndexIndicator) {\n return { activeItemIndex: maxIndexIndicator };\n }\n return { activeItemIndex: index === maxIndexIndicator ? 0 : index + 1 };\n }\n if (direction === 'left') {\n if (bounded && index === 0) {\n return { activeItemIndex: 0 };\n }\n return { activeItemIndex: index === 0 ? maxIndexIndicator : index - 1 };\n }\n }\n return this.transformItem(direction);\n };\n\n transformItem = (direction) => {\n const { bounded, step } = this.asProps;\n const { items } = this.state;\n const maxIndexIndicator = items.length - 1;\n let nextItemPosition = undefined;\n\n if (direction === 'right') {\n if (bounded && this.positionLeftItem === maxIndexIndicator) {\n return { activeItemIndex: maxIndexIndicator };\n }\n this.positionLeftItem += 1;\n const positionItemMax = position.getMax(items);\n\n if (this.positionLeftItem > positionItemMax) {\n nextItemPosition = position.getItemMin(items);\n items[nextItemPosition].position = positionItemMax + 1;\n items[nextItemPosition].transform += items.length * step;\n this.updateItems([...items]);\n }\n\n this.indexIndicator += 1;\n if (this.indexIndicator > maxIndexIndicator) {\n this.indexIndicator = 0;\n }\n this.transform -= step;\n }\n if (direction === 'left') {\n if (bounded && this.positionLeftItem === 0) {\n return { activeItemIndex: 0 };\n }\n this.positionLeftItem -= 1;\n const positionItemMin = position.getMin(items);\n\n if (this.positionLeftItem < positionItemMin) {\n nextItemPosition = position.getItemMax(items);\n items[nextItemPosition].position = positionItemMin - 1;\n items[nextItemPosition].transform -= items.length * step;\n this.updateItems([...items]);\n }\n\n this.indexIndicator -= 1;\n if (this.indexIndicator < 0) {\n this.indexIndicator = maxIndexIndicator;\n }\n this.transform += step;\n }\n\n const activeItemIndex = items.findIndex((item) => item.position === this.positionLeftItem);\n if (items[activeItemIndex]) {\n items[\n activeItemIndex\n ].node.style.transform = `translateX(${items[activeItemIndex].transform}%)`;\n }\n this.transformContainer(this.transform);\n return { activeItemIndex };\n };\n\n bindHandlerClick = (direction) => {\n return () => {\n const { activeItemIndex } = this.controlTransformItem(direction);\n this.handlers.index(activeItemIndex);\n };\n };\n\n bindHandlerClickIndicator = (value) => {\n return () => {\n !this.isControlled && this.slideToValue(this.indexIndicator, value, true);\n this.handlers.index(value);\n };\n };\n\n handlerTouchStart = (e) => {\n this._touchStartCoord = e.changedTouches[0].clientX;\n };\n\n handlerTouchEnd = (e) => {\n const touchEndCoord = e.changedTouches[0].clientX;\n const delta = touchEndCoord - this._touchStartCoord;\n if (delta > 50) {\n const { activeItemIndex } = this.controlTransformItem('left');\n this.handlers.index(activeItemIndex);\n } else if (delta < -50) {\n const { activeItemIndex } = this.controlTransformItem('right');\n this.handlers.index(activeItemIndex);\n }\n };\n\n getContainerProps() {\n const { duration } = this.asProps;\n\n return {\n ref: this.refContainer,\n duration,\n };\n }\n\n getItemProps() {\n return {\n $toogleItem: this.toogleItem,\n };\n }\n\n bindHandlerKeydownControl = (direction) => (e) => {\n const { keyCode } = e;\n if (keyCode === 13) {\n e.preventDefault();\n this.bindHandlerClick(direction)();\n }\n };\n\n getPrevProps() {\n const { index, bounded } = this.asProps;\n const { items } = this.state;\n let disabled = false;\n if (items.length && bounded) {\n disabled = index === 0;\n }\n return {\n onClick: this.bindHandlerClick('left'),\n onKeyDown: this.bindHandlerKeydownControl('left'),\n disabled,\n };\n }\n\n getNextProps() {\n const { index, bounded } = this.asProps;\n const { items } = this.state;\n let disabled = false;\n if (items.length && bounded) {\n disabled = index === items.length - 1;\n }\n return {\n onClick: this.bindHandlerClick('right'),\n onKeyDown: this.bindHandlerKeydownControl('right'),\n disabled,\n };\n }\n\n getIndicatorsProps() {\n const { items } = this.state;\n const { index } = this.asProps;\n\n return {\n items: items.map((item, key) => ({\n active: key === index,\n onClick: this.bindHandlerClickIndicator(key),\n key,\n })),\n };\n }\n\n render() {\n const SCarousel = Root;\n const { styles, Children } = this.asProps;\n\n return sstyled(styles)(\n <SCarousel\n render={Box}\n onKeyDown={this.handlerKeyDown}\n tabIndex={0}\n onTouchStart={this.handlerTouchStart}\n onTouchEnd={this.handlerTouchEnd}\n >\n <Children />\n </SCarousel>,\n );\n }\n}\n\nconst Container = (props) => {\n const SContainer = Root;\n const { styles, duration } = props;\n\n return sstyled(styles)(<SContainer render={Box} use:duration={`${duration}ms`} />);\n};\n\nconst Item = (props) => {\n const { styles, $toogleItem } = props;\n const SItem = Root;\n const refItem = React.createRef();\n useEffect(() => {\n // add item\n $toogleItem({ node: refItem.current });\n return () => {\n // remove item\n $toogleItem({ node: refItem.current }, true);\n };\n }, []);\n\n return sstyled(styles)(<SItem render={Box} ref={refItem} />);\n};\n\nconst Prev = (props) => {\n const { styles } = props;\n const SPrev = Root;\n return sstyled(styles)(<SPrev render={Box} />);\n};\n\nPrev.defaultProps = () => ({\n children: (\n <ChevronLeft\n interactive\n color=\"gray-300\"\n aria-hidden={true}\n aria-label=\"Go to the previous item\"\n />\n ),\n top: 0,\n});\n\nconst Next = (props) => {\n const { styles } = props;\n const SNext = Root;\n return sstyled(styles)(<SNext render={Box} />);\n};\n\nNext.defaultProps = () => ({\n children: (\n <ChevronRight\n interactive\n color=\"gray-300\"\n aria-hidden={true}\n aria-label=\"Go to the next item\"\n />\n ),\n top: 0,\n});\n\nconst Indicators = ({ items, styles, Children }) => {\n const SIndicators = Root;\n if (Children.origin) {\n return sstyled(styles)(\n <SIndicators render={Box}>\n <Children />\n </SIndicators>,\n );\n }\n return sstyled(styles)(\n <SIndicators render={Box}>\n {items.map((item, index) => (\n <Carousel.Indicator key={index} {...item} />\n ))}\n </SIndicators>,\n );\n};\n\nconst Indicator = ({ styles, Children }) => {\n const SIndicator = Root;\n return sstyled(styles)(\n <SIndicator render={Box}>\n <Children />\n </SIndicator>,\n );\n};\n\nconst Carousel = createComponent(CarouselRoot, {\n Container,\n Indicators,\n Indicator,\n Item,\n Prev,\n Next,\n});\n\nexport default Carousel;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Carousel.js","names":["position","getItemMin","items","indexItem","forEach","item","index","getItemMax","getMin","getMax","MAP_TRANSFORM","ArrowLeft","ArrowRight","CarouselRoot","props","React","createRef","e","key","preventDefault","controlTransformItem","activeItemIndex","handlers","removeItem","asProps","state","updateItems","filter","element","node","setState","map","transform","slideToValue","indexIndicator","refContainer","current","style","currentIndex","nextIndex","bounded","listIndex","_","ind","tmpArr","minTmpArr","maxTmpArr","length","unshift","pop","shift","push","tmpCurrentIndex","indexOf","left","nextIndexItem","direction","getDirection","i","transformItem","maxIndexIndicator","isControlled","step","nextItemPosition","undefined","positionLeftItem","positionItemMax","positionItemMin","findIndex","transformContainer","value","_touchStartCoord","changedTouches","clientX","touchEndCoord","delta","keyCode","bindHandlerClick","prevProps","duration","ref","toggleItem","uid","disabled","onClick","onKeyDown","bindHandlerKeydownControl","active","bindHandlerClickIndicator","SCarousel","Box","styles","Children","sstyled","handlerKeyDown","handlerTouchStart","handlerTouchEnd","Component","defaultIndex","uniqueIDEnhancement","Container","SContainer","Item","SItem","refItem","useEffect","Prev","SPrev","defaultProps","children","top","Next","SNext","Indicators","SIndicators","origin","Indicator","SIndicator","Carousel","createComponent"],"sources":["../../src/Carousel.jsx"],"sourcesContent":["import React, { useEffect } from 'react';\nimport createComponent, { Component, sstyled, Root } from '@semcore/core';\n\nimport { Box } from '@semcore/flex-box';\nimport ChevronRight from '@semcore/icon/ChevronRight/l';\nimport ChevronLeft from '@semcore/icon/ChevronLeft/l';\nimport uniqueIDEnhancement from '@semcore/utils/lib/uniqueID';\n\nimport style from './style/carousel.shadow.css';\n\nconst position = {\n getItemMin: function (items) {\n let indexItem = 0;\n items.forEach(function (item, index) {\n if (item.position < items[indexItem].position) {\n indexItem = index;\n }\n });\n return indexItem;\n },\n getItemMax: function (items) {\n let indexItem = 0;\n items.forEach(function (item, index) {\n if (item.position > items[indexItem].position) {\n indexItem = index;\n }\n });\n return indexItem;\n },\n getMin: function (items) {\n return items[position.getItemMin(items)].position;\n },\n getMax: function (items) {\n return items[position.getItemMax(items)].position;\n },\n};\n\nconst MAP_TRANSFORM = {\n ArrowLeft: 'left',\n ArrowRight: 'right',\n};\n\nclass CarouselRoot extends Component {\n static displayName = 'Carousel';\n static defaultProps = {\n defaultIndex: 0,\n duration: 350,\n step: 100,\n bounded: false,\n };\n\n static style = style;\n static enhance = [uniqueIDEnhancement()];\n\n refContainer = React.createRef();\n transform = 0;\n positionLeftItem = 0;\n indexIndicator = 0;\n\n constructor(props) {\n super(props);\n this.isControlled = props.index !== undefined;\n this.state = {\n items: [],\n };\n }\n\n uncontrolledProps() {\n return {\n index: null,\n };\n }\n\n componentDidUpdate(prevProps) {\n const { index } = this.asProps;\n if (prevProps.index !== index && this.isControlled) {\n this.slideToValue(prevProps.index, index);\n }\n }\n\n handlerKeyDown = (e) => {\n switch (e.key) {\n case 'ArrowLeft':\n case 'ArrowRight':\n e.preventDefault();\n const { activeItemIndex } = this.controlTransformItem(MAP_TRANSFORM[e.key]);\n this.handlers.index(activeItemIndex);\n }\n };\n\n toggleItem = (item, removeItem = false) => {\n const { index } = this.asProps;\n const { items } = this.state;\n if (removeItem) {\n this.updateItems(items.filter((element) => element.node !== item.node));\n } else {\n this.setState(\n (state) => {\n return {\n items: [...state.items, item].map((element, position) => ({\n ...element,\n position,\n transform: 0,\n })),\n };\n },\n () => {\n if (index !== 0) {\n this.slideToValue(this.indexIndicator, index);\n }\n },\n );\n }\n };\n\n updateItems = (items) => {\n this.setState(() => ({ items }));\n };\n\n transformContainer = (transform) => {\n if (this.refContainer.current) {\n this.refContainer.current.style.transform = `translateX(${transform}%)`;\n }\n };\n\n getDirection = (currentIndex, nextIndex, bounded) => {\n if (bounded) {\n return currentIndex < nextIndex ? 'right' : 'left';\n }\n const { items } = this.state;\n const listIndex = items.map((_, ind) => ind);\n const tmpArr = [...listIndex];\n const minTmpArr = tmpArr[0];\n const maxTmpArr = tmpArr[tmpArr.length - 1];\n\n if (tmpArr.length === 2) {\n return currentIndex < nextIndex ? 'right' : 'left';\n }\n if (currentIndex === minTmpArr) {\n tmpArr.unshift(maxTmpArr);\n tmpArr.pop();\n }\n if (currentIndex === maxTmpArr) {\n tmpArr.shift();\n tmpArr.push(minTmpArr);\n }\n\n const tmpCurrentIndex = tmpArr.indexOf(currentIndex);\n const left = tmpArr.indexOf(nextIndex);\n\n return left - tmpCurrentIndex < 0 ? 'left' : 'right';\n };\n\n slideToValue = (currentIndex, nextIndexItem, bounded) => {\n if (currentIndex === nextIndexItem) return false;\n const direction = this.getDirection(\n currentIndex,\n nextIndexItem,\n bounded || this.asProps.bounded,\n );\n let i = currentIndex;\n while (nextIndexItem !== i) {\n const { activeItemIndex } = this.transformItem(direction);\n i = activeItemIndex;\n }\n };\n\n controlTransformItem = (direction) => {\n const { bounded, index } = this.asProps;\n const { items } = this.state;\n const maxIndexIndicator = items.length - 1;\n\n if (this.isControlled) {\n if (direction === 'right') {\n if (bounded && index === maxIndexIndicator) {\n return { activeItemIndex: maxIndexIndicator };\n }\n return { activeItemIndex: index === maxIndexIndicator ? 0 : index + 1 };\n }\n if (direction === 'left') {\n if (bounded && index === 0) {\n return { activeItemIndex: 0 };\n }\n return { activeItemIndex: index === 0 ? maxIndexIndicator : index - 1 };\n }\n }\n return this.transformItem(direction);\n };\n\n transformItem = (direction) => {\n const { bounded, step } = this.asProps;\n const { items } = this.state;\n const maxIndexIndicator = items.length - 1;\n let nextItemPosition = undefined;\n\n if (direction === 'right') {\n if (bounded && this.positionLeftItem === maxIndexIndicator) {\n return { activeItemIndex: maxIndexIndicator };\n }\n this.positionLeftItem += 1;\n const positionItemMax = position.getMax(items);\n\n if (this.positionLeftItem > positionItemMax) {\n nextItemPosition = position.getItemMin(items);\n items[nextItemPosition].position = positionItemMax + 1;\n items[nextItemPosition].transform += items.length * step;\n this.updateItems([...items]);\n }\n\n this.indexIndicator += 1;\n if (this.indexIndicator > maxIndexIndicator) {\n this.indexIndicator = 0;\n }\n this.transform -= step;\n }\n if (direction === 'left') {\n if (bounded && this.positionLeftItem === 0) {\n return { activeItemIndex: 0 };\n }\n this.positionLeftItem -= 1;\n const positionItemMin = position.getMin(items);\n\n if (this.positionLeftItem < positionItemMin) {\n nextItemPosition = position.getItemMax(items);\n items[nextItemPosition].position = positionItemMin - 1;\n items[nextItemPosition].transform -= items.length * step;\n this.updateItems([...items]);\n }\n\n this.indexIndicator -= 1;\n if (this.indexIndicator < 0) {\n this.indexIndicator = maxIndexIndicator;\n }\n this.transform += step;\n }\n\n const activeItemIndex = items.findIndex((item) => item.position === this.positionLeftItem);\n if (items[activeItemIndex]) {\n items[\n activeItemIndex\n ].node.style.transform = `translateX(${items[activeItemIndex].transform}%)`;\n }\n this.transformContainer(this.transform);\n return { activeItemIndex };\n };\n\n bindHandlerClick = (direction) => {\n return () => {\n const { activeItemIndex } = this.controlTransformItem(direction);\n this.handlers.index(activeItemIndex);\n };\n };\n\n bindHandlerClickIndicator = (value) => {\n return () => {\n !this.isControlled && this.slideToValue(this.indexIndicator, value, true);\n this.handlers.index(value);\n };\n };\n\n handlerTouchStart = (e) => {\n this._touchStartCoord = e.changedTouches[0].clientX;\n };\n\n handlerTouchEnd = (e) => {\n const touchEndCoord = e.changedTouches[0].clientX;\n const delta = touchEndCoord - this._touchStartCoord;\n if (delta > 50) {\n const { activeItemIndex } = this.controlTransformItem('left');\n this.handlers.index(activeItemIndex);\n } else if (delta < -50) {\n const { activeItemIndex } = this.controlTransformItem('right');\n this.handlers.index(activeItemIndex);\n }\n };\n\n getContainerProps() {\n const { duration } = this.asProps;\n\n return {\n ref: this.refContainer,\n duration,\n };\n }\n\n getItemProps(_, index) {\n return {\n toggleItem: this.toggleItem,\n uid: this.asProps.uid,\n index,\n };\n }\n\n bindHandlerKeydownControl = (direction) => (e) => {\n const { keyCode } = e;\n if (keyCode === 13) {\n e.preventDefault();\n this.bindHandlerClick(direction)();\n }\n };\n\n getPrevProps() {\n const { index, bounded } = this.asProps;\n const { items } = this.state;\n let disabled = false;\n if (items.length && bounded) {\n disabled = index === 0;\n }\n return {\n onClick: this.bindHandlerClick('left'),\n onKeyDown: this.bindHandlerKeydownControl('left'),\n disabled,\n };\n }\n\n getNextProps() {\n const { index, bounded } = this.asProps;\n const { items } = this.state;\n let disabled = false;\n if (items.length && bounded) {\n disabled = index === items.length - 1;\n }\n return {\n onClick: this.bindHandlerClick('right'),\n onKeyDown: this.bindHandlerKeydownControl('right'),\n disabled,\n };\n }\n\n getIndicatorsProps() {\n const { items } = this.state;\n const { index } = this.asProps;\n\n return {\n items: items.map((item, key) => ({\n active: key === index,\n onClick: this.bindHandlerClickIndicator(key),\n key,\n })),\n };\n }\n\n render() {\n const SCarousel = Root;\n const { styles, Children, index, uid } = this.asProps;\n\n return sstyled(styles)(\n <SCarousel\n render={Box}\n onKeyDown={this.handlerKeyDown}\n tabIndex={0}\n onTouchStart={this.handlerTouchStart}\n onTouchEnd={this.handlerTouchEnd}\n role=\"list\"\n aria-activedescendant={`igc-${uid}-carousel-item-${index}`}\n >\n <Children />\n </SCarousel>,\n );\n }\n}\n\nconst Container = (props) => {\n const SContainer = Root;\n const { styles, duration } = props;\n\n return sstyled(styles)(<SContainer render={Box} use:duration={`${duration}ms`} />);\n};\n\nconst Item = (props) => {\n const { styles, toggleItem, index, uid } = props;\n const SItem = Root;\n const refItem = React.createRef();\n useEffect(() => {\n // add item\n toggleItem({ node: refItem.current });\n return () => {\n // remove item\n toggleItem({ node: refItem.current }, true);\n };\n }, []);\n\n return sstyled(styles)(\n <SItem render={Box} ref={refItem} role=\"listitem\" id={`igc-${uid}-carousel-item-${index}`} />,\n );\n};\n\nconst Prev = (props) => {\n const { styles } = props;\n const SPrev = Root;\n return sstyled(styles)(<SPrev render={Box} aria-hidden=\"true\" />);\n};\n\nPrev.defaultProps = () => ({\n children: <ChevronLeft interactive color=\"gray-300\" aria-label=\"Go to the previous item\" />,\n top: 0,\n});\n\nconst Next = (props) => {\n const { styles } = props;\n const SNext = Root;\n return sstyled(styles)(<SNext render={Box} aria-hidden=\"true\" />);\n};\n\nNext.defaultProps = () => ({\n children: <ChevronRight interactive color=\"gray-300\" aria-label=\"Go to the next item\" />,\n top: 0,\n});\n\nconst Indicators = ({ items, styles, Children }) => {\n const SIndicators = Root;\n if (Children.origin) {\n return sstyled(styles)(\n <SIndicators render={Box} aria-hidden=\"true\">\n <Children />\n </SIndicators>,\n );\n }\n return sstyled(styles)(\n <SIndicators render={Box} aria-hidden=\"true\">\n {items.map((item, index) => (\n <Carousel.Indicator key={index} {...item} />\n ))}\n </SIndicators>,\n );\n};\n\nconst Indicator = ({ styles, Children }) => {\n const SIndicator = Root;\n return sstyled(styles)(\n <SIndicator render={Box}>\n <Children />\n </SIndicator>,\n );\n};\n\nconst Carousel = createComponent(CarouselRoot, {\n Container,\n Indicators,\n Indicator,\n Item,\n Prev,\n Next,\n});\n\nexport default Carousel;\n"],"mappings":"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"}
|
package/lib/es6/Carousel.js
CHANGED
|
@@ -30,28 +30,29 @@ import createComponent, { Component, sstyled, Root } from '@semcore/core';
|
|
|
30
30
|
import { Box } from '@semcore/flex-box';
|
|
31
31
|
import ChevronRight from '@semcore/icon/ChevronRight/l';
|
|
32
32
|
import ChevronLeft from '@semcore/icon/ChevronLeft/l';
|
|
33
|
+
import uniqueIDEnhancement from '@semcore/utils/lib/uniqueID';
|
|
33
34
|
|
|
34
35
|
/*__reshadow-styles__:"./style/carousel.shadow.css"*/
|
|
35
36
|
var style = (
|
|
36
37
|
/*__reshadow_css_start__*/
|
|
37
38
|
_sstyled.insert(
|
|
38
39
|
/*__inner_css_start__*/
|
|
39
|
-
"
|
|
40
|
+
".___SCarousel_1hq9h_gg_{overflow:hidden;outline:none}.___SContainer_1hq9h_gg_{display:flex;transition:transform var(--duration_1hq9h) ease-in-out}.___SItem_1hq9h_gg_{flex:0 0 100%;max-width:100%;box-sizing:border-box;transform:var(--transform_1hq9h);border-radius:6px;overflow:hidden}.___SIndicators_1hq9h_gg_{display:flex;justify-content:center;margin-top:16px}.___SIndicator_1hq9h_gg_{margin:0 6px;cursor:pointer;display:block;width:12px;height:12px;border-radius:6px;background-color:#a9abb6;opacity:.3;-o-object-fit:cover;object-fit:cover;transition:opacity .1s ease-in-out}.___SIndicator_1hq9h_gg_:hover{opacity:.6}.___SIndicator_1hq9h_gg_.__active_1hq9h_gg_{opacity:1}.___SNext_1hq9h_gg_,.___SPrev_1hq9h_gg_{display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.___SPrev_1hq9h_gg_{margin-right:12px}.___SNext_1hq9h_gg_{margin-left:12px}.___SNext_1hq9h_gg_.__disabled_1hq9h_gg_,.___SPrev_1hq9h_gg_.__disabled_1hq9h_gg_{opacity:0.3;cursor:default;pointer-events:none}@media (prefers-reduced-motion){.___SContainer_1hq9h_gg_{transition:none}}"
|
|
40
41
|
/*__inner_css_end__*/
|
|
41
|
-
, "
|
|
42
|
+
, "1hq9h_gg_")
|
|
42
43
|
/*__reshadow_css_end__*/
|
|
43
44
|
, {
|
|
44
|
-
"__SCarousel": "
|
|
45
|
-
"__SContainer": "
|
|
46
|
-
"--duration": "--
|
|
47
|
-
"__SItem": "
|
|
48
|
-
"--transform": "--
|
|
49
|
-
"__SIndicators": "
|
|
50
|
-
"__SIndicator": "
|
|
51
|
-
"_active": "
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"_disabled": "
|
|
45
|
+
"__SCarousel": "___SCarousel_1hq9h_gg_",
|
|
46
|
+
"__SContainer": "___SContainer_1hq9h_gg_",
|
|
47
|
+
"--duration": "--duration_1hq9h",
|
|
48
|
+
"__SItem": "___SItem_1hq9h_gg_",
|
|
49
|
+
"--transform": "--transform_1hq9h",
|
|
50
|
+
"__SIndicators": "___SIndicators_1hq9h_gg_",
|
|
51
|
+
"__SIndicator": "___SIndicator_1hq9h_gg_",
|
|
52
|
+
"_active": "__active_1hq9h_gg_",
|
|
53
|
+
"__SNext": "___SNext_1hq9h_gg_",
|
|
54
|
+
"__SPrev": "___SPrev_1hq9h_gg_",
|
|
55
|
+
"_disabled": "__disabled_1hq9h_gg_"
|
|
55
56
|
});
|
|
56
57
|
var position = {
|
|
57
58
|
getItemMin: function getItemMin(items) {
|
|
@@ -118,7 +119,7 @@ var CarouselRoot = /*#__PURE__*/function (_Component) {
|
|
|
118
119
|
}
|
|
119
120
|
});
|
|
120
121
|
|
|
121
|
-
_defineProperty(_assertThisInitialized(_this), "
|
|
122
|
+
_defineProperty(_assertThisInitialized(_this), "toggleItem", function (item) {
|
|
122
123
|
var removeItem = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
123
124
|
var index = _this.asProps.index;
|
|
124
125
|
var items = _this.state.items;
|
|
@@ -405,9 +406,11 @@ var CarouselRoot = /*#__PURE__*/function (_Component) {
|
|
|
405
406
|
}
|
|
406
407
|
}, {
|
|
407
408
|
key: "getItemProps",
|
|
408
|
-
value: function getItemProps() {
|
|
409
|
+
value: function getItemProps(_, index) {
|
|
409
410
|
return {
|
|
410
|
-
|
|
411
|
+
toggleItem: this.toggleItem,
|
|
412
|
+
uid: this.asProps.uid,
|
|
413
|
+
index: index
|
|
411
414
|
};
|
|
412
415
|
}
|
|
413
416
|
}, {
|
|
@@ -474,12 +477,16 @@ var CarouselRoot = /*#__PURE__*/function (_Component) {
|
|
|
474
477
|
var SCarousel = Box;
|
|
475
478
|
var _this$asProps5 = this.asProps,
|
|
476
479
|
styles = _this$asProps5.styles,
|
|
477
|
-
Children = _this$asProps5.Children
|
|
480
|
+
Children = _this$asProps5.Children,
|
|
481
|
+
index = _this$asProps5.index,
|
|
482
|
+
uid = _this$asProps5.uid;
|
|
478
483
|
return _ref8 = sstyled(styles), /*#__PURE__*/React.createElement(SCarousel, _ref8.cn("SCarousel", _objectSpread({}, _assignProps({
|
|
479
484
|
"onKeyDown": this.handlerKeyDown,
|
|
480
485
|
"tabIndex": 0,
|
|
481
486
|
"onTouchStart": this.handlerTouchStart,
|
|
482
|
-
"onTouchEnd": this.handlerTouchEnd
|
|
487
|
+
"onTouchEnd": this.handlerTouchEnd,
|
|
488
|
+
"role": "list",
|
|
489
|
+
"aria-activedescendant": "igc-".concat(uid, "-carousel-item-").concat(index)
|
|
483
490
|
}, _ref))), /*#__PURE__*/React.createElement(Children, _ref8.cn("Children", {})));
|
|
484
491
|
}
|
|
485
492
|
}]);
|
|
@@ -498,6 +505,8 @@ _defineProperty(CarouselRoot, "defaultProps", {
|
|
|
498
505
|
|
|
499
506
|
_defineProperty(CarouselRoot, "style", style);
|
|
500
507
|
|
|
508
|
+
_defineProperty(CarouselRoot, "enhance", [uniqueIDEnhancement()]);
|
|
509
|
+
|
|
501
510
|
var Container = function Container(props) {
|
|
502
511
|
var _ref2 = arguments[0],
|
|
503
512
|
_ref9;
|
|
@@ -515,23 +524,27 @@ var Item = function Item(props) {
|
|
|
515
524
|
_ref10;
|
|
516
525
|
|
|
517
526
|
var styles = props.styles,
|
|
518
|
-
|
|
527
|
+
toggleItem = props.toggleItem,
|
|
528
|
+
index = props.index,
|
|
529
|
+
uid = props.uid;
|
|
519
530
|
var SItem = Box;
|
|
520
531
|
var refItem = /*#__PURE__*/React.createRef();
|
|
521
532
|
useEffect(function () {
|
|
522
533
|
// add item
|
|
523
|
-
|
|
534
|
+
toggleItem({
|
|
524
535
|
node: refItem.current
|
|
525
536
|
});
|
|
526
537
|
return function () {
|
|
527
538
|
// remove item
|
|
528
|
-
|
|
539
|
+
toggleItem({
|
|
529
540
|
node: refItem.current
|
|
530
541
|
}, true);
|
|
531
542
|
};
|
|
532
543
|
}, []);
|
|
533
544
|
return _ref10 = sstyled(styles), /*#__PURE__*/React.createElement(SItem, _ref10.cn("SItem", _objectSpread({}, _assignProps3({
|
|
534
|
-
"ref": refItem
|
|
545
|
+
"ref": refItem,
|
|
546
|
+
"role": "listitem",
|
|
547
|
+
"id": "igc-".concat(uid, "-carousel-item-").concat(index)
|
|
535
548
|
}, _ref3))));
|
|
536
549
|
};
|
|
537
550
|
|
|
@@ -541,7 +554,9 @@ var Prev = function Prev(props) {
|
|
|
541
554
|
|
|
542
555
|
var styles = props.styles;
|
|
543
556
|
var SPrev = Box;
|
|
544
|
-
return _ref11 = sstyled(styles), /*#__PURE__*/React.createElement(SPrev, _ref11.cn("SPrev", _objectSpread({}, _assignProps4({
|
|
557
|
+
return _ref11 = sstyled(styles), /*#__PURE__*/React.createElement(SPrev, _ref11.cn("SPrev", _objectSpread({}, _assignProps4({
|
|
558
|
+
"aria-hidden": "true"
|
|
559
|
+
}, _ref4))));
|
|
545
560
|
};
|
|
546
561
|
|
|
547
562
|
Prev.defaultProps = function () {
|
|
@@ -549,7 +564,6 @@ Prev.defaultProps = function () {
|
|
|
549
564
|
children: /*#__PURE__*/React.createElement(ChevronLeft, {
|
|
550
565
|
interactive: true,
|
|
551
566
|
color: "gray-300",
|
|
552
|
-
"aria-hidden": true,
|
|
553
567
|
"aria-label": "Go to the previous item"
|
|
554
568
|
}),
|
|
555
569
|
top: 0
|
|
@@ -562,7 +576,9 @@ var Next = function Next(props) {
|
|
|
562
576
|
|
|
563
577
|
var styles = props.styles;
|
|
564
578
|
var SNext = Box;
|
|
565
|
-
return _ref12 = sstyled(styles), /*#__PURE__*/React.createElement(SNext, _ref12.cn("SNext", _objectSpread({}, _assignProps5({
|
|
579
|
+
return _ref12 = sstyled(styles), /*#__PURE__*/React.createElement(SNext, _ref12.cn("SNext", _objectSpread({}, _assignProps5({
|
|
580
|
+
"aria-hidden": "true"
|
|
581
|
+
}, _ref5))));
|
|
566
582
|
};
|
|
567
583
|
|
|
568
584
|
Next.defaultProps = function () {
|
|
@@ -570,7 +586,6 @@ Next.defaultProps = function () {
|
|
|
570
586
|
children: /*#__PURE__*/React.createElement(ChevronRight, {
|
|
571
587
|
interactive: true,
|
|
572
588
|
color: "gray-300",
|
|
573
|
-
"aria-hidden": true,
|
|
574
589
|
"aria-label": "Go to the next item"
|
|
575
590
|
}),
|
|
576
591
|
top: 0
|
|
@@ -589,10 +604,14 @@ var Indicators = function Indicators(_ref16) {
|
|
|
589
604
|
if (Children.origin) {
|
|
590
605
|
var _ref13;
|
|
591
606
|
|
|
592
|
-
return _ref13 = sstyled(styles), /*#__PURE__*/React.createElement(SIndicators, _ref13.cn("SIndicators", _objectSpread({}, _assignProps6({
|
|
607
|
+
return _ref13 = sstyled(styles), /*#__PURE__*/React.createElement(SIndicators, _ref13.cn("SIndicators", _objectSpread({}, _assignProps6({
|
|
608
|
+
"aria-hidden": "true"
|
|
609
|
+
}, _ref6))), /*#__PURE__*/React.createElement(Children, _ref13.cn("Children", {})));
|
|
593
610
|
}
|
|
594
611
|
|
|
595
|
-
return _ref14 = sstyled(styles), /*#__PURE__*/React.createElement(SIndicators, _ref14.cn("SIndicators", _objectSpread({}, _assignProps7({
|
|
612
|
+
return _ref14 = sstyled(styles), /*#__PURE__*/React.createElement(SIndicators, _ref14.cn("SIndicators", _objectSpread({}, _assignProps7({
|
|
613
|
+
"aria-hidden": "true"
|
|
614
|
+
}, _ref6))), items.map(function (item, index) {
|
|
596
615
|
return /*#__PURE__*/React.createElement(Carousel.Indicator, _extends({
|
|
597
616
|
key: index
|
|
598
617
|
}, item));
|
package/lib/es6/Carousel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Carousel.js","names":["React","useEffect","createComponent","Component","sstyled","Root","Box","ChevronRight","ChevronLeft","position","getItemMin","items","indexItem","forEach","item","index","getItemMax","getMin","getMax","MAP_TRANSFORM","ArrowLeft","ArrowRight","CarouselRoot","props","createRef","e","key","preventDefault","controlTransformItem","activeItemIndex","handlers","removeItem","asProps","state","updateItems","filter","element","node","setState","map","transform","slideToValue","indexIndicator","refContainer","current","style","currentIndex","nextIndex","bounded","listIndex","_","ind","tmpArr","minTmpArr","maxTmpArr","length","unshift","pop","shift","push","tmpCurrentIndex","indexOf","left","nextIndexItem","direction","getDirection","i","transformItem","maxIndexIndicator","isControlled","step","nextItemPosition","undefined","positionLeftItem","positionItemMax","positionItemMin","findIndex","transformContainer","value","_touchStartCoord","changedTouches","clientX","touchEndCoord","delta","keyCode","bindHandlerClick","prevProps","duration","ref","$toogleItem","toogleItem","disabled","onClick","onKeyDown","bindHandlerKeydownControl","active","bindHandlerClickIndicator","SCarousel","styles","Children","handlerKeyDown","handlerTouchStart","handlerTouchEnd","defaultIndex","Container","SContainer","Item","SItem","refItem","Prev","SPrev","defaultProps","children","top","Next","SNext","Indicators","SIndicators","origin","Indicator","SIndicator","Carousel"],"sources":["../../src/Carousel.jsx"],"sourcesContent":["import React, { useEffect } from 'react';\nimport createComponent, { Component, sstyled, Root } from '@semcore/core';\n\nimport { Box } from '@semcore/flex-box';\nimport ChevronRight from '@semcore/icon/ChevronRight/l';\nimport ChevronLeft from '@semcore/icon/ChevronLeft/l';\n\nimport style from './style/carousel.shadow.css';\n\nconst position = {\n getItemMin: function (items) {\n let indexItem = 0;\n items.forEach(function (item, index) {\n if (item.position < items[indexItem].position) {\n indexItem = index;\n }\n });\n return indexItem;\n },\n getItemMax: function (items) {\n let indexItem = 0;\n items.forEach(function (item, index) {\n if (item.position > items[indexItem].position) {\n indexItem = index;\n }\n });\n return indexItem;\n },\n getMin: function (items) {\n return items[position.getItemMin(items)].position;\n },\n getMax: function (items) {\n return items[position.getItemMax(items)].position;\n },\n};\n\nconst MAP_TRANSFORM = {\n ArrowLeft: 'left',\n ArrowRight: 'right',\n};\n\nclass CarouselRoot extends Component {\n static displayName = 'Carousel';\n static defaultProps = {\n defaultIndex: 0,\n duration: 350,\n step: 100,\n bounded: false,\n };\n\n static style = style;\n\n refContainer = React.createRef();\n transform = 0;\n positionLeftItem = 0;\n indexIndicator = 0;\n\n constructor(props) {\n super(props);\n this.isControlled = props.index !== undefined;\n this.state = {\n items: [],\n };\n }\n\n uncontrolledProps() {\n return {\n index: null,\n };\n }\n\n componentDidUpdate(prevProps) {\n const { index } = this.asProps;\n if (prevProps.index !== index && this.isControlled) {\n this.slideToValue(prevProps.index, index);\n }\n }\n\n handlerKeyDown = (e) => {\n switch (e.key) {\n case 'ArrowLeft':\n case 'ArrowRight':\n e.preventDefault();\n const { activeItemIndex } = this.controlTransformItem(MAP_TRANSFORM[e.key]);\n this.handlers.index(activeItemIndex);\n }\n };\n\n toogleItem = (item, removeItem = false) => {\n const { index } = this.asProps;\n const { items } = this.state;\n if (removeItem) {\n this.updateItems(items.filter((element) => element.node !== item.node));\n } else {\n this.setState(\n (state) => {\n return {\n items: [...state.items, item].map((element, position) => ({\n ...element,\n position,\n transform: 0,\n })),\n };\n },\n () => {\n if (index !== 0) {\n this.slideToValue(this.indexIndicator, index);\n }\n },\n );\n }\n };\n\n updateItems = (items) => {\n this.setState(() => ({ items }));\n };\n\n transformContainer = (transform) => {\n if (this.refContainer.current) {\n this.refContainer.current.style.transform = `translateX(${transform}%)`;\n }\n };\n\n getDirection = (currentIndex, nextIndex, bounded) => {\n if (bounded) {\n return currentIndex < nextIndex ? 'right' : 'left';\n }\n const { items } = this.state;\n const listIndex = items.map((_, ind) => ind);\n const tmpArr = [...listIndex];\n const minTmpArr = tmpArr[0];\n const maxTmpArr = tmpArr[tmpArr.length - 1];\n\n if (tmpArr.length === 2) {\n return currentIndex < nextIndex ? 'right' : 'left';\n }\n if (currentIndex === minTmpArr) {\n tmpArr.unshift(maxTmpArr);\n tmpArr.pop();\n }\n if (currentIndex === maxTmpArr) {\n tmpArr.shift();\n tmpArr.push(minTmpArr);\n }\n\n const tmpCurrentIndex = tmpArr.indexOf(currentIndex);\n const left = tmpArr.indexOf(nextIndex);\n\n return left - tmpCurrentIndex < 0 ? 'left' : 'right';\n };\n\n slideToValue = (currentIndex, nextIndexItem, bounded) => {\n if (currentIndex === nextIndexItem) return false;\n const direction = this.getDirection(\n currentIndex,\n nextIndexItem,\n bounded || this.asProps.bounded,\n );\n let i = currentIndex;\n while (nextIndexItem !== i) {\n const { activeItemIndex } = this.transformItem(direction);\n i = activeItemIndex;\n }\n };\n\n controlTransformItem = (direction) => {\n const { bounded, index } = this.asProps;\n const { items } = this.state;\n const maxIndexIndicator = items.length - 1;\n\n if (this.isControlled) {\n if (direction === 'right') {\n if (bounded && index === maxIndexIndicator) {\n return { activeItemIndex: maxIndexIndicator };\n }\n return { activeItemIndex: index === maxIndexIndicator ? 0 : index + 1 };\n }\n if (direction === 'left') {\n if (bounded && index === 0) {\n return { activeItemIndex: 0 };\n }\n return { activeItemIndex: index === 0 ? maxIndexIndicator : index - 1 };\n }\n }\n return this.transformItem(direction);\n };\n\n transformItem = (direction) => {\n const { bounded, step } = this.asProps;\n const { items } = this.state;\n const maxIndexIndicator = items.length - 1;\n let nextItemPosition = undefined;\n\n if (direction === 'right') {\n if (bounded && this.positionLeftItem === maxIndexIndicator) {\n return { activeItemIndex: maxIndexIndicator };\n }\n this.positionLeftItem += 1;\n const positionItemMax = position.getMax(items);\n\n if (this.positionLeftItem > positionItemMax) {\n nextItemPosition = position.getItemMin(items);\n items[nextItemPosition].position = positionItemMax + 1;\n items[nextItemPosition].transform += items.length * step;\n this.updateItems([...items]);\n }\n\n this.indexIndicator += 1;\n if (this.indexIndicator > maxIndexIndicator) {\n this.indexIndicator = 0;\n }\n this.transform -= step;\n }\n if (direction === 'left') {\n if (bounded && this.positionLeftItem === 0) {\n return { activeItemIndex: 0 };\n }\n this.positionLeftItem -= 1;\n const positionItemMin = position.getMin(items);\n\n if (this.positionLeftItem < positionItemMin) {\n nextItemPosition = position.getItemMax(items);\n items[nextItemPosition].position = positionItemMin - 1;\n items[nextItemPosition].transform -= items.length * step;\n this.updateItems([...items]);\n }\n\n this.indexIndicator -= 1;\n if (this.indexIndicator < 0) {\n this.indexIndicator = maxIndexIndicator;\n }\n this.transform += step;\n }\n\n const activeItemIndex = items.findIndex((item) => item.position === this.positionLeftItem);\n if (items[activeItemIndex]) {\n items[\n activeItemIndex\n ].node.style.transform = `translateX(${items[activeItemIndex].transform}%)`;\n }\n this.transformContainer(this.transform);\n return { activeItemIndex };\n };\n\n bindHandlerClick = (direction) => {\n return () => {\n const { activeItemIndex } = this.controlTransformItem(direction);\n this.handlers.index(activeItemIndex);\n };\n };\n\n bindHandlerClickIndicator = (value) => {\n return () => {\n !this.isControlled && this.slideToValue(this.indexIndicator, value, true);\n this.handlers.index(value);\n };\n };\n\n handlerTouchStart = (e) => {\n this._touchStartCoord = e.changedTouches[0].clientX;\n };\n\n handlerTouchEnd = (e) => {\n const touchEndCoord = e.changedTouches[0].clientX;\n const delta = touchEndCoord - this._touchStartCoord;\n if (delta > 50) {\n const { activeItemIndex } = this.controlTransformItem('left');\n this.handlers.index(activeItemIndex);\n } else if (delta < -50) {\n const { activeItemIndex } = this.controlTransformItem('right');\n this.handlers.index(activeItemIndex);\n }\n };\n\n getContainerProps() {\n const { duration } = this.asProps;\n\n return {\n ref: this.refContainer,\n duration,\n };\n }\n\n getItemProps() {\n return {\n $toogleItem: this.toogleItem,\n };\n }\n\n bindHandlerKeydownControl = (direction) => (e) => {\n const { keyCode } = e;\n if (keyCode === 13) {\n e.preventDefault();\n this.bindHandlerClick(direction)();\n }\n };\n\n getPrevProps() {\n const { index, bounded } = this.asProps;\n const { items } = this.state;\n let disabled = false;\n if (items.length && bounded) {\n disabled = index === 0;\n }\n return {\n onClick: this.bindHandlerClick('left'),\n onKeyDown: this.bindHandlerKeydownControl('left'),\n disabled,\n };\n }\n\n getNextProps() {\n const { index, bounded } = this.asProps;\n const { items } = this.state;\n let disabled = false;\n if (items.length && bounded) {\n disabled = index === items.length - 1;\n }\n return {\n onClick: this.bindHandlerClick('right'),\n onKeyDown: this.bindHandlerKeydownControl('right'),\n disabled,\n };\n }\n\n getIndicatorsProps() {\n const { items } = this.state;\n const { index } = this.asProps;\n\n return {\n items: items.map((item, key) => ({\n active: key === index,\n onClick: this.bindHandlerClickIndicator(key),\n key,\n })),\n };\n }\n\n render() {\n const SCarousel = Root;\n const { styles, Children } = this.asProps;\n\n return sstyled(styles)(\n <SCarousel\n render={Box}\n onKeyDown={this.handlerKeyDown}\n tabIndex={0}\n onTouchStart={this.handlerTouchStart}\n onTouchEnd={this.handlerTouchEnd}\n >\n <Children />\n </SCarousel>,\n );\n }\n}\n\nconst Container = (props) => {\n const SContainer = Root;\n const { styles, duration } = props;\n\n return sstyled(styles)(<SContainer render={Box} use:duration={`${duration}ms`} />);\n};\n\nconst Item = (props) => {\n const { styles, $toogleItem } = props;\n const SItem = Root;\n const refItem = React.createRef();\n useEffect(() => {\n // add item\n $toogleItem({ node: refItem.current });\n return () => {\n // remove item\n $toogleItem({ node: refItem.current }, true);\n };\n }, []);\n\n return sstyled(styles)(<SItem render={Box} ref={refItem} />);\n};\n\nconst Prev = (props) => {\n const { styles } = props;\n const SPrev = Root;\n return sstyled(styles)(<SPrev render={Box} />);\n};\n\nPrev.defaultProps = () => ({\n children: (\n <ChevronLeft\n interactive\n color=\"gray-300\"\n aria-hidden={true}\n aria-label=\"Go to the previous item\"\n />\n ),\n top: 0,\n});\n\nconst Next = (props) => {\n const { styles } = props;\n const SNext = Root;\n return sstyled(styles)(<SNext render={Box} />);\n};\n\nNext.defaultProps = () => ({\n children: (\n <ChevronRight\n interactive\n color=\"gray-300\"\n aria-hidden={true}\n aria-label=\"Go to the next item\"\n />\n ),\n top: 0,\n});\n\nconst Indicators = ({ items, styles, Children }) => {\n const SIndicators = Root;\n if (Children.origin) {\n return sstyled(styles)(\n <SIndicators render={Box}>\n <Children />\n </SIndicators>,\n );\n }\n return sstyled(styles)(\n <SIndicators render={Box}>\n {items.map((item, index) => (\n <Carousel.Indicator key={index} {...item} />\n ))}\n </SIndicators>,\n );\n};\n\nconst Indicator = ({ styles, Children }) => {\n const SIndicator = Root;\n return sstyled(styles)(\n <SIndicator render={Box}>\n <Children />\n </SIndicator>,\n );\n};\n\nconst Carousel = createComponent(CarouselRoot, {\n Container,\n Indicators,\n Indicator,\n Item,\n Prev,\n Next,\n});\n\nexport default Carousel;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;AACA,OAAOC,eAAP,IAA0BC,SAA1B,EAAqCC,OAArC,EAA8CC,IAA9C,QAA0D,eAA1D;AAEA,SAASC,GAAT,QAAoB,mBAApB;AACA,OAAOC,YAAP,MAAyB,8BAAzB;AACA,OAAOC,WAAP,MAAwB,6BAAxB;;;;;;;;;;;;;;;;;;;;;;;;AAIA,IAAMC,QAAQ,GAAG;EACfC,UAAU,EAAE,oBAAUC,KAAV,EAAiB;IAC3B,IAAIC,SAAS,GAAG,CAAhB;IACAD,KAAK,CAACE,OAAN,CAAc,UAAUC,IAAV,EAAgBC,KAAhB,EAAuB;MACnC,IAAID,IAAI,CAACL,QAAL,GAAgBE,KAAK,CAACC,SAAD,CAAL,CAAiBH,QAArC,EAA+C;QAC7CG,SAAS,GAAGG,KAAZ;MACD;IACF,CAJD;IAKA,OAAOH,SAAP;EACD,CATc;EAUfI,UAAU,EAAE,oBAAUL,KAAV,EAAiB;IAC3B,IAAIC,SAAS,GAAG,CAAhB;IACAD,KAAK,CAACE,OAAN,CAAc,UAAUC,IAAV,EAAgBC,KAAhB,EAAuB;MACnC,IAAID,IAAI,CAACL,QAAL,GAAgBE,KAAK,CAACC,SAAD,CAAL,CAAiBH,QAArC,EAA+C;QAC7CG,SAAS,GAAGG,KAAZ;MACD;IACF,CAJD;IAKA,OAAOH,SAAP;EACD,CAlBc;EAmBfK,MAAM,EAAE,gBAAUN,KAAV,EAAiB;IACvB,OAAOA,KAAK,CAACF,QAAQ,CAACC,UAAT,CAAoBC,KAApB,CAAD,CAAL,CAAkCF,QAAzC;EACD,CArBc;EAsBfS,MAAM,EAAE,gBAAUP,KAAV,EAAiB;IACvB,OAAOA,KAAK,CAACF,QAAQ,CAACO,UAAT,CAAoBL,KAApB,CAAD,CAAL,CAAkCF,QAAzC;EACD;AAxBc,CAAjB;AA2BA,IAAMU,aAAa,GAAG;EACpBC,SAAS,EAAE,MADS;EAEpBC,UAAU,EAAE;AAFQ,CAAtB;;IAKMC,Y;;;;;EAgBJ,sBAAYC,KAAZ,EAAmB;IAAA;;IAAA;;IACjB,0BAAMA,KAAN;;IADiB,4EALJvB,KAAK,CAACwB,SAAN,EAKI;;IAAA,4DAJP,CAIO;;IAAA,mEAHA,CAGA;;IAAA,iEAFF,CAEE;;IAAA,iEAqBF,UAACC,CAAD,EAAO;MACtB,QAAQA,CAAC,CAACC,GAAV;QACE,KAAK,WAAL;QACA,KAAK,YAAL;UACED,CAAC,CAACE,cAAF;;UACA,4BAA4B,MAAKC,oBAAL,CAA0BT,aAAa,CAACM,CAAC,CAACC,GAAH,CAAvC,CAA5B;UAAA,IAAQG,eAAR,yBAAQA,eAAR;;UACA,MAAKC,QAAL,CAAcf,KAAd,CAAoBc,eAApB;;MALJ;IAOD,CA7BkB;;IAAA,6DA+BN,UAACf,IAAD,EAA8B;MAAA,IAAvBiB,UAAuB,uEAAV,KAAU;MACzC,IAAQhB,KAAR,GAAkB,MAAKiB,OAAvB,CAAQjB,KAAR;MACA,IAAQJ,KAAR,GAAkB,MAAKsB,KAAvB,CAAQtB,KAAR;;MACA,IAAIoB,UAAJ,EAAgB;QACd,MAAKG,WAAL,CAAiBvB,KAAK,CAACwB,MAAN,CAAa,UAACC,OAAD;UAAA,OAAaA,OAAO,CAACC,IAAR,KAAiBvB,IAAI,CAACuB,IAAnC;QAAA,CAAb,CAAjB;MACD,CAFD,MAEO;QACL,MAAKC,QAAL,CACE,UAACL,KAAD,EAAW;UACT,OAAO;YACLtB,KAAK,EAAE,6BAAIsB,KAAK,CAACtB,KAAV,IAAiBG,IAAjB,GAAuByB,GAAvB,CAA2B,UAACH,OAAD,EAAU3B,QAAV;cAAA,uCAC7B2B,OAD6B;gBAEhC3B,QAAQ,EAARA,QAFgC;gBAGhC+B,SAAS,EAAE;cAHqB;YAAA,CAA3B;UADF,CAAP;QAOD,CATH,EAUE,YAAM;UACJ,IAAIzB,KAAK,KAAK,CAAd,EAAiB;YACf,MAAK0B,YAAL,CAAkB,MAAKC,cAAvB,EAAuC3B,KAAvC;UACD;QACF,CAdH;MAgBD;IACF,CAtDkB;;IAAA,8DAwDL,UAACJ,KAAD,EAAW;MACvB,MAAK2B,QAAL,CAAc;QAAA,OAAO;UAAE3B,KAAK,EAALA;QAAF,CAAP;MAAA,CAAd;IACD,CA1DkB;;IAAA,qEA4DE,UAAC6B,SAAD,EAAe;MAClC,IAAI,MAAKG,YAAL,CAAkBC,OAAtB,EAA+B;QAC7B,MAAKD,YAAL,CAAkBC,OAAlB,CAA0BC,KAA1B,CAAgCL,SAAhC,wBAA0DA,SAA1D;MACD;IACF,CAhEkB;;IAAA,+DAkEJ,UAACM,YAAD,EAAeC,SAAf,EAA0BC,OAA1B,EAAsC;MACnD,IAAIA,OAAJ,EAAa;QACX,OAAOF,YAAY,GAAGC,SAAf,GAA2B,OAA3B,GAAqC,MAA5C;MACD;;MACD,IAAQpC,KAAR,GAAkB,MAAKsB,KAAvB,CAAQtB,KAAR;MACA,IAAMsC,SAAS,GAAGtC,KAAK,CAAC4B,GAAN,CAAU,UAACW,CAAD,EAAIC,GAAJ;QAAA,OAAYA,GAAZ;MAAA,CAAV,CAAlB;;MACA,IAAMC,MAAM,sBAAOH,SAAP,CAAZ;;MACA,IAAMI,SAAS,GAAGD,MAAM,CAAC,CAAD,CAAxB;MACA,IAAME,SAAS,GAAGF,MAAM,CAACA,MAAM,CAACG,MAAP,GAAgB,CAAjB,CAAxB;;MAEA,IAAIH,MAAM,CAACG,MAAP,KAAkB,CAAtB,EAAyB;QACvB,OAAOT,YAAY,GAAGC,SAAf,GAA2B,OAA3B,GAAqC,MAA5C;MACD;;MACD,IAAID,YAAY,KAAKO,SAArB,EAAgC;QAC9BD,MAAM,CAACI,OAAP,CAAeF,SAAf;QACAF,MAAM,CAACK,GAAP;MACD;;MACD,IAAIX,YAAY,KAAKQ,SAArB,EAAgC;QAC9BF,MAAM,CAACM,KAAP;QACAN,MAAM,CAACO,IAAP,CAAYN,SAAZ;MACD;;MAED,IAAMO,eAAe,GAAGR,MAAM,CAACS,OAAP,CAAef,YAAf,CAAxB;MACA,IAAMgB,IAAI,GAAGV,MAAM,CAACS,OAAP,CAAed,SAAf,CAAb;MAEA,OAAOe,IAAI,GAAGF,eAAP,GAAyB,CAAzB,GAA6B,MAA7B,GAAsC,OAA7C;IACD,CA5FkB;;IAAA,+DA8FJ,UAACd,YAAD,EAAeiB,aAAf,EAA8Bf,OAA9B,EAA0C;MACvD,IAAIF,YAAY,KAAKiB,aAArB,EAAoC,OAAO,KAAP;;MACpC,IAAMC,SAAS,GAAG,MAAKC,YAAL,CAChBnB,YADgB,EAEhBiB,aAFgB,EAGhBf,OAAO,IAAI,MAAKhB,OAAL,CAAagB,OAHR,CAAlB;;MAKA,IAAIkB,CAAC,GAAGpB,YAAR;;MACA,OAAOiB,aAAa,KAAKG,CAAzB,EAA4B;QAC1B,0BAA4B,MAAKC,aAAL,CAAmBH,SAAnB,CAA5B;QAAA,IAAQnC,eAAR,uBAAQA,eAAR;;QACAqC,CAAC,GAAGrC,eAAJ;MACD;IACF,CA1GkB;;IAAA,uEA4GI,UAACmC,SAAD,EAAe;MACpC,oBAA2B,MAAKhC,OAAhC;MAAA,IAAQgB,OAAR,iBAAQA,OAAR;MAAA,IAAiBjC,KAAjB,iBAAiBA,KAAjB;MACA,IAAQJ,KAAR,GAAkB,MAAKsB,KAAvB,CAAQtB,KAAR;MACA,IAAMyD,iBAAiB,GAAGzD,KAAK,CAAC4C,MAAN,GAAe,CAAzC;;MAEA,IAAI,MAAKc,YAAT,EAAuB;QACrB,IAAIL,SAAS,KAAK,OAAlB,EAA2B;UACzB,IAAIhB,OAAO,IAAIjC,KAAK,KAAKqD,iBAAzB,EAA4C;YAC1C,OAAO;cAAEvC,eAAe,EAAEuC;YAAnB,CAAP;UACD;;UACD,OAAO;YAAEvC,eAAe,EAAEd,KAAK,KAAKqD,iBAAV,GAA8B,CAA9B,GAAkCrD,KAAK,GAAG;UAA7D,CAAP;QACD;;QACD,IAAIiD,SAAS,KAAK,MAAlB,EAA0B;UACxB,IAAIhB,OAAO,IAAIjC,KAAK,KAAK,CAAzB,EAA4B;YAC1B,OAAO;cAAEc,eAAe,EAAE;YAAnB,CAAP;UACD;;UACD,OAAO;YAAEA,eAAe,EAAEd,KAAK,KAAK,CAAV,GAAcqD,iBAAd,GAAkCrD,KAAK,GAAG;UAA7D,CAAP;QACD;MACF;;MACD,OAAO,MAAKoD,aAAL,CAAmBH,SAAnB,CAAP;IACD,CAhIkB;;IAAA,gEAkIH,UAACA,SAAD,EAAe;MAC7B,qBAA0B,MAAKhC,OAA/B;MAAA,IAAQgB,OAAR,kBAAQA,OAAR;MAAA,IAAiBsB,IAAjB,kBAAiBA,IAAjB;MACA,IAAQ3D,KAAR,GAAkB,MAAKsB,KAAvB,CAAQtB,KAAR;MACA,IAAMyD,iBAAiB,GAAGzD,KAAK,CAAC4C,MAAN,GAAe,CAAzC;MACA,IAAIgB,gBAAgB,GAAGC,SAAvB;;MAEA,IAAIR,SAAS,KAAK,OAAlB,EAA2B;QACzB,IAAIhB,OAAO,IAAI,MAAKyB,gBAAL,KAA0BL,iBAAzC,EAA4D;UAC1D,OAAO;YAAEvC,eAAe,EAAEuC;UAAnB,CAAP;QACD;;QACD,MAAKK,gBAAL,IAAyB,CAAzB;QACA,IAAMC,eAAe,GAAGjE,QAAQ,CAACS,MAAT,CAAgBP,KAAhB,CAAxB;;QAEA,IAAI,MAAK8D,gBAAL,GAAwBC,eAA5B,EAA6C;UAC3CH,gBAAgB,GAAG9D,QAAQ,CAACC,UAAT,CAAoBC,KAApB,CAAnB;UACAA,KAAK,CAAC4D,gBAAD,CAAL,CAAwB9D,QAAxB,GAAmCiE,eAAe,GAAG,CAArD;UACA/D,KAAK,CAAC4D,gBAAD,CAAL,CAAwB/B,SAAxB,IAAqC7B,KAAK,CAAC4C,MAAN,GAAee,IAApD;;UACA,MAAKpC,WAAL,oBAAqBvB,KAArB;QACD;;QAED,MAAK+B,cAAL,IAAuB,CAAvB;;QACA,IAAI,MAAKA,cAAL,GAAsB0B,iBAA1B,EAA6C;UAC3C,MAAK1B,cAAL,GAAsB,CAAtB;QACD;;QACD,MAAKF,SAAL,IAAkB8B,IAAlB;MACD;;MACD,IAAIN,SAAS,KAAK,MAAlB,EAA0B;QACxB,IAAIhB,OAAO,IAAI,MAAKyB,gBAAL,KAA0B,CAAzC,EAA4C;UAC1C,OAAO;YAAE5C,eAAe,EAAE;UAAnB,CAAP;QACD;;QACD,MAAK4C,gBAAL,IAAyB,CAAzB;QACA,IAAME,eAAe,GAAGlE,QAAQ,CAACQ,MAAT,CAAgBN,KAAhB,CAAxB;;QAEA,IAAI,MAAK8D,gBAAL,GAAwBE,eAA5B,EAA6C;UAC3CJ,gBAAgB,GAAG9D,QAAQ,CAACO,UAAT,CAAoBL,KAApB,CAAnB;UACAA,KAAK,CAAC4D,gBAAD,CAAL,CAAwB9D,QAAxB,GAAmCkE,eAAe,GAAG,CAArD;UACAhE,KAAK,CAAC4D,gBAAD,CAAL,CAAwB/B,SAAxB,IAAqC7B,KAAK,CAAC4C,MAAN,GAAee,IAApD;;UACA,MAAKpC,WAAL,oBAAqBvB,KAArB;QACD;;QAED,MAAK+B,cAAL,IAAuB,CAAvB;;QACA,IAAI,MAAKA,cAAL,GAAsB,CAA1B,EAA6B;UAC3B,MAAKA,cAAL,GAAsB0B,iBAAtB;QACD;;QACD,MAAK5B,SAAL,IAAkB8B,IAAlB;MACD;;MAED,IAAMzC,eAAe,GAAGlB,KAAK,CAACiE,SAAN,CAAgB,UAAC9D,IAAD;QAAA,OAAUA,IAAI,CAACL,QAAL,KAAkB,MAAKgE,gBAAjC;MAAA,CAAhB,CAAxB;;MACA,IAAI9D,KAAK,CAACkB,eAAD,CAAT,EAA4B;QAC1BlB,KAAK,CACHkB,eADG,CAAL,CAEEQ,IAFF,CAEOQ,KAFP,CAEaL,SAFb,wBAEuC7B,KAAK,CAACkB,eAAD,CAAL,CAAuBW,SAF9D;MAGD;;MACD,MAAKqC,kBAAL,CAAwB,MAAKrC,SAA7B;;MACA,OAAO;QAAEX,eAAe,EAAfA;MAAF,CAAP;IACD,CAzLkB;;IAAA,mEA2LA,UAACmC,SAAD,EAAe;MAChC,OAAO,YAAM;QACX,6BAA4B,MAAKpC,oBAAL,CAA0BoC,SAA1B,CAA5B;QAAA,IAAQnC,eAAR,0BAAQA,eAAR;;QACA,MAAKC,QAAL,CAAcf,KAAd,CAAoBc,eAApB;MACD,CAHD;IAID,CAhMkB;;IAAA,4EAkMS,UAACiD,KAAD,EAAW;MACrC,OAAO,YAAM;QACX,CAAC,MAAKT,YAAN,IAAsB,MAAK5B,YAAL,CAAkB,MAAKC,cAAvB,EAAuCoC,KAAvC,EAA8C,IAA9C,CAAtB;;QACA,MAAKhD,QAAL,CAAcf,KAAd,CAAoB+D,KAApB;MACD,CAHD;IAID,CAvMkB;;IAAA,oEAyMC,UAACrD,CAAD,EAAO;MACzB,MAAKsD,gBAAL,GAAwBtD,CAAC,CAACuD,cAAF,CAAiB,CAAjB,EAAoBC,OAA5C;IACD,CA3MkB;;IAAA,kEA6MD,UAACxD,CAAD,EAAO;MACvB,IAAMyD,aAAa,GAAGzD,CAAC,CAACuD,cAAF,CAAiB,CAAjB,EAAoBC,OAA1C;MACA,IAAME,KAAK,GAAGD,aAAa,GAAG,MAAKH,gBAAnC;;MACA,IAAII,KAAK,GAAG,EAAZ,EAAgB;QACd,6BAA4B,MAAKvD,oBAAL,CAA0B,MAA1B,CAA5B;QAAA,IAAQC,eAAR,0BAAQA,eAAR;;QACA,MAAKC,QAAL,CAAcf,KAAd,CAAoBc,eAApB;MACD,CAHD,MAGO,IAAIsD,KAAK,GAAG,CAAC,EAAb,EAAiB;QACtB,6BAA4B,MAAKvD,oBAAL,CAA0B,OAA1B,CAA5B;QAAA,IAAQC,gBAAR,0BAAQA,eAAR;;QACA,MAAKC,QAAL,CAAcf,KAAd,CAAoBc,gBAApB;MACD;IACF,CAvNkB;;IAAA,4EAwOS,UAACmC,SAAD;MAAA,OAAe,UAACvC,CAAD,EAAO;QAChD,IAAQ2D,OAAR,GAAoB3D,CAApB,CAAQ2D,OAAR;;QACA,IAAIA,OAAO,KAAK,EAAhB,EAAoB;UAClB3D,CAAC,CAACE,cAAF;;UACA,MAAK0D,gBAAL,CAAsBrB,SAAtB;QACD;MACF,CAN2B;IAAA,CAxOT;;IAEjB,MAAKK,YAAL,GAAoB9C,KAAK,CAACR,KAAN,KAAgByD,SAApC;IACA,MAAKvC,KAAL,GAAa;MACXtB,KAAK,EAAE;IADI,CAAb;IAHiB;EAMlB;;;;WAED,6BAAoB;MAClB,OAAO;QACLI,KAAK,EAAE;MADF,CAAP;IAGD;;;WAED,4BAAmBuE,SAAnB,EAA8B;MAC5B,IAAQvE,KAAR,GAAkB,KAAKiB,OAAvB,CAAQjB,KAAR;;MACA,IAAIuE,SAAS,CAACvE,KAAV,KAAoBA,KAApB,IAA6B,KAAKsD,YAAtC,EAAoD;QAClD,KAAK5B,YAAL,CAAkB6C,SAAS,CAACvE,KAA5B,EAAmCA,KAAnC;MACD;IACF;;;WAsMD,6BAAoB;MAClB,IAAQwE,QAAR,GAAqB,KAAKvD,OAA1B,CAAQuD,QAAR;MAEA,OAAO;QACLC,GAAG,EAAE,KAAK7C,YADL;QAEL4C,QAAQ,EAARA;MAFK,CAAP;IAID;;;WAED,wBAAe;MACb,OAAO;QACLE,WAAW,EAAE,KAAKC;MADb,CAAP;IAGD;;;WAUD,wBAAe;MACb,qBAA2B,KAAK1D,OAAhC;MAAA,IAAQjB,KAAR,kBAAQA,KAAR;MAAA,IAAeiC,OAAf,kBAAeA,OAAf;MACA,IAAQrC,KAAR,GAAkB,KAAKsB,KAAvB,CAAQtB,KAAR;MACA,IAAIgF,QAAQ,GAAG,KAAf;;MACA,IAAIhF,KAAK,CAAC4C,MAAN,IAAgBP,OAApB,EAA6B;QAC3B2C,QAAQ,GAAG5E,KAAK,KAAK,CAArB;MACD;;MACD,OAAO;QACL6E,OAAO,EAAE,KAAKP,gBAAL,CAAsB,MAAtB,CADJ;QAELQ,SAAS,EAAE,KAAKC,yBAAL,CAA+B,MAA/B,CAFN;QAGLH,QAAQ,EAARA;MAHK,CAAP;IAKD;;;WAED,wBAAe;MACb,qBAA2B,KAAK3D,OAAhC;MAAA,IAAQjB,KAAR,kBAAQA,KAAR;MAAA,IAAeiC,OAAf,kBAAeA,OAAf;MACA,IAAQrC,KAAR,GAAkB,KAAKsB,KAAvB,CAAQtB,KAAR;MACA,IAAIgF,QAAQ,GAAG,KAAf;;MACA,IAAIhF,KAAK,CAAC4C,MAAN,IAAgBP,OAApB,EAA6B;QAC3B2C,QAAQ,GAAG5E,KAAK,KAAKJ,KAAK,CAAC4C,MAAN,GAAe,CAApC;MACD;;MACD,OAAO;QACLqC,OAAO,EAAE,KAAKP,gBAAL,CAAsB,OAAtB,CADJ;QAELQ,SAAS,EAAE,KAAKC,yBAAL,CAA+B,OAA/B,CAFN;QAGLH,QAAQ,EAARA;MAHK,CAAP;IAKD;;;WAED,8BAAqB;MAAA;;MACnB,IAAQhF,KAAR,GAAkB,KAAKsB,KAAvB,CAAQtB,KAAR;MACA,IAAQI,KAAR,GAAkB,KAAKiB,OAAvB,CAAQjB,KAAR;MAEA,OAAO;QACLJ,KAAK,EAAEA,KAAK,CAAC4B,GAAN,CAAU,UAACzB,IAAD,EAAOY,GAAP;UAAA,OAAgB;YAC/BqE,MAAM,EAAErE,GAAG,KAAKX,KADe;YAE/B6E,OAAO,EAAE,MAAI,CAACI,yBAAL,CAA+BtE,GAA/B,CAFsB;YAG/BA,GAAG,EAAHA;UAH+B,CAAhB;QAAA,CAAV;MADF,CAAP;IAOD;;;WAED,kBAAS;MAAA;MAAA;;MACP,IAAMuE,SAAS,GAKH3F,GALZ;MACA,qBAA6B,KAAK0B,OAAlC;MAAA,IAAQkE,MAAR,kBAAQA,MAAR;MAAA,IAAgBC,QAAhB,kBAAgBA,QAAhB;MAEA,eAAO/F,OAAO,CAAC8F,MAAD,CAAd,eACE,oBAAC,SAAD;QAAA,aAEa,KAAKE,cAFlB;QAAA,YAGY,CAHZ;QAAA,gBAIgB,KAAKC,iBAJrB;QAAA,cAKc,KAAKC;MALnB,yBAOE,oBAAC,QAAD,2BAPF,CADF;IAWD;;;;EAxTwBnG,S;;gBAArBmB,Y,iBACiB,U;;gBADjBA,Y,kBAEkB;EACpBiF,YAAY,EAAE,CADM;EAEpBhB,QAAQ,EAAE,GAFU;EAGpBjB,IAAI,EAAE,GAHc;EAIpBtB,OAAO,EAAE;AAJW,C;;gBAFlB1B,Y,WASWuB,K;;AAkTjB,IAAM2D,SAAS,GAAG,SAAZA,SAAY,CAACjF,KAAD,EAAW;EAAA;EAAA;;EAC3B,IAAMkF,UAAU,GAG2BnG,GAH3C;EACA,IAAQ4F,MAAR,GAA6B3E,KAA7B,CAAQ2E,MAAR;EAAA,IAAgBX,QAAhB,GAA6BhE,KAA7B,CAAgBgE,QAAhB;EAEA,eAAOnF,OAAO,CAAC8F,MAAD,CAAd,eAAuB,oBAAC,UAAD;IAAA,0BAA0CX,QAA1C;EAAA,YAAvB;AACD,CALD;;AAOA,IAAMmB,IAAI,GAAG,SAAPA,IAAO,CAACnF,KAAD,EAAW;EAAA;EAAA;;EACtB,IAAQ2E,MAAR,GAAgC3E,KAAhC,CAAQ2E,MAAR;EAAA,IAAgBT,WAAhB,GAAgClE,KAAhC,CAAgBkE,WAAhB;EACA,IAAMkB,KAAK,GAW2BrG,GAXtC;EACA,IAAMsG,OAAO,gBAAG5G,KAAK,CAACwB,SAAN,EAAhB;EACAvB,SAAS,CAAC,YAAM;IACd;IACAwF,WAAW,CAAC;MAAEpD,IAAI,EAAEuE,OAAO,CAAChE;IAAhB,CAAD,CAAX;IACA,OAAO,YAAM;MACX;MACA6C,WAAW,CAAC;QAAEpD,IAAI,EAAEuE,OAAO,CAAChE;MAAhB,CAAD,EAA4B,IAA5B,CAAX;IACD,CAHD;EAID,CAPQ,EAON,EAPM,CAAT;EASA,gBAAOxC,OAAO,CAAC8F,MAAD,CAAd,eAAuB,oBAAC,KAAD;IAAA,OAAyBU;EAAzB,YAAvB;AACD,CAdD;;AAgBA,IAAMC,IAAI,GAAG,SAAPA,IAAO,CAACtF,KAAD,EAAW;EAAA;EAAA;;EACtB,IAAQ2E,MAAR,GAAmB3E,KAAnB,CAAQ2E,MAAR;EACA,IAAMY,KAAK,GAC2BxG,GADtC;EACA,gBAAOF,OAAO,CAAC8F,MAAD,CAAd,eAAuB,oBAAC,KAAD,kEAAvB;AACD,CAJD;;AAMAW,IAAI,CAACE,YAAL,GAAoB;EAAA,OAAO;IACzBC,QAAQ,eACN,oBAAC,WAAD;MACE,WAAW,MADb;MAEE,KAAK,EAAC,UAFR;MAGE,eAAa,IAHf;MAIE,cAAW;IAJb,EAFuB;IASzBC,GAAG,EAAE;EAToB,CAAP;AAAA,CAApB;;AAYA,IAAMC,IAAI,GAAG,SAAPA,IAAO,CAAC3F,KAAD,EAAW;EAAA;EAAA;;EACtB,IAAQ2E,MAAR,GAAmB3E,KAAnB,CAAQ2E,MAAR;EACA,IAAMiB,KAAK,GAC2B7G,GADtC;EACA,gBAAOF,OAAO,CAAC8F,MAAD,CAAd,eAAuB,oBAAC,KAAD,kEAAvB;AACD,CAJD;;AAMAgB,IAAI,CAACH,YAAL,GAAoB;EAAA,OAAO;IACzBC,QAAQ,eACN,oBAAC,YAAD;MACE,WAAW,MADb;MAEE,KAAK,EAAC,UAFR;MAGE,eAAa,IAHf;MAIE,cAAW;IAJb,EAFuB;IASzBC,GAAG,EAAE;EAToB,CAAP;AAAA,CAApB;;AAYA,IAAMG,UAAU,GAAG,SAAbA,UAAa,SAAiC;EAAA;EAAA;;EAAA,IAA9BzG,KAA8B,UAA9BA,KAA8B;EAAA,IAAvBuF,MAAuB,UAAvBA,MAAuB;EAAA,IAAfC,QAAe,UAAfA,QAAe;EAClD,IAAMkB,WAAW,GASM/G,GATvB;;EACA,IAAI6F,QAAQ,CAACmB,MAAb,EAAqB;IAAA;;IACnB,gBAAOlH,OAAO,CAAC8F,MAAD,CAAd,eACE,oBAAC,WAAD,sFACE,oBAAC,QAAD,4BADF,CADF;EAKD;;EACD,gBAAO9F,OAAO,CAAC8F,MAAD,CAAd,eACE,oBAAC,WAAD,yEACGvF,KAAK,CAAC4B,GAAN,CAAU,UAACzB,IAAD,EAAOC,KAAP;IAAA,oBACT,oBAAC,QAAD,CAAU,SAAV;MAAoB,GAAG,EAAEA;IAAzB,GAAoCD,IAApC,EADS;EAAA,CAAV,CADH,CADF;AAOD,CAhBD;;AAkBA,IAAMyG,SAAS,GAAG,SAAZA,SAAY,SAA0B;EAAA;EAAA;;EAAA,IAAvBrB,MAAuB,UAAvBA,MAAuB;EAAA,IAAfC,QAAe,UAAfA,QAAe;EAC1C,IAAMqB,UAAU,GAEMlH,GAFtB;EACA,gBAAOF,OAAO,CAAC8F,MAAD,CAAd,eACE,oBAAC,UAAD,qFACE,oBAAC,QAAD,4BADF,CADF;AAKD,CAPD;;AASA,IAAMuB,QAAQ,GAAGvH,eAAe,CAACoB,YAAD,EAAe;EAC7CkF,SAAS,EAATA,SAD6C;EAE7CY,UAAU,EAAVA,UAF6C;EAG7CG,SAAS,EAATA,SAH6C;EAI7Cb,IAAI,EAAJA,IAJ6C;EAK7CG,IAAI,EAAJA,IAL6C;EAM7CK,IAAI,EAAJA;AAN6C,CAAf,CAAhC;AASA,eAAeO,QAAf"}
|
|
1
|
+
{"version":3,"file":"Carousel.js","names":["React","useEffect","createComponent","Component","sstyled","Root","Box","ChevronRight","ChevronLeft","uniqueIDEnhancement","position","getItemMin","items","indexItem","forEach","item","index","getItemMax","getMin","getMax","MAP_TRANSFORM","ArrowLeft","ArrowRight","CarouselRoot","props","createRef","e","key","preventDefault","controlTransformItem","activeItemIndex","handlers","removeItem","asProps","state","updateItems","filter","element","node","setState","map","transform","slideToValue","indexIndicator","refContainer","current","style","currentIndex","nextIndex","bounded","listIndex","_","ind","tmpArr","minTmpArr","maxTmpArr","length","unshift","pop","shift","push","tmpCurrentIndex","indexOf","left","nextIndexItem","direction","getDirection","i","transformItem","maxIndexIndicator","isControlled","step","nextItemPosition","undefined","positionLeftItem","positionItemMax","positionItemMin","findIndex","transformContainer","value","_touchStartCoord","changedTouches","clientX","touchEndCoord","delta","keyCode","bindHandlerClick","prevProps","duration","ref","toggleItem","uid","disabled","onClick","onKeyDown","bindHandlerKeydownControl","active","bindHandlerClickIndicator","SCarousel","styles","Children","handlerKeyDown","handlerTouchStart","handlerTouchEnd","defaultIndex","Container","SContainer","Item","SItem","refItem","Prev","SPrev","defaultProps","children","top","Next","SNext","Indicators","SIndicators","origin","Indicator","SIndicator","Carousel"],"sources":["../../src/Carousel.jsx"],"sourcesContent":["import React, { useEffect } from 'react';\nimport createComponent, { Component, sstyled, Root } from '@semcore/core';\n\nimport { Box } from '@semcore/flex-box';\nimport ChevronRight from '@semcore/icon/ChevronRight/l';\nimport ChevronLeft from '@semcore/icon/ChevronLeft/l';\nimport uniqueIDEnhancement from '@semcore/utils/lib/uniqueID';\n\nimport style from './style/carousel.shadow.css';\n\nconst position = {\n getItemMin: function (items) {\n let indexItem = 0;\n items.forEach(function (item, index) {\n if (item.position < items[indexItem].position) {\n indexItem = index;\n }\n });\n return indexItem;\n },\n getItemMax: function (items) {\n let indexItem = 0;\n items.forEach(function (item, index) {\n if (item.position > items[indexItem].position) {\n indexItem = index;\n }\n });\n return indexItem;\n },\n getMin: function (items) {\n return items[position.getItemMin(items)].position;\n },\n getMax: function (items) {\n return items[position.getItemMax(items)].position;\n },\n};\n\nconst MAP_TRANSFORM = {\n ArrowLeft: 'left',\n ArrowRight: 'right',\n};\n\nclass CarouselRoot extends Component {\n static displayName = 'Carousel';\n static defaultProps = {\n defaultIndex: 0,\n duration: 350,\n step: 100,\n bounded: false,\n };\n\n static style = style;\n static enhance = [uniqueIDEnhancement()];\n\n refContainer = React.createRef();\n transform = 0;\n positionLeftItem = 0;\n indexIndicator = 0;\n\n constructor(props) {\n super(props);\n this.isControlled = props.index !== undefined;\n this.state = {\n items: [],\n };\n }\n\n uncontrolledProps() {\n return {\n index: null,\n };\n }\n\n componentDidUpdate(prevProps) {\n const { index } = this.asProps;\n if (prevProps.index !== index && this.isControlled) {\n this.slideToValue(prevProps.index, index);\n }\n }\n\n handlerKeyDown = (e) => {\n switch (e.key) {\n case 'ArrowLeft':\n case 'ArrowRight':\n e.preventDefault();\n const { activeItemIndex } = this.controlTransformItem(MAP_TRANSFORM[e.key]);\n this.handlers.index(activeItemIndex);\n }\n };\n\n toggleItem = (item, removeItem = false) => {\n const { index } = this.asProps;\n const { items } = this.state;\n if (removeItem) {\n this.updateItems(items.filter((element) => element.node !== item.node));\n } else {\n this.setState(\n (state) => {\n return {\n items: [...state.items, item].map((element, position) => ({\n ...element,\n position,\n transform: 0,\n })),\n };\n },\n () => {\n if (index !== 0) {\n this.slideToValue(this.indexIndicator, index);\n }\n },\n );\n }\n };\n\n updateItems = (items) => {\n this.setState(() => ({ items }));\n };\n\n transformContainer = (transform) => {\n if (this.refContainer.current) {\n this.refContainer.current.style.transform = `translateX(${transform}%)`;\n }\n };\n\n getDirection = (currentIndex, nextIndex, bounded) => {\n if (bounded) {\n return currentIndex < nextIndex ? 'right' : 'left';\n }\n const { items } = this.state;\n const listIndex = items.map((_, ind) => ind);\n const tmpArr = [...listIndex];\n const minTmpArr = tmpArr[0];\n const maxTmpArr = tmpArr[tmpArr.length - 1];\n\n if (tmpArr.length === 2) {\n return currentIndex < nextIndex ? 'right' : 'left';\n }\n if (currentIndex === minTmpArr) {\n tmpArr.unshift(maxTmpArr);\n tmpArr.pop();\n }\n if (currentIndex === maxTmpArr) {\n tmpArr.shift();\n tmpArr.push(minTmpArr);\n }\n\n const tmpCurrentIndex = tmpArr.indexOf(currentIndex);\n const left = tmpArr.indexOf(nextIndex);\n\n return left - tmpCurrentIndex < 0 ? 'left' : 'right';\n };\n\n slideToValue = (currentIndex, nextIndexItem, bounded) => {\n if (currentIndex === nextIndexItem) return false;\n const direction = this.getDirection(\n currentIndex,\n nextIndexItem,\n bounded || this.asProps.bounded,\n );\n let i = currentIndex;\n while (nextIndexItem !== i) {\n const { activeItemIndex } = this.transformItem(direction);\n i = activeItemIndex;\n }\n };\n\n controlTransformItem = (direction) => {\n const { bounded, index } = this.asProps;\n const { items } = this.state;\n const maxIndexIndicator = items.length - 1;\n\n if (this.isControlled) {\n if (direction === 'right') {\n if (bounded && index === maxIndexIndicator) {\n return { activeItemIndex: maxIndexIndicator };\n }\n return { activeItemIndex: index === maxIndexIndicator ? 0 : index + 1 };\n }\n if (direction === 'left') {\n if (bounded && index === 0) {\n return { activeItemIndex: 0 };\n }\n return { activeItemIndex: index === 0 ? maxIndexIndicator : index - 1 };\n }\n }\n return this.transformItem(direction);\n };\n\n transformItem = (direction) => {\n const { bounded, step } = this.asProps;\n const { items } = this.state;\n const maxIndexIndicator = items.length - 1;\n let nextItemPosition = undefined;\n\n if (direction === 'right') {\n if (bounded && this.positionLeftItem === maxIndexIndicator) {\n return { activeItemIndex: maxIndexIndicator };\n }\n this.positionLeftItem += 1;\n const positionItemMax = position.getMax(items);\n\n if (this.positionLeftItem > positionItemMax) {\n nextItemPosition = position.getItemMin(items);\n items[nextItemPosition].position = positionItemMax + 1;\n items[nextItemPosition].transform += items.length * step;\n this.updateItems([...items]);\n }\n\n this.indexIndicator += 1;\n if (this.indexIndicator > maxIndexIndicator) {\n this.indexIndicator = 0;\n }\n this.transform -= step;\n }\n if (direction === 'left') {\n if (bounded && this.positionLeftItem === 0) {\n return { activeItemIndex: 0 };\n }\n this.positionLeftItem -= 1;\n const positionItemMin = position.getMin(items);\n\n if (this.positionLeftItem < positionItemMin) {\n nextItemPosition = position.getItemMax(items);\n items[nextItemPosition].position = positionItemMin - 1;\n items[nextItemPosition].transform -= items.length * step;\n this.updateItems([...items]);\n }\n\n this.indexIndicator -= 1;\n if (this.indexIndicator < 0) {\n this.indexIndicator = maxIndexIndicator;\n }\n this.transform += step;\n }\n\n const activeItemIndex = items.findIndex((item) => item.position === this.positionLeftItem);\n if (items[activeItemIndex]) {\n items[\n activeItemIndex\n ].node.style.transform = `translateX(${items[activeItemIndex].transform}%)`;\n }\n this.transformContainer(this.transform);\n return { activeItemIndex };\n };\n\n bindHandlerClick = (direction) => {\n return () => {\n const { activeItemIndex } = this.controlTransformItem(direction);\n this.handlers.index(activeItemIndex);\n };\n };\n\n bindHandlerClickIndicator = (value) => {\n return () => {\n !this.isControlled && this.slideToValue(this.indexIndicator, value, true);\n this.handlers.index(value);\n };\n };\n\n handlerTouchStart = (e) => {\n this._touchStartCoord = e.changedTouches[0].clientX;\n };\n\n handlerTouchEnd = (e) => {\n const touchEndCoord = e.changedTouches[0].clientX;\n const delta = touchEndCoord - this._touchStartCoord;\n if (delta > 50) {\n const { activeItemIndex } = this.controlTransformItem('left');\n this.handlers.index(activeItemIndex);\n } else if (delta < -50) {\n const { activeItemIndex } = this.controlTransformItem('right');\n this.handlers.index(activeItemIndex);\n }\n };\n\n getContainerProps() {\n const { duration } = this.asProps;\n\n return {\n ref: this.refContainer,\n duration,\n };\n }\n\n getItemProps(_, index) {\n return {\n toggleItem: this.toggleItem,\n uid: this.asProps.uid,\n index,\n };\n }\n\n bindHandlerKeydownControl = (direction) => (e) => {\n const { keyCode } = e;\n if (keyCode === 13) {\n e.preventDefault();\n this.bindHandlerClick(direction)();\n }\n };\n\n getPrevProps() {\n const { index, bounded } = this.asProps;\n const { items } = this.state;\n let disabled = false;\n if (items.length && bounded) {\n disabled = index === 0;\n }\n return {\n onClick: this.bindHandlerClick('left'),\n onKeyDown: this.bindHandlerKeydownControl('left'),\n disabled,\n };\n }\n\n getNextProps() {\n const { index, bounded } = this.asProps;\n const { items } = this.state;\n let disabled = false;\n if (items.length && bounded) {\n disabled = index === items.length - 1;\n }\n return {\n onClick: this.bindHandlerClick('right'),\n onKeyDown: this.bindHandlerKeydownControl('right'),\n disabled,\n };\n }\n\n getIndicatorsProps() {\n const { items } = this.state;\n const { index } = this.asProps;\n\n return {\n items: items.map((item, key) => ({\n active: key === index,\n onClick: this.bindHandlerClickIndicator(key),\n key,\n })),\n };\n }\n\n render() {\n const SCarousel = Root;\n const { styles, Children, index, uid } = this.asProps;\n\n return sstyled(styles)(\n <SCarousel\n render={Box}\n onKeyDown={this.handlerKeyDown}\n tabIndex={0}\n onTouchStart={this.handlerTouchStart}\n onTouchEnd={this.handlerTouchEnd}\n role=\"list\"\n aria-activedescendant={`igc-${uid}-carousel-item-${index}`}\n >\n <Children />\n </SCarousel>,\n );\n }\n}\n\nconst Container = (props) => {\n const SContainer = Root;\n const { styles, duration } = props;\n\n return sstyled(styles)(<SContainer render={Box} use:duration={`${duration}ms`} />);\n};\n\nconst Item = (props) => {\n const { styles, toggleItem, index, uid } = props;\n const SItem = Root;\n const refItem = React.createRef();\n useEffect(() => {\n // add item\n toggleItem({ node: refItem.current });\n return () => {\n // remove item\n toggleItem({ node: refItem.current }, true);\n };\n }, []);\n\n return sstyled(styles)(\n <SItem render={Box} ref={refItem} role=\"listitem\" id={`igc-${uid}-carousel-item-${index}`} />,\n );\n};\n\nconst Prev = (props) => {\n const { styles } = props;\n const SPrev = Root;\n return sstyled(styles)(<SPrev render={Box} aria-hidden=\"true\" />);\n};\n\nPrev.defaultProps = () => ({\n children: <ChevronLeft interactive color=\"gray-300\" aria-label=\"Go to the previous item\" />,\n top: 0,\n});\n\nconst Next = (props) => {\n const { styles } = props;\n const SNext = Root;\n return sstyled(styles)(<SNext render={Box} aria-hidden=\"true\" />);\n};\n\nNext.defaultProps = () => ({\n children: <ChevronRight interactive color=\"gray-300\" aria-label=\"Go to the next item\" />,\n top: 0,\n});\n\nconst Indicators = ({ items, styles, Children }) => {\n const SIndicators = Root;\n if (Children.origin) {\n return sstyled(styles)(\n <SIndicators render={Box} aria-hidden=\"true\">\n <Children />\n </SIndicators>,\n );\n }\n return sstyled(styles)(\n <SIndicators render={Box} aria-hidden=\"true\">\n {items.map((item, index) => (\n <Carousel.Indicator key={index} {...item} />\n ))}\n </SIndicators>,\n );\n};\n\nconst Indicator = ({ styles, Children }) => {\n const SIndicator = Root;\n return sstyled(styles)(\n <SIndicator render={Box}>\n <Children />\n </SIndicator>,\n );\n};\n\nconst Carousel = createComponent(CarouselRoot, {\n Container,\n Indicators,\n Indicator,\n Item,\n Prev,\n Next,\n});\n\nexport default Carousel;\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@semcore/carousel",
|
|
3
3
|
"description": "Semrush Carousel Component",
|
|
4
|
-
"version": "2.1.
|
|
4
|
+
"version": "2.1.6",
|
|
5
5
|
"main": "lib/cjs/index.js",
|
|
6
6
|
"module": "lib/es6/index.js",
|
|
7
7
|
"typings": "lib/types/index.d.ts",
|
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
"author": "UI-kit team <ui-kit-team@semrush.com>",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@semcore/utils": "^3.15",
|
|
13
12
|
"@semcore/flex-box": "^4",
|
|
14
|
-
"@semcore/icon": "2.16 - 3"
|
|
13
|
+
"@semcore/icon": "2.16 - 3",
|
|
14
|
+
"@semcore/utils": "^3.15"
|
|
15
15
|
},
|
|
16
16
|
"peerDependencies": {
|
|
17
17
|
"@semcore/core": "^1.11",
|
|
@@ -26,9 +26,11 @@
|
|
|
26
26
|
"directory": "semcore/carousel"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
|
-
"@
|
|
30
|
-
"@
|
|
29
|
+
"@guidepup/playwright": "0.6.1",
|
|
30
|
+
"@playwright/test": "1.25.1",
|
|
31
31
|
"@semcore/flex-box": "*",
|
|
32
|
+
"@semcore/jest-preset-ui": "1.0.0",
|
|
33
|
+
"@types/react": "18.0.21",
|
|
32
34
|
"jest": "29.0.1"
|
|
33
35
|
},
|
|
34
36
|
"scripts": {
|
package/src/Carousel.jsx
CHANGED
|
@@ -4,6 +4,7 @@ import createComponent, { Component, sstyled, Root } from '@semcore/core';
|
|
|
4
4
|
import { Box } from '@semcore/flex-box';
|
|
5
5
|
import ChevronRight from '@semcore/icon/ChevronRight/l';
|
|
6
6
|
import ChevronLeft from '@semcore/icon/ChevronLeft/l';
|
|
7
|
+
import uniqueIDEnhancement from '@semcore/utils/lib/uniqueID';
|
|
7
8
|
|
|
8
9
|
import style from './style/carousel.shadow.css';
|
|
9
10
|
|
|
@@ -49,6 +50,7 @@ class CarouselRoot extends Component {
|
|
|
49
50
|
};
|
|
50
51
|
|
|
51
52
|
static style = style;
|
|
53
|
+
static enhance = [uniqueIDEnhancement()];
|
|
52
54
|
|
|
53
55
|
refContainer = React.createRef();
|
|
54
56
|
transform = 0;
|
|
@@ -86,7 +88,7 @@ class CarouselRoot extends Component {
|
|
|
86
88
|
}
|
|
87
89
|
};
|
|
88
90
|
|
|
89
|
-
|
|
91
|
+
toggleItem = (item, removeItem = false) => {
|
|
90
92
|
const { index } = this.asProps;
|
|
91
93
|
const { items } = this.state;
|
|
92
94
|
if (removeItem) {
|
|
@@ -281,9 +283,11 @@ class CarouselRoot extends Component {
|
|
|
281
283
|
};
|
|
282
284
|
}
|
|
283
285
|
|
|
284
|
-
getItemProps() {
|
|
286
|
+
getItemProps(_, index) {
|
|
285
287
|
return {
|
|
286
|
-
|
|
288
|
+
toggleItem: this.toggleItem,
|
|
289
|
+
uid: this.asProps.uid,
|
|
290
|
+
index,
|
|
287
291
|
};
|
|
288
292
|
}
|
|
289
293
|
|
|
@@ -338,7 +342,7 @@ class CarouselRoot extends Component {
|
|
|
338
342
|
|
|
339
343
|
render() {
|
|
340
344
|
const SCarousel = Root;
|
|
341
|
-
const { styles, Children } = this.asProps;
|
|
345
|
+
const { styles, Children, index, uid } = this.asProps;
|
|
342
346
|
|
|
343
347
|
return sstyled(styles)(
|
|
344
348
|
<SCarousel
|
|
@@ -347,6 +351,8 @@ class CarouselRoot extends Component {
|
|
|
347
351
|
tabIndex={0}
|
|
348
352
|
onTouchStart={this.handlerTouchStart}
|
|
349
353
|
onTouchEnd={this.handlerTouchEnd}
|
|
354
|
+
role="list"
|
|
355
|
+
aria-activedescendant={`igc-${uid}-carousel-item-${index}`}
|
|
350
356
|
>
|
|
351
357
|
<Children />
|
|
352
358
|
</SCarousel>,
|
|
@@ -362,54 +368,42 @@ const Container = (props) => {
|
|
|
362
368
|
};
|
|
363
369
|
|
|
364
370
|
const Item = (props) => {
|
|
365
|
-
const { styles,
|
|
371
|
+
const { styles, toggleItem, index, uid } = props;
|
|
366
372
|
const SItem = Root;
|
|
367
373
|
const refItem = React.createRef();
|
|
368
374
|
useEffect(() => {
|
|
369
375
|
// add item
|
|
370
|
-
|
|
376
|
+
toggleItem({ node: refItem.current });
|
|
371
377
|
return () => {
|
|
372
378
|
// remove item
|
|
373
|
-
|
|
379
|
+
toggleItem({ node: refItem.current }, true);
|
|
374
380
|
};
|
|
375
381
|
}, []);
|
|
376
382
|
|
|
377
|
-
return sstyled(styles)(
|
|
383
|
+
return sstyled(styles)(
|
|
384
|
+
<SItem render={Box} ref={refItem} role="listitem" id={`igc-${uid}-carousel-item-${index}`} />,
|
|
385
|
+
);
|
|
378
386
|
};
|
|
379
387
|
|
|
380
388
|
const Prev = (props) => {
|
|
381
389
|
const { styles } = props;
|
|
382
390
|
const SPrev = Root;
|
|
383
|
-
return sstyled(styles)(<SPrev render={Box} />);
|
|
391
|
+
return sstyled(styles)(<SPrev render={Box} aria-hidden="true" />);
|
|
384
392
|
};
|
|
385
393
|
|
|
386
394
|
Prev.defaultProps = () => ({
|
|
387
|
-
children:
|
|
388
|
-
<ChevronLeft
|
|
389
|
-
interactive
|
|
390
|
-
color="gray-300"
|
|
391
|
-
aria-hidden={true}
|
|
392
|
-
aria-label="Go to the previous item"
|
|
393
|
-
/>
|
|
394
|
-
),
|
|
395
|
+
children: <ChevronLeft interactive color="gray-300" aria-label="Go to the previous item" />,
|
|
395
396
|
top: 0,
|
|
396
397
|
});
|
|
397
398
|
|
|
398
399
|
const Next = (props) => {
|
|
399
400
|
const { styles } = props;
|
|
400
401
|
const SNext = Root;
|
|
401
|
-
return sstyled(styles)(<SNext render={Box} />);
|
|
402
|
+
return sstyled(styles)(<SNext render={Box} aria-hidden="true" />);
|
|
402
403
|
};
|
|
403
404
|
|
|
404
405
|
Next.defaultProps = () => ({
|
|
405
|
-
children:
|
|
406
|
-
<ChevronRight
|
|
407
|
-
interactive
|
|
408
|
-
color="gray-300"
|
|
409
|
-
aria-hidden={true}
|
|
410
|
-
aria-label="Go to the next item"
|
|
411
|
-
/>
|
|
412
|
-
),
|
|
406
|
+
children: <ChevronRight interactive color="gray-300" aria-label="Go to the next item" />,
|
|
413
407
|
top: 0,
|
|
414
408
|
});
|
|
415
409
|
|
|
@@ -417,13 +411,13 @@ const Indicators = ({ items, styles, Children }) => {
|
|
|
417
411
|
const SIndicators = Root;
|
|
418
412
|
if (Children.origin) {
|
|
419
413
|
return sstyled(styles)(
|
|
420
|
-
<SIndicators render={Box}>
|
|
414
|
+
<SIndicators render={Box} aria-hidden="true">
|
|
421
415
|
<Children />
|
|
422
416
|
</SIndicators>,
|
|
423
417
|
);
|
|
424
418
|
}
|
|
425
419
|
return sstyled(styles)(
|
|
426
|
-
<SIndicators render={Box}>
|
|
420
|
+
<SIndicators render={Box} aria-hidden="true">
|
|
427
421
|
{items.map((item, index) => (
|
|
428
422
|
<Carousel.Indicator key={index} {...item} />
|
|
429
423
|
))}
|