@semcore/carousel 1.3.0 → 1.5.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 CHANGED
@@ -2,6 +2,33 @@
2
2
 
3
3
  CHANGELOG.md standards are inspired by [keepachangelog.com](https://keepachangelog.com/en/1.0.0/).
4
4
 
5
+ ## [1.5.0] - 2022-01-18
6
+
7
+ ### Changed
8
+
9
+ - Up version icons and use new icon.
10
+
11
+ ## [1.4.2] - 2021-8-26
12
+
13
+ ### Changed
14
+
15
+ - Add 'sideEffect=false' for more optimal build via webpack
16
+
17
+ ## [1.4.1] - 2021-06-24
18
+
19
+ ### Added
20
+
21
+ - [A11y] Added support to work `Carousel.Next, Carousel.Prev` with keyboard.
22
+
23
+ ## [1.4.0] - 2021-04-26
24
+
25
+ ### Changed
26
+
27
+ - Version of dependence `@semcore/core` has been changed to `1.11`.
28
+ - Improved performance. Removed one component wrapper.
29
+ - The style processing system has been changed.
30
+ - Removed the ability to apply media styles via a plugin `babel-plugin-react-semcore`.
31
+
5
32
  ## [1.3.0] - 2021-01-29
6
33
 
7
34
  ### Added
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
-
5
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
4
 
5
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
6
+
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
@@ -25,17 +25,17 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/ge
25
25
 
26
26
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
27
27
 
28
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
28
+ var _core = _interopRequireWildcard(require("@semcore/core"));
29
29
 
30
30
  var _react = _interopRequireWildcard(require("react"));
31
31
 
32
- var _core = _interopRequireWildcard(require("@semcore/core"));
33
-
34
32
  var _flexBox = require("@semcore/flex-box");
35
33
 
36
- var _l = _interopRequireDefault(require("@semcore/icon/lib/ChevronRight/l"));
34
+ var _l = _interopRequireDefault(require("@semcore/icon/ChevronRight/l"));
37
35
 
38
- var _l2 = _interopRequireDefault(require("@semcore/icon/lib/ChevronLeft/l"));
36
+ var _l2 = _interopRequireDefault(require("@semcore/icon/ChevronLeft/l"));
37
+
38
+ var _this3 = void 0;
39
39
 
40
40
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
41
41
 
@@ -43,30 +43,30 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
43
43
 
44
44
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
45
45
 
46
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
46
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
47
47
 
48
48
  /*__reshadow-styles__:"./style/carousel.shadow.css"*/
49
- var _ref = (
49
+ var style = (
50
50
  /*__reshadow_css_start__*/
51
- (0, _core.__css__)(
51
+ _core.sstyled.insert(
52
52
  /*__inner_css_start__*/
53
- ".___SCarousel_1c8oj_gg_{overflow:hidden;outline:none}.___SContainer_1c8oj_gg_{display:flex}.___SItem_1c8oj_gg_{flex:0 0 100%;max-width:100%;box-sizing:border-box}.___SIndicators_1c8oj_gg_{display:flex;justify-content:center;margin-top:16px}.___SIndicator_1c8oj_gg_{margin:0 5px;padding:0 5px;cursor:pointer}.___SIndicator_1c8oj_gg_:before{content:\"\";display:block;width:12px;height:12px;border-radius:50%;background-color:rgba(166,176,179,.3)}.___SIndicator_1c8oj_gg_:hover:before{background-color:rgba(166,176,179,.6)}.___SIndicator_1c8oj_gg_.__active_1c8oj_gg_:before{background-color:#a6b0b3}.___SNext_1c8oj_gg_,.___SPrev_1c8oj_gg_{display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.___SNext_1c8oj_gg_.__disabled_1c8oj_gg_,.___SPrev_1c8oj_gg_.__disabled_1c8oj_gg_{opacity:.3;cursor:default;pointer-events:none}"
53
+ ".___SCarousel_hckqt_gg_{overflow:hidden;outline:none}.___SContainer_hckqt_gg_{display:flex;transition:transform var(--duration_q7pnj9) ease-in-out}.___SItem_hckqt_gg_{flex:0 0 100%;max-width:100%;box-sizing:border-box;transform:var(--transform_q7pnj9)}.___SIndicators_hckqt_gg_{display:flex;justify-content:center;margin-top:16px}.___SIndicator_hckqt_gg_{margin:0 5px;padding:0 5px;cursor:pointer}.___SIndicator_hckqt_gg_:before{content:\"\";display:block;width:12px;height:12px;border-radius:50%;background-color:rgba(166,176,179,.3)}.___SIndicator_hckqt_gg_:hover:before{background-color:rgba(166,176,179,.6)}.___SIndicator_hckqt_gg_.__active_hckqt_gg_:before{background-color:#a6b0b3}.___SNext_hckqt_gg_,.___SPrev_hckqt_gg_{display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.___SNext_hckqt_gg_.__disabled_hckqt_gg_,.___SPrev_hckqt_gg_.__disabled_hckqt_gg_{opacity:.3;cursor:default;pointer-events:none}"
54
54
  /*__inner_css_end__*/
55
- , "k61g3x_gg_")
55
+ , "q7pnj9_gg_")
56
56
  /*__reshadow_css_end__*/
57
57
  , {
58
- "__SCarousel": "___SCarousel_1c8oj_gg_",
59
- "__SContainer": "___SContainer_1c8oj_gg_",
60
- "__SItem": "___SItem_1c8oj_gg_",
61
- "__SIndicators": "___SIndicators_1c8oj_gg_",
62
- "__SIndicator": "___SIndicator_1c8oj_gg_",
63
- "_active": "__active_1c8oj_gg_",
64
- "__SPrev": "___SPrev_1c8oj_gg_",
65
- "__SNext": "___SNext_1c8oj_gg_",
66
- "_disabled": "__disabled_1c8oj_gg_"
67
- }),
68
- style = (0, _extends2["default"])({}, _ref);
69
-
58
+ "__SCarousel": "___SCarousel_hckqt_gg_",
59
+ "__SContainer": "___SContainer_hckqt_gg_",
60
+ "--duration": "--duration_q7pnj9",
61
+ "__SItem": "___SItem_hckqt_gg_",
62
+ "--transform": "--transform_q7pnj9",
63
+ "__SIndicators": "___SIndicators_hckqt_gg_",
64
+ "__SIndicator": "___SIndicator_hckqt_gg_",
65
+ "_active": "__active_hckqt_gg_",
66
+ "__SNext": "___SNext_hckqt_gg_",
67
+ "__SPrev": "___SPrev_hckqt_gg_",
68
+ "_disabled": "__disabled_hckqt_gg_"
69
+ });
70
70
  var position = {
71
71
  getItemMin: function getItemMin(items) {
72
72
  var indexItem = 0;
@@ -97,7 +97,6 @@ var MAP_TRANSFORM = {
97
97
  ArrowLeft: 'left',
98
98
  ArrowRight: 'right'
99
99
  };
100
- var styled_c8 = (0, _core.create)([]);
101
100
 
102
101
  var Carousel = /*#__PURE__*/function (_Component) {
103
102
  (0, _inherits2["default"])(Carousel, _Component);
@@ -354,6 +353,17 @@ var Carousel = /*#__PURE__*/function (_Component) {
354
353
  _this.handlers.index(_activeItemIndex);
355
354
  }
356
355
  });
356
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "bindHandlerKeydownControl", function (direction) {
357
+ return function (e) {
358
+ var keyCode = e.keyCode;
359
+
360
+ if (keyCode === 13) {
361
+ e.preventDefault();
362
+
363
+ _this.bindHandlerClick(direction)();
364
+ }
365
+ };
366
+ });
357
367
  _this.isControlled = props.index !== undefined;
358
368
  _this.state = {
359
369
  items: []
@@ -408,6 +418,7 @@ var Carousel = /*#__PURE__*/function (_Component) {
408
418
 
409
419
  return {
410
420
  onClick: this.bindHandlerClick('left'),
421
+ onKeyDown: this.bindHandlerKeydownControl('left'),
411
422
  disabled: disabled
412
423
  };
413
424
  }
@@ -426,6 +437,7 @@ var Carousel = /*#__PURE__*/function (_Component) {
426
437
 
427
438
  return {
428
439
  onClick: this.bindHandlerClick('right'),
440
+ onKeyDown: this.bindHandlerKeydownControl('right'),
429
441
  disabled: disabled
430
442
  };
431
443
  }
@@ -448,19 +460,19 @@ var Carousel = /*#__PURE__*/function (_Component) {
448
460
  }, {
449
461
  key: "render",
450
462
  value: function render() {
451
- var SCarousel = this.Root;
463
+ var _ref = this ? this.asProps : arguments[0],
464
+ _ref7;
465
+
466
+ var SCarousel = _flexBox.Box;
452
467
  var _this$asProps5 = this.asProps,
453
- Children = _this$asProps5.Children,
454
- styles = _this$asProps5.styles;
455
- return (0, _core.styled)(((0, _core.set)([styled_c8, styles]), /*#__PURE__*/_react["default"].createElement(SCarousel, (0, _core.map)("SCarousel", {
456
- render: _flexBox.Box,
457
- onKeyDown: this.handlerKeyDown,
458
- tabIndex: 0,
459
- onTouchStart: this.handlerTouchStart,
460
- onTouchEnd: this.handlerTouchEnd
461
- }), /*#__PURE__*/_react["default"].createElement(Children, {
462
- className: _core.styled.styles["__Children"]
463
- }))));
468
+ styles = _this$asProps5.styles,
469
+ Children = _this$asProps5.Children;
470
+ return _ref7 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SCarousel, _ref7.cn("SCarousel", _objectSpread({}, (0, _core.assignProps)({
471
+ "onKeyDown": this.handlerKeyDown,
472
+ "tabIndex": 0,
473
+ "onTouchStart": this.handlerTouchStart,
474
+ "onTouchEnd": this.handlerTouchEnd
475
+ }, _ref))), /*#__PURE__*/_react["default"].createElement(Children, _ref7.cn("Children", {})));
464
476
  }
465
477
  }]);
