UNPKG

@itwin/itwinui-react

Version:

A react component library for iTwinUI

88 lines (87 loc) 2.86 kB
'use strict'; 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, });