@semcore/carousel 1.6.4 → 2.0.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 +6 -0
- package/lib/cjs/Carousel.js +65 -48
- package/lib/cjs/Carousel.js.map +1 -1
- package/lib/cjs/index.d.ts +4 -1
- package/lib/cjs/style/carousel.shadow.css +22 -17
- package/lib/es6/Carousel.js +66 -47
- package/lib/es6/Carousel.js.map +1 -1
- package/lib/es6/index.d.ts +4 -1
- package/lib/es6/style/carousel.shadow.css +22 -17
- package/lib/types/index.d.ts +4 -1
- package/package.json +1 -1
- package/src/Carousel.jsx +24 -8
- package/src/index.d.ts +4 -1
- package/src/style/carousel.shadow.css +22 -17
package/CHANGELOG.md
CHANGED
package/lib/cjs/Carousel.js
CHANGED
|
@@ -9,6 +9,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
9
9
|
});
|
|
10
10
|
exports["default"] = void 0;
|
|
11
11
|
|
|
12
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
13
|
+
|
|
12
14
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
13
15
|
|
|
14
16
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
@@ -52,22 +54,22 @@ var style = (
|
|
|
52
54
|
/*__reshadow_css_start__*/
|
|
53
55
|
_core.sstyled.insert(
|
|
54
56
|
/*__inner_css_start__*/
|
|
55
|
-
".
|
|
57
|
+
".___SCarousel_wgb1z_gg_{overflow:hidden;outline:none}.___SContainer_wgb1z_gg_{display:flex;transition:transform var(--duration_wik9h6) ease-in-out}.___SItem_wgb1z_gg_{flex:0 0 100%;max-width:100%;box-sizing:border-box;transform:var(--transform_wik9h6);border-radius:6px;overflow:hidden}.___SIndicators_wgb1z_gg_{display:flex;justify-content:center;margin-top:16px}.___SIndicator_wgb1z_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_wgb1z_gg_:hover{opacity:.6}.___SIndicator_wgb1z_gg_.__active_wgb1z_gg_{opacity:1}.___SNext_wgb1z_gg_,.___SPrev_wgb1z_gg_{display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.___SPrev_wgb1z_gg_{margin-right:12px}.___SNext_wgb1z_gg_{margin-left:12px}.___SNext_wgb1z_gg_.__disabled_wgb1z_gg_,.___SPrev_wgb1z_gg_.__disabled_wgb1z_gg_{opacity:0.3;cursor:default;pointer-events:none}@media (prefers-reduced-motion){.___SContainer_wgb1z_gg_{transition:none}}"
|
|
56
58
|
/*__inner_css_end__*/
|
|
57
|
-
, "
|
|
59
|
+
, "wik9h6_gg_")
|
|
58
60
|
/*__reshadow_css_end__*/
|
|
59
61
|
, {
|
|
60
|
-
"__SCarousel": "
|
|
61
|
-
"__SContainer": "
|
|
62
|
-
"--duration": "--
|
|
63
|
-
"__SItem": "
|
|
64
|
-
"--transform": "--
|
|
65
|
-
"__SIndicators": "
|
|
66
|
-
"__SIndicator": "
|
|
67
|
-
"_active": "
|
|
68
|
-
"__SNext": "
|
|
69
|
-
"__SPrev": "
|
|
70
|
-
"_disabled": "
|
|
62
|
+
"__SCarousel": "___SCarousel_wgb1z_gg_",
|
|
63
|
+
"__SContainer": "___SContainer_wgb1z_gg_",
|
|
64
|
+
"--duration": "--duration_wik9h6",
|
|
65
|
+
"__SItem": "___SItem_wgb1z_gg_",
|
|
66
|
+
"--transform": "--transform_wik9h6",
|
|
67
|
+
"__SIndicators": "___SIndicators_wgb1z_gg_",
|
|
68
|
+
"__SIndicator": "___SIndicator_wgb1z_gg_",
|
|
69
|
+
"_active": "__active_wgb1z_gg_",
|
|
70
|
+
"__SNext": "___SNext_wgb1z_gg_",
|
|
71
|
+
"__SPrev": "___SPrev_wgb1z_gg_",
|
|
72
|
+
"_disabled": "__disabled_wgb1z_gg_"
|
|
71
73
|
});
|
|
72
74
|
var position = {
|
|
73
75
|
getItemMin: function getItemMin(items) {
|
|
@@ -100,15 +102,15 @@ var MAP_TRANSFORM = {
|
|
|
100
102
|
ArrowRight: 'right'
|
|
101
103
|
};
|
|
102
104
|
|
|
103
|
-
var
|
|
104
|
-
(0, _inherits2["default"])(
|
|
105
|
+
var CarouselRoot = /*#__PURE__*/function (_Component) {
|
|
106
|
+
(0, _inherits2["default"])(CarouselRoot, _Component);
|
|
105
107
|
|
|
106
|
-
var _super = _createSuper(
|
|
108
|
+
var _super = _createSuper(CarouselRoot);
|
|
107
109
|
|
|
108
|
-
function
|
|
110
|
+
function CarouselRoot(props) {
|
|
109
111
|
var _this;
|
|
110
112
|
|
|
111
|
-
(0, _classCallCheck2["default"])(this,
|
|
113
|
+
(0, _classCallCheck2["default"])(this, CarouselRoot);
|
|
112
114
|
_this = _super.call(this, props);
|
|
113
115
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "refContainer", _react["default"].createRef());
|
|
114
116
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "transform", 0);
|
|
@@ -373,7 +375,7 @@ var Carousel = /*#__PURE__*/function (_Component) {
|
|
|
373
375
|
return _this;
|
|
374
376
|
}
|
|
375
377
|
|
|
376
|
-
(0, _createClass2["default"])(
|
|
378
|
+
(0, _createClass2["default"])(CarouselRoot, [{
|
|
377
379
|
key: "uncontrolledProps",
|
|
378
380
|
value: function uncontrolledProps() {
|
|
379
381
|
return {
|
|
@@ -454,7 +456,8 @@ var Carousel = /*#__PURE__*/function (_Component) {
|
|
|
454
456
|
items: items.map(function (item, key) {
|
|
455
457
|
return {
|
|
456
458
|
active: key === index,
|
|
457
|
-
onClick: _this2.bindHandlerClickIndicator(key)
|
|
459
|
+
onClick: _this2.bindHandlerClickIndicator(key),
|
|
460
|
+
key: key
|
|
458
461
|
};
|
|
459
462
|
})
|
|
460
463
|
};
|
|
@@ -463,47 +466,47 @@ var Carousel = /*#__PURE__*/function (_Component) {
|
|
|
463
466
|
key: "render",
|
|
464
467
|
value: function render() {
|
|
465
468
|
var _ref = this.asProps,
|
|
466
|
-
|
|
469
|
+
_ref8;
|
|
467
470
|
|
|
468
471
|
var SCarousel = _flexBox.Box;
|
|
469
472
|
var _this$asProps5 = this.asProps,
|
|
470
473
|
styles = _this$asProps5.styles,
|
|
471
474
|
Children = _this$asProps5.Children;
|
|
472
|
-
return
|
|
475
|
+
return _ref8 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SCarousel, _ref8.cn("SCarousel", _objectSpread({}, (0, _core.assignProps)({
|
|
473
476
|
"onKeyDown": this.handlerKeyDown,
|
|
474
477
|
"tabIndex": 0,
|
|
475
478
|
"onTouchStart": this.handlerTouchStart,
|
|
476
479
|
"onTouchEnd": this.handlerTouchEnd
|
|
477
|
-
}, _ref))), /*#__PURE__*/_react["default"].createElement(Children,
|
|
480
|
+
}, _ref))), /*#__PURE__*/_react["default"].createElement(Children, _ref8.cn("Children", {})));
|
|
478
481
|
}
|
|
479
482
|
}]);
|
|
480
|
-
return
|
|
483
|
+
return CarouselRoot;
|
|
481
484
|
}(_core.Component);
|
|
482
485
|
|
|
483
|
-
(0, _defineProperty2["default"])(
|
|
484
|
-
(0, _defineProperty2["default"])(
|
|
486
|
+
(0, _defineProperty2["default"])(CarouselRoot, "displayName", 'Carousel');
|
|
487
|
+
(0, _defineProperty2["default"])(CarouselRoot, "defaultProps", {
|
|
485
488
|
defaultIndex: 0,
|
|
486
489
|
duration: 350,
|
|
487
490
|
step: 100,
|
|
488
491
|
bounded: false
|
|
489
492
|
});
|
|
490
|
-
(0, _defineProperty2["default"])(
|
|
493
|
+
(0, _defineProperty2["default"])(CarouselRoot, "style", style);
|
|
491
494
|
|
|
492
495
|
var Container = function Container(props) {
|
|
493
496
|
var _ref2 = arguments[0],
|
|
494
|
-
|
|
497
|
+
_ref9;
|
|
495
498
|
|
|
496
499
|
var SContainer = _flexBox.Box;
|
|
497
500
|
var styles = props.styles,
|
|
498
501
|
duration = props.duration;
|
|
499
|
-
return
|
|
502
|
+
return _ref9 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SContainer, _ref9.cn("SContainer", _objectSpread({}, (0, _core.assignProps)({
|
|
500
503
|
"use:duration": "".concat(duration, "ms")
|
|
501
504
|
}, _ref2))));
|
|
502
505
|
};
|
|
503
506
|
|
|
504
507
|
var Item = function Item(props) {
|
|
505
508
|
var _ref3 = arguments[0],
|
|
506
|
-
|
|
509
|
+
_ref10;
|
|
507
510
|
|
|
508
511
|
var styles = props.styles,
|
|
509
512
|
$toogleItem = props.$toogleItem;
|
|
@@ -523,25 +526,25 @@ var Item = function Item(props) {
|
|
|
523
526
|
}, true);
|
|
524
527
|
};
|
|
525
528
|
}, []);
|
|
526
|
-
return
|
|
529
|
+
return _ref10 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SItem, _ref10.cn("SItem", _objectSpread({}, (0, _core.assignProps)({
|
|
527
530
|
"ref": refItem
|
|
528
531
|
}, _ref3))));
|
|
529
532
|
};
|
|
530
533
|
|
|
531
534
|
var Prev = function Prev(props) {
|
|
532
535
|
var _ref4 = arguments[0],
|
|
533
|
-
|
|
536
|
+
_ref11;
|
|
534
537
|
|
|
535
538
|
var styles = props.styles;
|
|
536
539
|
var SPrev = _flexBox.Box;
|
|
537
|
-
return
|
|
540
|
+
return _ref11 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SPrev, _ref11.cn("SPrev", _objectSpread({}, (0, _core.assignProps)({}, _ref4))));
|
|
538
541
|
};
|
|
539
542
|
|
|
540
543
|
Prev.defaultProps = function () {
|
|
541
544
|
return {
|
|
542
545
|
children: /*#__PURE__*/_react["default"].createElement(_l2["default"], {
|
|
543
546
|
interactive: true,
|
|
544
|
-
color: "
|
|
547
|
+
color: "gray-300",
|
|
545
548
|
"aria-hidden": true,
|
|
546
549
|
role: "button"
|
|
547
550
|
}),
|
|
@@ -551,18 +554,18 @@ Prev.defaultProps = function () {
|
|
|
551
554
|
|
|
552
555
|
var Next = function Next(props) {
|
|
553
556
|
var _ref5 = arguments[0],
|
|
554
|
-
|
|
557
|
+
_ref12;
|
|
555
558
|
|
|
556
559
|
var styles = props.styles;
|
|
557
560
|
var SNext = _flexBox.Box;
|
|
558
|
-
return
|
|
561
|
+
return _ref12 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SNext, _ref12.cn("SNext", _objectSpread({}, (0, _core.assignProps)({}, _ref5))));
|
|
559
562
|
};
|
|
560
563
|
|
|
561
564
|
Next.defaultProps = function () {
|
|
562
565
|
return {
|
|
563
566
|
children: /*#__PURE__*/_react["default"].createElement(_l["default"], {
|
|
564
567
|
interactive: true,
|
|
565
|
-
color: "
|
|
568
|
+
color: "gray-300",
|
|
566
569
|
"aria-hidden": true,
|
|
567
570
|
role: "button"
|
|
568
571
|
}),
|
|
@@ -570,32 +573,46 @@ Next.defaultProps = function () {
|
|
|
570
573
|
};
|
|
571
574
|
};
|
|
572
575
|
|
|
573
|
-
var Indicators = function Indicators(
|
|
576
|
+
var Indicators = function Indicators(_ref16) {
|
|
574
577
|
var _ref6 = arguments[0],
|
|
575
|
-
|
|
578
|
+
_ref14;
|
|
576
579
|
|
|
577
|
-
var items =
|
|
578
|
-
styles =
|
|
579
|
-
Children =
|
|
580
|
+
var items = _ref16.items,
|
|
581
|
+
styles = _ref16.styles,
|
|
582
|
+
Children = _ref16.Children;
|
|
580
583
|
var SIndicators = _flexBox.Box;
|
|
581
|
-
var SIndicator = _flexBox.Box;
|
|
582
584
|
|
|
583
585
|
if (Children.origin) {
|
|
584
|
-
|
|
586
|
+
var _ref13;
|
|
587
|
+
|
|
588
|
+
return _ref13 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SIndicators, _ref13.cn("SIndicators", _objectSpread({}, (0, _core.assignProps)({}, _ref6))), /*#__PURE__*/_react["default"].createElement(Children, _ref13.cn("Children", {})));
|
|
585
589
|
}
|
|
586
590
|
|
|
587
|
-
return
|
|
588
|
-
return /*#__PURE__*/_react["default"].createElement(
|
|
591
|
+
return _ref14 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SIndicators, _ref14.cn("SIndicators", _objectSpread({}, (0, _core.assignProps)({}, _ref6))), items.map(function (item, index) {
|
|
592
|
+
return /*#__PURE__*/_react["default"].createElement(Carousel.Indicator, (0, _extends2["default"])({
|
|
593
|
+
key: index
|
|
594
|
+
}, item));
|
|
589
595
|
}));
|
|
590
596
|
};
|
|
591
597
|
|
|
592
|
-
var
|
|
598
|
+
var Indicator = function Indicator(_ref17) {
|
|
599
|
+
var _ref7 = arguments[0],
|
|
600
|
+
_ref15;
|
|
601
|
+
|
|
602
|
+
var styles = _ref17.styles,
|
|
603
|
+
Children = _ref17.Children;
|
|
604
|
+
var SIndicator = _flexBox.Box;
|
|
605
|
+
return _ref15 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SIndicator, _ref15.cn("SIndicator", _objectSpread({}, (0, _core.assignProps)({}, _ref7))), /*#__PURE__*/_react["default"].createElement(Children, _ref15.cn("Children", {})));
|
|
606
|
+
};
|
|
607
|
+
|
|
608
|
+
var Carousel = (0, _core["default"])(CarouselRoot, {
|
|
593
609
|
Container: Container,
|
|
594
610
|
Indicators: Indicators,
|
|
611
|
+
Indicator: Indicator,
|
|
595
612
|
Item: Item,
|
|
596
613
|
Prev: Prev,
|
|
597
614
|
Next: Next
|
|
598
615
|
});
|
|
599
|
-
|
|
616
|
+
var _default = Carousel;
|
|
600
617
|
exports["default"] = _default;
|
|
601
618
|
//# sourceMappingURL=Carousel.js.map
|
package/lib/cjs/Carousel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Carousel.jsx"],"names":["position","getItemMin","items","indexItem","forEach","item","index","getItemMax","getMin","getMax","MAP_TRANSFORM","ArrowLeft","ArrowRight","Carousel","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","handlerKeyDown","handlerTouchStart","handlerTouchEnd","Component","defaultIndex","Container","SContainer","Item","SItem","refItem","Prev","SPrev","defaultProps","children","top","Next","SNext","Indicators","SIndicators","SIndicator","origin"],"mappings":"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","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 Carousel 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 })),\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: <ChevronLeft interactive color=\"stone\" aria-hidden={true} role=\"button\" />,\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: <ChevronRight interactive color=\"stone\" aria-hidden={true} role=\"button\" />,\n top: 0,\n});\n\nconst Indicators = ({ items, styles, Children }) => {\n const SIndicators = Root;\n const SIndicator = Box;\n if (Children.origin) {\n return <Children />;\n }\n return sstyled(styles)(\n <SIndicators render={Box}>\n {items.map((item) => (\n <SIndicator {...item} />\n ))}\n </SIndicators>,\n );\n};\n\nexport default createComponent(Carousel, {\n Container,\n Indicators,\n Item,\n Prev,\n Next,\n});\n"],"file":"Carousel.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/Carousel.jsx"],"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","handlerKeyDown","handlerTouchStart","handlerTouchEnd","Component","defaultIndex","Container","SContainer","Item","SItem","refItem","Prev","SPrev","defaultProps","children","top","Next","SNext","Indicators","SIndicators","origin","Indicator","SIndicator","Carousel"],"mappings":"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","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: <ChevronLeft interactive color=\"gray-300\" aria-hidden={true} role=\"button\" />,\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: <ChevronRight interactive color=\"gray-300\" aria-hidden={true} role=\"button\" />,\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"],"file":"Carousel.js"}
|
package/lib/cjs/index.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ type ChildRenderFn<Props> = Props & {
|
|
|
7
7
|
items,
|
|
8
8
|
}: {
|
|
9
9
|
items: { active: boolean; onClick: () => void }[];
|
|
10
|
-
}) => React.ReactElement;
|
|
10
|
+
}) => React.ReactElement | React.ReactElement[];
|
|
11
11
|
};
|
|
12
12
|
|
|
13
13
|
export interface ICarouselProps {
|
|
@@ -48,6 +48,9 @@ declare const Carousel: (<T>(
|
|
|
48
48
|
) => ReturnEl) & {
|
|
49
49
|
Container: <T>(props: IBoxProps & T) => ReturnEl;
|
|
50
50
|
Indicators: <T>(props: ChildRenderFn<IBoxProps & T>) => ReturnEl;
|
|
51
|
+
Indicator: <T>(
|
|
52
|
+
props: ChildRenderFn<IBoxProps & { active: boolean; onClick: () => void } & T>,
|
|
53
|
+
) => ReturnEl;
|
|
51
54
|
Item: <T>(props: IBoxProps & T) => ReturnEl;
|
|
52
55
|
Prev: <T>(props: IBoxProps & T) => ReturnEl;
|
|
53
56
|
Next: <T>(props: IBoxProps & T) => ReturnEl;
|
|
@@ -15,6 +15,8 @@ SItem {
|
|
|
15
15
|
max-width: 100%;
|
|
16
16
|
box-sizing: border-box;
|
|
17
17
|
transform: var(--transform);
|
|
18
|
+
border-radius: 6px;
|
|
19
|
+
overflow: hidden;
|
|
18
20
|
}
|
|
19
21
|
|
|
20
22
|
SIndicators {
|
|
@@ -24,28 +26,24 @@ SIndicators {
|
|
|
24
26
|
}
|
|
25
27
|
|
|
26
28
|
SIndicator {
|
|
27
|
-
margin: 0
|
|
28
|
-
padding: 0 5px;
|
|
29
|
+
margin: 0 6px;
|
|
29
30
|
cursor: pointer;
|
|
31
|
+
display: block;
|
|
32
|
+
width: 12px;
|
|
33
|
+
height: 12px;
|
|
34
|
+
border-radius: 6px;
|
|
35
|
+
background-color: var(--gray-300);
|
|
36
|
+
opacity: 0.3;
|
|
37
|
+
object-fit: cover;
|
|
38
|
+
transition: ease-in-out opacity 0.1s;
|
|
39
|
+
}
|
|
30
40
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
display: block;
|
|
34
|
-
width: 12px;
|
|
35
|
-
height: 12px;
|
|
36
|
-
border-radius: 50%;
|
|
37
|
-
background-color: color-mod(var(--stone) a(30%));
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
&:hover::before {
|
|
41
|
-
background-color: color-mod(var(--stone) a(60%));
|
|
42
|
-
}
|
|
41
|
+
SIndicator:hover {
|
|
42
|
+
opacity: 0.6;
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
SIndicator[active] {
|
|
46
|
-
|
|
47
|
-
background-color: var(--stone);
|
|
48
|
-
}
|
|
46
|
+
opacity: 1;
|
|
49
47
|
}
|
|
50
48
|
|
|
51
49
|
SPrev,
|
|
@@ -56,6 +54,13 @@ SNext {
|
|
|
56
54
|
cursor: pointer;
|
|
57
55
|
}
|
|
58
56
|
|
|
57
|
+
SPrev {
|
|
58
|
+
margin-right: 12px;
|
|
59
|
+
}
|
|
60
|
+
SNext {
|
|
61
|
+
margin-left: 12px;
|
|
62
|
+
}
|
|
63
|
+
|
|
59
64
|
SPrev[disabled],
|
|
60
65
|
SNext[disabled] {
|
|
61
66
|
opacity: var(--disabled-opacity);
|
package/lib/es6/Carousel.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
1
2
|
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
2
3
|
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
|
|
3
4
|
import _createClass from "@babel/runtime/helpers/createClass";
|
|
@@ -7,6 +8,8 @@ import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstruct
|
|
|
7
8
|
import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
|
|
8
9
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
9
10
|
import { sstyled as _sstyled } from "@semcore/core";
|
|
11
|
+
import { assignProps as _assignProps8 } from "@semcore/core";
|
|
12
|
+
import { assignProps as _assignProps7 } from "@semcore/core";
|
|
10
13
|
import { assignProps as _assignProps6 } from "@semcore/core";
|
|
11
14
|
import { assignProps as _assignProps5 } from "@semcore/core";
|
|
12
15
|
import { assignProps as _assignProps4 } from "@semcore/core";
|
|
@@ -33,22 +36,22 @@ var style = (
|
|
|
33
36
|
/*__reshadow_css_start__*/
|
|
34
37
|
_sstyled.insert(
|
|
35
38
|
/*__inner_css_start__*/
|
|
36
|
-
".
|
|
39
|
+
".___SCarousel_wgb1z_gg_{overflow:hidden;outline:none}.___SContainer_wgb1z_gg_{display:flex;transition:transform var(--duration_wik9h6) ease-in-out}.___SItem_wgb1z_gg_{flex:0 0 100%;max-width:100%;box-sizing:border-box;transform:var(--transform_wik9h6);border-radius:6px;overflow:hidden}.___SIndicators_wgb1z_gg_{display:flex;justify-content:center;margin-top:16px}.___SIndicator_wgb1z_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_wgb1z_gg_:hover{opacity:.6}.___SIndicator_wgb1z_gg_.__active_wgb1z_gg_{opacity:1}.___SNext_wgb1z_gg_,.___SPrev_wgb1z_gg_{display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.___SPrev_wgb1z_gg_{margin-right:12px}.___SNext_wgb1z_gg_{margin-left:12px}.___SNext_wgb1z_gg_.__disabled_wgb1z_gg_,.___SPrev_wgb1z_gg_.__disabled_wgb1z_gg_{opacity:0.3;cursor:default;pointer-events:none}@media (prefers-reduced-motion){.___SContainer_wgb1z_gg_{transition:none}}"
|
|
37
40
|
/*__inner_css_end__*/
|
|
38
|
-
, "
|
|
41
|
+
, "wik9h6_gg_")
|
|
39
42
|
/*__reshadow_css_end__*/
|
|
40
43
|
, {
|
|
41
|
-
"__SCarousel": "
|
|
42
|
-
"__SContainer": "
|
|
43
|
-
"--duration": "--
|
|
44
|
-
"__SItem": "
|
|
45
|
-
"--transform": "--
|
|
46
|
-
"__SIndicators": "
|
|
47
|
-
"__SIndicator": "
|
|
48
|
-
"_active": "
|
|
49
|
-
"__SNext": "
|
|
50
|
-
"__SPrev": "
|
|
51
|
-
"_disabled": "
|
|
44
|
+
"__SCarousel": "___SCarousel_wgb1z_gg_",
|
|
45
|
+
"__SContainer": "___SContainer_wgb1z_gg_",
|
|
46
|
+
"--duration": "--duration_wik9h6",
|
|
47
|
+
"__SItem": "___SItem_wgb1z_gg_",
|
|
48
|
+
"--transform": "--transform_wik9h6",
|
|
49
|
+
"__SIndicators": "___SIndicators_wgb1z_gg_",
|
|
50
|
+
"__SIndicator": "___SIndicator_wgb1z_gg_",
|
|
51
|
+
"_active": "__active_wgb1z_gg_",
|
|
52
|
+
"__SNext": "___SNext_wgb1z_gg_",
|
|
53
|
+
"__SPrev": "___SPrev_wgb1z_gg_",
|
|
54
|
+
"_disabled": "__disabled_wgb1z_gg_"
|
|
52
55
|
});
|
|
53
56
|
var position = {
|
|
54
57
|
getItemMin: function getItemMin(items) {
|
|
@@ -81,15 +84,15 @@ var MAP_TRANSFORM = {
|
|
|
81
84
|
ArrowRight: 'right'
|
|
82
85
|
};
|
|
83
86
|
|
|
84
|
-
var
|
|
85
|
-
_inherits(
|
|
87
|
+
var CarouselRoot = /*#__PURE__*/function (_Component) {
|
|
88
|
+
_inherits(CarouselRoot, _Component);
|
|
86
89
|
|
|
87
|
-
var _super = _createSuper(
|
|
90
|
+
var _super = _createSuper(CarouselRoot);
|
|
88
91
|
|
|
89
|
-
function
|
|
92
|
+
function CarouselRoot(props) {
|
|
90
93
|
var _this;
|
|
91
94
|
|
|
92
|
-
_classCallCheck(this,
|
|
95
|
+
_classCallCheck(this, CarouselRoot);
|
|
93
96
|
|
|
94
97
|
_this = _super.call(this, props);
|
|
95
98
|
|
|
@@ -375,7 +378,7 @@ var Carousel = /*#__PURE__*/function (_Component) {
|
|
|
375
378
|
return _this;
|
|
376
379
|
}
|
|
377
380
|
|
|
378
|
-
_createClass(
|
|
381
|
+
_createClass(CarouselRoot, [{
|
|
379
382
|
key: "uncontrolledProps",
|
|
380
383
|
value: function uncontrolledProps() {
|
|
381
384
|
return {
|
|
@@ -456,7 +459,8 @@ var Carousel = /*#__PURE__*/function (_Component) {
|
|
|
456
459
|
items: items.map(function (item, key) {
|
|
457
460
|
return {
|
|
458
461
|
active: key === index,
|
|
459
|
-
onClick: _this2.bindHandlerClickIndicator(key)
|
|
462
|
+
onClick: _this2.bindHandlerClickIndicator(key),
|
|
463
|
+
key: key
|
|
460
464
|
};
|
|
461
465
|
})
|
|
462
466
|
};
|
|
@@ -465,50 +469,50 @@ var Carousel = /*#__PURE__*/function (_Component) {
|
|
|
465
469
|
key: "render",
|
|
466
470
|
value: function render() {
|
|
467
471
|
var _ref = this.asProps,
|
|
468
|
-
|
|
472
|
+
_ref8;
|
|
469
473
|
|
|
470
474
|
var SCarousel = Box;
|
|
471
475
|
var _this$asProps5 = this.asProps,
|
|
472
476
|
styles = _this$asProps5.styles,
|
|
473
477
|
Children = _this$asProps5.Children;
|
|
474
|
-
return
|
|
478
|
+
return _ref8 = sstyled(styles), /*#__PURE__*/React.createElement(SCarousel, _ref8.cn("SCarousel", _objectSpread({}, _assignProps({
|
|
475
479
|
"onKeyDown": this.handlerKeyDown,
|
|
476
480
|
"tabIndex": 0,
|
|
477
481
|
"onTouchStart": this.handlerTouchStart,
|
|
478
482
|
"onTouchEnd": this.handlerTouchEnd
|
|
479
|
-
}, _ref))), /*#__PURE__*/React.createElement(Children,
|
|
483
|
+
}, _ref))), /*#__PURE__*/React.createElement(Children, _ref8.cn("Children", {})));
|
|
480
484
|
}
|
|
481
485
|
}]);
|
|
482
486
|
|
|
483
|
-
return
|
|
487
|
+
return CarouselRoot;
|
|
484
488
|
}(Component);
|
|
485
489
|
|
|
486
|
-
_defineProperty(
|
|
490
|
+
_defineProperty(CarouselRoot, "displayName", 'Carousel');
|
|
487
491
|
|
|
488
|
-
_defineProperty(
|
|
492
|
+
_defineProperty(CarouselRoot, "defaultProps", {
|
|
489
493
|
defaultIndex: 0,
|
|
490
494
|
duration: 350,
|
|
491
495
|
step: 100,
|
|
492
496
|
bounded: false
|
|
493
497
|
});
|
|
494
498
|
|
|
495
|
-
_defineProperty(
|
|
499
|
+
_defineProperty(CarouselRoot, "style", style);
|
|
496
500
|
|
|
497
501
|
var Container = function Container(props) {
|
|
498
502
|
var _ref2 = arguments[0],
|
|
499
|
-
|
|
503
|
+
_ref9;
|
|
500
504
|
|
|
501
505
|
var SContainer = Box;
|
|
502
506
|
var styles = props.styles,
|
|
503
507
|
duration = props.duration;
|
|
504
|
-
return
|
|
508
|
+
return _ref9 = sstyled(styles), /*#__PURE__*/React.createElement(SContainer, _ref9.cn("SContainer", _objectSpread({}, _assignProps2({
|
|
505
509
|
"use:duration": "".concat(duration, "ms")
|
|
506
510
|
}, _ref2))));
|
|
507
511
|
};
|
|
508
512
|
|
|
509
513
|
var Item = function Item(props) {
|
|
510
514
|
var _ref3 = arguments[0],
|
|
511
|
-
|
|
515
|
+
_ref10;
|
|
512
516
|
|
|
513
517
|
var styles = props.styles,
|
|
514
518
|
$toogleItem = props.$toogleItem;
|
|
@@ -526,25 +530,25 @@ var Item = function Item(props) {
|
|
|
526
530
|
}, true);
|
|
527
531
|
};
|
|
528
532
|
}, []);
|
|
529
|
-
return
|
|
533
|
+
return _ref10 = sstyled(styles), /*#__PURE__*/React.createElement(SItem, _ref10.cn("SItem", _objectSpread({}, _assignProps3({
|
|
530
534
|
"ref": refItem
|
|
531
535
|
}, _ref3))));
|
|
532
536
|
};
|
|
533
537
|
|
|
534
538
|
var Prev = function Prev(props) {
|
|
535
539
|
var _ref4 = arguments[0],
|
|
536
|
-
|
|
540
|
+
_ref11;
|
|
537
541
|
|
|
538
542
|
var styles = props.styles;
|
|
539
543
|
var SPrev = Box;
|
|
540
|
-
return
|
|
544
|
+
return _ref11 = sstyled(styles), /*#__PURE__*/React.createElement(SPrev, _ref11.cn("SPrev", _objectSpread({}, _assignProps4({}, _ref4))));
|
|
541
545
|
};
|
|
542
546
|
|
|
543
547
|
Prev.defaultProps = function () {
|
|
544
548
|
return {
|
|
545
549
|
children: /*#__PURE__*/React.createElement(ChevronLeft, {
|
|
546
550
|
interactive: true,
|
|
547
|
-
color: "
|
|
551
|
+
color: "gray-300",
|
|
548
552
|
"aria-hidden": true,
|
|
549
553
|
role: "button"
|
|
550
554
|
}),
|
|
@@ -554,18 +558,18 @@ Prev.defaultProps = function () {
|
|
|
554
558
|
|
|
555
559
|
var Next = function Next(props) {
|
|
556
560
|
var _ref5 = arguments[0],
|
|
557
|
-
|
|
561
|
+
_ref12;
|
|
558
562
|
|
|
559
563
|
var styles = props.styles;
|
|
560
564
|
var SNext = Box;
|
|
561
|
-
return
|
|
565
|
+
return _ref12 = sstyled(styles), /*#__PURE__*/React.createElement(SNext, _ref12.cn("SNext", _objectSpread({}, _assignProps5({}, _ref5))));
|
|
562
566
|
};
|
|
563
567
|
|
|
564
568
|
Next.defaultProps = function () {
|
|
565
569
|
return {
|
|
566
570
|
children: /*#__PURE__*/React.createElement(ChevronRight, {
|
|
567
571
|
interactive: true,
|
|
568
|
-
color: "
|
|
572
|
+
color: "gray-300",
|
|
569
573
|
"aria-hidden": true,
|
|
570
574
|
role: "button"
|
|
571
575
|
}),
|
|
@@ -573,30 +577,45 @@ Next.defaultProps = function () {
|
|
|
573
577
|
};
|
|
574
578
|
};
|
|
575
579
|
|
|
576
|
-
var Indicators = function Indicators(
|
|
580
|
+
var Indicators = function Indicators(_ref16) {
|
|
577
581
|
var _ref6 = arguments[0],
|
|
578
|
-
|
|
582
|
+
_ref14;
|
|
579
583
|
|
|
580
|
-
var items =
|
|
581
|
-
styles =
|
|
582
|
-
Children =
|
|
584
|
+
var items = _ref16.items,
|
|
585
|
+
styles = _ref16.styles,
|
|
586
|
+
Children = _ref16.Children;
|
|
583
587
|
var SIndicators = Box;
|
|
584
|
-
var SIndicator = Box;
|
|
585
588
|
|
|
586
589
|
if (Children.origin) {
|
|
587
|
-
|
|
590
|
+
var _ref13;
|
|
591
|
+
|
|
592
|
+
return _ref13 = sstyled(styles), /*#__PURE__*/React.createElement(SIndicators, _ref13.cn("SIndicators", _objectSpread({}, _assignProps6({}, _ref6))), /*#__PURE__*/React.createElement(Children, _ref13.cn("Children", {})));
|
|
588
593
|
}
|
|
589
594
|
|
|
590
|
-
return
|
|
591
|
-
return /*#__PURE__*/React.createElement(
|
|
595
|
+
return _ref14 = sstyled(styles), /*#__PURE__*/React.createElement(SIndicators, _ref14.cn("SIndicators", _objectSpread({}, _assignProps7({}, _ref6))), items.map(function (item, index) {
|
|
596
|
+
return /*#__PURE__*/React.createElement(Carousel.Indicator, _extends({
|
|
597
|
+
key: index
|
|
598
|
+
}, item));
|
|
592
599
|
}));
|
|
593
600
|
};
|
|
594
601
|
|
|
595
|
-
|
|
602
|
+
var Indicator = function Indicator(_ref17) {
|
|
603
|
+
var _ref7 = arguments[0],
|
|
604
|
+
_ref15;
|
|
605
|
+
|
|
606
|
+
var styles = _ref17.styles,
|
|
607
|
+
Children = _ref17.Children;
|
|
608
|
+
var SIndicator = Box;
|
|
609
|
+
return _ref15 = sstyled(styles), /*#__PURE__*/React.createElement(SIndicator, _ref15.cn("SIndicator", _objectSpread({}, _assignProps8({}, _ref7))), /*#__PURE__*/React.createElement(Children, _ref15.cn("Children", {})));
|
|
610
|
+
};
|
|
611
|
+
|
|
612
|
+
var Carousel = createComponent(CarouselRoot, {
|
|
596
613
|
Container: Container,
|
|
597
614
|
Indicators: Indicators,
|
|
615
|
+
Indicator: Indicator,
|
|
598
616
|
Item: Item,
|
|
599
617
|
Prev: Prev,
|
|
600
618
|
Next: Next
|
|
601
619
|
});
|
|
620
|
+
export default Carousel;
|
|
602
621
|
//# sourceMappingURL=Carousel.js.map
|
package/lib/es6/Carousel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Carousel.jsx"],"names":["React","useEffect","createComponent","Component","sstyled","Root","Box","ChevronRight","ChevronLeft","position","getItemMin","items","indexItem","forEach","item","index","getItemMax","getMin","getMax","MAP_TRANSFORM","ArrowLeft","ArrowRight","Carousel","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","SIndicator","origin"],"mappings":"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","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 Carousel 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 })),\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: <ChevronLeft interactive color=\"stone\" aria-hidden={true} role=\"button\" />,\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: <ChevronRight interactive color=\"stone\" aria-hidden={true} role=\"button\" />,\n top: 0,\n});\n\nconst Indicators = ({ items, styles, Children }) => {\n const SIndicators = Root;\n const SIndicator = Box;\n if (Children.origin) {\n return <Children />;\n }\n return sstyled(styles)(\n <SIndicators render={Box}>\n {items.map((item) => (\n <SIndicator {...item} />\n ))}\n </SIndicators>,\n );\n};\n\nexport default createComponent(Carousel, {\n Container,\n Indicators,\n Item,\n Prev,\n Next,\n});\n"],"file":"Carousel.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/Carousel.jsx"],"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"],"mappings":"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","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: <ChevronLeft interactive color=\"gray-300\" aria-hidden={true} role=\"button\" />,\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: <ChevronRight interactive color=\"gray-300\" aria-hidden={true} role=\"button\" />,\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"],"file":"Carousel.js"}
|
package/lib/es6/index.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ type ChildRenderFn<Props> = Props & {
|
|
|
7
7
|
items,
|
|
8
8
|
}: {
|
|
9
9
|
items: { active: boolean; onClick: () => void }[];
|
|
10
|
-
}) => React.ReactElement;
|
|
10
|
+
}) => React.ReactElement | React.ReactElement[];
|
|
11
11
|
};
|
|
12
12
|
|
|
13
13
|
export interface ICarouselProps {
|
|
@@ -48,6 +48,9 @@ declare const Carousel: (<T>(
|
|
|
48
48
|
) => ReturnEl) & {
|
|
49
49
|
Container: <T>(props: IBoxProps & T) => ReturnEl;
|
|
50
50
|
Indicators: <T>(props: ChildRenderFn<IBoxProps & T>) => ReturnEl;
|
|
51
|
+
Indicator: <T>(
|
|
52
|
+
props: ChildRenderFn<IBoxProps & { active: boolean; onClick: () => void } & T>,
|
|
53
|
+
) => ReturnEl;
|
|
51
54
|
Item: <T>(props: IBoxProps & T) => ReturnEl;
|
|
52
55
|
Prev: <T>(props: IBoxProps & T) => ReturnEl;
|
|
53
56
|
Next: <T>(props: IBoxProps & T) => ReturnEl;
|
|
@@ -15,6 +15,8 @@ SItem {
|
|
|
15
15
|
max-width: 100%;
|
|
16
16
|
box-sizing: border-box;
|
|
17
17
|
transform: var(--transform);
|
|
18
|
+
border-radius: 6px;
|
|
19
|
+
overflow: hidden;
|
|
18
20
|
}
|
|
19
21
|
|
|
20
22
|
SIndicators {
|
|
@@ -24,28 +26,24 @@ SIndicators {
|
|
|
24
26
|
}
|
|
25
27
|
|
|
26
28
|
SIndicator {
|
|
27
|
-
margin: 0
|
|
28
|
-
padding: 0 5px;
|
|
29
|
+
margin: 0 6px;
|
|
29
30
|
cursor: pointer;
|
|
31
|
+
display: block;
|
|
32
|
+
width: 12px;
|
|
33
|
+
height: 12px;
|
|
34
|
+
border-radius: 6px;
|
|
35
|
+
background-color: var(--gray-300);
|
|
36
|
+
opacity: 0.3;
|
|
37
|
+
object-fit: cover;
|
|
38
|
+
transition: ease-in-out opacity 0.1s;
|
|
39
|
+
}
|
|
30
40
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
display: block;
|
|
34
|
-
width: 12px;
|
|
35
|
-
height: 12px;
|
|
36
|
-
border-radius: 50%;
|
|
37
|
-
background-color: color-mod(var(--stone) a(30%));
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
&:hover::before {
|
|
41
|
-
background-color: color-mod(var(--stone) a(60%));
|
|
42
|
-
}
|
|
41
|
+
SIndicator:hover {
|
|
42
|
+
opacity: 0.6;
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
SIndicator[active] {
|
|
46
|
-
|
|
47
|
-
background-color: var(--stone);
|
|
48
|
-
}
|
|
46
|
+
opacity: 1;
|
|
49
47
|
}
|
|
50
48
|
|
|
51
49
|
SPrev,
|
|
@@ -56,6 +54,13 @@ SNext {
|
|
|
56
54
|
cursor: pointer;
|
|
57
55
|
}
|
|
58
56
|
|
|
57
|
+
SPrev {
|
|
58
|
+
margin-right: 12px;
|
|
59
|
+
}
|
|
60
|
+
SNext {
|
|
61
|
+
margin-left: 12px;
|
|
62
|
+
}
|
|
63
|
+
|
|
59
64
|
SPrev[disabled],
|
|
60
65
|
SNext[disabled] {
|
|
61
66
|
opacity: var(--disabled-opacity);
|
package/lib/types/index.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ type ChildRenderFn<Props> = Props & {
|
|
|
7
7
|
items,
|
|
8
8
|
}: {
|
|
9
9
|
items: { active: boolean; onClick: () => void }[];
|
|
10
|
-
}) => React.ReactElement;
|
|
10
|
+
}) => React.ReactElement | React.ReactElement[];
|
|
11
11
|
};
|
|
12
12
|
|
|
13
13
|
export interface ICarouselProps {
|
|
@@ -48,6 +48,9 @@ declare const Carousel: (<T>(
|
|
|
48
48
|
) => ReturnEl) & {
|
|
49
49
|
Container: <T>(props: IBoxProps & T) => ReturnEl;
|
|
50
50
|
Indicators: <T>(props: ChildRenderFn<IBoxProps & T>) => ReturnEl;
|
|
51
|
+
Indicator: <T>(
|
|
52
|
+
props: ChildRenderFn<IBoxProps & { active: boolean; onClick: () => void } & T>,
|
|
53
|
+
) => ReturnEl;
|
|
51
54
|
Item: <T>(props: IBoxProps & T) => ReturnEl;
|
|
52
55
|
Prev: <T>(props: IBoxProps & T) => ReturnEl;
|
|
53
56
|
Next: <T>(props: IBoxProps & T) => ReturnEl;
|
package/package.json
CHANGED
package/src/Carousel.jsx
CHANGED
|
@@ -39,7 +39,7 @@ const MAP_TRANSFORM = {
|
|
|
39
39
|
ArrowRight: 'right',
|
|
40
40
|
};
|
|
41
41
|
|
|
42
|
-
class
|
|
42
|
+
class CarouselRoot extends Component {
|
|
43
43
|
static displayName = 'Carousel';
|
|
44
44
|
static defaultProps = {
|
|
45
45
|
defaultIndex: 0,
|
|
@@ -331,6 +331,7 @@ class Carousel extends Component {
|
|
|
331
331
|
items: items.map((item, key) => ({
|
|
332
332
|
active: key === index,
|
|
333
333
|
onClick: this.bindHandlerClickIndicator(key),
|
|
334
|
+
key,
|
|
334
335
|
})),
|
|
335
336
|
};
|
|
336
337
|
}
|
|
@@ -383,7 +384,7 @@ const Prev = (props) => {
|
|
|
383
384
|
};
|
|
384
385
|
|
|
385
386
|
Prev.defaultProps = () => ({
|
|
386
|
-
children: <ChevronLeft interactive color="
|
|
387
|
+
children: <ChevronLeft interactive color="gray-300" aria-hidden={true} role="button" />,
|
|
387
388
|
top: 0,
|
|
388
389
|
});
|
|
389
390
|
|
|
@@ -394,29 +395,44 @@ const Next = (props) => {
|
|
|
394
395
|
};
|
|
395
396
|
|
|
396
397
|
Next.defaultProps = () => ({
|
|
397
|
-
children: <ChevronRight interactive color="
|
|
398
|
+
children: <ChevronRight interactive color="gray-300" aria-hidden={true} role="button" />,
|
|
398
399
|
top: 0,
|
|
399
400
|
});
|
|
400
401
|
|
|
401
402
|
const Indicators = ({ items, styles, Children }) => {
|
|
402
403
|
const SIndicators = Root;
|
|
403
|
-
const SIndicator = Box;
|
|
404
404
|
if (Children.origin) {
|
|
405
|
-
return
|
|
405
|
+
return sstyled(styles)(
|
|
406
|
+
<SIndicators render={Box}>
|
|
407
|
+
<Children />
|
|
408
|
+
</SIndicators>,
|
|
409
|
+
);
|
|
406
410
|
}
|
|
407
411
|
return sstyled(styles)(
|
|
408
412
|
<SIndicators render={Box}>
|
|
409
|
-
{items.map((item) => (
|
|
410
|
-
<
|
|
413
|
+
{items.map((item, index) => (
|
|
414
|
+
<Carousel.Indicator key={index} {...item} />
|
|
411
415
|
))}
|
|
412
416
|
</SIndicators>,
|
|
413
417
|
);
|
|
414
418
|
};
|
|
415
419
|
|
|
416
|
-
|
|
420
|
+
const Indicator = ({ styles, Children }) => {
|
|
421
|
+
const SIndicator = Root;
|
|
422
|
+
return sstyled(styles)(
|
|
423
|
+
<SIndicator render={Box}>
|
|
424
|
+
<Children />
|
|
425
|
+
</SIndicator>,
|
|
426
|
+
);
|
|
427
|
+
};
|
|
428
|
+
|
|
429
|
+
const Carousel = createComponent(CarouselRoot, {
|
|
417
430
|
Container,
|
|
418
431
|
Indicators,
|
|
432
|
+
Indicator,
|
|
419
433
|
Item,
|
|
420
434
|
Prev,
|
|
421
435
|
Next,
|
|
422
436
|
});
|
|
437
|
+
|
|
438
|
+
export default Carousel;
|
package/src/index.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ type ChildRenderFn<Props> = Props & {
|
|
|
7
7
|
items,
|
|
8
8
|
}: {
|
|
9
9
|
items: { active: boolean; onClick: () => void }[];
|
|
10
|
-
}) => React.ReactElement;
|
|
10
|
+
}) => React.ReactElement | React.ReactElement[];
|
|
11
11
|
};
|
|
12
12
|
|
|
13
13
|
export interface ICarouselProps {
|
|
@@ -48,6 +48,9 @@ declare const Carousel: (<T>(
|
|
|
48
48
|
) => ReturnEl) & {
|
|
49
49
|
Container: <T>(props: IBoxProps & T) => ReturnEl;
|
|
50
50
|
Indicators: <T>(props: ChildRenderFn<IBoxProps & T>) => ReturnEl;
|
|
51
|
+
Indicator: <T>(
|
|
52
|
+
props: ChildRenderFn<IBoxProps & { active: boolean; onClick: () => void } & T>,
|
|
53
|
+
) => ReturnEl;
|
|
51
54
|
Item: <T>(props: IBoxProps & T) => ReturnEl;
|
|
52
55
|
Prev: <T>(props: IBoxProps & T) => ReturnEl;
|
|
53
56
|
Next: <T>(props: IBoxProps & T) => ReturnEl;
|
|
@@ -15,6 +15,8 @@ SItem {
|
|
|
15
15
|
max-width: 100%;
|
|
16
16
|
box-sizing: border-box;
|
|
17
17
|
transform: var(--transform);
|
|
18
|
+
border-radius: 6px;
|
|
19
|
+
overflow: hidden;
|
|
18
20
|
}
|
|
19
21
|
|
|
20
22
|
SIndicators {
|
|
@@ -24,28 +26,24 @@ SIndicators {
|
|
|
24
26
|
}
|
|
25
27
|
|
|
26
28
|
SIndicator {
|
|
27
|
-
margin: 0
|
|
28
|
-
padding: 0 5px;
|
|
29
|
+
margin: 0 6px;
|
|
29
30
|
cursor: pointer;
|
|
31
|
+
display: block;
|
|
32
|
+
width: 12px;
|
|
33
|
+
height: 12px;
|
|
34
|
+
border-radius: 6px;
|
|
35
|
+
background-color: var(--gray-300);
|
|
36
|
+
opacity: 0.3;
|
|
37
|
+
object-fit: cover;
|
|
38
|
+
transition: ease-in-out opacity 0.1s;
|
|
39
|
+
}
|
|
30
40
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
display: block;
|
|
34
|
-
width: 12px;
|
|
35
|
-
height: 12px;
|
|
36
|
-
border-radius: 50%;
|
|
37
|
-
background-color: color-mod(var(--stone) a(30%));
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
&:hover::before {
|
|
41
|
-
background-color: color-mod(var(--stone) a(60%));
|
|
42
|
-
}
|
|
41
|
+
SIndicator:hover {
|
|
42
|
+
opacity: 0.6;
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
SIndicator[active] {
|
|
46
|
-
|
|
47
|
-
background-color: var(--stone);
|
|
48
|
-
}
|
|
46
|
+
opacity: 1;
|
|
49
47
|
}
|
|
50
48
|
|
|
51
49
|
SPrev,
|
|
@@ -56,6 +54,13 @@ SNext {
|
|
|
56
54
|
cursor: pointer;
|
|
57
55
|
}
|
|
58
56
|
|
|
57
|
+
SPrev {
|
|
58
|
+
margin-right: 12px;
|
|
59
|
+
}
|
|
60
|
+
SNext {
|
|
61
|
+
margin-left: 12px;
|
|
62
|
+
}
|
|
63
|
+
|
|
59
64
|
SPrev[disabled],
|
|
60
65
|
SNext[disabled] {
|
|
61
66
|
opacity: var(--disabled-opacity);
|