466
478
  return Carousel;
@@ -474,48 +486,26 @@ var Carousel = /*#__PURE__*/function (_Component) {
474
486
  bounded: false
475
487
  });
476
488
  (0, _defineProperty2["default"])(Carousel, "style", style);
477
- var styled_12c = (0, _core.create)([(
478
- /*__reshadow_css_start__*/
479
- (0, _core.__css__)(
480
- /*__inner_css_start__*/
481
- ".___SContainer_jrz63_gg_{transition:transform var(--nre9v3_0) ease-in-out}"
482
- /*__inner_css_end__*/
483
- , "1azkjhu_gg_")
484
- /*__reshadow_css_end__*/
485
- , {
486
- "__SContainer": "___SContainer_jrz63_gg_"
487
- })]);
488
489
 
489
490
  var Container = function Container(props) {
491
+ var _ref2 = _this3 ? _this3.asProps : arguments[0],
492
+ _ref8;
493
+
494
+ var SContainer = _flexBox.Box;
490
495
  var styles = props.styles,
491
- duration = props.duration,
492
- SContainer = props.Root;
493
- var speedAnimation = "".concat(duration, "ms");
494
- return (0, _core.styled)(((0, _core.set)([styled_12c, styles], {
495
- "--nre9v3_0": speedAnimation
496
- }), /*#__PURE__*/_react["default"].createElement(SContainer, (0, _core.map)("SContainer", {
497
- render: _flexBox.Box,
498
- $$style: _core.styled.$$style
499
- }))));
496
+ duration = props.duration;
497
+ return _ref8 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SContainer, _ref8.cn("SContainer", _objectSpread({}, (0, _core.assignProps)({
498
+ "use:duration": "".concat(duration, "ms")
499
+ }, _ref2))));
500
500
  };
501
501
 
502
- var styled_190 = (0, _core.create)([(
503
- /*__reshadow_css_start__*/
504
- (0, _core.__css__)(
505
- /*__inner_css_start__*/
506
- ".___SItem_1uwef_gg_{transform:var(--nre9v3_0)}"
507
- /*__inner_css_end__*/
508
- , "kzzk5f_gg_")
509
- /*__reshadow_css_end__*/
510
- , {
511
- "__SItem": "___SItem_1uwef_gg_"
512
- })]);
513
-
514
502
  var Item = function Item(props) {
503
+ var _ref3 = _this3 ? _this3.asProps : arguments[0],
504
+ _ref9;
505
+
515
506
  var styles = props.styles,
516
- $toogleItem = props.$toogleItem,
517
- transform = props.transform,
518
- SItem = props.Root;
507
+ $toogleItem = props.$toogleItem;
508
+ var SItem = _flexBox.Box;
519
509
 
520
510
  var refItem = /*#__PURE__*/_react["default"].createRef();
521
511
 
@@ -531,79 +521,70 @@ var Item = function Item(props) {
531
521
  }, true);
532
522
  };
533
523
  }, []);
534
- return (0, _core.styled)(((0, _core.set)([styled_190, styles], {
535
- "--nre9v3_0": transform
536
- }), /*#__PURE__*/_react["default"].createElement(SItem, (0, _core.map)("SItem", {
537
- render: _flexBox.Box,
538
- ref: refItem,
539
- $$style: _core.styled.$$style
540
- }))));
524
+ return _ref9 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SItem, _ref9.cn("SItem", _objectSpread({}, (0, _core.assignProps)({
525
+ "ref": refItem
526
+ }, _ref3))));
541
527
  };
542
528
 
543
- var styled_1f4 = (0, _core.create)([]);
544
-
545
529
  var Prev = function Prev(props) {
546
- var SPrev = props.Root,
547
- styles = props.styles,
548
- disabled = props.disabled;
549
- return (0, _core.styled)(((0, _core.set)([styled_1f4, styles]), /*#__PURE__*/_react["default"].createElement(SPrev, (0, _core.map)("SPrev", {
550
- render: _flexBox.Box,
551
- disabled: disabled
552
- }))));
530
+ var _ref4 = _this3 ? _this3.asProps : arguments[0],
531
+ _ref10;
532
+
533
+ var styles = props.styles;
534
+ var SPrev = _flexBox.Box;
535
+ return _ref10 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SPrev, _ref10.cn("SPrev", _objectSpread({}, (0, _core.assignProps)({}, _ref4))));
553
536
  };
554
537
 
555
538
  Prev.defaultProps = function () {
556
539
  return {
557
540
  children: /*#__PURE__*/_react["default"].createElement(_l2["default"], {
558
541
  interactive: true,
559
- color: "stone"
542
+ color: "stone",
543
+ "aria-hidden": true,
544
+ role: "button"
560
545
  }),
561
546
  top: 0
562
547
  };
563
548
  };
564
549
 
565
- var styled_258 = (0, _core.create)([]);
566
-
567
550
  var Next = function Next(props) {
568
- var SNext = props.Root,
569
- styles = props.styles,
570
- disabled = props.disabled;
571
- return (0, _core.styled)(((0, _core.set)([styled_258, styles]), /*#__PURE__*/_react["default"].createElement(SNext, (0, _core.map)("SNext", {
572
- render: _flexBox.Box,
573
- disabled: disabled
574
- }))));
551
+ var _ref5 = _this3 ? _this3.asProps : arguments[0],
552
+ _ref11;
553
+
554
+ var styles = props.styles;
555
+ var SNext = _flexBox.Box;
556
+ return _ref11 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SNext, _ref11.cn("SNext", _objectSpread({}, (0, _core.assignProps)({}, _ref5))));
575
557
  };
576
558
 
577
559
  Next.defaultProps = function () {
578
560
  return {
579
561
  children: /*#__PURE__*/_react["default"].createElement(_l["default"], {
580
562
  interactive: true,
581
- color: "stone"
563
+ color: "stone",
564
+ "aria-hidden": true,
565
+ role: "button"
582
566
  }),
583
567
  top: 0
584
568
  };
585
569
  };
586
570
 
587
- var styled_2bc = (0, _core.create)([]);
571
+ var Indicators = function Indicators(_ref13) {
572
+ var _ref6 = _this3 ? _this3.asProps : arguments[0],
573
+ _ref12;
588
574
 
589
- var Indicators = function Indicators(_ref2) {
590
- var SIndicators = _ref2.Root,
591
- items = _ref2.items,
592
- styles = _ref2.styles,
593
- Children = _ref2.Children;
575
+ var items = _ref13.items,
576
+ styles = _ref13.styles,
577
+ Children = _ref13.Children;
578
+ var SIndicators = _flexBox.Box;
594
579
  var SIndicator = _flexBox.Box;
595
580
 
596
581
  if (Children.origin) {
597
582
  return /*#__PURE__*/_react["default"].createElement(Children, null);
598
583
  }
599
584
 
600
- return (0, _core.styled)(((0, _core.set)([styled_2bc, styles]), /*#__PURE__*/_react["default"].createElement(SIndicators, (0, _core.map)("SIndicators", {
601
- render: _flexBox.Box
602
- }), items.map(function (item) {
603
- return /*#__PURE__*/_react["default"].createElement(SIndicator, (0, _core.map)("SIndicator", {
604
- active: item.active
605
- }, item));
606
- }))));
585
+ return _ref12 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SIndicators, _ref12.cn("SIndicators", _objectSpread({}, (0, _core.assignProps)({}, _ref6))), items.map(function (item) {
586
+ return /*#__PURE__*/_react["default"].createElement(SIndicator, item);
587
+ }));
607
588
  };
608
589
 
