@itwin/itwinui-react
Version:
A react component library for iTwinUI
88 lines (87 loc) • 2.86 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', {
value: true,
});
Object.defineProperty(exports, 'Carousel', {
enumerable: true,
get: function () {
return Carousel;
},
});
const _interop_require_default = require('@swc/helpers/_/_interop_require_default');
const _interop_require_wildcard = require('@swc/helpers/_/_interop_require_wildcard');
const _react = /*#__PURE__*/ _interop_require_wildcard._(require('react'));
const _classnames = /*#__PURE__*/ _interop_require_default._(
require('classnames'),
);
const _index = require('../../utils/index.js');
const _CarouselContext = require('./CarouselContext.js');
const _CarouselSlider = require('./CarouselSlider.js');
const _CarouselSlide = require('./CarouselSlide.js');
const _CarouselDotsList = require('./CarouselDotsList.js');
const _CarouselDot = require('./CarouselDot.js');
const _CarouselNavigation = require('./CarouselNavigation.js');
const CarouselComponent = _react.forwardRef((props, ref) => {
let idPrefix = (0, _index.useId)();
let {
activeSlideIndex: userActiveIndex = 0,
onSlideChange,
className,
children,
id = idPrefix,
...rest
} = props;
let isManuallyUpdating = _react.useRef(false);
let carouselRef = _react.useRef(null);
let refs = (0, _index.useMergedRefs)(carouselRef, ref);
let [currentIndex, setCurrentIndex] = _react.useState(userActiveIndex);
let scrollToSlide = _react.useRef(() => {});
let justMounted = _react.useRef(true);
_react.useEffect(() => {
setCurrentIndex(userActiveIndex);
scrollToSlide.current(userActiveIndex, {
instant: justMounted.current,
});
justMounted.current = false;
}, [userActiveIndex]);
let [slideCount, setSlideCount] = _react.useState(0);
let userOnSlideChange = (0, _index.useLatestRef)(onSlideChange);
_react.useEffect(() => {
userOnSlideChange.current?.(currentIndex);
}, [userOnSlideChange, currentIndex]);
return _react.createElement(
_index.Box,
{
as: 'section',
'aria-roledescription': 'carousel',
ref: refs,
className: (0, _classnames.default)('iui-carousel', className),
...rest,
id: id,
},
_react.createElement(
_CarouselContext.CarouselContext.Provider,
{
value: {
currentIndex,
setCurrentIndex,
slideCount,
setSlideCount,
idPrefix: id,
isManuallyUpdating,
scrollToSlide,
},
},
children,
),
);
});
if ('development' === process.env.NODE_ENV)
CarouselComponent.displayName = 'Carousel';
const Carousel = Object.assign(CarouselComponent, {
Slider: _CarouselSlider.CarouselSlider,
Slide: _CarouselSlide.CarouselSlide,
Navigation: _CarouselNavigation.CarouselNavigation,
DotsList: _CarouselDotsList.CarouselDotsList,
Dot: _CarouselDot.CarouselDot,
});