609
590
  var _default = (0, _core["default"])(Carousel, {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Carousel.js"],"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","prevProps","duration","ref","$toogleItem","toogleItem","disabled","onClick","bindHandlerClick","active","bindHandlerClickIndicator","SCarousel","Root","Children","styles","Box","handlerKeyDown","handlerTouchStart","handlerTouchEnd","Component","defaultIndex","Container","SContainer","speedAnimation","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, styled } from '@semcore/core';\n\nimport { Box } from '@semcore/flex-box';\nimport ChevronRightL from '@semcore/icon/lib/ChevronRight/l';\nimport ChevronLeftL from '@semcore/icon/lib/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 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 { onClick: this.bindHandlerClick('left'), disabled };\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 { onClick: this.bindHandlerClick('right'), disabled };\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 { Root: SCarousel } = this;\n const { Children, styles } = this.asProps;\n\n return styled(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 { styles, duration, Root: SContainer } = props;\n const speedAnimation = `${duration}ms`;\n\n return styled(styles)`\n SContainer {\n transition: transform ${speedAnimation} ease-in-out;\n }\n `(<SContainer render={Box} />);\n};\n\nconst Item = (props) => {\n const { styles, $toogleItem, transform, Root: SItem } = props;\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 styled(styles)`\n SItem {\n transform: ${transform};\n }\n `(<SItem render={Box} ref={refItem} />);\n};\n\nconst Prev = (props) => {\n const { Root: SPrev, styles, disabled } = props;\n return styled(styles)(<SPrev render={Box} disabled={disabled} />);\n};\n\nPrev.defaultProps = () => ({\n children: <ChevronLeftL interactive color=\"stone\" />,\n top: 0,\n});\n\nconst Next = (props) => {\n const { Root: SNext, styles, disabled } = props;\n return styled(styles)(<SNext render={Box} disabled={disabled} />);\n};\n\nNext.defaultProps = () => ({\n children: <ChevronRightL interactive color=\"stone\" />,\n top: 0,\n});\n\nconst Indicators = ({ Root: SIndicators, items, styles, Children }) => {\n const SIndicator = Box;\n if (Children.origin) {\n return <Children />;\n }\n return styled(styles)(\n <SIndicators render={Box}>\n {items.map((item) => (\n <SIndicator active={item.active} {...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.js"],"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"}
@@ -7,12 +7,14 @@ SCarousel {
7
7
 
8
8
  SContainer {
9
9
  display: flex;
10
+ transition: transform var(--duration) ease-in-out;
10
11
  }
11
12
 
12
13
  SItem {
13
14
  flex: 0 0 100%;
14
15
  max-width: 100%;
15
16
  box-sizing: border-box;
17
+ transform: var(--transform);
16
18
  }
17
19
 
18
20
  SIndicators {
@@ -6,7 +6,15 @@ import _inherits from "@babel/runtime/helpers/inherits";
6
6
  import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
7
7
  import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
8
8
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
9
- import _extends from "@babel/runtime/helpers/extends";
9
+ import { sstyled as _sstyled } from "@semcore/core";
10
+ import { assignProps as _assignProps6 } from "@semcore/core";
11
+ import { assignProps as _assignProps5 } from "@semcore/core";
12
+ import { assignProps as _assignProps4 } from "@semcore/core";
13
+ import { assignProps as _assignProps3 } from "@semcore/core";
14
+ import { assignProps as _assignProps2 } from "@semcore/core";
15
+ import { assignProps as _assignProps } from "@semcore/core";
16
+
17
+ var _this3 = this;
10
18
 
11
19
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
12
20
 
@@ -14,36 +22,36 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
14
22
 
15
23
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
16
24
 
17
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
25
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
18
26
 
19
27
  import React, { useEffect } from 'react';
20
- import createComponent, { Component, styled, css, __css__, set, create, map } from '@semcore/core';
28
+ import createComponent, { Component, sstyled, Root } from '@semcore/core';
21
29
  import { Box } from '@semcore/flex-box';
22
- import ChevronRightL from '@semcore/icon/lib/ChevronRight/l';
23
- import ChevronLeftL from '@semcore/icon/lib/ChevronLeft/l';
30
+ import ChevronRight from '@semcore/icon/ChevronRight/l';
31
+ import ChevronLeft from '@semcore/icon/ChevronLeft/l';
24
32
 
25
33
  /*__reshadow-styles__:"./style/carousel.shadow.css"*/
26
- var _ref = (
34
+ var style = (
27
35
  /*__reshadow_css_start__*/
28
- __css__(
36
+ _sstyled.insert(
29
37
  /*__inner_css_start__*/
30
- ".___SCarousel_1c8oj_gg_{overflow:hidden;outline:none}.___SContainer_1c8oj_gg_{display:flex}.___SItem_1c8oj_gg_{flex:0 0 100%;max-width:100%;box-sizing:border-box}.___SIndicators_1c8oj_gg_{display:flex;justify-content:center;margin-top:16px}.___SIndicator_1c8oj_gg_{margin:0 5px;padding:0 5px;cursor:pointer}.___SIndicator_1c8oj_gg_:before{content:\"\";display:block;width:12px;height:12px;border-radius:50%;background-color:rgba(166,176,179,.3)}.___SIndicator_1c8oj_gg_:hover:before{background-color:rgba(166,176,179,.6)}.___SIndicator_1c8oj_gg_.__active_1c8oj_gg_:before{background-color:#a6b0b3}.___SNext_1c8oj_gg_,.___SPrev_1c8oj_gg_{display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.___SNext_1c8oj_gg_.__disabled_1c8oj_gg_,.___SPrev_1c8oj_gg_.__disabled_1c8oj_gg_{opacity:.3;cursor:default;pointer-events:none}"
38
+ ".___SCarousel_hckqt_gg_{overflow:hidden;outline:none}.___SContainer_hckqt_gg_{display:flex;transition:transform var(--duration_q7pnj9) ease-in-out}.___SItem_hckqt_gg_{flex:0 0 100%;max-width:100%;box-sizing:border-box;transform:var(--transform_q7pnj9)}.___SIndicators_hckqt_gg_{display:flex;justify-content:center;margin-top:16px}.___SIndicator_hckqt_gg_{margin:0 5px;padding:0 5px;cursor:pointer}.___SIndicator_hckqt_gg_:before{content:\"\";display:block;width:12px;height:12px;border-radius:50%;background-color:rgba(166,176,179,.3)}.___SIndicator_hckqt_gg_:hover:before{background-color:rgba(166,176,179,.6)}.___SIndicator_hckqt_gg_.__active_hckqt_gg_:before{background-color:#a6b0b3}.___SNext_hckqt_gg_,.___SPrev_hckqt_gg_{display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.___SNext_hckqt_gg_.__disabled_hckqt_gg_,.___SPrev_hckqt_gg_.__disabled_hckqt_gg_{opacity:.3;cursor:default;pointer-events:none}"
31
39
  /*__inner_css_end__*/
32
- , "k61g3x_gg_")
40
+ , "q7pnj9_gg_")
33
41
  /*__reshadow_css_end__*/
34
42
  , {
35
- "__SCarousel": "___SCarousel_1c8oj_gg_",
36
- "__SContainer": "___SContainer_1c8oj_gg_",
37
- "__SItem": "___SItem_1c8oj_gg_",
38
- "__SIndicators": "___SIndicators_1c8oj_gg_",
39
- "__SIndicator": "___SIndicator_1c8oj_gg_",
40
- "_active": "__active_1c8oj_gg_",
41
- "__SPrev": "___SPrev_1c8oj_gg_",
42
- "__SNext": "___SNext_1c8oj_gg_",
43
- "_disabled": "__disabled_1c8oj_gg_"
44
- }),
45
- style = _extends({}, _ref);
46
-
43
+ "__SCarousel": "___SCarousel_hckqt_gg_",
44
+ "__SContainer": "___SContainer_hckqt_gg_",
45
+ "--duration": "--duration_q7pnj9",
46
+ "__SItem": "___SItem_hckqt_gg_",
47
+ "--transform": "--transform_q7pnj9",
48
+ "__SIndicators": "___SIndicators_hckqt_gg_",
49
+ "__SIndicator": "___SIndicator_hckqt_gg_",
50
+ "_active": "__active_hckqt_gg_",
51
+ "__SNext": "___SNext_hckqt_gg_",
52
+ "__SPrev": "___SPrev_hckqt_gg_",
53
+ "_disabled": "__disabled_hckqt_gg_"
54
+ });
47
55
  var position = {
48
56
  getItemMin: function getItemMin(items) {
49
57
  var indexItem = 0;
@@ -74,7 +82,6 @@ var MAP_TRANSFORM = {
74
82
  ArrowLeft: 'left',
75
83
  ArrowRight: 'right'
76
84
  };
77
- var styled_c8 = create([]);
78
85
 
79
86
  var Carousel = /*#__PURE__*/function (_Component) {
80
87
  _inherits(Carousel, _Component);
@@ -351,6 +358,18 @@ var Carousel = /*#__PURE__*/function (_Component) {
351
358
  }
352
359
  });
353
360
 
361
+ _defineProperty(_assertThisInitialized(_this), "bindHandlerKeydownControl", function (direction) {
362
+ return function (e) {
363
+ var keyCode = e.keyCode;
364
+
365
+ if (keyCode === 13) {
366
+ e.preventDefault();
367
+
368
+ _this.bindHandlerClick(direction)();
369
+ }
370
+ };
371
+ });
372
+
354
373
  _this.isControlled = props.index !== undefined;
355
374
  _this.state = {
356
375
  items: []
@@ -405,6 +424,7 @@ var Carousel = /*#__PURE__*/function (_Component) {
405
424
 
406
425
  return {
407
426
  onClick: this.bindHandlerClick('left'),
427
+ onKeyDown: this.bindHandlerKeydownControl('left'),
408
428
  disabled: disabled
409
429
  };
410
430
  }
@@ -423,6 +443,7 @@ var Carousel = /*#__PURE__*/function (_Component) {
423
443
 
424
444
  return {
425
445
  onClick: this.bindHandlerClick('right'),
446
+ onKeyDown: this.bindHandlerKeydownControl('right'),
426
447
  disabled: disabled
427
448
  };
428
449
  }
@@ -445,19 +466,19 @@ var Carousel = /*#__PURE__*/function (_Component) {
445
466
  }, {
446
467
  key: "render",
447
468
  value: function render() {
448
- var SCarousel = this.Root;
469
+ var _ref = this ? this.asProps : arguments[0],
470
+ _ref7;
471
+
472
+ var SCarousel = Box;
449
473
  var _this$asProps5 = this.asProps,
450
- Children = _this$asProps5.Children,
451
- styles = _this$asProps5.styles;
452
- return styled((set([styled_c8, styles]), /*#__PURE__*/React.createElement(SCarousel, map("SCarousel", {
453
- render: Box,
454
- onKeyDown: this.handlerKeyDown,
455
- tabIndex: 0,
456
- onTouchStart: this.handlerTouchStart,
457
- onTouchEnd: this.handlerTouchEnd
458
- }), /*#__PURE__*/React.createElement(Children, {
459
- className: styled.styles["__Children"]
460
- }))));
474
+ styles = _this$asProps5.styles,
475
+ Children = _this$asProps5.Children;
476
+ return _ref7 = sstyled(styles), /*#__PURE__*/React.createElement(SCarousel, _ref7.cn("SCarousel", _objectSpread({}, _assignProps({
477
+ "onKeyDown": this.handlerKeyDown,
478
+ "tabIndex": 0,
479
+ "onTouchStart": this.handlerTouchStart,
480
+ "onTouchEnd": this.handlerTouchEnd
481
+ }, _ref))), /*#__PURE__*/React.createElement(Children, _ref7.cn("Children", {})));
461
482
  }
462
483
  }]);
463
484
 
@@ -475,48 +496,25 @@ _defineProperty(Carousel, "defaultProps", {
475
496
 
476
497
  _defineProperty(Carousel, "style", style);
477
498
 
478
- var styled_12c = create([(
479
- /*__reshadow_css_start__*/
480
- __css__(
481
- /*__inner_css_start__*/
482
- ".___SContainer_jrz63_gg_{transition:transform var(--nre9v3_0) ease-in-out}"
483
- /*__inner_css_end__*/
484
- , "1azkjhu_gg_")
485
- /*__reshadow_css_end__*/
486
- , {
487
- "__SContainer": "___SContainer_jrz63_gg_"
488
- })]);
489
-
490
499
  var Container = function Container(props) {
500
+ var _ref2 = _this3 ? _this3.asProps : arguments[0],
501
+ _ref8;
502
+
503
+ var SContainer = Box;
491
504
  var styles = props.styles,
492
- duration = props.duration,
493
- SContainer = props.Root;
494
- var speedAnimation = "".concat(duration, "ms");
495
- return styled((set([styled_12c, styles], {
496
- "--nre9v3_0": speedAnimation
497
- }), /*#__PURE__*/React.createElement(SContainer, map("SContainer", {
498
- render: Box,
499
- $$style: styled.$$style
500
- }))));
505
+ duration = props.duration;
506
+ return _ref8 = sstyled(styles), /*#__PURE__*/React.createElement(SContainer, _ref8.cn("SContainer", _objectSpread({}, _assignProps2({
507
+ "use:duration": "".concat(duration, "ms")
508
+ }, _ref2))));
501
509
  };
502
510
 
503
- var styled_190 = create([(
504
- /*__reshadow_css_start__*/
505
- __css__(
506
- /*__inner_css_start__*/
507
- ".___SItem_1uwef_gg_{transform:var(--nre9v3_0)}"
508
- /*__inner_css_end__*/
509
- , "kzzk5f_gg_")
510
- /*__reshadow_css_end__*/
511
- , {
512
- "__SItem": "___SItem_1uwef_gg_"
513
- })]);
514
-
515
511
  var Item = function Item(props) {
512
+ var _ref3 = _this3 ? _this3.asProps : arguments[0],
513
+ _ref9;
514
+
516
515
  var styles = props.styles,
517
- $toogleItem = props.$toogleItem,
518
- transform = props.transform,
519
- SItem = props.Root;
516
+ $toogleItem = props.$toogleItem;
517
+ var SItem = Box;
520
518
  var refItem = /*#__PURE__*/React.createRef();
521
519
  useEffect(function () {
522
520
  // add item
@@ -530,79 +528,70 @@ var Item = function Item(props) {
530
528
  }, true);
531
529
  };
532
530
  }, []);
533
- return styled((set([styled_190, styles], {
534
- "--nre9v3_0": transform
535
- }), /*#__PURE__*/React.createElement(SItem, map("SItem", {
536
- render: Box,
537
- ref: refItem,
538
- $$style: styled.$$style
539
- }))));
531
+ return _ref9 = sstyled(styles), /*#__PURE__*/React.createElement(SItem, _ref9.cn("SItem", _objectSpread({}, _assignProps3({
532
+ "ref": refItem
533
+ }, _ref3))));
540
534
  };
541
535
 
542
- var styled_1f4 = create([]);
543
-
544
536
  var Prev = function Prev(props) {
545
- var SPrev = props.Root,
546
- styles = props.styles,
547
- disabled = props.disabled;
548
- return styled((set([styled_1f4, styles]), /*#__PURE__*/React.createElement(SPrev, map("SPrev", {
549
- render: Box,
550
- disabled: disabled
551
- }))));
537
+ var _ref4 = _this3 ? _this3.asProps : arguments[0],
538
+ _ref10;
539
+
540
+ var styles = props.styles;
541
+ var SPrev = Box;
542
+ return _ref10 = sstyled(styles), /*#__PURE__*/React.createElement(SPrev, _ref10.cn("SPrev", _objectSpread({}, _assignProps4({}, _ref4))));
552
543
  };
553
544
 
554
545
  Prev.defaultProps = function () {
555
546
  return {
556
- children: /*#__PURE__*/React.createElement(ChevronLeftL, {
547
+ children: /*#__PURE__*/React.createElement(ChevronLeft, {
557
548
  interactive: true,
558
- color: "stone"
549
+ color: "stone",
550
+ "aria-hidden": true,
551
+ role: "button"
559
552
  }),
560
553
  top: 0
561
554
  };
562
555
  };
563
556
 
564
- var styled_258 = create([]);
565
-
566
557
  var Next = function Next(props) {
567
- var SNext = props.Root,
568
- styles = props.styles,
569
- disabled = props.disabled;
570
- return styled((set([styled_258, styles]), /*#__PURE__*/React.createElement(SNext, map("SNext", {
571
- render: Box,
572
- disabled: disabled
573
- }))));
558
+ var _ref5 = _this3 ? _this3.asProps : arguments[0],
559
+ _ref11;
560
+
561
+ var styles = props.styles;
562
+ var SNext = Box;
563
+ return _ref11 = sstyled(styles), /*#__PURE__*/React.createElement(SNext, _ref11.cn("SNext", _objectSpread({}, _assignProps5({}, _ref5))));
574
564
  };
575
565
 
576
566
  Next.defaultProps = function () {
577
567
  return {
578
- children: /*#__PURE__*/React.createElement(ChevronRightL, {
568
+ children: /*#__PURE__*/React.createElement(ChevronRight, {
579
569
  interactive: true,
580
- color: "stone"
570
+ color: "stone",
571
+ "aria-hidden": true,
572
+ role: "button"
581
573
  }),
582
574
  top: 0
583
575
  };
584
576
  };
585
577
 
586
- var styled_2bc = create([]);
578
+ var Indicators = function Indicators(_ref13) {
579
+ var _ref6 = _this3 ? _this3.asProps : arguments[0],
580
+ _ref12;
587
581
 
588
- var Indicators = function Indicators(_ref2) {
589
- var SIndicators = _ref2.Root,
590
- items = _ref2.items,
591
- styles = _ref2.styles,
592
- Children = _ref2.Children;
582
+ var items = _ref13.items,
583
+ styles = _ref13.styles,
584
+ Children = _ref13.Children;
585
+ var SIndicators = Box;
593
586
  var SIndicator = Box;
594
587
 
595
588
  if (Children.origin) {
596
589
  return /*#__PURE__*/React.createElement(Children, null);
597
590
  }
598
591
 
599
- return styled((set([styled_2bc, styles]), /*#__PURE__*/React.createElement(SIndicators, map("SIndicators", {
600
- render: Box
601
- }), items.map(function (item) {
602
- return /*#__PURE__*/React.createElement(SIndicator, map("SIndicator", {
603
- active: item.active
604
- }, item));
605
- }))));
592
+ return _ref12 = sstyled(styles), /*#__PURE__*/React.createElement(SIndicators, _ref12.cn("SIndicators", _objectSpread({}, _assignProps6({}, _ref6))), items.map(function (item) {
593
+ return /*#__PURE__*/React.createElement(SIndicator, item);
594
+ }));
606
595
  };
607
596
 
608
597
  export default createComponent(Carousel, {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Carousel.js"],"names":["React","useEffect","createComponent","Component","styled","Box","ChevronRightL","ChevronLeftL","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","prevProps","duration","ref","$toogleItem","toogleItem","disabled","onClick","bindHandlerClick","active","bindHandlerClickIndicator","SCarousel","Root","Children","styles","handlerKeyDown","handlerTouchStart","handlerTouchEnd","defaultIndex","Container","SContainer","speedAnimation","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, styled } from '@semcore/core';\n\nimport { Box } from '@semcore/flex-box';\nimport ChevronRightL from '@semcore/icon/lib/ChevronRight/l';\nimport ChevronLeftL from '@semcore/icon/lib/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 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 { onClick: this.bindHandlerClick('left'), disabled };\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 { onClick: this.bindHandlerClick('right'), disabled };\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 { Root: SCarousel } = this;\n const { Children, styles } = this.asProps;\n\n return styled(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 { styles, duration, Root: SContainer } = props;\n const speedAnimation = `${duration}ms`;\n\n return styled(styles)`\n SContainer {\n transition: transform ${speedAnimation} ease-in-out;\n }\n `(<SContainer render={Box} />);\n};\n\nconst Item = (props) => {\n const { styles, $toogleItem, transform, Root: SItem } = props;\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 styled(styles)`\n SItem {\n transform: ${transform};\n }\n `(<SItem render={Box} ref={refItem} />);\n};\n\nconst Prev = (props) => {\n const { Root: SPrev, styles, disabled } = props;\n return styled(styles)(<SPrev render={Box} disabled={disabled} />);\n};\n\nPrev.defaultProps = () => ({\n children: <ChevronLeftL interactive color=\"stone\" />,\n top: 0,\n});\n\nconst Next = (props) => {\n const { Root: SNext, styles, disabled } = props;\n return styled(styles)(<SNext render={Box} disabled={disabled} />);\n};\n\nNext.defaultProps = () => ({\n children: <ChevronRightL interactive color=\"stone\" />,\n top: 0,\n});\n\nconst Indicators = ({ Root: SIndicators, items, styles, Children }) => {\n const SIndicator = Box;\n if (Children.origin) {\n return <Children />;\n }\n return styled(styles)(\n <SIndicators render={Box}>\n {items.map((item) => (\n <SIndicator active={item.active} {...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.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","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":";;;;;;;;;;;;;;;;;;;;;;;;;;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;AACfC,EAAAA,UAAU,EAAE,oBAASC,KAAT,EAAgB;AAC1B,QAAIC,SAAS,GAAG,CAAhB;AACAD,IAAAA,KAAK,CAACE,OAAN,CAAc,UAASC,IAAT,EAAeC,KAAf,EAAsB;AAClC,UAAID,IAAI,CAACL,QAAL,GAAgBE,KAAK,CAACC,SAAD,CAAL,CAAiBH,QAArC,EAA+C;AAC7CG,QAAAA,SAAS,GAAGG,KAAZ;AACD;AACF,KAJD;AAKA,WAAOH,SAAP;AACD,GATc;AAUfI,EAAAA,UAAU,EAAE,oBAASL,KAAT,EAAgB;AAC1B,QAAIC,SAAS,GAAG,CAAhB;AACAD,IAAAA,KAAK,CAACE,OAAN,CAAc,UAASC,IAAT,EAAeC,KAAf,EAAsB;AAClC,UAAID,IAAI,CAACL,QAAL,GAAgBE,KAAK,CAACC,SAAD,CAAL,CAAiBH,QAArC,EAA+C;AAC7CG,QAAAA,SAAS,GAAGG,KAAZ;AACD;AACF,KAJD;AAKA,WAAOH,SAAP;AACD,GAlBc;AAmBfK,EAAAA,MAAM,EAAE,gBAASN,KAAT,EAAgB;AACtB,WAAOA,KAAK,CAACF,QAAQ,CAACC,UAAT,CAAoBC,KAApB,CAAD,CAAL,CAAkCF,QAAzC;AACD,GArBc;AAsBfS,EAAAA,MAAM,EAAE,gBAASP,KAAT,EAAgB;AACtB,WAAOA,KAAK,CAACF,QAAQ,CAACO,UAAT,CAAoBL,KAApB,CAAD,CAAL,CAAkCF,QAAzC;AACD;AAxBc,CAAjB;AA2BA,IAAMU,aAAa,GAAG;AACpBC,EAAAA,SAAS,EAAE,MADS;AAEpBC,EAAAA,UAAU,EAAE;AAFQ,CAAtB;;IAKMC,Q;;;;;AAgBJ,oBAAYC,KAAZ,EAAmB;AAAA;;AAAA;;AACjB,8BAAMA,KAAN;;AADiB,gFALJvB,KAAK,CAACwB,SAAN,EAKI;;AAAA,gEAJP,CAIO;;AAAA,uEAHA,CAGA;;AAAA,qEAFF,CAEE;;AAAA,qEAqBF,UAACC,CAAD,EAAO;AACtB,cAAQA,CAAC,CAACC,GAAV;AACE,aAAK,WAAL;AACA,aAAK,YAAL;AACED,UAAAA,CAAC,CAACE,cAAF;;AADF,sCAE8B,MAAKC,oBAAL,CAA0BT,aAAa,CAACM,CAAC,CAACC,GAAH,CAAvC,CAF9B;AAAA,cAEUG,eAFV,yBAEUA,eAFV;;AAGE,gBAAKC,QAAL,CAAcf,KAAd,CAAoBc,eAApB;;AALJ;AAOD,KA7BkB;;AAAA,iEA+BN,UAACf,IAAD,EAA8B;AAAA,UAAvBiB,UAAuB,uEAAV,KAAU;AAAA,UACjChB,KADiC,GACvB,MAAKiB,OADkB,CACjCjB,KADiC;AAAA,UAEjCJ,KAFiC,GAEvB,MAAKsB,KAFkB,CAEjCtB,KAFiC;;AAGzC,UAAIoB,UAAJ,EAAgB;AACd,cAAKG,WAAL,CAAiBvB,KAAK,CAACwB,MAAN,CAAa,UAACC,OAAD;AAAA,iBAAaA,OAAO,CAACC,IAAR,KAAiBvB,IAAI,CAACuB,IAAnC;AAAA,SAAb,CAAjB;AACD,OAFD,MAEO;AACL,cAAKC,QAAL,CACE,UAACL,KAAD,EAAW;AACT,iBAAO;AACLtB,YAAAA,KAAK,EAAE,6BAAIsB,KAAK,CAACtB,KAAV,IAAiBG,IAAjB,GAAuByB,GAAvB,CAA2B,UAACH,OAAD,EAAU3B,QAAV;AAAA,qDAC7B2B,OAD6B;AAEhC3B,gBAAAA,QAAQ,EAARA,QAFgC;AAGhC+B,gBAAAA,SAAS,EAAE;AAHqB;AAAA,aAA3B;AADF,WAAP;AAOD,SATH,EAUE,YAAM;AACJ,cAAIzB,KAAK,KAAK,CAAd,EAAiB;AACf,kBAAK0B,YAAL,CAAkB,MAAKC,cAAvB,EAAuC3B,KAAvC;AACD;AACF,SAdH;AAgBD;AACF,KAtDkB;;AAAA,kEAwDL,UAACJ,KAAD,EAAW;AACvB,YAAK2B,QAAL,CAAc;AAAA,eAAO;AAAE3B,UAAAA,KAAK,EAALA;AAAF,SAAP;AAAA,OAAd;AACD,KA1DkB;;AAAA,yEA4DE,UAAC6B,SAAD,EAAe;AAClC,UAAI,MAAKG,YAAL,CAAkBC,OAAtB,EAA+B;AAC7B,cAAKD,YAAL,CAAkBC,OAAlB,CAA0BC,KAA1B,CAAgCL,SAAhC,wBAA0DA,SAA1D;AACD;AACF,KAhEkB;;AAAA,mEAkEJ,UAACM,YAAD,EAAeC,SAAf,EAA0BC,OAA1B,EAAsC;AACnD,UAAIA,OAAJ,EAAa;AACX,eAAOF,YAAY,GAAGC,SAAf,GAA2B,OAA3B,GAAqC,MAA5C;AACD;;AAHkD,UAI3CpC,KAJ2C,GAIjC,MAAKsB,KAJ4B,CAI3CtB,KAJ2C;AAKnD,UAAMsC,SAAS,GAAGtC,KAAK,CAAC4B,GAAN,CAAU,UAACW,CAAD,EAAIC,GAAJ;AAAA,eAAYA,GAAZ;AAAA,OAAV,CAAlB;;AACA,UAAMC,MAAM,sBAAOH,SAAP,CAAZ;;AACA,UAAMI,SAAS,GAAGD,MAAM,CAAC,CAAD,CAAxB;AACA,UAAME,SAAS,GAAGF,MAAM,CAACA,MAAM,CAACG,MAAP,GAAgB,CAAjB,CAAxB;;AAEA,UAAIH,MAAM,CAACG,MAAP,KAAkB,CAAtB,EAAyB;AACvB,eAAOT,YAAY,GAAGC,SAAf,GAA2B,OAA3B,GAAqC,MAA5C;AACD;;AACD,UAAID,YAAY,KAAKO,SAArB,EAAgC;AAC9BD,QAAAA,MAAM,CAACI,OAAP,CAAeF,SAAf;AACAF,QAAAA,MAAM,CAACK,GAAP;AACD;;AACD,UAAIX,YAAY,KAAKQ,SAArB,EAAgC;AAC9BF,QAAAA,MAAM,CAACM,KAAP;AACAN,QAAAA,MAAM,CAACO,IAAP,CAAYN,SAAZ;AACD;;AAED,UAAMO,eAAe,GAAGR,MAAM,CAACS,OAAP,CAAef,YAAf,CAAxB;AACA,UAAMgB,IAAI,GAAGV,MAAM,CAACS,OAAP,CAAed,SAAf,CAAb;AAEA,aAAOe,IAAI,GAAGF,eAAP,GAAyB,CAAzB,GAA6B,MAA7B,GAAsC,OAA7C;AACD,KA5FkB;;AAAA,mEA8FJ,UAACd,YAAD,EAAeiB,aAAf,EAA8Bf,OAA9B,EAA0C;AACvD,UAAIF,YAAY,KAAKiB,aAArB,EAAoC,OAAO,KAAP;;AACpC,UAAMC,SAAS,GAAG,MAAKC,YAAL,CAChBnB,YADgB,EAEhBiB,aAFgB,EAGhBf,OAAO,IAAI,MAAKhB,OAAL,CAAagB,OAHR,CAAlB;;AAKA,UAAIkB,CAAC,GAAGpB,YAAR;;AACA,aAAOiB,aAAa,KAAKG,CAAzB,EAA4B;AAAA,kCACE,MAAKC,aAAL,CAAmBH,SAAnB,CADF;AAAA,YAClBnC,eADkB,uBAClBA,eADkB;;AAE1BqC,QAAAA,CAAC,GAAGrC,eAAJ;AACD;AACF,KA1GkB;;AAAA,2EA4GI,UAACmC,SAAD,EAAe;AAAA,0BACT,MAAKhC,OADI;AAAA,UAC5BgB,OAD4B,iBAC5BA,OAD4B;AAAA,UACnBjC,KADmB,iBACnBA,KADmB;AAAA,UAE5BJ,KAF4B,GAElB,MAAKsB,KAFa,CAE5BtB,KAF4B;AAGpC,UAAMyD,iBAAiB,GAAGzD,KAAK,CAAC4C,MAAN,GAAe,CAAzC;;AAEA,UAAI,MAAKc,YAAT,EAAuB;AACrB,YAAIL,SAAS,KAAK,OAAlB,EAA2B;AACzB,cAAIhB,OAAO,IAAIjC,KAAK,KAAKqD,iBAAzB,EAA4C;AAC1C,mBAAO;AAAEvC,cAAAA,eAAe,EAAEuC;AAAnB,aAAP;AACD;;AACD,iBAAO;AAAEvC,YAAAA,eAAe,EAAEd,KAAK,KAAKqD,iBAAV,GAA8B,CAA9B,GAAkCrD,KAAK,GAAG;AAA7D,WAAP;AACD;;AACD,YAAIiD,SAAS,KAAK,MAAlB,EAA0B;AACxB,cAAIhB,OAAO,IAAIjC,KAAK,KAAK,CAAzB,EAA4B;AAC1B,mBAAO;AAAEc,cAAAA,eAAe,EAAE;AAAnB,aAAP;AACD;;AACD,iBAAO;AAAEA,YAAAA,eAAe,EAAEd,KAAK,KAAK,CAAV,GAAcqD,iBAAd,GAAkCrD,KAAK,GAAG;AAA7D,WAAP;AACD;AACF;;AACD,aAAO,MAAKoD,aAAL,CAAmBH,SAAnB,CAAP;AACD,KAhIkB;;AAAA,oEAkIH,UAACA,SAAD,EAAe;AAAA,2BACH,MAAKhC,OADF;AAAA,UACrBgB,OADqB,kBACrBA,OADqB;AAAA,UACZsB,IADY,kBACZA,IADY;AAAA,UAErB3D,KAFqB,GAEX,MAAKsB,KAFM,CAErBtB,KAFqB;AAG7B,UAAMyD,iBAAiB,GAAGzD,KAAK,CAAC4C,MAAN,GAAe,CAAzC;AACA,UAAIgB,gBAAgB,GAAGC,SAAvB;;AAEA,UAAIR,SAAS,KAAK,OAAlB,EAA2B;AACzB,YAAIhB,OAAO,IAAI,MAAKyB,gBAAL,KAA0BL,iBAAzC,EAA4D;AAC1D,iBAAO;AAAEvC,YAAAA,eAAe,EAAEuC;AAAnB,WAAP;AACD;;AACD,cAAKK,gBAAL,IAAyB,CAAzB;AACA,YAAMC,eAAe,GAAGjE,QAAQ,CAACS,MAAT,CAAgBP,KAAhB,CAAxB;;AAEA,YAAI,MAAK8D,gBAAL,GAAwBC,eAA5B,EAA6C;AAC3CH,UAAAA,gBAAgB,GAAG9D,QAAQ,CAACC,UAAT,CAAoBC,KAApB,CAAnB;AACAA,UAAAA,KAAK,CAAC4D,gBAAD,CAAL,CAAwB9D,QAAxB,GAAmCiE,eAAe,GAAG,CAArD;AACA/D,UAAAA,KAAK,CAAC4D,gBAAD,CAAL,CAAwB/B,SAAxB,IAAqC7B,KAAK,CAAC4C,MAAN,GAAee,IAApD;;AACA,gBAAKpC,WAAL,oBAAqBvB,KAArB;AACD;;AAED,cAAK+B,cAAL,IAAuB,CAAvB;;AACA,YAAI,MAAKA,cAAL,GAAsB0B,iBAA1B,EAA6C;AAC3C,gBAAK1B,cAAL,GAAsB,CAAtB;AACD;;AACD,cAAKF,SAAL,IAAkB8B,IAAlB;AACD;;AACD,UAAIN,SAAS,KAAK,MAAlB,EAA0B;AACxB,YAAIhB,OAAO,IAAI,MAAKyB,gBAAL,KAA0B,CAAzC,EAA4C;AAC1C,iBAAO;AAAE5C,YAAAA,eAAe,EAAE;AAAnB,WAAP;AACD;;AACD,cAAK4C,gBAAL,IAAyB,CAAzB;AACA,YAAME,eAAe,GAAGlE,QAAQ,CAACQ,MAAT,CAAgBN,KAAhB,CAAxB;;AAEA,YAAI,MAAK8D,gBAAL,GAAwBE,eAA5B,EAA6C;AAC3CJ,UAAAA,gBAAgB,GAAG9D,QAAQ,CAACO,UAAT,CAAoBL,KAApB,CAAnB;AACAA,UAAAA,KAAK,CAAC4D,gBAAD,CAAL,CAAwB9D,QAAxB,GAAmCkE,eAAe,GAAG,CAArD;AACAhE,UAAAA,KAAK,CAAC4D,gBAAD,CAAL,CAAwB/B,SAAxB,IAAqC7B,KAAK,CAAC4C,MAAN,GAAee,IAApD;;AACA,gBAAKpC,WAAL,oBAAqBvB,KAArB;AACD;;AAED,cAAK+B,cAAL,IAAuB,CAAvB;;AACA,YAAI,MAAKA,cAAL,GAAsB,CAA1B,EAA6B;AAC3B,gBAAKA,cAAL,GAAsB0B,iBAAtB;AACD;;AACD,cAAK5B,SAAL,IAAkB8B,IAAlB;AACD;;AAED,UAAMzC,eAAe,GAAGlB,KAAK,CAACiE,SAAN,CAAgB,UAAC9D,IAAD;AAAA,eAAUA,IAAI,CAACL,QAAL,KAAkB,MAAKgE,gBAAjC;AAAA,OAAhB,CAAxB;;AACA,UAAI9D,KAAK,CAACkB,eAAD,CAAT,EAA4B;AAC1BlB,QAAAA,KAAK,CACHkB,eADG,CAAL,CAEEQ,IAFF,CAEOQ,KAFP,CAEaL,SAFb,wBAEuC7B,KAAK,CAACkB,eAAD,CAAL,CAAuBW,SAF9D;AAGD;;AACD,YAAKqC,kBAAL,CAAwB,MAAKrC,SAA7B;;AACA,aAAO;AAAEX,QAAAA,eAAe,EAAfA;AAAF,OAAP;AACD,KAzLkB;;AAAA,uEA2LA,UAACmC,SAAD,EAAe;AAChC,aAAO,YAAM;AAAA,qCACiB,MAAKpC,oBAAL,CAA0BoC,SAA1B,CADjB;AAAA,YACHnC,eADG,0BACHA,eADG;;AAEX,cAAKC,QAAL,CAAcf,KAAd,CAAoBc,eAApB;AACD,OAHD;AAID,KAhMkB;;AAAA,gFAkMS,UAACiD,KAAD,EAAW;AACrC,aAAO,YAAM;AACX,SAAC,MAAKT,YAAN,IAAsB,MAAK5B,YAAL,CAAkB,MAAKC,cAAvB,EAAuCoC,KAAvC,EAA8C,IAA9C,CAAtB;;AACA,cAAKhD,QAAL,CAAcf,KAAd,CAAoB+D,KAApB;AACD,OAHD;AAID,KAvMkB;;AAAA,wEAyMC,UAACrD,CAAD,EAAO;AACzB,YAAKsD,gBAAL,GAAwBtD,CAAC,CAACuD,cAAF,CAAiB,CAAjB,EAAoBC,OAA5C;AACD,KA3MkB;;AAAA,sEA6MD,UAACxD,CAAD,EAAO;AACvB,UAAMyD,aAAa,GAAGzD,CAAC,CAACuD,cAAF,CAAiB,CAAjB,EAAoBC,OAA1C;AACA,UAAME,KAAK,GAAGD,aAAa,GAAG,MAAKH,gBAAnC;;AACA,UAAII,KAAK,GAAG,EAAZ,EAAgB;AAAA,qCACc,MAAKvD,oBAAL,CAA0B,MAA1B,CADd;AAAA,YACNC,eADM,0BACNA,eADM;;AAEd,cAAKC,QAAL,CAAcf,KAAd,CAAoBc,eAApB;AACD,OAHD,MAGO,IAAIsD,KAAK,GAAG,CAAC,EAAb,EAAiB;AAAA,qCACM,MAAKvD,oBAAL,CAA0B,OAA1B,CADN;AAAA,YACdC,gBADc,0BACdA,eADc;;AAEtB,cAAKC,QAAL,CAAcf,KAAd,CAAoBc,gBAApB;AACD;AACF,KAvNkB;;AAAA,gFAwOS,UAACmC,SAAD;AAAA,aAAe,UAACvC,CAAD,EAAO;AAAA,YACxC2D,OADwC,GAC5B3D,CAD4B,CACxC2D,OADwC;;AAEhD,YAAIA,OAAO,KAAK,EAAhB,EAAoB;AAClB3D,UAAAA,CAAC,CAACE,cAAF;;AACA,gBAAK0D,gBAAL,CAAsBrB,SAAtB;AACD;AACF,OAN2B;AAAA,KAxOT;;AAEjB,UAAKK,YAAL,GAAoB9C,KAAK,CAACR,KAAN,KAAgByD,SAApC;AACA,UAAKvC,KAAL,GAAa;AACXtB,MAAAA,KAAK,EAAE;AADI,KAAb;AAHiB;AAMlB;;;;WAED,6BAAoB;AAClB,aAAO;AACLI,QAAAA,KAAK,EAAE;AADF,OAAP;AAGD;;;WAED,4BAAmBuE,SAAnB,EAA8B;AAAA,UACpBvE,KADoB,GACV,KAAKiB,OADK,CACpBjB,KADoB;;AAE5B,UAAIuE,SAAS,CAACvE,KAAV,KAAoBA,KAApB,IAA6B,KAAKsD,YAAtC,EAAoD;AAClD,aAAK5B,YAAL,CAAkB6C,SAAS,CAACvE,KAA5B,EAAmCA,KAAnC;AACD;AACF;;;WAsMD,6BAAoB;AAAA,UACVwE,QADU,GACG,KAAKvD,OADR,CACVuD,QADU;AAGlB,aAAO;AACLC,QAAAA,GAAG,EAAE,KAAK7C,YADL;AAEL4C,QAAAA,QAAQ,EAARA;AAFK,OAAP;AAID;;;WAED,wBAAe;AACb,aAAO;AACLE,QAAAA,WAAW,EAAE,KAAKC;AADb,OAAP;AAGD;;;WAUD,wBAAe;AAAA,2BACc,KAAK1D,OADnB;AAAA,UACLjB,KADK,kBACLA,KADK;AAAA,UACEiC,OADF,kBACEA,OADF;AAAA,UAELrC,KAFK,GAEK,KAAKsB,KAFV,CAELtB,KAFK;AAGb,UAAIgF,QAAQ,GAAG,KAAf;;AACA,UAAIhF,KAAK,CAAC4C,MAAN,IAAgBP,OAApB,EAA6B;AAC3B2C,QAAAA,QAAQ,GAAG5E,KAAK,KAAK,CAArB;AACD;;AACD,aAAO;AACL6E,QAAAA,OAAO,EAAE,KAAKP,gBAAL,CAAsB,MAAtB,CADJ;AAELQ,QAAAA,SAAS,EAAE,KAAKC,yBAAL,CAA+B,MAA/B,CAFN;AAGLH,QAAAA,QAAQ,EAARA;AAHK,OAAP;AAKD;;;WAED,wBAAe;AAAA,2BACc,KAAK3D,OADnB;AAAA,UACLjB,KADK,kBACLA,KADK;AAAA,UACEiC,OADF,kBACEA,OADF;AAAA,UAELrC,KAFK,GAEK,KAAKsB,KAFV,CAELtB,KAFK;AAGb,UAAIgF,QAAQ,GAAG,KAAf;;AACA,UAAIhF,KAAK,CAAC4C,MAAN,IAAgBP,OAApB,EAA6B;AAC3B2C,QAAAA,QAAQ,GAAG5E,KAAK,KAAKJ,KAAK,CAAC4C,MAAN,GAAe,CAApC;AACD;;AACD,aAAO;AACLqC,QAAAA,OAAO,EAAE,KAAKP,gBAAL,CAAsB,OAAtB,CADJ;AAELQ,QAAAA,SAAS,EAAE,KAAKC,yBAAL,CAA+B,OAA/B,CAFN;AAGLH,QAAAA,QAAQ,EAARA;AAHK,OAAP;AAKD;;;WAED,8BAAqB;AAAA;;AAAA,UACXhF,KADW,GACD,KAAKsB,KADJ,CACXtB,KADW;AAAA,UAEXI,KAFW,GAED,KAAKiB,OAFJ,CAEXjB,KAFW;AAInB,aAAO;AACLJ,QAAAA,KAAK,EAAEA,KAAK,CAAC4B,GAAN,CAAU,UAACzB,IAAD,EAAOY,GAAP;AAAA,iBAAgB;AAC/BqE,YAAAA,MAAM,EAAErE,GAAG,KAAKX,KADe;AAE/B6E,YAAAA,OAAO,EAAE,MAAI,CAACI,yBAAL,CAA+BtE,GAA/B;AAFsB,WAAhB;AAAA,SAAV;AADF,OAAP;AAMD;;;WAED,kBAAS;AAAA;AAAA;;AACP,UAAMuE,SAAS,GAKH3F,GALZ;AADO,2BAEsB,KAAK0B,OAF3B;AAAA,UAECkE,MAFD,kBAECA,MAFD;AAAA,UAESC,QAFT,kBAESA,QAFT;AAIP,qBAAO/F,OAAO,CAAC8F,MAAD,CAAd,eACE,oBAAC,SAAD;AAAA,qBAEa,KAAKE,cAFlB;AAAA,oBAGY,CAHZ;AAAA,wBAIgB,KAAKC,iBAJrB;AAAA,sBAKc,KAAKC;AALnB,+BAOE,oBAAC,QAAD,2BAPF,CADF;AAWD;;;;EAvToBnG,S;;gBAAjBmB,Q,iBACiB,U;;gBADjBA,Q,kBAEkB;AACpBiF,EAAAA,YAAY,EAAE,CADM;AAEpBhB,EAAAA,QAAQ,EAAE,GAFU;AAGpBjB,EAAAA,IAAI,EAAE,GAHc;AAIpBtB,EAAAA,OAAO,EAAE;AAJW,C;;gBAFlB1B,Q,WASWuB,K;;AAiTjB,IAAM2D,SAAS,GAAG,SAAZA,SAAY,CAACjF,KAAD,EAAW;AAAA;AAAA;;AAC3B,MAAMkF,UAAU,GAG2BnG,GAH3C;AAD2B,MAEnB4F,MAFmB,GAEE3E,KAFF,CAEnB2E,MAFmB;AAAA,MAEXX,QAFW,GAEEhE,KAFF,CAEXgE,QAFW;AAI3B,iBAAOnF,OAAO,CAAC8F,MAAD,CAAd,eAAuB,oBAAC,UAAD;AAAA,8BAA0CX,QAA1C;AAAA,cAAvB;AACD,CALD;;AAOA,IAAMmB,IAAI,GAAG,SAAPA,IAAO,CAACnF,KAAD,EAAW;AAAA;AAAA;;AAAA,MACd2E,MADc,GACU3E,KADV,CACd2E,MADc;AAAA,MACNT,WADM,GACUlE,KADV,CACNkE,WADM;AAEtB,MAAMkB,KAAK,GAW2BrG,GAXtC;AACA,MAAMsG,OAAO,gBAAG5G,KAAK,CAACwB,SAAN,EAAhB;AACAvB,EAAAA,SAAS,CAAC,YAAM;AACd;AACAwF,IAAAA,WAAW,CAAC;AAAEpD,MAAAA,IAAI,EAAEuE,OAAO,CAAChE;AAAhB,KAAD,CAAX;AACA,WAAO,YAAM;AACX;AACA6C,MAAAA,WAAW,CAAC;AAAEpD,QAAAA,IAAI,EAAEuE,OAAO,CAAChE;AAAhB,OAAD,EAA4B,IAA5B,CAAX;AACD,KAHD;AAID,GAPQ,EAON,EAPM,CAAT;AASA,iBAAOxC,OAAO,CAAC8F,MAAD,CAAd,eAAuB,oBAAC,KAAD;AAAA,WAAyBU;AAAzB,cAAvB;AACD,CAdD;;AAgBA,IAAMC,IAAI,GAAG,SAAPA,IAAO,CAACtF,KAAD,EAAW;AAAA;AAAA;;AAAA,MACd2E,MADc,GACH3E,KADG,CACd2E,MADc;AAEtB,MAAMY,KAAK,GAC2BxG,GADtC;AACA,kBAAOF,OAAO,CAAC8F,MAAD,CAAd,eAAuB,oBAAC,KAAD,kEAAvB;AACD,CAJD;;AAMAW,IAAI,CAACE,YAAL,GAAoB;AAAA,SAAO;AACzBC,IAAAA,QAAQ,eAAE,oBAAC,WAAD;AAAa,MAAA,WAAW,MAAxB;AAAyB,MAAA,KAAK,EAAC,OAA/B;AAAuC,qBAAa,IAApD;AAA0D,MAAA,IAAI,EAAC;AAA/D,MADe;AAEzBC,IAAAA,GAAG,EAAE;AAFoB,GAAP;AAAA,CAApB;;AAKA,IAAMC,IAAI,GAAG,SAAPA,IAAO,CAAC3F,KAAD,EAAW;AAAA;AAAA;;AAAA,MACd2E,MADc,GACH3E,KADG,CACd2E,MADc;AAEtB,MAAMiB,KAAK,GAC2B7G,GADtC;AACA,kBAAOF,OAAO,CAAC8F,MAAD,CAAd,eAAuB,oBAAC,KAAD,kEAAvB;AACD,CAJD;;AAMAgB,IAAI,CAACH,YAAL,GAAoB;AAAA,SAAO;AACzBC,IAAAA,QAAQ,eAAE,oBAAC,YAAD;AAAc,MAAA,WAAW,MAAzB;AAA0B,MAAA,KAAK,EAAC,OAAhC;AAAwC,qBAAa,IAArD;AAA2D,MAAA,IAAI,EAAC;AAAhE,MADe;AAEzBC,IAAAA,GAAG,EAAE;AAFoB,GAAP;AAAA,CAApB;;AAKA,IAAMG,UAAU,GAAG,SAAbA,UAAa,SAAiC;AAAA;AAAA;;AAAA,MAA9BzG,KAA8B,UAA9BA,KAA8B;AAAA,MAAvBuF,MAAuB,UAAvBA,MAAuB;AAAA,MAAfC,QAAe,UAAfA,QAAe;AAClD,MAAMkB,WAAW,GAMM/G,GANvB;AACA,MAAMgH,UAAU,GAAGhH,GAAnB;;AACA,MAAI6F,QAAQ,CAACoB,MAAb,EAAqB;AACnB,wBAAO,oBAAC,QAAD,OAAP;AACD;;AACD,kBAAOnH,OAAO,CAAC8F,MAAD,CAAd,eACE,oBAAC,WAAD,yEACGvF,KAAK,CAAC4B,GAAN,CAAU,UAACzB,IAAD;AAAA,wBACT,oBAAC,UAAD,EAAgBA,IAAhB,CADS;AAAA,GAAV,CADH,CADF;AAOD,CAbD;;AAeA,eAAeZ,eAAe,CAACoB,QAAD,EAAW;AACvCkF,EAAAA,SAAS,EAATA,SADuC;AAEvCY,EAAAA,UAAU,EAAVA,UAFuC;AAGvCV,EAAAA,IAAI,EAAJA,IAHuC;AAIvCG,EAAAA,IAAI,EAAJA,IAJuC;AAKvCK,EAAAA,IAAI,EAAJA;AALuC,CAAX,CAA9B","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"}
@@ -7,12 +7,14 @@ SCarousel {
7
7
 
8
8
  SContainer {
9
9
  display: flex;
10
+ transition: transform var(--duration) ease-in-out;
10
11
  }
11
12
 
12
13
  SItem {
13
14
  flex: 0 0 100%;
14
15
  max-width: 100%;
15
16
  box-sizing: border-box;
17
+ transform: var(--transform);
16
18
  }
17
19
 
18
20
  SIndicators {
@@ -30,7 +30,7 @@ export interface ICarouselProps {
30
30
  step?: number;
31
31
  }
32
32
 
33
- export interface ICarouselContext extends ICarouselProps {
33
+ export interface ICarouselContext {
34
34
  getContainerProps: PropGetterFn;
35
35
  getItemProps: PropGetterFn;
36
36
  getPrevProps: PropGetterFn;
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "@semcore/carousel",
3
3
  "description": "SEMRush Carousel Component",
4
- "version": "1.3.0",
4
+ "version": "1.5.0",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/es6/index.js",
7
7
  "typings": "lib/types/index.d.ts",
8
+ "sideEffects": false,
8
9
  "author": "Roman Lysov <r.lysov@semrush.com>",
9
10
  "license": "MIT",
10
11
  "scripts": {
@@ -14,10 +15,10 @@
14
15
  "dependencies": {
15
16
  "@semcore/utils": "^3.15",
16
17
  "@semcore/flex-box": "^4",
17
- "@semcore/icon": "^2"
18
+ "@semcore/icon": "^2.16"
18
19
  },
19
20
  "peerDependencies": {
20
- "@semcore/core": "^1",
21
+ "@semcore/core": "^1.11",
21
22
  "react": "16.8 - 17"
22
23
  },
23
24
  "jest": {
package/src/Carousel.js CHANGED
@@ -1,9 +1,9 @@
1
1
  import React, { useEffect } from 'react';
2
- import createComponent, { Component, styled } from '@semcore/core';
2
+ import createComponent, { Component, sstyled, Root } from '@semcore/core';
3
3
 
4
4
  import { Box } from '@semcore/flex-box';
5
- import ChevronRightL from '@semcore/icon/lib/ChevronRight/l';
6
- import ChevronLeftL from '@semcore/icon/lib/ChevronLeft/l';
5
+ import ChevronRight from '@semcore/icon/ChevronRight/l';
6
+ import ChevronLeft from '@semcore/icon/ChevronLeft/l';
7
7
 
8
8
  import style from './style/carousel.shadow.css';
9
9
 
@@ -287,6 +287,14 @@ class Carousel extends Component {
287
287
  };
288
288
  }
289
289
 
290
+ bindHandlerKeydownControl = (direction) => (e) => {
291
+ const { keyCode } = e;
292
+ if (keyCode === 13) {
293
+ e.preventDefault();
294
+ this.bindHandlerClick(direction)();
295
+ }
296
+ };
297
+
290
298
  getPrevProps() {
291
299
  const { index, bounded } = this.asProps;
292
300
  const { items } = this.state;
@@ -294,7 +302,11 @@ class Carousel extends Component {
294
302
  if (items.length && bounded) {
295
303
  disabled = index === 0;
296
304
  }
297
- return { onClick: this.bindHandlerClick('left'), disabled };
305
+ return {
306
+ onClick: this.bindHandlerClick('left'),
307
+ onKeyDown: this.bindHandlerKeydownControl('left'),
308
+ disabled,
309
+ };
298
310
  }
299
311
 
300
312
  getNextProps() {
@@ -304,7 +316,11 @@ class Carousel extends Component {
304
316
  if (items.length && bounded) {
305
317
  disabled = index === items.length - 1;
306
318
  }
307
- return { onClick: this.bindHandlerClick('right'), disabled };
319
+ return {
320
+ onClick: this.bindHandlerClick('right'),
321
+ onKeyDown: this.bindHandlerKeydownControl('right'),
322
+ disabled,
323
+ };
308
324
  }
309
325
 
310
326
  getIndicatorsProps() {
@@ -320,10 +336,10 @@ class Carousel extends Component {
320
336
  }
321
337
 
322
338
  render() {
323
- const { Root: SCarousel } = this;
324
- const { Children, styles } = this.asProps;
339
+ const SCarousel = Root;
340
+ const { styles, Children } = this.asProps;
325
341
 
326
- return styled(styles)(
342
+ return sstyled(styles)(
327
343
  <SCarousel
328
344
  render={Box}
329
345
  onKeyDown={this.handlerKeyDown}
@@ -338,18 +354,15 @@ class Carousel extends Component {
338
354
  }
339
355
 
340
356
  const Container = (props) => {
341
- const { styles, duration, Root: SContainer } = props;
342
- const speedAnimation = `${duration}ms`;
357
+ const SContainer = Root;
358
+ const { styles, duration } = props;
343
359
 
344
- return styled(styles)`
345
- SContainer {
346
- transition: transform ${speedAnimation} ease-in-out;
347
- }
348
- `(<SContainer render={Box} />);
360
+ return sstyled(styles)(<SContainer render={Box} use:duration={`${duration}ms`} />);
349
361
  };
350
362
 
351
363
  const Item = (props) => {
352
- const { styles, $toogleItem, transform, Root: SItem } = props;
364
+ const { styles, $toogleItem } = props;
365
+ const SItem = Root;
353
366
  const refItem = React.createRef();
354
367
  useEffect(() => {
355
368
  // add item
@@ -360,42 +373,41 @@ const Item = (props) => {
360
373
  };
361
374
  }, []);
362
375
 
363
- return styled(styles)`
364
- SItem {
365
- transform: ${transform};
366
- }
367
- `(<SItem render={Box} ref={refItem} />);
376
+ return sstyled(styles)(<SItem render={Box} ref={refItem} />);
368
377
  };
369
378
 
370
379
  const Prev = (props) => {
371
- const { Root: SPrev, styles, disabled } = props;
372
- return styled(styles)(<SPrev render={Box} disabled={disabled} />);
380
+ const { styles } = props;
381
+ const SPrev = Root;
382
+ return sstyled(styles)(<SPrev render={Box} />);
373
383
  };
374
384
 
375
385
  Prev.defaultProps = () => ({
376
- children: <ChevronLeftL interactive color="stone" />,
386
+ children: <ChevronLeft interactive color="stone" aria-hidden={true} role="button" />,
377
387
  top: 0,
378
388
  });
379
389
 
380
390
  const Next = (props) => {
381
- const { Root: SNext, styles, disabled } = props;
382
- return styled(styles)(<SNext render={Box} disabled={disabled} />);
391
+ const { styles } = props;
392
+ const SNext = Root;
393
+ return sstyled(styles)(<SNext render={Box} />);
383
394
  };
384
395
 
385
396
  Next.defaultProps = () => ({
386
- children: <ChevronRightL interactive color="stone" />,
397
+ children: <ChevronRight interactive color="stone" aria-hidden={true} role="button" />,
387
398
  top: 0,
388
399
  });
389
400
 
390
- const Indicators = ({ Root: SIndicators, items, styles, Children }) => {
401
+ const Indicators = ({ items, styles, Children }) => {
402
+ const SIndicators = Root;
391
403
  const SIndicator = Box;
392
404
  if (Children.origin) {
393
405
  return <Children />;
394
406
  }
395
- return styled(styles)(
407
+ return sstyled(styles)(
396
408
  <SIndicators render={Box}>
397
409
  {items.map((item) => (
398
- <SIndicator active={item.active} {...item} />
410
+ <SIndicator {...item} />
399
411
  ))}
400
412
  </SIndicators>,
401
413
  );
package/src/index.d.ts CHANGED
@@ -30,7 +30,7 @@ export interface ICarouselProps {
30
30
  step?: number;
31
31
  }
32
32
 
33
- export interface ICarouselContext extends ICarouselProps {
33
+ export interface ICarouselContext {
34
34
  getContainerProps: PropGetterFn;
35
35
  getItemProps: PropGetterFn;
36
36
  getPrevProps: PropGetterFn;
@@ -7,12 +7,14 @@ SCarousel {
7
7
 
8
8
  SContainer {
9
9
  display: flex;
10
+ transition: transform var(--duration) ease-in-out;
10
11
  }
11
12
 
12
13
  SItem {
13
14
  flex: 0 0 100%;
14
15
  max-width: 100%;
15
16
  box-sizing: border-box;
17
+ transform: var(--transform);
16
18
  }
17
19
 
18
20
  SIndicators {